@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 +14 -1
- package/README.md +175 -42
- package/lib/analyse.cjs.map +1 -1
- package/lib/analyse.d.ts +1 -1
- package/lib/analyse.d.ts.map +1 -1
- package/lib/analyse.js.map +1 -1
- package/lib/exports.cjs.map +1 -1
- package/lib/exports.d.ts +7 -2
- package/lib/exports.d.ts.map +1 -1
- package/lib/exports.js.map +1 -1
- package/lib/functions/add.cjs.map +1 -1
- package/lib/functions/add.d.ts.map +1 -1
- package/lib/functions/add.js.map +1 -1
- package/lib/functions/generate.cjs +1 -1
- package/lib/functions/generate.cjs.map +1 -1
- package/lib/functions/generate.d.ts +8 -2
- package/lib/functions/generate.d.ts.map +1 -1
- package/lib/functions/generate.js +1 -1
- package/lib/functions/generate.js.map +1 -1
- package/lib/imports.cjs.map +1 -1
- package/lib/imports.d.ts +1 -1
- package/lib/imports.d.ts.map +1 -1
- package/lib/imports.js.map +1 -1
- package/lib/index.cjs +8 -0
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/schemas.cjs +0 -4
- package/lib/schemas.cjs.map +1 -1
- package/lib/schemas.d.ts.map +1 -1
- package/lib/schemas.js +0 -4
- package/lib/schemas.js.map +1 -1
- package/lib/types.d.ts +0 -35
- package/lib/types.d.ts.map +1 -1
- package/package.json +1 -1
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.
|
|
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
|
-
#
|
|
1
|
+
# @bemedev/codebase
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
pour manipuler les constantes, helpers, types, et schemas, ainsi qu'une CLI
|
|
7
|
-
extensible.
|
|
3
|
+

|
|
4
|
+

|
|
5
|
+

|
|
8
6
|
|
|
9
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
43
|
+
pnpm add -D @bemedev/codebase
|
|
21
44
|
```
|
|
22
45
|
|
|
23
|
-
##
|
|
46
|
+
## 🎯 Usage
|
|
24
47
|
|
|
25
|
-
|
|
48
|
+
### CLI
|
|
26
49
|
|
|
27
|
-
|
|
28
|
-
import { analyse, generate, helpers } from 'bemedev';
|
|
50
|
+
#### Generate a codebase analysis
|
|
29
51
|
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
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
|
-
|
|
37
|
-
|
|
38
|
-
- `pnpm build` : génère les fichiers de production
|
|
73
|
+
```typescript
|
|
74
|
+
import { generate, analyze } from '@bemedev/codebase';
|
|
39
75
|
|
|
40
|
-
|
|
76
|
+
// Analyze the codebase
|
|
77
|
+
const analysis = analyze('src');
|
|
41
78
|
|
|
42
|
-
|
|
43
|
-
|
|
79
|
+
// Generate an analysis file
|
|
80
|
+
await generate({
|
|
81
|
+
output: 'my-codebase.json',
|
|
82
|
+
excludes: ['node_modules', 'dist'],
|
|
83
|
+
});
|
|
84
|
+
```
|
|
44
85
|
|
|
45
|
-
##
|
|
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
|
-
|
|
107
|
+
## 🏗️ Project structure
|
|
48
108
|
|
|
49
|
-
|
|
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
|
-
|
|
122
|
+
## 🧪 Development scripts
|
|
52
123
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
124
|
+
```bash
|
|
125
|
+
# Run tests
|
|
126
|
+
pnpm test
|
|
56
127
|
|
|
57
|
-
|
|
128
|
+
# Linting
|
|
129
|
+
pnpm lint
|
|
58
130
|
|
|
59
|
-
|
|
131
|
+
# Build
|
|
132
|
+
pnpm build
|
|
60
133
|
|
|
61
|
-
|
|
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
|
-
##
|
|
195
|
+
## [CHANGE_LOG](CHANGE_LOG.md)
|
|
196
|
+
|
|
197
|
+
<br/>
|
|
66
198
|
|
|
67
|
-
|
|
199
|
+
## Author
|
|
68
200
|
|
|
69
|
-
[
|
|
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
|
-
##
|
|
208
|
+
## Links
|
|
76
209
|
|
|
77
|
-
- [Documentation](https://github.com/chlbri/
|
|
210
|
+
- [Documentation](https://github.com/chlbri/codebase)
|
package/lib/analyse.cjs.map
CHANGED
|
@@ -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 './
|
|
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
package/lib/analyse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyse.d.ts","sourceRoot":"","sources":["../src/analyse.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,
|
|
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"}
|
package/lib/analyse.js.map
CHANGED
|
@@ -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 './
|
|
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;;;;"}
|
package/lib/exports.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exports.cjs","sources":["../src/exports.ts"],"sourcesContent":["import { SourceFile, SyntaxKind } from 'ts-morph';\nimport type { ExportInfo } from './
|
|
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
|
-
|
|
3
|
-
|
|
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
|
package/lib/exports.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAc,MAAM,UAAU,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"}
|
package/lib/exports.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exports.js","sources":["../src/exports.ts"],"sourcesContent":["import { SourceFile, SyntaxKind } from 'ts-morph';\nimport type { ExportInfo } from './
|
|
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 {
|
|
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,
|
|
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"}
|
package/lib/functions/add.js.map
CHANGED
|
@@ -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 {
|
|
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
|
|
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 '../
|
|
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 '../
|
|
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:
|
|
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,
|
|
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
|
|
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 '../
|
|
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;;;;"}
|
package/lib/imports.cjs.map
CHANGED
|
@@ -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 './
|
|
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
package/lib/imports.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/lib/imports.js.map
CHANGED
|
@@ -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 './
|
|
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
package/lib/index.d.ts.map
CHANGED
|
@@ -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),
|
package/lib/schemas.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.cjs","sources":["../src/schemas.ts"],"sourcesContent":["import * as v from 'valibot';\nimport { PROPERTIES } from './constants';\n\
|
|
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;;;;;;;;;;"}
|
package/lib/schemas.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,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),
|
package/lib/schemas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sources":["../src/schemas.ts"],"sourcesContent":["import * as v from 'valibot';\nimport { PROPERTIES } from './constants';\n\
|
|
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
|
*
|
package/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
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"}
|