@bemedev/codebase 0.0.2 → 0.0.4

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/CHANGE_LOG.md CHANGED
@@ -1,13 +1,26 @@
1
1
  ## CHANGELOG
2
2
 
3
3
  <br/>
4
+
5
+ <details>
6
+
7
+ <summary>
8
+
9
+ ### Version [0.0.4] --> _2025/09/04 23:10_
10
+
11
+ </summary>
12
+
13
+ - Upgrade files structure
14
+
15
+ </details>
16
+
4
17
  <br/>
5
18
 
6
19
  <details>
7
20
 
8
21
  <summary>
9
22
 
10
- ### Version [0.0.2] --> _2025/09/04 11:30_
23
+ ### Version [0.0.3] --> _2025/09/04 11:30_
11
24
 
12
25
  </summary>
13
26
 
package/README.md CHANGED
@@ -1,77 +1,210 @@
1
- # Librairie bemedev
1
+ # @bemedev/codebase
2
2
 
3
- Librairie Node.js pour la gestion et l'analyse de code, avec des
4
- utilitaires pour faciliter le développement, l'import/export de modules, la
5
- génération de schémas, et la création de CLI. Elle propose des fonctions
6
- pour manipuler les constantes, helpers, types, et schemas, ainsi qu'une CLI
7
- extensible.
3
+ ![License](https://img.shields.io/badge/license-MIT-blue.svg)
4
+ ![Node.js](https://img.shields.io/badge/node-%3E%3D22-green.svg)
5
+ ![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?logo=typescript&logoColor=white)
8
6
 
9
- ## Fonctionnalités principales
7
+ A powerful CLI to generate and analyze your TypeScript/JavaScript codebase.
8
+ This tool allows partial importing of libraries and generates comprehensive
9
+ analyses of your source code.
10
10
 
11
- - Analyse de code TypeScript et JavaScript
12
- - Génération automatique de schémas et types
13
- - Helpers pour l'import/export de modules
14
- - CLI pour automatiser les tâches courantes
15
- - Structure modulaire et extensible
11
+ ## 🚀 Main Features
16
12
 
17
- ## Installation
13
+ - **📊 Codebase analysis**: Full analysis of imports, exports and
14
+ dependencies
15
+ - **🔧 Automatic generation**: Creates detailed JSON analysis files
16
+ - **⚡ Intuitive CLI**: Simple and effective command-line interface
17
+ - **📦 Partial import**: Selective import of library parts
18
+ - **🎯 Flexible exclusion**: Ability to exclude specific files
19
+ - **📈 Statistics**: Detailed reports about your codebase
20
+
21
+ ## 📋 Prerequisites
22
+
23
+ - **Node.js** ≥ 22.0.0
24
+ - **pnpm** (recommended) or npm/yarn
25
+
26
+ ## 🛠️ Installation
27
+
28
+ ### Global installation (recommended)
29
+
30
+ ```bash
31
+ pnpm add -g @bemedev/codebase
32
+ ```
33
+
34
+ ### Local installation
35
+
36
+ ```bash
37
+ pnpm add @bemedev/codebase
38
+ ```
39
+
40
+ ### Development installation
18
41
 
19
42
  ```bash
20
- pnpm install bemedev
43
+ pnpm add -D @bemedev/codebase
21
44
  ```
22
45
 
23
- ## Utilisation
46
+ ## 🎯 Usage
24
47
 
25
- Exemple d'import et d'utilisation : clear
48
+ ### CLI
26
49
 
27
- ```ts
28
- import { analyse, generate, helpers } from 'bemedev';
50
+ #### Generate a codebase analysis
29
51
 
30
- const result = analyse('src/index.ts');
31
- console.log(result);
52
+ ```bash
53
+ # Basic analysis - generates a codebase.json file
54
+ @bemedev/codebase
55
+
56
+ # Specify a custom output file
57
+ @bemedev/codebase --output my-analysis.json
58
+
59
+ # Exclude specific files
60
+ @bemedev/codebase --exclude node_modules dist lib build
61
+
62
+ # Use short options
63
+ @bemedev/codebase -o output.json node_modules dist
32
64
  ```
33
65
 
34
- ## Scripts
66
+ #### Available options
67
+
68
+ - `-o, --output <file>` : Output file (default: `codebase.json`)
69
+ - `[excludes...]` : List of files/folders to exclude
70
+
71
+ ### Programmatic API
35
72
 
36
- - `pnpm test` : lance les tests unitaires
37
- - `pnpm lint` : vérifie la qualité du code
38
- - `pnpm build` : génère les fichiers de production
73
+ ```typescript
74
+ import { generate, analyze } from '@bemedev/codebase';
39
75
 
40
- ## Contribution
76
+ // Analyze the codebase
77
+ const analysis = analyze('src');
41
78
 
42
- Les contributions sont les bienvenues ! Veuillez ouvrir une issue ou une
43
- pull request pour proposer des améliorations ou signaler des bugs.
79
+ // Generate an analysis file
80
+ await generate({
81
+ output: 'my-codebase.json',
82
+ excludes: ['node_modules', 'dist'],
83
+ });
84
+ ```
44
85
 
45
- ## Licence
86
+ ## 📊 Output format
87
+
88
+ The generated JSON file contains:
89
+
90
+ ```json
91
+ {
92
+ "STATS": {
93
+ "files": 42,
94
+ "imports": 156,
95
+ "exports": 89
96
+ },
97
+ "CODEBASE_ANALYSIS": {
98
+ "src/index.ts": {
99
+ "imports": ["./functions", "./types"],
100
+ "relativePath": "src/index.ts",
101
+ "text": "export * from './functions';"
102
+ }
103
+ }
104
+ }
105
+ ```
46
106
 
47
- MIT
107
+ ## 🏗️ Project structure
48
108
 
49
- ## CHANGE_LOG
109
+ ```
110
+ src/
111
+ ├── cli/ # CLI interface
112
+ ├── functions/ # Core functions
113
+ │ ├── add.ts # Add dependencies
114
+ │ ├── generate.ts # Generate analysis
115
+ │ ├── init.ts # Initialization
116
+ │ └── remove.ts # Removal
117
+ ├── analyze.ts # Analysis engine
118
+ ├── types.ts # TypeScript definitions
119
+ └── constants.ts # Global constants
120
+ ```
50
121
 
51
- <details>
122
+ ## 🧪 Development scripts
52
123
 
53
- <summary>
54
- ...
55
- </summary>
124
+ ```bash
125
+ # Run tests
126
+ pnpm test
56
127
 
57
- ### Version [0.0.1] --> _date & hour_
128
+ # Linting
129
+ pnpm lint
58
130
 
59
- - ✨ Première version de la bibliothèque
131
+ # Build
132
+ pnpm build
60
133
 
61
- </details>
134
+ # Development mode with watch
135
+ pnpm dev
136
+ ```
137
+
138
+ ## 🎨 Examples
139
+
140
+ ### Analyze a React project
141
+
142
+ ```bash
143
+ @bemedev/codebase -o react-analysis.json node_modules public build
144
+ ```
145
+
146
+ ### Analyze a Node.js project
147
+
148
+ ```bash
149
+ @bemedev/codebase -o backend-analysis.json node_modules dist coverage
150
+ ```
151
+
152
+ ### Integrate into an NPM script
153
+
154
+ ```json
155
+ {
156
+ "scripts": {
157
+ "analyze": "@bemedev/codebase -o analysis/codebase.json",
158
+ "analyze:clean": "@bemedev/codebase -o analysis/clean.json node_modules dist lib build"
159
+ }
160
+ }
161
+ ```
162
+
163
+ ## 🤝 Contribution
164
+
165
+ Contributions are welcome! How to contribute:
166
+
167
+ 1. Fork the project
168
+ 2. Create a feature branch (`git checkout -b feature/AmazingFeature`)
169
+ 3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
170
+ 4. Push to the branch (`git push origin feature/AmazingFeature`)
171
+ 5. Open a Pull Request
172
+
173
+ ### Contribution guidelines
174
+
175
+ - Follow commit conventions
176
+ ([Conventional Commits](https://www.conventionalcommits.org/))
177
+ - Add tests for new features
178
+ - Update documentation when necessary
179
+ - Respect existing code style
180
+
181
+ ## 🐛 Report a bug
182
+
183
+ If you find a bug, please
184
+ [open an issue](https://github.com/chlbri/codebase/issues) with:
185
+
186
+ - A clear description of the problem
187
+ - Steps to reproduce the bug
188
+ - Your environment (OS, Node.js version, etc.)
189
+ - Error logs if available
190
+
191
+ ## License ([_MIT_](LICENSE))
62
192
 
63
193
  <br/>
64
194
 
65
- ## Auteur
195
+ ## [CHANGE_LOG](CHANGE_LOG.md)
196
+
197
+ <br/>
66
198
 
67
- chlbri (bri_lvi@icloud.com)
199
+ ## Author
68
200
 
69
- [My github](https://github.com/chlbri?tab=repositories)
201
+ [chlbri](bri_lvi@icloud.com), my
202
+ [github](https://github.com/chlbri?tab=repositories)
70
203
 
71
204
  [<svg width="98" height="96" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z" fill="#24292f"/></svg>](https://github.com/chlbri?tab=repositories)
72
205
 
73
206
  <br/>
74
207
 
75
- ## Liens
208
+ ## Links
76
209
 
77
- - [Documentation](https://github.com/chlbri/new-package)
210
+ - [Documentation](https://github.com/chlbri/codebase)
@@ -1 +1 @@
1
- {"version":3,"file":"analyse.cjs","sources":["../src/analyse.ts"],"sourcesContent":["import { join, relative } from 'path';\nimport { Project } from 'ts-morph';\nimport { addJSDocToSourceText } from './analyse.utils';\nimport { SRC_DIR } from './constants';\nimport { analyzeExports } from './exports';\nimport { toArray } from './helpers';\nimport { analyzeImports, buildImportStrings } from './imports';\nimport type { CodebaseAnalysis } from './types';\nimport { pathToDotNotation } from './utils';\n\nexport type AnalyzeOptions = {\n src?: string;\n excludes?: string | string[];\n};\n\n/**\n * Analyse tous les fichiers TypeScript dans src/ (sauf src/scripts/)\n */\nexport const analyze = ({\n src = SRC_DIR,\n excludes: _excludes,\n}: AnalyzeOptions = {}): CodebaseAnalysis => {\n console.log('🔍 Analyse du codebase en cours...');\n const excludes = toArray(_excludes);\n\n // Initialiser le projet ts-morph\n const project = new Project({\n tsConfigFilePath: join(process.cwd(), 'tsconfig.json'),\n });\n\n // Ajouter tous les fichiers TypeScript du dossier src\n const sourceFiles = project.addSourceFilesAtPaths(\n [\n 'src/**/*.ts',\n '!src/scripts/**/*', // Exclure le dossier scripts\n '!src/**/*.test.ts', // Exclure les fichiers de test\n '!src/**/*.spec.ts', // Exclure les fichiers de spec\n ].concat(excludes.map(exclude => `!${exclude}`)),\n );\n\n const analysis: CodebaseAnalysis = {};\n let processedCount = 0;\n\n for (const sourceFile of sourceFiles) {\n const filePath = sourceFile.getFilePath();\n const relativePath = relative(src, filePath);\n\n // Générer le texte modifié avec JSDoc pour les exports\n\n const _text = addJSDocToSourceText(sourceFile);\n\n // #region Analyser les imports et exports\n const imports = analyzeImports(sourceFile);\n const exports = analyzeExports(sourceFile);\n // #endregion\n\n // Construire les imports à partir de fileAnalysis.imports\n const importsStrings = buildImportStrings(imports);\n\n // Combiner imports et contenu\n const importsSection =\n importsStrings.length > 0 ? importsStrings.join('\\n') : '';\n\n const text =\n importsSection === ''\n ? _text\n : `${importsSection}\n\n${_text}\n `;\n\n analysis[pathToDotNotation(relativePath)] = {\n relativePath,\n imports,\n exports,\n text,\n };\n\n processedCount++;\n\n // #region Afficher l'avancement de l'analyse par palliers de 50\n if (processedCount % 50 === 0) {\n console.log(\n `📊 Analysé ${processedCount}/${sourceFiles.length} fichiers...`,\n );\n }\n // #endregion\n }\n\n console.log(`✅ Analyse terminée: ${processedCount} fichiers analysés`);\n return analysis;\n};\n"],"names":["SRC_DIR","toArray","Project","join","relative","addJSDocToSourceText","imports","analyzeImports","analyzeExports","buildImportStrings","pathToDotNotation"],"mappings":";;;;;;;;;;;AAeA;;AAEG;AACI,MAAM,OAAO,GAAG,CAAC,EACtB,GAAG,GAAGA,iBAAO,EACb,QAAQ,EAAE,SAAS,GAAA,GACD,EAAE,KAAsB;AAC1C,IAAA,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC;AACjD,IAAA,MAAM,QAAQ,GAAGC,eAAO,CAAC,SAAS,CAAC;;AAGnC,IAAA,MAAM,OAAO,GAAG,IAAIC,eAAO,CAAC;QAC1B,gBAAgB,EAAEC,SAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC;AACvD,KAAA,CAAC;;AAGF,IAAA,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAC/C;QACE,aAAa;AACb,QAAA,mBAAmB;AACnB,QAAA,mBAAmB;AACnB,QAAA,mBAAmB;AACpB,KAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,OAAO,CAAA,CAAE,CAAC,CAAC,CACjD;IAED,MAAM,QAAQ,GAAqB,EAAE;IACrC,IAAI,cAAc,GAAG,CAAC;AAEtB,IAAA,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;AACpC,QAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,EAAE;QACzC,MAAM,YAAY,GAAGC,aAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;;AAI5C,QAAA,MAAM,KAAK,GAAGC,kCAAoB,CAAC,UAAU,CAAC;;AAG9C,QAAA,MAAMC,SAAO,GAAGC,sBAAc,CAAC,UAAU,CAAC;AAC1C,QAAA,MAAM,OAAO,GAAGC,wBAAc,CAAC,UAAU,CAAC;;;AAI1C,QAAA,MAAM,cAAc,GAAGC,0BAAkB,CAACH,SAAO,CAAC;;QAGlD,MAAM,cAAc,GAClB,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AAE5D,QAAA,MAAM,IAAI,GACR,cAAc,KAAK;AACjB,cAAE;cACA,GAAG,cAAc;;EAEzB,KAAK;KACF;AAED,QAAA,QAAQ,CAACI,uBAAiB,CAAC,YAAY,CAAC,CAAC,GAAG;YAC1C,YAAY;qBACZJ,SAAO;YACP,OAAO;YACP,IAAI;SACL;AAED,QAAA,cAAc,EAAE;;AAGhB,QAAA,IAAI,cAAc,GAAG,EAAE,KAAK,CAAC,EAAE;YAC7B,OAAO,CAAC,GAAG,CACT,CAAA,WAAA,EAAc,cAAc,CAAA,CAAA,EAAI,WAAW,CAAC,MAAM,CAAA,YAAA,CAAc,CACjE;QACH;;IAEF;AAEA,IAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,cAAc,CAAA,kBAAA,CAAoB,CAAC;AACtE,IAAA,OAAO,QAAQ;AACjB;;;;"}
1
+ {"version":3,"file":"analyse.cjs","sources":["../src/analyse.ts"],"sourcesContent":["import { join, relative } from 'path';\nimport { Project } from 'ts-morph';\nimport { addJSDocToSourceText } from './analyse.utils';\nimport { SRC_DIR } from './constants';\nimport { analyzeExports } from './exports';\nimport { toArray } from './helpers';\nimport { analyzeImports, buildImportStrings } from './imports';\nimport type { CodebaseAnalysis } from './schemas';\nimport { pathToDotNotation } from './utils';\n\nexport type AnalyzeOptions = {\n src?: string;\n excludes?: string | string[];\n};\n\n/**\n * Analyse tous les fichiers TypeScript dans src/ (sauf src/scripts/)\n */\nexport const analyze = ({\n src = SRC_DIR,\n excludes: _excludes,\n}: AnalyzeOptions = {}): CodebaseAnalysis => {\n console.log('🔍 Analyse du codebase en cours...');\n const excludes = toArray(_excludes);\n\n // Initialiser le projet ts-morph\n const project = new Project({\n tsConfigFilePath: join(process.cwd(), 'tsconfig.json'),\n });\n\n // Ajouter tous les fichiers TypeScript du dossier src\n const sourceFiles = project.addSourceFilesAtPaths(\n [\n 'src/**/*.ts',\n '!src/scripts/**/*', // Exclure le dossier scripts\n '!src/**/*.test.ts', // Exclure les fichiers de test\n '!src/**/*.spec.ts', // Exclure les fichiers de spec\n ].concat(excludes.map(exclude => `!${exclude}`)),\n );\n\n const analysis: CodebaseAnalysis = {};\n let processedCount = 0;\n\n for (const sourceFile of sourceFiles) {\n const filePath = sourceFile.getFilePath();\n const relativePath = relative(src, filePath);\n\n // Générer le texte modifié avec JSDoc pour les exports\n\n const _text = addJSDocToSourceText(sourceFile);\n\n // #region Analyser les imports et exports\n const imports = analyzeImports(sourceFile);\n const exports = analyzeExports(sourceFile);\n // #endregion\n\n // Construire les imports à partir de fileAnalysis.imports\n const importsStrings = buildImportStrings(imports);\n\n // Combiner imports et contenu\n const importsSection =\n importsStrings.length > 0 ? importsStrings.join('\\n') : '';\n\n const text =\n importsSection === ''\n ? _text\n : `${importsSection}\n\n${_text}\n `;\n\n analysis[pathToDotNotation(relativePath)] = {\n relativePath,\n imports,\n exports,\n text,\n };\n\n processedCount++;\n\n // #region Afficher l'avancement de l'analyse par palliers de 50\n if (processedCount % 50 === 0) {\n console.log(\n `📊 Analysé ${processedCount}/${sourceFiles.length} fichiers...`,\n );\n }\n // #endregion\n }\n\n console.log(`✅ Analyse terminée: ${processedCount} fichiers analysés`);\n return analysis;\n};\n"],"names":["SRC_DIR","toArray","Project","join","relative","addJSDocToSourceText","imports","analyzeImports","analyzeExports","buildImportStrings","pathToDotNotation"],"mappings":";;;;;;;;;;;AAeA;;AAEG;AACI,MAAM,OAAO,GAAG,CAAC,EACtB,GAAG,GAAGA,iBAAO,EACb,QAAQ,EAAE,SAAS,GAAA,GACD,EAAE,KAAsB;AAC1C,IAAA,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC;AACjD,IAAA,MAAM,QAAQ,GAAGC,eAAO,CAAC,SAAS,CAAC;;AAGnC,IAAA,MAAM,OAAO,GAAG,IAAIC,eAAO,CAAC;QAC1B,gBAAgB,EAAEC,SAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC;AACvD,KAAA,CAAC;;AAGF,IAAA,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAC/C;QACE,aAAa;AACb,QAAA,mBAAmB;AACnB,QAAA,mBAAmB;AACnB,QAAA,mBAAmB;AACpB,KAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,OAAO,CAAA,CAAE,CAAC,CAAC,CACjD;IAED,MAAM,QAAQ,GAAqB,EAAE;IACrC,IAAI,cAAc,GAAG,CAAC;AAEtB,IAAA,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;AACpC,QAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,EAAE;QACzC,MAAM,YAAY,GAAGC,aAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;;AAI5C,QAAA,MAAM,KAAK,GAAGC,kCAAoB,CAAC,UAAU,CAAC;;AAG9C,QAAA,MAAMC,SAAO,GAAGC,sBAAc,CAAC,UAAU,CAAC;AAC1C,QAAA,MAAM,OAAO,GAAGC,wBAAc,CAAC,UAAU,CAAC;;;AAI1C,QAAA,MAAM,cAAc,GAAGC,0BAAkB,CAACH,SAAO,CAAC;;QAGlD,MAAM,cAAc,GAClB,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AAE5D,QAAA,MAAM,IAAI,GACR,cAAc,KAAK;AACjB,cAAE;cACA,GAAG,cAAc;;EAEzB,KAAK;KACF;AAED,QAAA,QAAQ,CAACI,uBAAiB,CAAC,YAAY,CAAC,CAAC,GAAG;YAC1C,YAAY;qBACZJ,SAAO;YACP,OAAO;YACP,IAAI;SACL;AAED,QAAA,cAAc,EAAE;;AAGhB,QAAA,IAAI,cAAc,GAAG,EAAE,KAAK,CAAC,EAAE;YAC7B,OAAO,CAAC,GAAG,CACT,CAAA,WAAA,EAAc,cAAc,CAAA,CAAA,EAAI,WAAW,CAAC,MAAM,CAAA,YAAA,CAAc,CACjE;QACH;;IAEF;AAEA,IAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,cAAc,CAAA,kBAAA,CAAoB,CAAC;AACtE,IAAA,OAAO,QAAQ;AACjB;;;;"}
package/lib/analyse.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { CodebaseAnalysis } from './types';
1
+ import type { CodebaseAnalysis } from './schemas';
2
2
  export type AnalyzeOptions = {
3
3
  src?: string;
4
4
  excludes?: string | string[];
@@ -1 +1 @@
1
- {"version":3,"file":"analyse.d.ts","sourceRoot":"","sources":["../src/analyse.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,gCAGrB,cAAmB,KAAG,gBAsExB,CAAC"}
1
+ {"version":3,"file":"analyse.d.ts","sourceRoot":"","sources":["../src/analyse.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAGlD,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,gCAGrB,cAAmB,KAAG,gBAsExB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"analyse.js","sources":["../src/analyse.ts"],"sourcesContent":["import { join, relative } from 'path';\nimport { Project } from 'ts-morph';\nimport { addJSDocToSourceText } from './analyse.utils';\nimport { SRC_DIR } from './constants';\nimport { analyzeExports } from './exports';\nimport { toArray } from './helpers';\nimport { analyzeImports, buildImportStrings } from './imports';\nimport type { CodebaseAnalysis } from './types';\nimport { pathToDotNotation } from './utils';\n\nexport type AnalyzeOptions = {\n src?: string;\n excludes?: string | string[];\n};\n\n/**\n * Analyse tous les fichiers TypeScript dans src/ (sauf src/scripts/)\n */\nexport const analyze = ({\n src = SRC_DIR,\n excludes: _excludes,\n}: AnalyzeOptions = {}): CodebaseAnalysis => {\n console.log('🔍 Analyse du codebase en cours...');\n const excludes = toArray(_excludes);\n\n // Initialiser le projet ts-morph\n const project = new Project({\n tsConfigFilePath: join(process.cwd(), 'tsconfig.json'),\n });\n\n // Ajouter tous les fichiers TypeScript du dossier src\n const sourceFiles = project.addSourceFilesAtPaths(\n [\n 'src/**/*.ts',\n '!src/scripts/**/*', // Exclure le dossier scripts\n '!src/**/*.test.ts', // Exclure les fichiers de test\n '!src/**/*.spec.ts', // Exclure les fichiers de spec\n ].concat(excludes.map(exclude => `!${exclude}`)),\n );\n\n const analysis: CodebaseAnalysis = {};\n let processedCount = 0;\n\n for (const sourceFile of sourceFiles) {\n const filePath = sourceFile.getFilePath();\n const relativePath = relative(src, filePath);\n\n // Générer le texte modifié avec JSDoc pour les exports\n\n const _text = addJSDocToSourceText(sourceFile);\n\n // #region Analyser les imports et exports\n const imports = analyzeImports(sourceFile);\n const exports = analyzeExports(sourceFile);\n // #endregion\n\n // Construire les imports à partir de fileAnalysis.imports\n const importsStrings = buildImportStrings(imports);\n\n // Combiner imports et contenu\n const importsSection =\n importsStrings.length > 0 ? importsStrings.join('\\n') : '';\n\n const text =\n importsSection === ''\n ? _text\n : `${importsSection}\n\n${_text}\n `;\n\n analysis[pathToDotNotation(relativePath)] = {\n relativePath,\n imports,\n exports,\n text,\n };\n\n processedCount++;\n\n // #region Afficher l'avancement de l'analyse par palliers de 50\n if (processedCount % 50 === 0) {\n console.log(\n `📊 Analysé ${processedCount}/${sourceFiles.length} fichiers...`,\n );\n }\n // #endregion\n }\n\n console.log(`✅ Analyse terminée: ${processedCount} fichiers analysés`);\n return analysis;\n};\n"],"names":[],"mappings":";;;;;;;;;AAeA;;AAEG;AACI,MAAM,OAAO,GAAG,CAAC,EACtB,GAAG,GAAG,OAAO,EACb,QAAQ,EAAE,SAAS,GAAA,GACD,EAAE,KAAsB;AAC1C,IAAA,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC;AACjD,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;;AAGnC,IAAA,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;QAC1B,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC;AACvD,KAAA,CAAC;;AAGF,IAAA,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAC/C;QACE,aAAa;AACb,QAAA,mBAAmB;AACnB,QAAA,mBAAmB;AACnB,QAAA,mBAAmB;AACpB,KAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,OAAO,CAAA,CAAE,CAAC,CAAC,CACjD;IAED,MAAM,QAAQ,GAAqB,EAAE;IACrC,IAAI,cAAc,GAAG,CAAC;AAEtB,IAAA,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;AACpC,QAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,EAAE;QACzC,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;;AAI5C,QAAA,MAAM,KAAK,GAAG,oBAAoB,CAAC,UAAU,CAAC;;AAG9C,QAAA,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC;AAC1C,QAAA,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC;;;AAI1C,QAAA,MAAM,cAAc,GAAG,kBAAkB,CAAC,OAAO,CAAC;;QAGlD,MAAM,cAAc,GAClB,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AAE5D,QAAA,MAAM,IAAI,GACR,cAAc,KAAK;AACjB,cAAE;cACA,GAAG,cAAc;;EAEzB,KAAK;KACF;AAED,QAAA,QAAQ,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,GAAG;YAC1C,YAAY;YACZ,OAAO;YACP,OAAO;YACP,IAAI;SACL;AAED,QAAA,cAAc,EAAE;;AAGhB,QAAA,IAAI,cAAc,GAAG,EAAE,KAAK,CAAC,EAAE;YAC7B,OAAO,CAAC,GAAG,CACT,CAAA,WAAA,EAAc,cAAc,CAAA,CAAA,EAAI,WAAW,CAAC,MAAM,CAAA,YAAA,CAAc,CACjE;QACH;;IAEF;AAEA,IAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,cAAc,CAAA,kBAAA,CAAoB,CAAC;AACtE,IAAA,OAAO,QAAQ;AACjB;;;;"}
1
+ {"version":3,"file":"analyse.js","sources":["../src/analyse.ts"],"sourcesContent":["import { join, relative } from 'path';\nimport { Project } from 'ts-morph';\nimport { addJSDocToSourceText } from './analyse.utils';\nimport { SRC_DIR } from './constants';\nimport { analyzeExports } from './exports';\nimport { toArray } from './helpers';\nimport { analyzeImports, buildImportStrings } from './imports';\nimport type { CodebaseAnalysis } from './schemas';\nimport { pathToDotNotation } from './utils';\n\nexport type AnalyzeOptions = {\n src?: string;\n excludes?: string | string[];\n};\n\n/**\n * Analyse tous les fichiers TypeScript dans src/ (sauf src/scripts/)\n */\nexport const analyze = ({\n src = SRC_DIR,\n excludes: _excludes,\n}: AnalyzeOptions = {}): CodebaseAnalysis => {\n console.log('🔍 Analyse du codebase en cours...');\n const excludes = toArray(_excludes);\n\n // Initialiser le projet ts-morph\n const project = new Project({\n tsConfigFilePath: join(process.cwd(), 'tsconfig.json'),\n });\n\n // Ajouter tous les fichiers TypeScript du dossier src\n const sourceFiles = project.addSourceFilesAtPaths(\n [\n 'src/**/*.ts',\n '!src/scripts/**/*', // Exclure le dossier scripts\n '!src/**/*.test.ts', // Exclure les fichiers de test\n '!src/**/*.spec.ts', // Exclure les fichiers de spec\n ].concat(excludes.map(exclude => `!${exclude}`)),\n );\n\n const analysis: CodebaseAnalysis = {};\n let processedCount = 0;\n\n for (const sourceFile of sourceFiles) {\n const filePath = sourceFile.getFilePath();\n const relativePath = relative(src, filePath);\n\n // Générer le texte modifié avec JSDoc pour les exports\n\n const _text = addJSDocToSourceText(sourceFile);\n\n // #region Analyser les imports et exports\n const imports = analyzeImports(sourceFile);\n const exports = analyzeExports(sourceFile);\n // #endregion\n\n // Construire les imports à partir de fileAnalysis.imports\n const importsStrings = buildImportStrings(imports);\n\n // Combiner imports et contenu\n const importsSection =\n importsStrings.length > 0 ? importsStrings.join('\\n') : '';\n\n const text =\n importsSection === ''\n ? _text\n : `${importsSection}\n\n${_text}\n `;\n\n analysis[pathToDotNotation(relativePath)] = {\n relativePath,\n imports,\n exports,\n text,\n };\n\n processedCount++;\n\n // #region Afficher l'avancement de l'analyse par palliers de 50\n if (processedCount % 50 === 0) {\n console.log(\n `📊 Analysé ${processedCount}/${sourceFiles.length} fichiers...`,\n );\n }\n // #endregion\n }\n\n console.log(`✅ Analyse terminée: ${processedCount} fichiers analysés`);\n return analysis;\n};\n"],"names":[],"mappings":";;;;;;;;;AAeA;;AAEG;AACI,MAAM,OAAO,GAAG,CAAC,EACtB,GAAG,GAAG,OAAO,EACb,QAAQ,EAAE,SAAS,GAAA,GACD,EAAE,KAAsB;AAC1C,IAAA,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC;AACjD,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;;AAGnC,IAAA,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;QAC1B,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC;AACvD,KAAA,CAAC;;AAGF,IAAA,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAC/C;QACE,aAAa;AACb,QAAA,mBAAmB;AACnB,QAAA,mBAAmB;AACnB,QAAA,mBAAmB;AACpB,KAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,OAAO,CAAA,CAAE,CAAC,CAAC,CACjD;IAED,MAAM,QAAQ,GAAqB,EAAE;IACrC,IAAI,cAAc,GAAG,CAAC;AAEtB,IAAA,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;AACpC,QAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,EAAE;QACzC,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;;AAI5C,QAAA,MAAM,KAAK,GAAG,oBAAoB,CAAC,UAAU,CAAC;;AAG9C,QAAA,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC;AAC1C,QAAA,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC;;;AAI1C,QAAA,MAAM,cAAc,GAAG,kBAAkB,CAAC,OAAO,CAAC;;QAGlD,MAAM,cAAc,GAClB,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AAE5D,QAAA,MAAM,IAAI,GACR,cAAc,KAAK;AACjB,cAAE;cACA,GAAG,cAAc;;EAEzB,KAAK;KACF;AAED,QAAA,QAAQ,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,GAAG;YAC1C,YAAY;YACZ,OAAO;YACP,OAAO;YACP,IAAI;SACL;AAED,QAAA,cAAc,EAAE;;AAGhB,QAAA,IAAI,cAAc,GAAG,EAAE,KAAK,CAAC,EAAE;YAC7B,OAAO,CAAC,GAAG,CACT,CAAA,WAAA,EAAc,cAAc,CAAA,CAAA,EAAI,WAAW,CAAC,MAAM,CAAA,YAAA,CAAc,CACjE;QACH;;IAEF;AAEA,IAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,cAAc,CAAA,kBAAA,CAAoB,CAAC;AACtE,IAAA,OAAO,QAAQ;AACjB;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"exports.cjs","sources":["../src/exports.ts"],"sourcesContent":["import { SourceFile, SyntaxKind } from 'ts-morph';\nimport type { ExportInfo } from './types';\n\nexport const analyzeExports = (sourceFile: SourceFile) => {\n const exports: ExportInfo[] = [];\n\n // Export declarations (export ...)\n sourceFile.getExportDeclarations().forEach(exportDecl => {\n const moduleSpecifier = exportDecl.getModuleSpecifierValue();\n const exportText = exportDecl.getText();\n\n // Named exports\n const namedExports = exportDecl.getNamedExports();\n namedExports.forEach(namedExport => {\n exports.push({\n name: namedExport.getName(),\n kind: 'named',\n text: exportText,\n moduleSpecifier,\n });\n });\n\n // Namespace export (export * from '...')\n if (exportDecl.isNamespaceExport()) {\n exports.push({\n name: '*',\n kind: 'namespace',\n text: exportText,\n moduleSpecifier,\n });\n }\n });\n\n // Export assignments (export = ...)\n sourceFile.getExportAssignments().forEach(exportAssignment => {\n if (exportAssignment.isExportEquals()) {\n exports.push({\n name: 'default',\n kind: 'default',\n text: exportAssignment.getText(),\n });\n }\n });\n\n // Exported declarations (export function, export class, etc.)\n sourceFile.getExportedDeclarations().forEach((declarations, name) => {\n declarations.forEach(decl => {\n let declarationKind: ExportInfo['declarationKind'];\n\n if (decl.getKind() === SyntaxKind.FunctionDeclaration) {\n declarationKind = 'function';\n } else if (decl.getKind() === SyntaxKind.ClassDeclaration) {\n declarationKind = 'class';\n } else if (decl.getKind() === SyntaxKind.InterfaceDeclaration) {\n declarationKind = 'interface';\n } else if (decl.getKind() === SyntaxKind.TypeAliasDeclaration) {\n declarationKind = 'type';\n } else if (decl.getKind() === SyntaxKind.VariableDeclaration) {\n declarationKind = 'variable';\n } else if (decl.getKind() === SyntaxKind.EnumDeclaration) {\n declarationKind = 'enum';\n }\n\n exports.push({\n name,\n kind: name === 'default' ? 'default' : 'named',\n text: decl.getText(),\n declarationKind,\n });\n });\n });\n\n return exports;\n};\n"],"names":["SyntaxKind"],"mappings":";;;;AAGO,MAAM,cAAc,GAAG,CAAC,UAAsB,KAAI;IACvD,MAAM,OAAO,GAAiB,EAAE;;IAGhC,UAAU,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,UAAU,IAAG;AACtD,QAAA,MAAM,eAAe,GAAG,UAAU,CAAC,uBAAuB,EAAE;AAC5D,QAAA,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE;;AAGvC,QAAA,MAAM,YAAY,GAAG,UAAU,CAAC,eAAe,EAAE;AACjD,QAAA,YAAY,CAAC,OAAO,CAAC,WAAW,IAAG;YACjC,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE;AAC3B,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,IAAI,EAAE,UAAU;gBAChB,eAAe;AAChB,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;;AAGF,QAAA,IAAI,UAAU,CAAC,iBAAiB,EAAE,EAAE;YAClC,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,IAAI,EAAE,GAAG;AACT,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,IAAI,EAAE,UAAU;gBAChB,eAAe;AAChB,aAAA,CAAC;QACJ;AACF,IAAA,CAAC,CAAC;;IAGF,UAAU,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,gBAAgB,IAAG;AAC3D,QAAA,IAAI,gBAAgB,CAAC,cAAc,EAAE,EAAE;YACrC,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE;AACjC,aAAA,CAAC;QACJ;AACF,IAAA,CAAC,CAAC;;IAGF,UAAU,CAAC,uBAAuB,EAAE,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,IAAI,KAAI;AAClE,QAAA,YAAY,CAAC,OAAO,CAAC,IAAI,IAAG;AAC1B,YAAA,IAAI,eAA8C;YAElD,IAAI,IAAI,CAAC,OAAO,EAAE,KAAKA,kBAAU,CAAC,mBAAmB,EAAE;gBACrD,eAAe,GAAG,UAAU;YAC9B;iBAAO,IAAI,IAAI,CAAC,OAAO,EAAE,KAAKA,kBAAU,CAAC,gBAAgB,EAAE;gBACzD,eAAe,GAAG,OAAO;YAC3B;iBAAO,IAAI,IAAI,CAAC,OAAO,EAAE,KAAKA,kBAAU,CAAC,oBAAoB,EAAE;gBAC7D,eAAe,GAAG,WAAW;YAC/B;iBAAO,IAAI,IAAI,CAAC,OAAO,EAAE,KAAKA,kBAAU,CAAC,oBAAoB,EAAE;gBAC7D,eAAe,GAAG,MAAM;YAC1B;iBAAO,IAAI,IAAI,CAAC,OAAO,EAAE,KAAKA,kBAAU,CAAC,mBAAmB,EAAE;gBAC5D,eAAe,GAAG,UAAU;YAC9B;iBAAO,IAAI,IAAI,CAAC,OAAO,EAAE,KAAKA,kBAAU,CAAC,eAAe,EAAE;gBACxD,eAAe,GAAG,MAAM;YAC1B;YAEA,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI;gBACJ,IAAI,EAAE,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO;AAC9C,gBAAA,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;gBACpB,eAAe;AAChB,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,OAAO;AAChB;;;;"}
1
+ {"version":3,"file":"exports.cjs","sources":["../src/exports.ts"],"sourcesContent":["import { SourceFile, SyntaxKind } from 'ts-morph';\nimport type { ExportInfo } from './schemas';\n\nexport const analyzeExports = (sourceFile: SourceFile) => {\n const exports: ExportInfo[] = [];\n\n // Export declarations (export ...)\n sourceFile.getExportDeclarations().forEach(exportDecl => {\n const moduleSpecifier = exportDecl.getModuleSpecifierValue();\n const exportText = exportDecl.getText();\n\n // Named exports\n const namedExports = exportDecl.getNamedExports();\n namedExports.forEach(namedExport => {\n exports.push({\n name: namedExport.getName(),\n kind: 'named',\n text: exportText,\n moduleSpecifier,\n });\n });\n\n // Namespace export (export * from '...')\n if (exportDecl.isNamespaceExport()) {\n exports.push({\n name: '*',\n kind: 'namespace',\n text: exportText,\n moduleSpecifier,\n });\n }\n });\n\n // Export assignments (export = ...)\n sourceFile.getExportAssignments().forEach(exportAssignment => {\n if (exportAssignment.isExportEquals()) {\n exports.push({\n name: 'default',\n kind: 'default',\n text: exportAssignment.getText(),\n });\n }\n });\n\n // Exported declarations (export function, export class, etc.)\n sourceFile.getExportedDeclarations().forEach((declarations, name) => {\n declarations.forEach(decl => {\n let declarationKind: ExportInfo['declarationKind'];\n\n if (decl.getKind() === SyntaxKind.FunctionDeclaration) {\n declarationKind = 'function';\n } else if (decl.getKind() === SyntaxKind.ClassDeclaration) {\n declarationKind = 'class';\n } else if (decl.getKind() === SyntaxKind.InterfaceDeclaration) {\n declarationKind = 'interface';\n } else if (decl.getKind() === SyntaxKind.TypeAliasDeclaration) {\n declarationKind = 'type';\n } else if (decl.getKind() === SyntaxKind.VariableDeclaration) {\n declarationKind = 'variable';\n } else if (decl.getKind() === SyntaxKind.EnumDeclaration) {\n declarationKind = 'enum';\n }\n\n exports.push({\n name,\n kind: name === 'default' ? 'default' : 'named',\n text: decl.getText(),\n declarationKind,\n });\n });\n });\n\n return exports;\n};\n"],"names":["SyntaxKind"],"mappings":";;;;AAGO,MAAM,cAAc,GAAG,CAAC,UAAsB,KAAI;IACvD,MAAM,OAAO,GAAiB,EAAE;;IAGhC,UAAU,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,UAAU,IAAG;AACtD,QAAA,MAAM,eAAe,GAAG,UAAU,CAAC,uBAAuB,EAAE;AAC5D,QAAA,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE;;AAGvC,QAAA,MAAM,YAAY,GAAG,UAAU,CAAC,eAAe,EAAE;AACjD,QAAA,YAAY,CAAC,OAAO,CAAC,WAAW,IAAG;YACjC,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE;AAC3B,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,IAAI,EAAE,UAAU;gBAChB,eAAe;AAChB,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;;AAGF,QAAA,IAAI,UAAU,CAAC,iBAAiB,EAAE,EAAE;YAClC,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,IAAI,EAAE,GAAG;AACT,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,IAAI,EAAE,UAAU;gBAChB,eAAe;AAChB,aAAA,CAAC;QACJ;AACF,IAAA,CAAC,CAAC;;IAGF,UAAU,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,gBAAgB,IAAG;AAC3D,QAAA,IAAI,gBAAgB,CAAC,cAAc,EAAE,EAAE;YACrC,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE;AACjC,aAAA,CAAC;QACJ;AACF,IAAA,CAAC,CAAC;;IAGF,UAAU,CAAC,uBAAuB,EAAE,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,IAAI,KAAI;AAClE,QAAA,YAAY,CAAC,OAAO,CAAC,IAAI,IAAG;AAC1B,YAAA,IAAI,eAA8C;YAElD,IAAI,IAAI,CAAC,OAAO,EAAE,KAAKA,kBAAU,CAAC,mBAAmB,EAAE;gBACrD,eAAe,GAAG,UAAU;YAC9B;iBAAO,IAAI,IAAI,CAAC,OAAO,EAAE,KAAKA,kBAAU,CAAC,gBAAgB,EAAE;gBACzD,eAAe,GAAG,OAAO;YAC3B;iBAAO,IAAI,IAAI,CAAC,OAAO,EAAE,KAAKA,kBAAU,CAAC,oBAAoB,EAAE;gBAC7D,eAAe,GAAG,WAAW;YAC/B;iBAAO,IAAI,IAAI,CAAC,OAAO,EAAE,KAAKA,kBAAU,CAAC,oBAAoB,EAAE;gBAC7D,eAAe,GAAG,MAAM;YAC1B;iBAAO,IAAI,IAAI,CAAC,OAAO,EAAE,KAAKA,kBAAU,CAAC,mBAAmB,EAAE;gBAC5D,eAAe,GAAG,UAAU;YAC9B;iBAAO,IAAI,IAAI,CAAC,OAAO,EAAE,KAAKA,kBAAU,CAAC,eAAe,EAAE;gBACxD,eAAe,GAAG,MAAM;YAC1B;YAEA,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI;gBACJ,IAAI,EAAE,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO;AAC9C,gBAAA,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;gBACpB,eAAe;AAChB,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,OAAO;AAChB;;;;"}
package/lib/exports.d.ts CHANGED
@@ -1,4 +1,9 @@
1
1
  import { SourceFile } from 'ts-morph';
2
- import type { ExportInfo } from './types';
3
- export declare const analyzeExports: (sourceFile: SourceFile) => ExportInfo[];
2
+ export declare const analyzeExports: (sourceFile: SourceFile) => {
3
+ name: string;
4
+ kind: "default" | "named" | "namespace";
5
+ text?: string | undefined;
6
+ moduleSpecifier?: string | undefined;
7
+ declarationKind?: "function" | "type" | "class" | "interface" | "variable" | "const" | "let" | "enum" | undefined;
8
+ }[];
4
9
  //# sourceMappingURL=exports.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAc,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,eAAO,MAAM,cAAc,GAAI,YAAY,UAAU,iBAsEpD,CAAC"}
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAc,MAAM,UAAU,CAAC;AAGlD,eAAO,MAAM,cAAc,GAAI,YAAY,UAAU;;;;;;GAsEpD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"exports.js","sources":["../src/exports.ts"],"sourcesContent":["import { SourceFile, SyntaxKind } from 'ts-morph';\nimport type { ExportInfo } from './types';\n\nexport const analyzeExports = (sourceFile: SourceFile) => {\n const exports: ExportInfo[] = [];\n\n // Export declarations (export ...)\n sourceFile.getExportDeclarations().forEach(exportDecl => {\n const moduleSpecifier = exportDecl.getModuleSpecifierValue();\n const exportText = exportDecl.getText();\n\n // Named exports\n const namedExports = exportDecl.getNamedExports();\n namedExports.forEach(namedExport => {\n exports.push({\n name: namedExport.getName(),\n kind: 'named',\n text: exportText,\n moduleSpecifier,\n });\n });\n\n // Namespace export (export * from '...')\n if (exportDecl.isNamespaceExport()) {\n exports.push({\n name: '*',\n kind: 'namespace',\n text: exportText,\n moduleSpecifier,\n });\n }\n });\n\n // Export assignments (export = ...)\n sourceFile.getExportAssignments().forEach(exportAssignment => {\n if (exportAssignment.isExportEquals()) {\n exports.push({\n name: 'default',\n kind: 'default',\n text: exportAssignment.getText(),\n });\n }\n });\n\n // Exported declarations (export function, export class, etc.)\n sourceFile.getExportedDeclarations().forEach((declarations, name) => {\n declarations.forEach(decl => {\n let declarationKind: ExportInfo['declarationKind'];\n\n if (decl.getKind() === SyntaxKind.FunctionDeclaration) {\n declarationKind = 'function';\n } else if (decl.getKind() === SyntaxKind.ClassDeclaration) {\n declarationKind = 'class';\n } else if (decl.getKind() === SyntaxKind.InterfaceDeclaration) {\n declarationKind = 'interface';\n } else if (decl.getKind() === SyntaxKind.TypeAliasDeclaration) {\n declarationKind = 'type';\n } else if (decl.getKind() === SyntaxKind.VariableDeclaration) {\n declarationKind = 'variable';\n } else if (decl.getKind() === SyntaxKind.EnumDeclaration) {\n declarationKind = 'enum';\n }\n\n exports.push({\n name,\n kind: name === 'default' ? 'default' : 'named',\n text: decl.getText(),\n declarationKind,\n });\n });\n });\n\n return exports;\n};\n"],"names":[],"mappings":";;AAGO,MAAM,cAAc,GAAG,CAAC,UAAsB,KAAI;IACvD,MAAM,OAAO,GAAiB,EAAE;;IAGhC,UAAU,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,UAAU,IAAG;AACtD,QAAA,MAAM,eAAe,GAAG,UAAU,CAAC,uBAAuB,EAAE;AAC5D,QAAA,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE;;AAGvC,QAAA,MAAM,YAAY,GAAG,UAAU,CAAC,eAAe,EAAE;AACjD,QAAA,YAAY,CAAC,OAAO,CAAC,WAAW,IAAG;YACjC,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE;AAC3B,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,IAAI,EAAE,UAAU;gBAChB,eAAe;AAChB,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;;AAGF,QAAA,IAAI,UAAU,CAAC,iBAAiB,EAAE,EAAE;YAClC,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,IAAI,EAAE,GAAG;AACT,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,IAAI,EAAE,UAAU;gBAChB,eAAe;AAChB,aAAA,CAAC;QACJ;AACF,IAAA,CAAC,CAAC;;IAGF,UAAU,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,gBAAgB,IAAG;AAC3D,QAAA,IAAI,gBAAgB,CAAC,cAAc,EAAE,EAAE;YACrC,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE;AACjC,aAAA,CAAC;QACJ;AACF,IAAA,CAAC,CAAC;;IAGF,UAAU,CAAC,uBAAuB,EAAE,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,IAAI,KAAI;AAClE,QAAA,YAAY,CAAC,OAAO,CAAC,IAAI,IAAG;AAC1B,YAAA,IAAI,eAA8C;YAElD,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,mBAAmB,EAAE;gBACrD,eAAe,GAAG,UAAU;YAC9B;iBAAO,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,gBAAgB,EAAE;gBACzD,eAAe,GAAG,OAAO;YAC3B;iBAAO,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,oBAAoB,EAAE;gBAC7D,eAAe,GAAG,WAAW;YAC/B;iBAAO,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,oBAAoB,EAAE;gBAC7D,eAAe,GAAG,MAAM;YAC1B;iBAAO,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,mBAAmB,EAAE;gBAC5D,eAAe,GAAG,UAAU;YAC9B;iBAAO,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,eAAe,EAAE;gBACxD,eAAe,GAAG,MAAM;YAC1B;YAEA,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI;gBACJ,IAAI,EAAE,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO;AAC9C,gBAAA,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;gBACpB,eAAe;AAChB,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,OAAO;AAChB;;;;"}
1
+ {"version":3,"file":"exports.js","sources":["../src/exports.ts"],"sourcesContent":["import { SourceFile, SyntaxKind } from 'ts-morph';\nimport type { ExportInfo } from './schemas';\n\nexport const analyzeExports = (sourceFile: SourceFile) => {\n const exports: ExportInfo[] = [];\n\n // Export declarations (export ...)\n sourceFile.getExportDeclarations().forEach(exportDecl => {\n const moduleSpecifier = exportDecl.getModuleSpecifierValue();\n const exportText = exportDecl.getText();\n\n // Named exports\n const namedExports = exportDecl.getNamedExports();\n namedExports.forEach(namedExport => {\n exports.push({\n name: namedExport.getName(),\n kind: 'named',\n text: exportText,\n moduleSpecifier,\n });\n });\n\n // Namespace export (export * from '...')\n if (exportDecl.isNamespaceExport()) {\n exports.push({\n name: '*',\n kind: 'namespace',\n text: exportText,\n moduleSpecifier,\n });\n }\n });\n\n // Export assignments (export = ...)\n sourceFile.getExportAssignments().forEach(exportAssignment => {\n if (exportAssignment.isExportEquals()) {\n exports.push({\n name: 'default',\n kind: 'default',\n text: exportAssignment.getText(),\n });\n }\n });\n\n // Exported declarations (export function, export class, etc.)\n sourceFile.getExportedDeclarations().forEach((declarations, name) => {\n declarations.forEach(decl => {\n let declarationKind: ExportInfo['declarationKind'];\n\n if (decl.getKind() === SyntaxKind.FunctionDeclaration) {\n declarationKind = 'function';\n } else if (decl.getKind() === SyntaxKind.ClassDeclaration) {\n declarationKind = 'class';\n } else if (decl.getKind() === SyntaxKind.InterfaceDeclaration) {\n declarationKind = 'interface';\n } else if (decl.getKind() === SyntaxKind.TypeAliasDeclaration) {\n declarationKind = 'type';\n } else if (decl.getKind() === SyntaxKind.VariableDeclaration) {\n declarationKind = 'variable';\n } else if (decl.getKind() === SyntaxKind.EnumDeclaration) {\n declarationKind = 'enum';\n }\n\n exports.push({\n name,\n kind: name === 'default' ? 'default' : 'named',\n text: decl.getText(),\n declarationKind,\n });\n });\n });\n\n return exports;\n};\n"],"names":[],"mappings":";;AAGO,MAAM,cAAc,GAAG,CAAC,UAAsB,KAAI;IACvD,MAAM,OAAO,GAAiB,EAAE;;IAGhC,UAAU,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,UAAU,IAAG;AACtD,QAAA,MAAM,eAAe,GAAG,UAAU,CAAC,uBAAuB,EAAE;AAC5D,QAAA,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE;;AAGvC,QAAA,MAAM,YAAY,GAAG,UAAU,CAAC,eAAe,EAAE;AACjD,QAAA,YAAY,CAAC,OAAO,CAAC,WAAW,IAAG;YACjC,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE;AAC3B,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,IAAI,EAAE,UAAU;gBAChB,eAAe;AAChB,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;;AAGF,QAAA,IAAI,UAAU,CAAC,iBAAiB,EAAE,EAAE;YAClC,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,IAAI,EAAE,GAAG;AACT,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,IAAI,EAAE,UAAU;gBAChB,eAAe;AAChB,aAAA,CAAC;QACJ;AACF,IAAA,CAAC,CAAC;;IAGF,UAAU,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,gBAAgB,IAAG;AAC3D,QAAA,IAAI,gBAAgB,CAAC,cAAc,EAAE,EAAE;YACrC,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE;AACjC,aAAA,CAAC;QACJ;AACF,IAAA,CAAC,CAAC;;IAGF,UAAU,CAAC,uBAAuB,EAAE,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,IAAI,KAAI;AAClE,QAAA,YAAY,CAAC,OAAO,CAAC,IAAI,IAAG;AAC1B,YAAA,IAAI,eAA8C;YAElD,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,mBAAmB,EAAE;gBACrD,eAAe,GAAG,UAAU;YAC9B;iBAAO,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,gBAAgB,EAAE;gBACzD,eAAe,GAAG,OAAO;YAC3B;iBAAO,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,oBAAoB,EAAE;gBAC7D,eAAe,GAAG,WAAW;YAC/B;iBAAO,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,oBAAoB,EAAE;gBAC7D,eAAe,GAAG,MAAM;YAC1B;iBAAO,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,mBAAmB,EAAE;gBAC5D,eAAe,GAAG,UAAU;YAC9B;iBAAO,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,eAAe,EAAE;gBACxD,eAAe,GAAG,MAAM;YAC1B;YAEA,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI;gBACJ,IAAI,EAAE,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO;AAC9C,gBAAA,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;gBACpB,eAAe;AAChB,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,OAAO;AAChB;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"add.cjs","sources":["../../src/functions/add.ts"],"sourcesContent":["import edit, { JsonEditor } from 'edit-json-file';\nimport { dirname, join, relative, resolve } from 'node:path';\nimport {\n FILES_PROPERTY,\n JSON_FILE_NAME,\n PATH_PROPERTY,\n} from '../constants';\nimport {\n consoleStars,\n transformModule,\n writeFileAnalysis,\n} from '../helpers';\nimport { CodebaseAnalysis } from '../schemas';\nimport type { FileAnalysis, NOmit } from '../types';\n\nconst processFileAnalysis = (\n analysis: NOmit<FileAnalysis, 'exports'>,\n cwd: string,\n additionals: [string, NOmit<FileAnalysis, 'exports'>][],\n pathsEntries: [string, NOmit<FileAnalysis, 'exports'>][],\n files: string[],\n CODEBASE_ANALYSIS: CodebaseAnalysis,\n) => {\n const relativePath = analysis.relativePath;\n\n const keys = Object.keys(CODEBASE_ANALYSIS);\n analysis.imports.forEach(({ moduleSpecifier }) => {\n const _path = relative(\n cwd,\n resolve(dirname(relativePath), moduleSpecifier),\n ).replaceAll('/', '.');\n\n const toAdd =\n CODEBASE_ANALYSIS[_path] ?? CODEBASE_ANALYSIS[`${_path}.index`];\n if (!toAdd) return;\n\n additionals.push([_path, toAdd]);\n\n const all = additionals\n .concat(pathsEntries)\n .map(([key]) => key)\n .concat(files);\n\n const imports = toAdd.imports.filter(({ moduleSpecifier }) => {\n const _path = transformModule({\n cwd,\n relativePath: toAdd.relativePath,\n moduleSpecifier,\n });\n\n const array = [_path, `${_path}.index`].filter(p =>\n keys.includes(p),\n );\n\n if (array.length < 1) return false;\n\n return array.every(p => !all.includes(p));\n });\n\n const toAdd2 = { ...toAdd, imports };\n const canRecurse = toAdd2.imports.length > 0;\n\n if (canRecurse) {\n processFileAnalysis(\n toAdd2,\n cwd,\n additionals,\n pathsEntries,\n files,\n CODEBASE_ANALYSIS,\n );\n }\n });\n};\n\nexport const add = (\n CODEBASE_ANALYSIS: CodebaseAnalysis,\n ...files: string[]\n) => {\n const isEmpty = files.length === 0;\n if (isEmpty) return console.warn('No files specified for addition.');\n try {\n const cwd = process.cwd();\n const json = join(cwd, JSON_FILE_NAME);\n let file: JsonEditor | undefined = edit(json);\n\n if (!file) return;\n\n const path = file.get(PATH_PROPERTY) as string;\n const files = file.get(FILES_PROPERTY) as string[];\n\n // Release resources\n\n const additionals: [string, NOmit<FileAnalysis, 'exports'>][] = [];\n\n const pathsEntries = Object.entries(CODEBASE_ANALYSIS)\n .filter(([key]) => files.some(p => key.startsWith(p)))\n .filter(([key]) => !files.includes(key));\n\n pathsEntries.forEach(([, analysis]) => {\n processFileAnalysis(\n analysis,\n cwd,\n additionals,\n pathsEntries,\n files,\n CODEBASE_ANALYSIS,\n );\n });\n\n const entries = new Set(\n pathsEntries.concat(additionals).filter(([, val]) => !!val),\n );\n\n consoleStars();\n console.log(`🔧 Création des fichiers (${entries.size} fichiers)...`);\n\n let success = 0;\n const length = entries.size;\n\n entries.forEach(([, fileAnalysis]) => {\n const _path = writeFileAnalysis(fileAnalysis, path);\n if (_path) {\n files.push(_path);\n file?.set(FILES_PROPERTY, files);\n success++;\n }\n });\n\n file.save();\n console.log(`✅ Fichiers créés! (${success}/${length})`);\n file = undefined;\n } catch {\n console.error(`❌ Erreur lors de la création des fichiers`);\n return false;\n }\n\n consoleStars();\n return true;\n};\n"],"names":["relative","resolve","dirname","transformModule","join","JSON_FILE_NAME","path","PATH_PROPERTY","FILES_PROPERTY","consoleStars","writeFileAnalysis"],"mappings":"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"}
1
+ {"version":3,"file":"add.cjs","sources":["../../src/functions/add.ts"],"sourcesContent":["import edit, { JsonEditor } from 'edit-json-file';\nimport { dirname, join, relative, resolve } from 'node:path';\nimport {\n FILES_PROPERTY,\n JSON_FILE_NAME,\n PATH_PROPERTY,\n} from '../constants';\nimport {\n consoleStars,\n transformModule,\n writeFileAnalysis,\n} from '../helpers';\nimport { CodebaseAnalysis, type FileAnalysis } from '../schemas';\nimport type { NOmit } from '../types';\n\nconst processFileAnalysis = (\n analysis: NOmit<FileAnalysis, 'exports'>,\n cwd: string,\n additionals: [string, NOmit<FileAnalysis, 'exports'>][],\n pathsEntries: [string, NOmit<FileAnalysis, 'exports'>][],\n files: string[],\n CODEBASE_ANALYSIS: CodebaseAnalysis,\n) => {\n const relativePath = analysis.relativePath;\n\n const keys = Object.keys(CODEBASE_ANALYSIS);\n analysis.imports.forEach(({ moduleSpecifier }) => {\n const _path = relative(\n cwd,\n resolve(dirname(relativePath), moduleSpecifier),\n ).replaceAll('/', '.');\n\n const toAdd =\n CODEBASE_ANALYSIS[_path] ?? CODEBASE_ANALYSIS[`${_path}.index`];\n if (!toAdd) return;\n\n additionals.push([_path, toAdd]);\n\n const all = additionals\n .concat(pathsEntries)\n .map(([key]) => key)\n .concat(files);\n\n const imports = toAdd.imports.filter(({ moduleSpecifier }) => {\n const _path = transformModule({\n cwd,\n relativePath: toAdd.relativePath,\n moduleSpecifier,\n });\n\n const array = [_path, `${_path}.index`].filter(p =>\n keys.includes(p),\n );\n\n if (array.length < 1) return false;\n\n return array.every(p => !all.includes(p));\n });\n\n const toAdd2 = { ...toAdd, imports };\n const canRecurse = toAdd2.imports.length > 0;\n\n if (canRecurse) {\n processFileAnalysis(\n toAdd2,\n cwd,\n additionals,\n pathsEntries,\n files,\n CODEBASE_ANALYSIS,\n );\n }\n });\n};\n\nexport const add = (\n CODEBASE_ANALYSIS: CodebaseAnalysis,\n ...files: string[]\n) => {\n const isEmpty = files.length === 0;\n if (isEmpty) return console.warn('No files specified for addition.');\n try {\n const cwd = process.cwd();\n const json = join(cwd, JSON_FILE_NAME);\n let file: JsonEditor | undefined = edit(json);\n\n if (!file) return;\n\n const path = file.get(PATH_PROPERTY) as string;\n const files = file.get(FILES_PROPERTY) as string[];\n\n // Release resources\n\n const additionals: [string, NOmit<FileAnalysis, 'exports'>][] = [];\n\n const pathsEntries = Object.entries(CODEBASE_ANALYSIS)\n .filter(([key]) => files.some(p => key.startsWith(p)))\n .filter(([key]) => !files.includes(key));\n\n pathsEntries.forEach(([, analysis]) => {\n processFileAnalysis(\n analysis,\n cwd,\n additionals,\n pathsEntries,\n files,\n CODEBASE_ANALYSIS,\n );\n });\n\n const entries = new Set(\n pathsEntries.concat(additionals).filter(([, val]) => !!val),\n );\n\n consoleStars();\n console.log(`🔧 Création des fichiers (${entries.size} fichiers)...`);\n\n let success = 0;\n const length = entries.size;\n\n entries.forEach(([, fileAnalysis]) => {\n const _path = writeFileAnalysis(fileAnalysis, path);\n if (_path) {\n files.push(_path);\n file?.set(FILES_PROPERTY, files);\n success++;\n }\n });\n\n file.save();\n console.log(`✅ Fichiers créés! (${success}/${length})`);\n file = undefined;\n } catch {\n console.error(`❌ Erreur lors de la création des fichiers`);\n return false;\n }\n\n consoleStars();\n return true;\n};\n"],"names":["relative","resolve","dirname","transformModule","join","JSON_FILE_NAME","path","PATH_PROPERTY","FILES_PROPERTY","consoleStars","writeFileAnalysis"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/functions/add.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA+D9C,eAAO,MAAM,GAAG,GACd,mBAAmB,gBAAgB,EACnC,GAAG,OAAO,MAAM,EAAE,mBA8DnB,CAAC"}
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/functions/add.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,gBAAgB,EAAqB,MAAM,YAAY,CAAC;AA+DjE,eAAO,MAAM,GAAG,GACd,mBAAmB,gBAAgB,EACnC,GAAG,OAAO,MAAM,EAAE,mBA8DnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"add.js","sources":["../../src/functions/add.ts"],"sourcesContent":["import edit, { JsonEditor } from 'edit-json-file';\nimport { dirname, join, relative, resolve } from 'node:path';\nimport {\n FILES_PROPERTY,\n JSON_FILE_NAME,\n PATH_PROPERTY,\n} from '../constants';\nimport {\n consoleStars,\n transformModule,\n writeFileAnalysis,\n} from '../helpers';\nimport { CodebaseAnalysis } from '../schemas';\nimport type { FileAnalysis, NOmit } from '../types';\n\nconst processFileAnalysis = (\n analysis: NOmit<FileAnalysis, 'exports'>,\n cwd: string,\n additionals: [string, NOmit<FileAnalysis, 'exports'>][],\n pathsEntries: [string, NOmit<FileAnalysis, 'exports'>][],\n files: string[],\n CODEBASE_ANALYSIS: CodebaseAnalysis,\n) => {\n const relativePath = analysis.relativePath;\n\n const keys = Object.keys(CODEBASE_ANALYSIS);\n analysis.imports.forEach(({ moduleSpecifier }) => {\n const _path = relative(\n cwd,\n resolve(dirname(relativePath), moduleSpecifier),\n ).replaceAll('/', '.');\n\n const toAdd =\n CODEBASE_ANALYSIS[_path] ?? CODEBASE_ANALYSIS[`${_path}.index`];\n if (!toAdd) return;\n\n additionals.push([_path, toAdd]);\n\n const all = additionals\n .concat(pathsEntries)\n .map(([key]) => key)\n .concat(files);\n\n const imports = toAdd.imports.filter(({ moduleSpecifier }) => {\n const _path = transformModule({\n cwd,\n relativePath: toAdd.relativePath,\n moduleSpecifier,\n });\n\n const array = [_path, `${_path}.index`].filter(p =>\n keys.includes(p),\n );\n\n if (array.length < 1) return false;\n\n return array.every(p => !all.includes(p));\n });\n\n const toAdd2 = { ...toAdd, imports };\n const canRecurse = toAdd2.imports.length > 0;\n\n if (canRecurse) {\n processFileAnalysis(\n toAdd2,\n cwd,\n additionals,\n pathsEntries,\n files,\n CODEBASE_ANALYSIS,\n );\n }\n });\n};\n\nexport const add = (\n CODEBASE_ANALYSIS: CodebaseAnalysis,\n ...files: string[]\n) => {\n const isEmpty = files.length === 0;\n if (isEmpty) return console.warn('No files specified for addition.');\n try {\n const cwd = process.cwd();\n const json = join(cwd, JSON_FILE_NAME);\n let file: JsonEditor | undefined = edit(json);\n\n if (!file) return;\n\n const path = file.get(PATH_PROPERTY) as string;\n const files = file.get(FILES_PROPERTY) as string[];\n\n // Release resources\n\n const additionals: [string, NOmit<FileAnalysis, 'exports'>][] = [];\n\n const pathsEntries = Object.entries(CODEBASE_ANALYSIS)\n .filter(([key]) => files.some(p => key.startsWith(p)))\n .filter(([key]) => !files.includes(key));\n\n pathsEntries.forEach(([, analysis]) => {\n processFileAnalysis(\n analysis,\n cwd,\n additionals,\n pathsEntries,\n files,\n CODEBASE_ANALYSIS,\n );\n });\n\n const entries = new Set(\n pathsEntries.concat(additionals).filter(([, val]) => !!val),\n );\n\n consoleStars();\n console.log(`🔧 Création des fichiers (${entries.size} fichiers)...`);\n\n let success = 0;\n const length = entries.size;\n\n entries.forEach(([, fileAnalysis]) => {\n const _path = writeFileAnalysis(fileAnalysis, path);\n if (_path) {\n files.push(_path);\n file?.set(FILES_PROPERTY, files);\n success++;\n }\n });\n\n file.save();\n console.log(`✅ Fichiers créés! (${success}/${length})`);\n file = undefined;\n } catch {\n console.error(`❌ Erreur lors de la création des fichiers`);\n return false;\n }\n\n consoleStars();\n return true;\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"add.js","sources":["../../src/functions/add.ts"],"sourcesContent":["import edit, { JsonEditor } from 'edit-json-file';\nimport { dirname, join, relative, resolve } from 'node:path';\nimport {\n FILES_PROPERTY,\n JSON_FILE_NAME,\n PATH_PROPERTY,\n} from '../constants';\nimport {\n consoleStars,\n transformModule,\n writeFileAnalysis,\n} from '../helpers';\nimport { CodebaseAnalysis, type FileAnalysis } from '../schemas';\nimport type { NOmit } from '../types';\n\nconst processFileAnalysis = (\n analysis: NOmit<FileAnalysis, 'exports'>,\n cwd: string,\n additionals: [string, NOmit<FileAnalysis, 'exports'>][],\n pathsEntries: [string, NOmit<FileAnalysis, 'exports'>][],\n files: string[],\n CODEBASE_ANALYSIS: CodebaseAnalysis,\n) => {\n const relativePath = analysis.relativePath;\n\n const keys = Object.keys(CODEBASE_ANALYSIS);\n analysis.imports.forEach(({ moduleSpecifier }) => {\n const _path = relative(\n cwd,\n resolve(dirname(relativePath), moduleSpecifier),\n ).replaceAll('/', '.');\n\n const toAdd =\n CODEBASE_ANALYSIS[_path] ?? CODEBASE_ANALYSIS[`${_path}.index`];\n if (!toAdd) return;\n\n additionals.push([_path, toAdd]);\n\n const all = additionals\n .concat(pathsEntries)\n .map(([key]) => key)\n .concat(files);\n\n const imports = toAdd.imports.filter(({ moduleSpecifier }) => {\n const _path = transformModule({\n cwd,\n relativePath: toAdd.relativePath,\n moduleSpecifier,\n });\n\n const array = [_path, `${_path}.index`].filter(p =>\n keys.includes(p),\n );\n\n if (array.length < 1) return false;\n\n return array.every(p => !all.includes(p));\n });\n\n const toAdd2 = { ...toAdd, imports };\n const canRecurse = toAdd2.imports.length > 0;\n\n if (canRecurse) {\n processFileAnalysis(\n toAdd2,\n cwd,\n additionals,\n pathsEntries,\n files,\n CODEBASE_ANALYSIS,\n );\n }\n });\n};\n\nexport const add = (\n CODEBASE_ANALYSIS: CodebaseAnalysis,\n ...files: string[]\n) => {\n const isEmpty = files.length === 0;\n if (isEmpty) return console.warn('No files specified for addition.');\n try {\n const cwd = process.cwd();\n const json = join(cwd, JSON_FILE_NAME);\n let file: JsonEditor | undefined = edit(json);\n\n if (!file) return;\n\n const path = file.get(PATH_PROPERTY) as string;\n const files = file.get(FILES_PROPERTY) as string[];\n\n // Release resources\n\n const additionals: [string, NOmit<FileAnalysis, 'exports'>][] = [];\n\n const pathsEntries = Object.entries(CODEBASE_ANALYSIS)\n .filter(([key]) => files.some(p => key.startsWith(p)))\n .filter(([key]) => !files.includes(key));\n\n pathsEntries.forEach(([, analysis]) => {\n processFileAnalysis(\n analysis,\n cwd,\n additionals,\n pathsEntries,\n files,\n CODEBASE_ANALYSIS,\n );\n });\n\n const entries = new Set(\n pathsEntries.concat(additionals).filter(([, val]) => !!val),\n );\n\n consoleStars();\n console.log(`🔧 Création des fichiers (${entries.size} fichiers)...`);\n\n let success = 0;\n const length = entries.size;\n\n entries.forEach(([, fileAnalysis]) => {\n const _path = writeFileAnalysis(fileAnalysis, path);\n if (_path) {\n files.push(_path);\n file?.set(FILES_PROPERTY, files);\n success++;\n }\n });\n\n file.save();\n console.log(`✅ Fichiers créés! (${success}/${length})`);\n file = undefined;\n } catch {\n console.error(`❌ Erreur lors de la création des fichiers`);\n return false;\n }\n\n consoleStars();\n return true;\n};\n"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ const transformJSON = (data) => {
11
11
  let files = 0;
12
12
  const entries = Object.entries(data).map(([key, { imports: _imports, relativePath, text, exports: _exports },]) => {
13
13
  imports += _imports.length;
14
- exports += _exports.length;
14
+ exports += _exports?.length ?? 0;
15
15
  files++;
16
16
  const value = {
17
17
  imports: _imports,
@@ -1 +1 @@
1
- {"version":3,"file":"generate.cjs","sources":["../../src/functions/generate.ts"],"sourcesContent":["import { writeFileSync } from 'node:fs';\nimport { relative } from 'node:path';\nimport { CODEBASE_FILE, SRC_DIR } from 'src/constants';\nimport { analyze } from '../analyse';\nimport { CodebaseAnalysis } from '../types';\n\nexport const transformJSON = (data: CodebaseAnalysis) => {\n let imports = 0;\n let exports = 0;\n let files = 0;\n\n const entries = Object.entries(data).map(\n ([\n key,\n { imports: _imports, relativePath, text, exports: _exports },\n ]) => {\n imports += _imports.length;\n exports += _exports.length;\n files++;\n\n const value = {\n imports: _imports,\n relativePath,\n text,\n };\n return [key, value] as const;\n },\n );\n\n const CODEBASE_ANALYSIS = Object.fromEntries(entries);\n\n const STATS = {\n files,\n imports,\n exports,\n };\n\n return {\n STATS,\n CODEBASE_ANALYSIS,\n };\n};\n\nexport type GenerateOptions = {\n output?: string;\n excludes?: string[] | string;\n src?: string;\n};\n\n/**\n * Fonction principale d'exécution\n */\nexport const generate = ({\n output = CODEBASE_FILE,\n excludes,\n src = SRC_DIR,\n}: GenerateOptions = {}) => {\n const _output = output.endsWith('codebase.json')\n ? output\n : `${output}.codebase.json`;\n\n try {\n const analysis = analyze({ src, excludes });\n const transformed = transformJSON(analysis);\n\n const json = JSON.stringify(transformed, null, 2);\n writeFileSync(_output, json);\n\n console.log(\n `📁 Analyse sauvegardée dans: ${relative(process.cwd(), _output)}`,\n );\n console.log(`📊 Statistiques:`);\n console.log(` - Fichiers analysés: ${transformed.STATS.files}`);\n console.log(` - Total imports: ${transformed.STATS.imports}`);\n console.log(` - Total exports: ${transformed.STATS.exports}`);\n } catch (error) {\n console.error(\"❌ Erreur lors de l'analyse du codebase:\", error);\n process.exit(1);\n }\n\n return true;\n};\n"],"names":["CODEBASE_FILE","SRC_DIR","analyze","writeFileSync","relative"],"mappings":";;;;;;;AAMO,MAAM,aAAa,GAAG,CAAC,IAAsB,KAAI;IACtD,IAAI,OAAO,GAAG,CAAC;IACf,IAAI,OAAO,GAAG,CAAC;IACf,IAAI,KAAK,GAAG,CAAC;AAEb,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CACtC,CAAC,CACC,GAAG,EACH,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAC7D,KAAI;AACH,QAAA,OAAO,IAAI,QAAQ,CAAC,MAAM;AAC1B,QAAA,OAAO,IAAI,QAAQ,CAAC,MAAM;AAC1B,QAAA,KAAK,EAAE;AAEP,QAAA,MAAM,KAAK,GAAG;AACZ,YAAA,OAAO,EAAE,QAAQ;YACjB,YAAY;YACZ,IAAI;SACL;AACD,QAAA,OAAO,CAAC,GAAG,EAAE,KAAK,CAAU;AAC9B,IAAA,CAAC,CACF;IAED,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;AAErD,IAAA,MAAM,KAAK,GAAG;QACZ,KAAK;QACL,OAAO;QACP,OAAO;KACR;IAED,OAAO;QACL,KAAK;QACL,iBAAiB;KAClB;AACH;AAQA;;AAEG;AACI,MAAM,QAAQ,GAAG,CAAC,EACvB,MAAM,GAAGA,uBAAa,EACtB,QAAQ,EACR,GAAG,GAAGC,iBAAO,GAAA,GACM,EAAE,KAAI;AACzB,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,eAAe;AAC7C,UAAE;AACF,UAAE,CAAA,EAAG,MAAM,CAAA,cAAA,CAAgB;AAE7B,IAAA,IAAI;QACF,MAAM,QAAQ,GAAGC,eAAO,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC3C,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC;AAE3C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AACjD,QAAAC,gBAAa,CAAC,OAAO,EAAE,IAAI,CAAC;AAE5B,QAAA,OAAO,CAAC,GAAG,CACT,CAAA,6BAAA,EAAgCC,aAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAA,CAAE,CACnE;AACD,QAAA,OAAO,CAAC,GAAG,CAAC,CAAA,gBAAA,CAAkB,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,CAAA,wBAAA,EAA2B,WAAW,CAAC,KAAK,CAAC,KAAK,CAAA,CAAE,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,CAAA,oBAAA,EAAuB,WAAW,CAAC,KAAK,CAAC,OAAO,CAAA,CAAE,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,CAAA,oBAAA,EAAuB,WAAW,CAAC,KAAK,CAAC,OAAO,CAAA,CAAE,CAAC;IACjE;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC;AAC/D,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACjB;AAEA,IAAA,OAAO,IAAI;AACb;;;;;"}
1
+ {"version":3,"file":"generate.cjs","sources":["../../src/functions/generate.ts"],"sourcesContent":["import { writeFileSync } from 'node:fs';\nimport { relative } from 'node:path';\nimport { CODEBASE_FILE, SRC_DIR } from 'src/constants';\nimport { analyze } from '../analyse';\nimport { CodebaseAnalysis } from '../schemas';\n\nexport const transformJSON = (data: CodebaseAnalysis) => {\n let imports = 0;\n let exports = 0;\n let files = 0;\n\n const entries = Object.entries(data).map(\n ([\n key,\n { imports: _imports, relativePath, text, exports: _exports },\n ]) => {\n imports += _imports.length;\n exports += _exports?.length ?? 0;\n files++;\n\n const value = {\n imports: _imports,\n relativePath,\n text,\n };\n return [key, value] as const;\n },\n );\n\n const CODEBASE_ANALYSIS = Object.fromEntries(entries);\n\n const STATS = {\n files,\n imports,\n exports,\n };\n\n return {\n STATS,\n CODEBASE_ANALYSIS,\n };\n};\n\nexport type GenerateOptions = {\n output?: string;\n excludes?: string[] | string;\n src?: string;\n};\n\n/**\n * Fonction principale d'exécution\n */\nexport const generate = ({\n output = CODEBASE_FILE,\n excludes,\n src = SRC_DIR,\n}: GenerateOptions = {}) => {\n const _output = output.endsWith('codebase.json')\n ? output\n : `${output}.codebase.json`;\n\n try {\n const analysis = analyze({ src, excludes });\n const transformed = transformJSON(analysis);\n\n const json = JSON.stringify(transformed, null, 2);\n writeFileSync(_output, json);\n\n console.log(\n `📁 Analyse sauvegardée dans: ${relative(process.cwd(), _output)}`,\n );\n console.log(`📊 Statistiques:`);\n console.log(` - Fichiers analysés: ${transformed.STATS.files}`);\n console.log(` - Total imports: ${transformed.STATS.imports}`);\n console.log(` - Total exports: ${transformed.STATS.exports}`);\n } catch (error) {\n console.error(\"❌ Erreur lors de l'analyse du codebase:\", error);\n process.exit(1);\n }\n\n return true;\n};\n"],"names":["CODEBASE_FILE","SRC_DIR","analyze","writeFileSync","relative"],"mappings":";;;;;;;AAMO,MAAM,aAAa,GAAG,CAAC,IAAsB,KAAI;IACtD,IAAI,OAAO,GAAG,CAAC;IACf,IAAI,OAAO,GAAG,CAAC;IACf,IAAI,KAAK,GAAG,CAAC;AAEb,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CACtC,CAAC,CACC,GAAG,EACH,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAC7D,KAAI;AACH,QAAA,OAAO,IAAI,QAAQ,CAAC,MAAM;AAC1B,QAAA,OAAO,IAAI,QAAQ,EAAE,MAAM,IAAI,CAAC;AAChC,QAAA,KAAK,EAAE;AAEP,QAAA,MAAM,KAAK,GAAG;AACZ,YAAA,OAAO,EAAE,QAAQ;YACjB,YAAY;YACZ,IAAI;SACL;AACD,QAAA,OAAO,CAAC,GAAG,EAAE,KAAK,CAAU;AAC9B,IAAA,CAAC,CACF;IAED,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;AAErD,IAAA,MAAM,KAAK,GAAG;QACZ,KAAK;QACL,OAAO;QACP,OAAO;KACR;IAED,OAAO;QACL,KAAK;QACL,iBAAiB;KAClB;AACH;AAQA;;AAEG;AACI,MAAM,QAAQ,GAAG,CAAC,EACvB,MAAM,GAAGA,uBAAa,EACtB,QAAQ,EACR,GAAG,GAAGC,iBAAO,GAAA,GACM,EAAE,KAAI;AACzB,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,eAAe;AAC7C,UAAE;AACF,UAAE,CAAA,EAAG,MAAM,CAAA,cAAA,CAAgB;AAE7B,IAAA,IAAI;QACF,MAAM,QAAQ,GAAGC,eAAO,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC3C,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC;AAE3C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AACjD,QAAAC,gBAAa,CAAC,OAAO,EAAE,IAAI,CAAC;AAE5B,QAAA,OAAO,CAAC,GAAG,CACT,CAAA,6BAAA,EAAgCC,aAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAA,CAAE,CACnE;AACD,QAAA,OAAO,CAAC,GAAG,CAAC,CAAA,gBAAA,CAAkB,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,CAAA,wBAAA,EAA2B,WAAW,CAAC,KAAK,CAAC,KAAK,CAAA,CAAE,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,CAAA,oBAAA,EAAuB,WAAW,CAAC,KAAK,CAAC,OAAO,CAAA,CAAE,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,CAAA,oBAAA,EAAuB,WAAW,CAAC,KAAK,CAAC,OAAO,CAAA,CAAE,CAAC;IACjE;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC;AAC/D,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACjB;AAEA,IAAA,OAAO,IAAI;AACb;;;;;"}
@@ -1,4 +1,4 @@
1
- import { CodebaseAnalysis } from '../types';
1
+ import { CodebaseAnalysis } from '../schemas';
2
2
  export declare const transformJSON: (data: CodebaseAnalysis) => {
3
3
  STATS: {
4
4
  files: number;
@@ -7,7 +7,13 @@ export declare const transformJSON: (data: CodebaseAnalysis) => {
7
7
  };
8
8
  CODEBASE_ANALYSIS: {
9
9
  [k: string]: {
10
- imports: import("../types").ImportInfo[];
10
+ imports: {
11
+ moduleSpecifier: string;
12
+ kind: "default" | "named" | "namespace" | "side-effect";
13
+ namedImports?: string[] | undefined;
14
+ default?: string | undefined;
15
+ isDynamic?: boolean | undefined;
16
+ }[];
11
17
  relativePath: string;
12
18
  text: string;
13
19
  };
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/functions/generate.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,eAAO,MAAM,aAAa,GAAI,MAAM,gBAAgB;;;;;;;;;;;;;CAmCnD,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,6BAItB,eAAoB,YAyBtB,CAAC"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/functions/generate.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,eAAO,MAAM,aAAa,GAAI,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;CAmCnD,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,6BAItB,eAAoB,YAyBtB,CAAC"}
@@ -9,7 +9,7 @@ const transformJSON = (data) => {
9
9
  let files = 0;
10
10
  const entries = Object.entries(data).map(([key, { imports: _imports, relativePath, text, exports: _exports },]) => {
11
11
  imports += _imports.length;
12
- exports += _exports.length;
12
+ exports += _exports?.length ?? 0;
13
13
  files++;
14
14
  const value = {
15
15
  imports: _imports,
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sources":["../../src/functions/generate.ts"],"sourcesContent":["import { writeFileSync } from 'node:fs';\nimport { relative } from 'node:path';\nimport { CODEBASE_FILE, SRC_DIR } from 'src/constants';\nimport { analyze } from '../analyse';\nimport { CodebaseAnalysis } from '../types';\n\nexport const transformJSON = (data: CodebaseAnalysis) => {\n let imports = 0;\n let exports = 0;\n let files = 0;\n\n const entries = Object.entries(data).map(\n ([\n key,\n { imports: _imports, relativePath, text, exports: _exports },\n ]) => {\n imports += _imports.length;\n exports += _exports.length;\n files++;\n\n const value = {\n imports: _imports,\n relativePath,\n text,\n };\n return [key, value] as const;\n },\n );\n\n const CODEBASE_ANALYSIS = Object.fromEntries(entries);\n\n const STATS = {\n files,\n imports,\n exports,\n };\n\n return {\n STATS,\n CODEBASE_ANALYSIS,\n };\n};\n\nexport type GenerateOptions = {\n output?: string;\n excludes?: string[] | string;\n src?: string;\n};\n\n/**\n * Fonction principale d'exécution\n */\nexport const generate = ({\n output = CODEBASE_FILE,\n excludes,\n src = SRC_DIR,\n}: GenerateOptions = {}) => {\n const _output = output.endsWith('codebase.json')\n ? output\n : `${output}.codebase.json`;\n\n try {\n const analysis = analyze({ src, excludes });\n const transformed = transformJSON(analysis);\n\n const json = JSON.stringify(transformed, null, 2);\n writeFileSync(_output, json);\n\n console.log(\n `📁 Analyse sauvegardée dans: ${relative(process.cwd(), _output)}`,\n );\n console.log(`📊 Statistiques:`);\n console.log(` - Fichiers analysés: ${transformed.STATS.files}`);\n console.log(` - Total imports: ${transformed.STATS.imports}`);\n console.log(` - Total exports: ${transformed.STATS.exports}`);\n } catch (error) {\n console.error(\"❌ Erreur lors de l'analyse du codebase:\", error);\n process.exit(1);\n }\n\n return true;\n};\n"],"names":[],"mappings":";;;;;AAMO,MAAM,aAAa,GAAG,CAAC,IAAsB,KAAI;IACtD,IAAI,OAAO,GAAG,CAAC;IACf,IAAI,OAAO,GAAG,CAAC;IACf,IAAI,KAAK,GAAG,CAAC;AAEb,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CACtC,CAAC,CACC,GAAG,EACH,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAC7D,KAAI;AACH,QAAA,OAAO,IAAI,QAAQ,CAAC,MAAM;AAC1B,QAAA,OAAO,IAAI,QAAQ,CAAC,MAAM;AAC1B,QAAA,KAAK,EAAE;AAEP,QAAA,MAAM,KAAK,GAAG;AACZ,YAAA,OAAO,EAAE,QAAQ;YACjB,YAAY;YACZ,IAAI;SACL;AACD,QAAA,OAAO,CAAC,GAAG,EAAE,KAAK,CAAU;AAC9B,IAAA,CAAC,CACF;IAED,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;AAErD,IAAA,MAAM,KAAK,GAAG;QACZ,KAAK;QACL,OAAO;QACP,OAAO;KACR;IAED,OAAO;QACL,KAAK;QACL,iBAAiB;KAClB;AACH;AAQA;;AAEG;AACI,MAAM,QAAQ,GAAG,CAAC,EACvB,MAAM,GAAG,aAAa,EACtB,QAAQ,EACR,GAAG,GAAG,OAAO,GAAA,GACM,EAAE,KAAI;AACzB,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,eAAe;AAC7C,UAAE;AACF,UAAE,CAAA,EAAG,MAAM,CAAA,cAAA,CAAgB;AAE7B,IAAA,IAAI;QACF,MAAM,QAAQ,GAAG,OAAO,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC3C,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC;AAE3C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AACjD,QAAA,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC;AAE5B,QAAA,OAAO,CAAC,GAAG,CACT,CAAA,6BAAA,EAAgC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAA,CAAE,CACnE;AACD,QAAA,OAAO,CAAC,GAAG,CAAC,CAAA,gBAAA,CAAkB,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,CAAA,wBAAA,EAA2B,WAAW,CAAC,KAAK,CAAC,KAAK,CAAA,CAAE,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,CAAA,oBAAA,EAAuB,WAAW,CAAC,KAAK,CAAC,OAAO,CAAA,CAAE,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,CAAA,oBAAA,EAAuB,WAAW,CAAC,KAAK,CAAC,OAAO,CAAA,CAAE,CAAC;IACjE;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC;AAC/D,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACjB;AAEA,IAAA,OAAO,IAAI;AACb;;;;"}
1
+ {"version":3,"file":"generate.js","sources":["../../src/functions/generate.ts"],"sourcesContent":["import { writeFileSync } from 'node:fs';\nimport { relative } from 'node:path';\nimport { CODEBASE_FILE, SRC_DIR } from 'src/constants';\nimport { analyze } from '../analyse';\nimport { CodebaseAnalysis } from '../schemas';\n\nexport const transformJSON = (data: CodebaseAnalysis) => {\n let imports = 0;\n let exports = 0;\n let files = 0;\n\n const entries = Object.entries(data).map(\n ([\n key,\n { imports: _imports, relativePath, text, exports: _exports },\n ]) => {\n imports += _imports.length;\n exports += _exports?.length ?? 0;\n files++;\n\n const value = {\n imports: _imports,\n relativePath,\n text,\n };\n return [key, value] as const;\n },\n );\n\n const CODEBASE_ANALYSIS = Object.fromEntries(entries);\n\n const STATS = {\n files,\n imports,\n exports,\n };\n\n return {\n STATS,\n CODEBASE_ANALYSIS,\n };\n};\n\nexport type GenerateOptions = {\n output?: string;\n excludes?: string[] | string;\n src?: string;\n};\n\n/**\n * Fonction principale d'exécution\n */\nexport const generate = ({\n output = CODEBASE_FILE,\n excludes,\n src = SRC_DIR,\n}: GenerateOptions = {}) => {\n const _output = output.endsWith('codebase.json')\n ? output\n : `${output}.codebase.json`;\n\n try {\n const analysis = analyze({ src, excludes });\n const transformed = transformJSON(analysis);\n\n const json = JSON.stringify(transformed, null, 2);\n writeFileSync(_output, json);\n\n console.log(\n `📁 Analyse sauvegardée dans: ${relative(process.cwd(), _output)}`,\n );\n console.log(`📊 Statistiques:`);\n console.log(` - Fichiers analysés: ${transformed.STATS.files}`);\n console.log(` - Total imports: ${transformed.STATS.imports}`);\n console.log(` - Total exports: ${transformed.STATS.exports}`);\n } catch (error) {\n console.error(\"❌ Erreur lors de l'analyse du codebase:\", error);\n process.exit(1);\n }\n\n return true;\n};\n"],"names":[],"mappings":";;;;;AAMO,MAAM,aAAa,GAAG,CAAC,IAAsB,KAAI;IACtD,IAAI,OAAO,GAAG,CAAC;IACf,IAAI,OAAO,GAAG,CAAC;IACf,IAAI,KAAK,GAAG,CAAC;AAEb,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CACtC,CAAC,CACC,GAAG,EACH,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAC7D,KAAI;AACH,QAAA,OAAO,IAAI,QAAQ,CAAC,MAAM;AAC1B,QAAA,OAAO,IAAI,QAAQ,EAAE,MAAM,IAAI,CAAC;AAChC,QAAA,KAAK,EAAE;AAEP,QAAA,MAAM,KAAK,GAAG;AACZ,YAAA,OAAO,EAAE,QAAQ;YACjB,YAAY;YACZ,IAAI;SACL;AACD,QAAA,OAAO,CAAC,GAAG,EAAE,KAAK,CAAU;AAC9B,IAAA,CAAC,CACF;IAED,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;AAErD,IAAA,MAAM,KAAK,GAAG;QACZ,KAAK;QACL,OAAO;QACP,OAAO;KACR;IAED,OAAO;QACL,KAAK;QACL,iBAAiB;KAClB;AACH;AAQA;;AAEG;AACI,MAAM,QAAQ,GAAG,CAAC,EACvB,MAAM,GAAG,aAAa,EACtB,QAAQ,EACR,GAAG,GAAG,OAAO,GAAA,GACM,EAAE,KAAI;AACzB,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,eAAe;AAC7C,UAAE;AACF,UAAE,CAAA,EAAG,MAAM,CAAA,cAAA,CAAgB;AAE7B,IAAA,IAAI;QACF,MAAM,QAAQ,GAAG,OAAO,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC3C,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC;AAE3C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AACjD,QAAA,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC;AAE5B,QAAA,OAAO,CAAC,GAAG,CACT,CAAA,6BAAA,EAAgC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAA,CAAE,CACnE;AACD,QAAA,OAAO,CAAC,GAAG,CAAC,CAAA,gBAAA,CAAkB,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,CAAA,wBAAA,EAA2B,WAAW,CAAC,KAAK,CAAC,KAAK,CAAA,CAAE,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,CAAA,oBAAA,EAAuB,WAAW,CAAC,KAAK,CAAC,OAAO,CAAA,CAAE,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,CAAA,oBAAA,EAAuB,WAAW,CAAC,KAAK,CAAC,OAAO,CAAA,CAAE,CAAC;IACjE;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC;AAC/D,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACjB;AAEA,IAAA,OAAO,IAAI;AACb;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"imports.cjs","sources":["../src/imports.ts"],"sourcesContent":["import { join, relative } from 'node:path';\nimport { SourceFile, SyntaxKind } from 'ts-morph';\nimport type { ImportInfo } from './types';\n\n/**\n * Résout le moduleSpecifier en utilisant les paths du tsconfig si il commence par \"#\"\n */\nconst resolveModuleSpecifier = (\n sourceFile: SourceFile,\n moduleSpecifier: string,\n): string => {\n const paths = sourceFile.getProject().getCompilerOptions().paths;\n\n if (!paths) return moduleSpecifier;\n\n const baseUrl = sourceFile.getProject().getCompilerOptions().baseUrl;\n const paths2 = Object.entries(paths);\n\n // Chercher la correspondance dans les paths\n for (const [pattern, mappings] of paths2) {\n // Remplacer * par une regex pour matcher\n const regexPattern = pattern.replace(/\\*/g, '(.*)');\n const regex = new RegExp(`^${regexPattern}$`);\n const match = moduleSpecifier.match(regex);\n\n if (match) {\n // Prendre le premier mapping disponible\n const first = mappings[0];\n\n // Résoudre le chemin absolu\n let relativedPath = baseUrl ? join(baseUrl, first) : first;\n\n if (match[1]) {\n relativedPath = relativedPath.replace('*', match[1]);\n }\n\n // Calculer le chemin relatif depuis le fichier source actuel\n const sourceFileDir = relative(\n process.cwd(),\n sourceFile.getDirectoryPath(),\n );\n const relativePath = relative(sourceFileDir, relativedPath);\n\n // S'assurer que le chemin relatif commence par ./ ou ../\n return relativePath.startsWith('.')\n ? relativePath\n : `./${relativePath}`;\n }\n }\n\n return moduleSpecifier;\n};\n\n/**\n * Analyse les imports d'un fichier\n */\nexport const analyzeImports = (sourceFile: SourceFile): ImportInfo[] => {\n const imports: ImportInfo[] = [];\n\n // Import declarations (import ... from '...')\n sourceFile.getImportDeclarations().forEach(importDecl => {\n const rawModuleSpecifier = importDecl.getModuleSpecifierValue();\n const moduleSpecifier = resolveModuleSpecifier(\n sourceFile,\n rawModuleSpecifier,\n );\n\n // Import default\n const defaultImport = importDecl.getDefaultImport();\n if (defaultImport) {\n imports.push({\n moduleSpecifier,\n kind: 'default',\n default: defaultImport.getText(),\n });\n }\n\n // Import namespace (* as name)\n const namespaceImport = importDecl.getNamespaceImport();\n if (namespaceImport) {\n imports.push({\n moduleSpecifier,\n kind: 'namespace',\n default: namespaceImport.getText(),\n });\n }\n\n // Named imports ({ name1, name2 })\n const namedImports = importDecl.getNamedImports();\n if (namedImports.length > 0) {\n imports.push({\n moduleSpecifier,\n kind: 'named',\n namedImports: namedImports.map(ni => ni.getName()),\n });\n }\n\n // Side-effect import (import '...')\n if (!defaultImport && !namespaceImport && namedImports.length === 0) {\n imports.push({\n moduleSpecifier,\n kind: 'side-effect',\n });\n }\n });\n\n // Dynamic imports (import('...'))\n sourceFile\n .getDescendantsOfKind(SyntaxKind.CallExpression)\n .forEach(callExpr => {\n if (\n callExpr.getExpression().getKind() === SyntaxKind.ImportKeyword\n ) {\n const arg = callExpr.getArguments()[0];\n if (arg && arg.getKind() === SyntaxKind.StringLiteral) {\n const rawModuleSpecifier = arg.getText().replace(/['\"]/g, '');\n const moduleSpecifier = resolveModuleSpecifier(\n sourceFile,\n rawModuleSpecifier,\n );\n imports.push({\n moduleSpecifier,\n kind: 'side-effect',\n isDynamic: true,\n });\n }\n }\n });\n\n return imports;\n};\n\nexport const buildImportStrings = (imports: ImportInfo[]) => {\n return imports.map(imp => {\n switch (imp.kind) {\n case 'named': {\n const namedImports = imp.namedImports?.join(', ') || '';\n return `import { ${namedImports} } from '${imp.moduleSpecifier}';`;\n }\n case 'namespace':\n return `import * as ${imp.default} from '${imp.moduleSpecifier}';`;\n case 'side-effect': {\n if (imp.isDynamic) {\n return `// Dynamic import: import('${imp.moduleSpecifier}')`;\n }\n return `import '${imp.moduleSpecifier}';`;\n }\n\n case 'default':\n return `import ${imp.default} from '${imp.moduleSpecifier}';`;\n default:\n return '';\n }\n });\n};\n"],"names":["join","relative","SyntaxKind"],"mappings":"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"}
1
+ {"version":3,"file":"imports.cjs","sources":["../src/imports.ts"],"sourcesContent":["import { join, relative } from 'node:path';\nimport { SourceFile, SyntaxKind } from 'ts-morph';\nimport type { ImportInfo } from './schemas';\n\n/**\n * Résout le moduleSpecifier en utilisant les paths du tsconfig si il commence par \"#\"\n */\nconst resolveModuleSpecifier = (\n sourceFile: SourceFile,\n moduleSpecifier: string,\n): string => {\n const paths = sourceFile.getProject().getCompilerOptions().paths;\n\n if (!paths) return moduleSpecifier;\n\n const baseUrl = sourceFile.getProject().getCompilerOptions().baseUrl;\n const paths2 = Object.entries(paths);\n\n // Chercher la correspondance dans les paths\n for (const [pattern, mappings] of paths2) {\n // Remplacer * par une regex pour matcher\n const regexPattern = pattern.replace(/\\*/g, '(.*)');\n const regex = new RegExp(`^${regexPattern}$`);\n const match = moduleSpecifier.match(regex);\n\n if (match) {\n // Prendre le premier mapping disponible\n const first = mappings[0];\n\n // Résoudre le chemin absolu\n let relativedPath = baseUrl ? join(baseUrl, first) : first;\n\n if (match[1]) {\n relativedPath = relativedPath.replace('*', match[1]);\n }\n\n // Calculer le chemin relatif depuis le fichier source actuel\n const sourceFileDir = relative(\n process.cwd(),\n sourceFile.getDirectoryPath(),\n );\n const relativePath = relative(sourceFileDir, relativedPath);\n\n // S'assurer que le chemin relatif commence par ./ ou ../\n return relativePath.startsWith('.')\n ? relativePath\n : `./${relativePath}`;\n }\n }\n\n return moduleSpecifier;\n};\n\n/**\n * Analyse les imports d'un fichier\n */\nexport const analyzeImports = (sourceFile: SourceFile): ImportInfo[] => {\n const imports: ImportInfo[] = [];\n\n // Import declarations (import ... from '...')\n sourceFile.getImportDeclarations().forEach(importDecl => {\n const rawModuleSpecifier = importDecl.getModuleSpecifierValue();\n const moduleSpecifier = resolveModuleSpecifier(\n sourceFile,\n rawModuleSpecifier,\n );\n\n // Import default\n const defaultImport = importDecl.getDefaultImport();\n if (defaultImport) {\n imports.push({\n moduleSpecifier,\n kind: 'default',\n default: defaultImport.getText(),\n });\n }\n\n // Import namespace (* as name)\n const namespaceImport = importDecl.getNamespaceImport();\n if (namespaceImport) {\n imports.push({\n moduleSpecifier,\n kind: 'namespace',\n default: namespaceImport.getText(),\n });\n }\n\n // Named imports ({ name1, name2 })\n const namedImports = importDecl.getNamedImports();\n if (namedImports.length > 0) {\n imports.push({\n moduleSpecifier,\n kind: 'named',\n namedImports: namedImports.map(ni => ni.getName()),\n });\n }\n\n // Side-effect import (import '...')\n if (!defaultImport && !namespaceImport && namedImports.length === 0) {\n imports.push({\n moduleSpecifier,\n kind: 'side-effect',\n });\n }\n });\n\n // Dynamic imports (import('...'))\n sourceFile\n .getDescendantsOfKind(SyntaxKind.CallExpression)\n .forEach(callExpr => {\n if (\n callExpr.getExpression().getKind() === SyntaxKind.ImportKeyword\n ) {\n const arg = callExpr.getArguments()[0];\n if (arg && arg.getKind() === SyntaxKind.StringLiteral) {\n const rawModuleSpecifier = arg.getText().replace(/['\"]/g, '');\n const moduleSpecifier = resolveModuleSpecifier(\n sourceFile,\n rawModuleSpecifier,\n );\n imports.push({\n moduleSpecifier,\n kind: 'side-effect',\n isDynamic: true,\n });\n }\n }\n });\n\n return imports;\n};\n\nexport const buildImportStrings = (imports: ImportInfo[]) => {\n return imports.map(imp => {\n switch (imp.kind) {\n case 'named': {\n const namedImports = imp.namedImports?.join(', ') || '';\n return `import { ${namedImports} } from '${imp.moduleSpecifier}';`;\n }\n case 'namespace':\n return `import * as ${imp.default} from '${imp.moduleSpecifier}';`;\n case 'side-effect': {\n if (imp.isDynamic) {\n return `// Dynamic import: import('${imp.moduleSpecifier}')`;\n }\n return `import '${imp.moduleSpecifier}';`;\n }\n\n case 'default':\n return `import ${imp.default} from '${imp.moduleSpecifier}';`;\n default:\n return '';\n }\n });\n};\n"],"names":["join","relative","SyntaxKind"],"mappings":";;;;;AAIA;;AAEG;AACH,MAAM,sBAAsB,GAAG,CAC7B,UAAsB,EACtB,eAAuB,KACb;IACV,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,kBAAkB,EAAE,CAAC,KAAK;AAEhE,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,eAAe;IAElC,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,kBAAkB,EAAE,CAAC,OAAO;IACpE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;;IAGpC,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,MAAM,EAAE;;QAExC,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;QACnD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,CAAA,CAAA,EAAI,YAAY,CAAA,CAAA,CAAG,CAAC;QAC7C,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC;QAE1C,IAAI,KAAK,EAAE;;AAET,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC;;AAGzB,YAAA,IAAI,aAAa,GAAG,OAAO,GAAGA,SAAI,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,KAAK;AAE1D,YAAA,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;AACZ,gBAAA,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YACtD;;AAGA,YAAA,MAAM,aAAa,GAAGC,aAAQ,CAC5B,OAAO,CAAC,GAAG,EAAE,EACb,UAAU,CAAC,gBAAgB,EAAE,CAC9B;YACD,MAAM,YAAY,GAAGA,aAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;;AAG3D,YAAA,OAAO,YAAY,CAAC,UAAU,CAAC,GAAG;AAChC,kBAAE;AACF,kBAAE,CAAA,EAAA,EAAK,YAAY,CAAA,CAAE;QACzB;IACF;AAEA,IAAA,OAAO,eAAe;AACxB,CAAC;AAED;;AAEG;AACI,MAAM,cAAc,GAAG,CAAC,UAAsB,KAAkB;IACrE,MAAM,OAAO,GAAiB,EAAE;;IAGhC,UAAU,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,UAAU,IAAG;AACtD,QAAA,MAAM,kBAAkB,GAAG,UAAU,CAAC,uBAAuB,EAAE;QAC/D,MAAM,eAAe,GAAG,sBAAsB,CAC5C,UAAU,EACV,kBAAkB,CACnB;;AAGD,QAAA,MAAM,aAAa,GAAG,UAAU,CAAC,gBAAgB,EAAE;QACnD,IAAI,aAAa,EAAE;YACjB,OAAO,CAAC,IAAI,CAAC;gBACX,eAAe;AACf,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE;AACjC,aAAA,CAAC;QACJ;;AAGA,QAAA,MAAM,eAAe,GAAG,UAAU,CAAC,kBAAkB,EAAE;QACvD,IAAI,eAAe,EAAE;YACnB,OAAO,CAAC,IAAI,CAAC;gBACX,eAAe;AACf,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE;AACnC,aAAA,CAAC;QACJ;;AAGA,QAAA,MAAM,YAAY,GAAG,UAAU,CAAC,eAAe,EAAE;AACjD,QAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,OAAO,CAAC,IAAI,CAAC;gBACX,eAAe;AACf,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AACnD,aAAA,CAAC;QACJ;;AAGA,QAAA,IAAI,CAAC,aAAa,IAAI,CAAC,eAAe,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;YACnE,OAAO,CAAC,IAAI,CAAC;gBACX,eAAe;AACf,gBAAA,IAAI,EAAE,aAAa;AACpB,aAAA,CAAC;QACJ;AACF,IAAA,CAAC,CAAC;;IAGF;AACG,SAAA,oBAAoB,CAACC,kBAAU,CAAC,cAAc;SAC9C,OAAO,CAAC,QAAQ,IAAG;AAClB,QAAA,IACE,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,KAAKA,kBAAU,CAAC,aAAa,EAC/D;YACA,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YACtC,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,KAAKA,kBAAU,CAAC,aAAa,EAAE;AACrD,gBAAA,MAAM,kBAAkB,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC7D,MAAM,eAAe,GAAG,sBAAsB,CAC5C,UAAU,EACV,kBAAkB,CACnB;gBACD,OAAO,CAAC,IAAI,CAAC;oBACX,eAAe;AACf,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,SAAS,EAAE,IAAI;AAChB,iBAAA,CAAC;YACJ;QACF;AACF,IAAA,CAAC,CAAC;AAEJ,IAAA,OAAO,OAAO;AAChB;AAEO,MAAM,kBAAkB,GAAG,CAAC,OAAqB,KAAI;AAC1D,IAAA,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,IAAG;AACvB,QAAA,QAAQ,GAAG,CAAC,IAAI;YACd,KAAK,OAAO,EAAE;AACZ,gBAAA,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACvD,gBAAA,OAAO,YAAY,YAAY,CAAA,SAAA,EAAY,GAAG,CAAC,eAAe,IAAI;YACpE;AACA,YAAA,KAAK,WAAW;gBACd,OAAO,CAAA,YAAA,EAAe,GAAG,CAAC,OAAO,UAAU,GAAG,CAAC,eAAe,CAAA,EAAA,CAAI;YACpE,KAAK,aAAa,EAAE;AAClB,gBAAA,IAAI,GAAG,CAAC,SAAS,EAAE;AACjB,oBAAA,OAAO,CAAA,2BAAA,EAA8B,GAAG,CAAC,eAAe,IAAI;gBAC9D;AACA,gBAAA,OAAO,CAAA,QAAA,EAAW,GAAG,CAAC,eAAe,IAAI;YAC3C;AAEA,YAAA,KAAK,SAAS;gBACZ,OAAO,CAAA,OAAA,EAAU,GAAG,CAAC,OAAO,UAAU,GAAG,CAAC,eAAe,CAAA,EAAA,CAAI;AAC/D,YAAA;AACE,gBAAA,OAAO,EAAE;;AAEf,IAAA,CAAC,CAAC;AACJ;;;;;"}
package/lib/imports.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { SourceFile } from 'ts-morph';
2
- import type { ImportInfo } from './types';
2
+ import type { ImportInfo } from './schemas';
3
3
  /**
4
4
  * Analyse les imports d'un fichier
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"imports.d.ts","sourceRoot":"","sources":["../src/imports.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAc,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAmD1C;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,YAAY,UAAU,KAAG,UAAU,EA0EjE,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,SAAS,UAAU,EAAE,aAsBvD,CAAC"}
1
+ {"version":3,"file":"imports.d.ts","sourceRoot":"","sources":["../src/imports.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAc,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAmD5C;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,YAAY,UAAU,KAAG,UAAU,EA0EjE,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,SAAS,UAAU,EAAE,aAsBvD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"imports.js","sources":["../src/imports.ts"],"sourcesContent":["import { join, relative } from 'node:path';\nimport { SourceFile, SyntaxKind } from 'ts-morph';\nimport type { ImportInfo } from './types';\n\n/**\n * Résout le moduleSpecifier en utilisant les paths du tsconfig si il commence par \"#\"\n */\nconst resolveModuleSpecifier = (\n sourceFile: SourceFile,\n moduleSpecifier: string,\n): string => {\n const paths = sourceFile.getProject().getCompilerOptions().paths;\n\n if (!paths) return moduleSpecifier;\n\n const baseUrl = sourceFile.getProject().getCompilerOptions().baseUrl;\n const paths2 = Object.entries(paths);\n\n // Chercher la correspondance dans les paths\n for (const [pattern, mappings] of paths2) {\n // Remplacer * par une regex pour matcher\n const regexPattern = pattern.replace(/\\*/g, '(.*)');\n const regex = new RegExp(`^${regexPattern}$`);\n const match = moduleSpecifier.match(regex);\n\n if (match) {\n // Prendre le premier mapping disponible\n const first = mappings[0];\n\n // Résoudre le chemin absolu\n let relativedPath = baseUrl ? join(baseUrl, first) : first;\n\n if (match[1]) {\n relativedPath = relativedPath.replace('*', match[1]);\n }\n\n // Calculer le chemin relatif depuis le fichier source actuel\n const sourceFileDir = relative(\n process.cwd(),\n sourceFile.getDirectoryPath(),\n );\n const relativePath = relative(sourceFileDir, relativedPath);\n\n // S'assurer que le chemin relatif commence par ./ ou ../\n return relativePath.startsWith('.')\n ? relativePath\n : `./${relativePath}`;\n }\n }\n\n return moduleSpecifier;\n};\n\n/**\n * Analyse les imports d'un fichier\n */\nexport const analyzeImports = (sourceFile: SourceFile): ImportInfo[] => {\n const imports: ImportInfo[] = [];\n\n // Import declarations (import ... from '...')\n sourceFile.getImportDeclarations().forEach(importDecl => {\n const rawModuleSpecifier = importDecl.getModuleSpecifierValue();\n const moduleSpecifier = resolveModuleSpecifier(\n sourceFile,\n rawModuleSpecifier,\n );\n\n // Import default\n const defaultImport = importDecl.getDefaultImport();\n if (defaultImport) {\n imports.push({\n moduleSpecifier,\n kind: 'default',\n default: defaultImport.getText(),\n });\n }\n\n // Import namespace (* as name)\n const namespaceImport = importDecl.getNamespaceImport();\n if (namespaceImport) {\n imports.push({\n moduleSpecifier,\n kind: 'namespace',\n default: namespaceImport.getText(),\n });\n }\n\n // Named imports ({ name1, name2 })\n const namedImports = importDecl.getNamedImports();\n if (namedImports.length > 0) {\n imports.push({\n moduleSpecifier,\n kind: 'named',\n namedImports: namedImports.map(ni => ni.getName()),\n });\n }\n\n // Side-effect import (import '...')\n if (!defaultImport && !namespaceImport && namedImports.length === 0) {\n imports.push({\n moduleSpecifier,\n kind: 'side-effect',\n });\n }\n });\n\n // Dynamic imports (import('...'))\n sourceFile\n .getDescendantsOfKind(SyntaxKind.CallExpression)\n .forEach(callExpr => {\n if (\n callExpr.getExpression().getKind() === SyntaxKind.ImportKeyword\n ) {\n const arg = callExpr.getArguments()[0];\n if (arg && arg.getKind() === SyntaxKind.StringLiteral) {\n const rawModuleSpecifier = arg.getText().replace(/['\"]/g, '');\n const moduleSpecifier = resolveModuleSpecifier(\n sourceFile,\n rawModuleSpecifier,\n );\n imports.push({\n moduleSpecifier,\n kind: 'side-effect',\n isDynamic: true,\n });\n }\n }\n });\n\n return imports;\n};\n\nexport const buildImportStrings = (imports: ImportInfo[]) => {\n return imports.map(imp => {\n switch (imp.kind) {\n case 'named': {\n const namedImports = imp.namedImports?.join(', ') || '';\n return `import { ${namedImports} } from '${imp.moduleSpecifier}';`;\n }\n case 'namespace':\n return `import * as ${imp.default} from '${imp.moduleSpecifier}';`;\n case 'side-effect': {\n if (imp.isDynamic) {\n return `// Dynamic import: import('${imp.moduleSpecifier}')`;\n }\n return `import '${imp.moduleSpecifier}';`;\n }\n\n case 'default':\n return `import ${imp.default} from '${imp.moduleSpecifier}';`;\n default:\n return '';\n }\n });\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"imports.js","sources":["../src/imports.ts"],"sourcesContent":["import { join, relative } from 'node:path';\nimport { SourceFile, SyntaxKind } from 'ts-morph';\nimport type { ImportInfo } from './schemas';\n\n/**\n * Résout le moduleSpecifier en utilisant les paths du tsconfig si il commence par \"#\"\n */\nconst resolveModuleSpecifier = (\n sourceFile: SourceFile,\n moduleSpecifier: string,\n): string => {\n const paths = sourceFile.getProject().getCompilerOptions().paths;\n\n if (!paths) return moduleSpecifier;\n\n const baseUrl = sourceFile.getProject().getCompilerOptions().baseUrl;\n const paths2 = Object.entries(paths);\n\n // Chercher la correspondance dans les paths\n for (const [pattern, mappings] of paths2) {\n // Remplacer * par une regex pour matcher\n const regexPattern = pattern.replace(/\\*/g, '(.*)');\n const regex = new RegExp(`^${regexPattern}$`);\n const match = moduleSpecifier.match(regex);\n\n if (match) {\n // Prendre le premier mapping disponible\n const first = mappings[0];\n\n // Résoudre le chemin absolu\n let relativedPath = baseUrl ? join(baseUrl, first) : first;\n\n if (match[1]) {\n relativedPath = relativedPath.replace('*', match[1]);\n }\n\n // Calculer le chemin relatif depuis le fichier source actuel\n const sourceFileDir = relative(\n process.cwd(),\n sourceFile.getDirectoryPath(),\n );\n const relativePath = relative(sourceFileDir, relativedPath);\n\n // S'assurer que le chemin relatif commence par ./ ou ../\n return relativePath.startsWith('.')\n ? relativePath\n : `./${relativePath}`;\n }\n }\n\n return moduleSpecifier;\n};\n\n/**\n * Analyse les imports d'un fichier\n */\nexport const analyzeImports = (sourceFile: SourceFile): ImportInfo[] => {\n const imports: ImportInfo[] = [];\n\n // Import declarations (import ... from '...')\n sourceFile.getImportDeclarations().forEach(importDecl => {\n const rawModuleSpecifier = importDecl.getModuleSpecifierValue();\n const moduleSpecifier = resolveModuleSpecifier(\n sourceFile,\n rawModuleSpecifier,\n );\n\n // Import default\n const defaultImport = importDecl.getDefaultImport();\n if (defaultImport) {\n imports.push({\n moduleSpecifier,\n kind: 'default',\n default: defaultImport.getText(),\n });\n }\n\n // Import namespace (* as name)\n const namespaceImport = importDecl.getNamespaceImport();\n if (namespaceImport) {\n imports.push({\n moduleSpecifier,\n kind: 'namespace',\n default: namespaceImport.getText(),\n });\n }\n\n // Named imports ({ name1, name2 })\n const namedImports = importDecl.getNamedImports();\n if (namedImports.length > 0) {\n imports.push({\n moduleSpecifier,\n kind: 'named',\n namedImports: namedImports.map(ni => ni.getName()),\n });\n }\n\n // Side-effect import (import '...')\n if (!defaultImport && !namespaceImport && namedImports.length === 0) {\n imports.push({\n moduleSpecifier,\n kind: 'side-effect',\n });\n }\n });\n\n // Dynamic imports (import('...'))\n sourceFile\n .getDescendantsOfKind(SyntaxKind.CallExpression)\n .forEach(callExpr => {\n if (\n callExpr.getExpression().getKind() === SyntaxKind.ImportKeyword\n ) {\n const arg = callExpr.getArguments()[0];\n if (arg && arg.getKind() === SyntaxKind.StringLiteral) {\n const rawModuleSpecifier = arg.getText().replace(/['\"]/g, '');\n const moduleSpecifier = resolveModuleSpecifier(\n sourceFile,\n rawModuleSpecifier,\n );\n imports.push({\n moduleSpecifier,\n kind: 'side-effect',\n isDynamic: true,\n });\n }\n }\n });\n\n return imports;\n};\n\nexport const buildImportStrings = (imports: ImportInfo[]) => {\n return imports.map(imp => {\n switch (imp.kind) {\n case 'named': {\n const namedImports = imp.namedImports?.join(', ') || '';\n return `import { ${namedImports} } from '${imp.moduleSpecifier}';`;\n }\n case 'namespace':\n return `import * as ${imp.default} from '${imp.moduleSpecifier}';`;\n case 'side-effect': {\n if (imp.isDynamic) {\n return `// Dynamic import: import('${imp.moduleSpecifier}')`;\n }\n return `import '${imp.moduleSpecifier}';`;\n }\n\n case 'default':\n return `import ${imp.default} from '${imp.moduleSpecifier}';`;\n default:\n return '';\n }\n });\n};\n"],"names":[],"mappings":"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"}
package/lib/index.cjs CHANGED
@@ -4,6 +4,7 @@ var functions_add = require('./functions/add.cjs');
4
4
  var functions_generate = require('./functions/generate.cjs');
5
5
  var functions_init = require('./functions/init.cjs');
6
6
  var functions_remove = require('./functions/remove.cjs');
7
+ var schemas = require('./schemas.cjs');
7
8
 
8
9
 
9
10
 
@@ -13,4 +14,11 @@ exports.transformJSON = functions_generate.transformJSON;
13
14
  exports.createTypesStructure = functions_init.createTypesStructure;
14
15
  exports.init = functions_init.init;
15
16
  exports.remove = functions_remove.remove;
17
+ exports.AnalysisStatsSchema = schemas.AnalysisStatsSchema;
18
+ exports.CodeAnalysisFileSchema = schemas.CodeAnalysisFileSchema;
19
+ exports.CodebaseAnalysisSchema = schemas.CodebaseAnalysisSchema;
20
+ exports.DeclarationKindSchema = schemas.DeclarationKindSchema;
21
+ exports.ExportInfoSchema = schemas.ExportInfoSchema;
22
+ exports.FileAnalysisSchema = schemas.FileAnalysisSchema;
23
+ exports.ImportInfoSchema = schemas.ImportInfoSchema;
16
24
  //# sourceMappingURL=index.cjs.map
package/lib/index.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;"}
package/lib/index.d.ts CHANGED
@@ -1,2 +1,4 @@
1
1
  export * from './functions';
2
+ export * from './schemas';
3
+ export * from './types';
2
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
package/lib/index.js CHANGED
@@ -2,4 +2,5 @@ export { add } from './functions/add.js';
2
2
  export { generate, transformJSON } from './functions/generate.js';
3
3
  export { createTypesStructure, init } from './functions/init.js';
4
4
  export { remove } from './functions/remove.js';
5
+ export { AnalysisStatsSchema, CodeAnalysisFileSchema, CodebaseAnalysisSchema, DeclarationKindSchema, ExportInfoSchema, FileAnalysisSchema, ImportInfoSchema } from './schemas.js';
5
6
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
package/lib/schemas.cjs CHANGED
@@ -22,7 +22,6 @@ function _interopNamespaceDefault(e) {
22
22
 
23
23
  var v__namespace = /*#__PURE__*/_interopNamespaceDefault(v);
24
24
 
25
- // Schema pour DeclarationKind
26
25
  const DeclarationKindSchema = v__namespace.picklist([
27
26
  'function',
28
27
  'class',
@@ -33,7 +32,6 @@ const DeclarationKindSchema = v__namespace.picklist([
33
32
  'let',
34
33
  'enum',
35
34
  ]);
36
- // Schema pour ImportInfo
37
35
  const ImportInfoSchema = v__namespace.object({
38
36
  moduleSpecifier: v__namespace.string(),
39
37
  kind: v__namespace.picklist(['default', 'named', 'namespace', 'side-effect']),
@@ -41,7 +39,6 @@ const ImportInfoSchema = v__namespace.object({
41
39
  default: v__namespace.optional(v__namespace.string()),
42
40
  isDynamic: v__namespace.optional(v__namespace.boolean()),
43
41
  });
44
- // Schema pour ExportInfo
45
42
  const ExportInfoSchema = v__namespace.object({
46
43
  name: v__namespace.string(),
47
44
  kind: v__namespace.picklist(['default', 'named', 'namespace']),
@@ -49,7 +46,6 @@ const ExportInfoSchema = v__namespace.object({
49
46
  moduleSpecifier: v__namespace.optional(v__namespace.string()),
50
47
  declarationKind: v__namespace.optional(DeclarationKindSchema),
51
48
  });
52
- // Schema pour FileAnalysis
53
49
  const FileAnalysisSchema = v__namespace.object({
54
50
  relativePath: v__namespace.string(),
55
51
  imports: v__namespace.array(ImportInfoSchema),
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.cjs","sources":["../src/schemas.ts"],"sourcesContent":["import * as v from 'valibot';\nimport { PROPERTIES } from './constants';\n\n// Schema pour DeclarationKind\nexport const DeclarationKindSchema = v.picklist([\n 'function',\n 'class',\n 'interface',\n 'type',\n 'variable',\n 'const',\n 'let',\n 'enum',\n]);\n\n// Schema pour ImportInfo\nexport const ImportInfoSchema = v.object({\n moduleSpecifier: v.string(),\n kind: v.picklist(['default', 'named', 'namespace', 'side-effect']),\n namedImports: v.optional(v.array(v.string())),\n default: v.optional(v.string()),\n isDynamic: v.optional(v.boolean()),\n});\n\n// Schema pour ExportInfo\nexport const ExportInfoSchema = v.object({\n name: v.string(),\n kind: v.picklist(['default', 'named', 'namespace']),\n text: v.optional(v.string()),\n moduleSpecifier: v.optional(v.string()),\n declarationKind: v.optional(DeclarationKindSchema),\n});\n\n// Schema pour FileAnalysis\nexport const FileAnalysisSchema = v.object({\n relativePath: v.string(),\n imports: v.array(ImportInfoSchema),\n exports: v.optional(v.array(ExportInfoSchema)),\n text: v.string(),\n});\n\n// Schema pour CodebaseAnalysis\nexport const CodebaseAnalysisSchema = v.record(\n v.string(),\n FileAnalysisSchema,\n);\n\n// Schema pour les statistiques d'analyse\nexport const AnalysisStatsSchema = v.object({\n files: v.number(),\n imports: v.number(),\n exports: v.number(),\n});\n\n// Schema complet pour un fichier .code contenant l'analyse complète\nexport const CodeAnalysisFileSchema = v.object({\n [PROPERTIES.CODEBASE_ANALYSIS]: CodebaseAnalysisSchema,\n [PROPERTIES.STATS]: v.optional(AnalysisStatsSchema),\n});\n\n// Types inférés des schémas\nexport type DeclarationKind = v.InferOutput<typeof DeclarationKindSchema>;\nexport type ImportInfo = v.InferOutput<typeof ImportInfoSchema>;\nexport type ExportInfo = v.InferOutput<typeof ExportInfoSchema>;\nexport type FileAnalysis = v.InferOutput<typeof FileAnalysisSchema>;\nexport type CodebaseAnalysis = v.InferOutput<\n typeof CodebaseAnalysisSchema\n>;\nexport type AnalysisStats = v.InferOutput<typeof AnalysisStatsSchema>;\nexport type CodeAnalysisFile = v.InferOutput<\n typeof CodeAnalysisFileSchema\n>;\n"],"names":["v","PROPERTIES"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAGA;AACO,MAAM,qBAAqB,GAAGA,YAAC,CAAC,QAAQ,CAAC;IAC9C,UAAU;IACV,OAAO;IACP,WAAW;IACX,MAAM;IACN,UAAU;IACV,OAAO;IACP,KAAK;IACL,MAAM;AACP,CAAA;AAED;AACO,MAAM,gBAAgB,GAAGA,YAAC,CAAC,MAAM,CAAC;AACvC,IAAA,eAAe,EAAEA,YAAC,CAAC,MAAM,EAAE;AAC3B,IAAA,IAAI,EAAEA,YAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AAClE,IAAA,YAAY,EAAEA,YAAC,CAAC,QAAQ,CAACA,YAAC,CAAC,KAAK,CAACA,YAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,OAAO,EAAEA,YAAC,CAAC,QAAQ,CAACA,YAAC,CAAC,MAAM,EAAE,CAAC;IAC/B,SAAS,EAAEA,YAAC,CAAC,QAAQ,CAACA,YAAC,CAAC,OAAO,EAAE,CAAC;AACnC,CAAA;AAED;AACO,MAAM,gBAAgB,GAAGA,YAAC,CAAC,MAAM,CAAC;AACvC,IAAA,IAAI,EAAEA,YAAC,CAAC,MAAM,EAAE;AAChB,IAAA,IAAI,EAAEA,YAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACnD,IAAI,EAAEA,YAAC,CAAC,QAAQ,CAACA,YAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,eAAe,EAAEA,YAAC,CAAC,QAAQ,CAACA,YAAC,CAAC,MAAM,EAAE,CAAC;AACvC,IAAA,eAAe,EAAEA,YAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;AACnD,CAAA;AAED;AACO,MAAM,kBAAkB,GAAGA,YAAC,CAAC,MAAM,CAAC;AACzC,IAAA,YAAY,EAAEA,YAAC,CAAC,MAAM,EAAE;AACxB,IAAA,OAAO,EAAEA,YAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;IAClC,OAAO,EAAEA,YAAC,CAAC,QAAQ,CAACA,YAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAC9C,IAAA,IAAI,EAAEA,YAAC,CAAC,MAAM,EAAE;AACjB,CAAA;AAED;AACO,MAAM,sBAAsB,GAAGA,YAAC,CAAC,MAAM,CAC5CA,YAAC,CAAC,MAAM,EAAE,EACV,kBAAkB;AAGpB;AACO,MAAM,mBAAmB,GAAGA,YAAC,CAAC,MAAM,CAAC;AAC1C,IAAA,KAAK,EAAEA,YAAC,CAAC,MAAM,EAAE;AACjB,IAAA,OAAO,EAAEA,YAAC,CAAC,MAAM,EAAE;AACnB,IAAA,OAAO,EAAEA,YAAC,CAAC,MAAM,EAAE;AACpB,CAAA;AAED;AACO,MAAM,sBAAsB,GAAGA,YAAC,CAAC,MAAM,CAAC;AAC7C,IAAA,CAACC,oBAAU,CAAC,iBAAiB,GAAG,sBAAsB;IACtD,CAACA,oBAAU,CAAC,KAAK,GAAGD,YAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;AACpD,CAAA;;;;;;;;;;"}
1
+ {"version":3,"file":"schemas.cjs","sources":["../src/schemas.ts"],"sourcesContent":["import * as v from 'valibot';\nimport { PROPERTIES } from './constants';\n\nexport const DeclarationKindSchema = v.picklist([\n 'function',\n 'class',\n 'interface',\n 'type',\n 'variable',\n 'const',\n 'let',\n 'enum',\n]);\n\nexport const ImportInfoSchema = v.object({\n moduleSpecifier: v.string(),\n kind: v.picklist(['default', 'named', 'namespace', 'side-effect']),\n namedImports: v.optional(v.array(v.string())),\n default: v.optional(v.string()),\n isDynamic: v.optional(v.boolean()),\n});\n\nexport const ExportInfoSchema = v.object({\n name: v.string(),\n kind: v.picklist(['default', 'named', 'namespace']),\n text: v.optional(v.string()),\n moduleSpecifier: v.optional(v.string()),\n declarationKind: v.optional(DeclarationKindSchema),\n});\n\nexport const FileAnalysisSchema = v.object({\n relativePath: v.string(),\n imports: v.array(ImportInfoSchema),\n exports: v.optional(v.array(ExportInfoSchema)),\n text: v.string(),\n});\n\n// Schema pour CodebaseAnalysis\nexport const CodebaseAnalysisSchema = v.record(\n v.string(),\n FileAnalysisSchema,\n);\n\n// Schema pour les statistiques d'analyse\nexport const AnalysisStatsSchema = v.object({\n files: v.number(),\n imports: v.number(),\n exports: v.number(),\n});\n\n// Schema complet pour un fichier .code contenant l'analyse complète\nexport const CodeAnalysisFileSchema = v.object({\n [PROPERTIES.CODEBASE_ANALYSIS]: CodebaseAnalysisSchema,\n [PROPERTIES.STATS]: v.optional(AnalysisStatsSchema),\n});\n\n// Types inférés des schémas\nexport type DeclarationKind = v.InferOutput<typeof DeclarationKindSchema>;\nexport type ImportInfo = v.InferOutput<typeof ImportInfoSchema>;\nexport type ExportInfo = v.InferOutput<typeof ExportInfoSchema>;\nexport type FileAnalysis = v.InferOutput<typeof FileAnalysisSchema>;\nexport type CodebaseAnalysis = v.InferOutput<\n typeof CodebaseAnalysisSchema\n>;\nexport type AnalysisStats = v.InferOutput<typeof AnalysisStatsSchema>;\nexport type CodeAnalysisFile = v.InferOutput<\n typeof CodeAnalysisFileSchema\n>;\n"],"names":["v","PROPERTIES"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAGO,MAAM,qBAAqB,GAAGA,YAAC,CAAC,QAAQ,CAAC;IAC9C,UAAU;IACV,OAAO;IACP,WAAW;IACX,MAAM;IACN,UAAU;IACV,OAAO;IACP,KAAK;IACL,MAAM;AACP,CAAA;AAEM,MAAM,gBAAgB,GAAGA,YAAC,CAAC,MAAM,CAAC;AACvC,IAAA,eAAe,EAAEA,YAAC,CAAC,MAAM,EAAE;AAC3B,IAAA,IAAI,EAAEA,YAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AAClE,IAAA,YAAY,EAAEA,YAAC,CAAC,QAAQ,CAACA,YAAC,CAAC,KAAK,CAACA,YAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,OAAO,EAAEA,YAAC,CAAC,QAAQ,CAACA,YAAC,CAAC,MAAM,EAAE,CAAC;IAC/B,SAAS,EAAEA,YAAC,CAAC,QAAQ,CAACA,YAAC,CAAC,OAAO,EAAE,CAAC;AACnC,CAAA;AAEM,MAAM,gBAAgB,GAAGA,YAAC,CAAC,MAAM,CAAC;AACvC,IAAA,IAAI,EAAEA,YAAC,CAAC,MAAM,EAAE;AAChB,IAAA,IAAI,EAAEA,YAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACnD,IAAI,EAAEA,YAAC,CAAC,QAAQ,CAACA,YAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,eAAe,EAAEA,YAAC,CAAC,QAAQ,CAACA,YAAC,CAAC,MAAM,EAAE,CAAC;AACvC,IAAA,eAAe,EAAEA,YAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;AACnD,CAAA;AAEM,MAAM,kBAAkB,GAAGA,YAAC,CAAC,MAAM,CAAC;AACzC,IAAA,YAAY,EAAEA,YAAC,CAAC,MAAM,EAAE;AACxB,IAAA,OAAO,EAAEA,YAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;IAClC,OAAO,EAAEA,YAAC,CAAC,QAAQ,CAACA,YAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAC9C,IAAA,IAAI,EAAEA,YAAC,CAAC,MAAM,EAAE;AACjB,CAAA;AAED;AACO,MAAM,sBAAsB,GAAGA,YAAC,CAAC,MAAM,CAC5CA,YAAC,CAAC,MAAM,EAAE,EACV,kBAAkB;AAGpB;AACO,MAAM,mBAAmB,GAAGA,YAAC,CAAC,MAAM,CAAC;AAC1C,IAAA,KAAK,EAAEA,YAAC,CAAC,MAAM,EAAE;AACjB,IAAA,OAAO,EAAEA,YAAC,CAAC,MAAM,EAAE;AACnB,IAAA,OAAO,EAAEA,YAAC,CAAC,MAAM,EAAE;AACpB,CAAA;AAED;AACO,MAAM,sBAAsB,GAAGA,YAAC,CAAC,MAAM,CAAC;AAC7C,IAAA,CAACC,oBAAU,CAAC,iBAAiB,GAAG,sBAAsB;IACtD,CAACA,oBAAU,CAAC,KAAK,GAAGD,YAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;AACpD,CAAA;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAI7B,eAAO,MAAM,qBAAqB,6GAShC,CAAC;AAGH,eAAO,MAAM,gBAAgB;;;;;;aAM3B,CAAC;AAGH,eAAO,MAAM,gBAAgB;;;;;;aAM3B,CAAC;AAGH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;aAK7B,CAAC;AAGH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;yBAGlC,CAAC;AAGF,eAAO,MAAM,mBAAmB;;;;aAI9B,CAAC;AAGH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;aAGjC,CAAC;AAGH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAC1E,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAChE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAChE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACpE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAC1C,OAAO,sBAAsB,CAC9B,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACtE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAC1C,OAAO,sBAAsB,CAC9B,CAAC"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAG7B,eAAO,MAAM,qBAAqB,6GAShC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;aAM3B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;aAM3B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;aAK7B,CAAC;AAGH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;yBAGlC,CAAC;AAGF,eAAO,MAAM,mBAAmB;;;;aAI9B,CAAC;AAGH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;aAGjC,CAAC;AAGH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAC1E,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAChE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAChE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACpE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAC1C,OAAO,sBAAsB,CAC9B,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACtE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAC1C,OAAO,sBAAsB,CAC9B,CAAC"}
package/lib/schemas.js CHANGED
@@ -1,7 +1,6 @@
1
1
  import * as v from 'valibot';
2
2
  import { PROPERTIES } from './constants.js';
3
3
 
4
- // Schema pour DeclarationKind
5
4
  const DeclarationKindSchema = v.picklist([
6
5
  'function',
7
6
  'class',
@@ -12,7 +11,6 @@ const DeclarationKindSchema = v.picklist([
12
11
  'let',
13
12
  'enum',
14
13
  ]);
15
- // Schema pour ImportInfo
16
14
  const ImportInfoSchema = v.object({
17
15
  moduleSpecifier: v.string(),
18
16
  kind: v.picklist(['default', 'named', 'namespace', 'side-effect']),
@@ -20,7 +18,6 @@ const ImportInfoSchema = v.object({
20
18
  default: v.optional(v.string()),
21
19
  isDynamic: v.optional(v.boolean()),
22
20
  });
23
- // Schema pour ExportInfo
24
21
  const ExportInfoSchema = v.object({
25
22
  name: v.string(),
26
23
  kind: v.picklist(['default', 'named', 'namespace']),
@@ -28,7 +25,6 @@ const ExportInfoSchema = v.object({
28
25
  moduleSpecifier: v.optional(v.string()),
29
26
  declarationKind: v.optional(DeclarationKindSchema),
30
27
  });
31
- // Schema pour FileAnalysis
32
28
  const FileAnalysisSchema = v.object({
33
29
  relativePath: v.string(),
34
30
  imports: v.array(ImportInfoSchema),
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sources":["../src/schemas.ts"],"sourcesContent":["import * as v from 'valibot';\nimport { PROPERTIES } from './constants';\n\n// Schema pour DeclarationKind\nexport const DeclarationKindSchema = v.picklist([\n 'function',\n 'class',\n 'interface',\n 'type',\n 'variable',\n 'const',\n 'let',\n 'enum',\n]);\n\n// Schema pour ImportInfo\nexport const ImportInfoSchema = v.object({\n moduleSpecifier: v.string(),\n kind: v.picklist(['default', 'named', 'namespace', 'side-effect']),\n namedImports: v.optional(v.array(v.string())),\n default: v.optional(v.string()),\n isDynamic: v.optional(v.boolean()),\n});\n\n// Schema pour ExportInfo\nexport const ExportInfoSchema = v.object({\n name: v.string(),\n kind: v.picklist(['default', 'named', 'namespace']),\n text: v.optional(v.string()),\n moduleSpecifier: v.optional(v.string()),\n declarationKind: v.optional(DeclarationKindSchema),\n});\n\n// Schema pour FileAnalysis\nexport const FileAnalysisSchema = v.object({\n relativePath: v.string(),\n imports: v.array(ImportInfoSchema),\n exports: v.optional(v.array(ExportInfoSchema)),\n text: v.string(),\n});\n\n// Schema pour CodebaseAnalysis\nexport const CodebaseAnalysisSchema = v.record(\n v.string(),\n FileAnalysisSchema,\n);\n\n// Schema pour les statistiques d'analyse\nexport const AnalysisStatsSchema = v.object({\n files: v.number(),\n imports: v.number(),\n exports: v.number(),\n});\n\n// Schema complet pour un fichier .code contenant l'analyse complète\nexport const CodeAnalysisFileSchema = v.object({\n [PROPERTIES.CODEBASE_ANALYSIS]: CodebaseAnalysisSchema,\n [PROPERTIES.STATS]: v.optional(AnalysisStatsSchema),\n});\n\n// Types inférés des schémas\nexport type DeclarationKind = v.InferOutput<typeof DeclarationKindSchema>;\nexport type ImportInfo = v.InferOutput<typeof ImportInfoSchema>;\nexport type ExportInfo = v.InferOutput<typeof ExportInfoSchema>;\nexport type FileAnalysis = v.InferOutput<typeof FileAnalysisSchema>;\nexport type CodebaseAnalysis = v.InferOutput<\n typeof CodebaseAnalysisSchema\n>;\nexport type AnalysisStats = v.InferOutput<typeof AnalysisStatsSchema>;\nexport type CodeAnalysisFile = v.InferOutput<\n typeof CodeAnalysisFileSchema\n>;\n"],"names":[],"mappings":";;;AAGA;AACO,MAAM,qBAAqB,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC9C,UAAU;IACV,OAAO;IACP,WAAW;IACX,MAAM;IACN,UAAU;IACV,OAAO;IACP,KAAK;IACL,MAAM;AACP,CAAA;AAED;AACO,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;AACvC,IAAA,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;AAC3B,IAAA,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AAClE,IAAA,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC/B,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AACnC,CAAA;AAED;AACO,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;AACvC,IAAA,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;AAChB,IAAA,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACnD,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AACvC,IAAA,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;AACnD,CAAA;AAED;AACO,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;AACzC,IAAA,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;AACxB,IAAA,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;IAClC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAC9C,IAAA,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;AACjB,CAAA;AAED;AACO,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAC5C,CAAC,CAAC,MAAM,EAAE,EACV,kBAAkB;AAGpB;AACO,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;AAC1C,IAAA,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;AACjB,IAAA,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;AACnB,IAAA,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;AACpB,CAAA;AAED;AACO,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;AAC7C,IAAA,CAAC,UAAU,CAAC,iBAAiB,GAAG,sBAAsB;IACtD,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;AACpD,CAAA;;;;"}
1
+ {"version":3,"file":"schemas.js","sources":["../src/schemas.ts"],"sourcesContent":["import * as v from 'valibot';\nimport { PROPERTIES } from './constants';\n\nexport const DeclarationKindSchema = v.picklist([\n 'function',\n 'class',\n 'interface',\n 'type',\n 'variable',\n 'const',\n 'let',\n 'enum',\n]);\n\nexport const ImportInfoSchema = v.object({\n moduleSpecifier: v.string(),\n kind: v.picklist(['default', 'named', 'namespace', 'side-effect']),\n namedImports: v.optional(v.array(v.string())),\n default: v.optional(v.string()),\n isDynamic: v.optional(v.boolean()),\n});\n\nexport const ExportInfoSchema = v.object({\n name: v.string(),\n kind: v.picklist(['default', 'named', 'namespace']),\n text: v.optional(v.string()),\n moduleSpecifier: v.optional(v.string()),\n declarationKind: v.optional(DeclarationKindSchema),\n});\n\nexport const FileAnalysisSchema = v.object({\n relativePath: v.string(),\n imports: v.array(ImportInfoSchema),\n exports: v.optional(v.array(ExportInfoSchema)),\n text: v.string(),\n});\n\n// Schema pour CodebaseAnalysis\nexport const CodebaseAnalysisSchema = v.record(\n v.string(),\n FileAnalysisSchema,\n);\n\n// Schema pour les statistiques d'analyse\nexport const AnalysisStatsSchema = v.object({\n files: v.number(),\n imports: v.number(),\n exports: v.number(),\n});\n\n// Schema complet pour un fichier .code contenant l'analyse complète\nexport const CodeAnalysisFileSchema = v.object({\n [PROPERTIES.CODEBASE_ANALYSIS]: CodebaseAnalysisSchema,\n [PROPERTIES.STATS]: v.optional(AnalysisStatsSchema),\n});\n\n// Types inférés des schémas\nexport type DeclarationKind = v.InferOutput<typeof DeclarationKindSchema>;\nexport type ImportInfo = v.InferOutput<typeof ImportInfoSchema>;\nexport type ExportInfo = v.InferOutput<typeof ExportInfoSchema>;\nexport type FileAnalysis = v.InferOutput<typeof FileAnalysisSchema>;\nexport type CodebaseAnalysis = v.InferOutput<\n typeof CodebaseAnalysisSchema\n>;\nexport type AnalysisStats = v.InferOutput<typeof AnalysisStatsSchema>;\nexport type CodeAnalysisFile = v.InferOutput<\n typeof CodeAnalysisFileSchema\n>;\n"],"names":[],"mappings":";;;AAGO,MAAM,qBAAqB,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC9C,UAAU;IACV,OAAO;IACP,WAAW;IACX,MAAM;IACN,UAAU;IACV,OAAO;IACP,KAAK;IACL,MAAM;AACP,CAAA;AAEM,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;AACvC,IAAA,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;AAC3B,IAAA,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AAClE,IAAA,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC/B,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AACnC,CAAA;AAEM,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;AACvC,IAAA,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;AAChB,IAAA,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACnD,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AACvC,IAAA,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;AACnD,CAAA;AAEM,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;AACzC,IAAA,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;AACxB,IAAA,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;IAClC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAC9C,IAAA,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;AACjB,CAAA;AAED;AACO,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAC5C,CAAC,CAAC,MAAM,EAAE,EACV,kBAAkB;AAGpB;AACO,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;AAC1C,IAAA,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;AACjB,IAAA,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;AACnB,IAAA,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;AACpB,CAAA;AAED;AACO,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;AAC7C,IAAA,CAAC,UAAU,CAAC,iBAAiB,GAAG,sBAAsB;IACtD,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;AACpD,CAAA;;;;"}
package/lib/types.d.ts CHANGED
@@ -1,38 +1,3 @@
1
- export type DeclarationKind = 'function' | 'class' | 'interface' | 'type' | 'variable' | 'const' | 'let' | 'enum';
2
- export type ImportInfo = {
3
- /** Module importé (ex: './utils', 'fs', etc.) */
4
- moduleSpecifier: string;
5
- /** Type d'import (default, named, namespace, etc.) */
6
- kind: 'default' | 'named' | 'namespace' | 'side-effect';
7
- /** Noms importés pour les imports named */
8
- namedImports?: string[];
9
- /** Nom de l'import default ou namespace */
10
- default?: string;
11
- /** Import dynamique */
12
- isDynamic?: boolean;
13
- };
14
- export type ExportInfo = {
15
- /** Nom de l'export */
16
- name: string;
17
- /** Type d'export */
18
- kind: 'default' | 'named' | 'namespace';
19
- /** Texte complet de l'export */
20
- text?: string;
21
- /** Si c'est un re-export, le module source */
22
- moduleSpecifier?: string;
23
- /** Si c'est une déclaration (function, class, etc.) */
24
- declarationKind?: DeclarationKind;
25
- };
26
- export type FileAnalysis = {
27
- /** Chemin relatif du fichier depuis src/ */
28
- relativePath: string;
29
- /** Liste des imports du fichier */
30
- imports: ImportInfo[];
31
- /** Liste des exports du fichier */
32
- exports: ExportInfo[];
33
- text: string;
34
- };
35
- export type CodebaseAnalysis = Record<string, FileAnalysis>;
36
1
  /**
37
2
  * NOmit type - Auto-generated expression
38
3
  *
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GACvB,UAAU,GACV,OAAO,GACP,WAAW,GACX,MAAM,GACN,UAAU,GACV,OAAO,GACP,KAAK,GACL,MAAM,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG;IACvB,iDAAiD;IACjD,eAAe,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,aAAa,CAAC;IACxD,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,WAAW,CAAC;IACxC,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,4CAA4C;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,mCAAmC;IACnC,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bemedev/codebase",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "description": "The CLI for to generate codebase, and import partially a library. From @bemedev",
5
5
  "author": {
6
6
  "email": "bri_lvi@icloud.com",