@bemedev/codebase 0.1.3 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/README.md +8 -8
  2. package/lib/_virtual/_rolldown/runtime.cjs +23 -0
  3. package/lib/analyse.cjs +48 -62
  4. package/lib/analyse.cjs.map +1 -1
  5. package/lib/analyse.d.ts +21 -3
  6. package/lib/analyse.js +45 -60
  7. package/lib/analyse.js.map +1 -1
  8. package/lib/analyse.utils.cjs +154 -205
  9. package/lib/analyse.utils.cjs.map +1 -1
  10. package/lib/analyse.utils.d.ts +1 -2
  11. package/lib/analyse.utils.js +153 -203
  12. package/lib/analyse.utils.js.map +1 -1
  13. package/lib/cli/cli.cjs +28 -27
  14. package/lib/cli/cli.cjs.map +1 -1
  15. package/lib/cli/cli.d.ts +0 -1
  16. package/lib/cli/cli.js +25 -24
  17. package/lib/cli/cli.js.map +1 -1
  18. package/lib/cli/constants.cjs +6 -5
  19. package/lib/cli/constants.cjs.map +1 -1
  20. package/lib/cli/constants.d.ts +0 -1
  21. package/lib/cli/constants.js +5 -3
  22. package/lib/cli/constants.js.map +1 -1
  23. package/lib/cli/index.cjs +6 -6
  24. package/lib/cli/index.cjs.map +1 -1
  25. package/lib/cli/index.d.ts +0 -1
  26. package/lib/cli/index.js +7 -4
  27. package/lib/cli/index.js.map +1 -1
  28. package/lib/constants.cjs +26 -28
  29. package/lib/constants.cjs.map +1 -1
  30. package/lib/constants.d.ts +0 -1
  31. package/lib/constants.js +24 -26
  32. package/lib/constants.js.map +1 -1
  33. package/lib/exports.cjs +51 -72
  34. package/lib/exports.cjs.map +1 -1
  35. package/lib/exports.d.ts +1 -2
  36. package/lib/exports.js +49 -70
  37. package/lib/exports.js.map +1 -1
  38. package/lib/functions/add.cjs +71 -84
  39. package/lib/functions/add.cjs.map +1 -1
  40. package/lib/functions/add.d.ts +1 -2
  41. package/lib/functions/add.js +68 -82
  42. package/lib/functions/add.js.map +1 -1
  43. package/lib/functions/generate.cjs +53 -56
  44. package/lib/functions/generate.cjs.map +1 -1
  45. package/lib/functions/generate.d.ts +1 -2
  46. package/lib/functions/generate.js +51 -54
  47. package/lib/functions/generate.js.map +1 -1
  48. package/lib/functions/index.cjs +11 -16
  49. package/lib/functions/index.d.ts +0 -1
  50. package/lib/functions/index.js +5 -5
  51. package/lib/functions/init.cjs +68 -97
  52. package/lib/functions/init.cjs.map +1 -1
  53. package/lib/functions/init.d.ts +0 -1
  54. package/lib/functions/init.js +66 -95
  55. package/lib/functions/init.js.map +1 -1
  56. package/lib/functions/remove.cjs +85 -103
  57. package/lib/functions/remove.cjs.map +1 -1
  58. package/lib/functions/remove.d.ts +1 -2
  59. package/lib/functions/remove.js +82 -101
  60. package/lib/functions/remove.js.map +1 -1
  61. package/lib/helpers.cjs +32 -38
  62. package/lib/helpers.cjs.map +1 -1
  63. package/lib/helpers.d.ts +3 -4
  64. package/lib/helpers.js +30 -36
  65. package/lib/helpers.js.map +1 -1
  66. package/lib/imports.cjs +88 -124
  67. package/lib/imports.cjs.map +1 -1
  68. package/lib/imports.d.ts +2 -3
  69. package/lib/imports.js +86 -122
  70. package/lib/imports.js.map +1 -1
  71. package/lib/index.cjs +22 -24
  72. package/lib/index.d.ts +4 -4
  73. package/lib/index.js +8 -6
  74. package/lib/schemas.cjs +53 -64
  75. package/lib/schemas.cjs.map +1 -1
  76. package/lib/schemas.d.ts +1 -2
  77. package/lib/schemas.js +43 -36
  78. package/lib/schemas.js.map +1 -1
  79. package/lib/types.d.ts +0 -1
  80. package/lib/utils.cjs +9 -10
  81. package/lib/utils.cjs.map +1 -1
  82. package/lib/utils.d.ts +0 -1
  83. package/lib/utils.js +8 -8
  84. package/lib/utils.js.map +1 -1
  85. package/package.json +56 -44
  86. package/CHANGE_LOG.md +0 -161
  87. package/lib/analyse.d.ts.map +0 -1
  88. package/lib/analyse.utils.d.ts.map +0 -1
  89. package/lib/cli/cli.d.ts.map +0 -1
  90. package/lib/cli/constants.d.ts.map +0 -1
  91. package/lib/cli/index.d.ts.map +0 -1
  92. package/lib/constants.d.ts.map +0 -1
  93. package/lib/exports.d.ts.map +0 -1
  94. package/lib/functions/add.d.ts.map +0 -1
  95. package/lib/functions/generate.d.ts.map +0 -1
  96. package/lib/functions/index.cjs.map +0 -1
  97. package/lib/functions/index.d.ts.map +0 -1
  98. package/lib/functions/index.js.map +0 -1
  99. package/lib/functions/init.d.ts.map +0 -1
  100. package/lib/functions/remove.d.ts.map +0 -1
  101. package/lib/helpers.d.ts.map +0 -1
  102. package/lib/imports.d.ts.map +0 -1
  103. package/lib/index.cjs.map +0 -1
  104. package/lib/index.d.ts.map +0 -1
  105. package/lib/index.js.map +0 -1
  106. package/lib/schemas.d.ts.map +0 -1
  107. package/lib/types.d.ts.map +0 -1
  108. package/lib/utils.d.ts.map +0 -1
package/README.md CHANGED
@@ -4,9 +4,9 @@
4
4
  ![Node.js](https://img.shields.io/badge/node-%3E%3D22-green.svg)
5
5
  ![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?logo=typescript&logoColor=white)
6
6
 
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.
7
+ A powerful CLI to generate and analyze your TypeScript/JavaScript
8
+ codebase. This tool allows partial importing of libraries and generates
9
+ comprehensive analyses of your source code.
10
10
 
11
11
  ## 🚀 Main Features
12
12
 
@@ -71,15 +71,15 @@ pnpm add -D @bemedev/codebase
71
71
  ### Programmatic API
72
72
 
73
73
  ```typescript
74
- import { generate, analyze } from '@bemedev/codebase';
74
+ import { generate, analyze } from "@bemedev/codebase";
75
75
 
76
76
  // Analyze the codebase
77
- const analysis = analyze('src');
77
+ const analysis = analyze("src");
78
78
 
79
79
  // Generate an analysis file
80
80
  await generate({
81
- output: 'my-codebase.json',
82
- excludes: ['node_modules', 'dist'],
81
+ output: "my-codebase.json",
82
+ excludes: ["node_modules", "dist"],
83
83
  });
84
84
  ```
85
85
 
@@ -192,7 +192,7 @@ If you find a bug, please
192
192
 
193
193
  <br/>
194
194
 
195
- ## [CHANGE_LOG](CHANGE_LOG.md)
195
+ ## [CHANGELOG](CHANGELOG.md)
196
196
 
197
197
  <br/>
198
198
 
@@ -0,0 +1,23 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
10
+ key = keys[i];
11
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
+ get: ((k) => from[k]).bind(null, key),
13
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
+ });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
19
+ value: mod,
20
+ enumerable: true
21
+ }) : target, mod));
22
+ //#endregion
23
+ exports.__toESM = __toESM;
package/lib/analyse.cjs CHANGED
@@ -1,68 +1,54 @@
1
- 'use strict';
2
-
3
- var path = require('path');
4
- var tsMorph = require('ts-morph');
5
- var analyse_utils = require('./analyse.utils.cjs');
6
- var constants = require('./constants.cjs');
7
- var _exports = require('./exports.cjs');
8
- var helpers = require('./helpers.cjs');
9
- var imports = require('./imports.cjs');
10
- var utils = require('./utils.cjs');
11
-
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
3
+ const require_utils = require("./utils.cjs");
4
+ const require_constants = require("./constants.cjs");
5
+ const require_schemas = require("./schemas.cjs");
6
+ const require_analyse_utils = require("./analyse.utils.cjs");
7
+ const require_exports = require("./exports.cjs");
8
+ const require_helpers = require("./helpers.cjs");
9
+ const require_imports = require("./imports.cjs");
10
+ let valibot = require("valibot");
11
+ valibot = require_runtime.__toESM(valibot);
12
+ let path = require("path");
13
+ let ts_morph = require("ts-morph");
14
+ //#region src/analyse.ts
12
15
  /**
13
- * Analyse tous les fichiers TypeScript dans src/ (sauf src/scripts/)
14
- */
15
- const analyze = ({ src = constants.SRC_DIR, excludes: _excludes, } = {}) => {
16
- console.log('🔍 Analyse du codebase en cours...');
17
- const excludes = helpers.toArray(_excludes);
18
- // Initialiser le projet ts-morph
19
- const project = new tsMorph.Project({
20
- tsConfigFilePath: path.join(process.cwd(), 'tsconfig.json'),
21
- });
22
- // Ajouter tous les fichiers TypeScript du dossier src
23
- const sourceFiles = project.addSourceFilesAtPaths([
24
- 'src/**/*.ts',
25
- '!src/scripts/**/*', // Exclure le dossier scripts
26
- '!src/**/*.test.ts', // Exclure les fichiers de test
27
- '!src/**/*.spec.ts', // Exclure les fichiers de spec
28
- ].concat(excludes.map(exclude => `!${exclude}`)));
29
- const analysis = {};
30
- let processedCount = 0;
31
- for (const sourceFile of sourceFiles) {
32
- const filePath = sourceFile.getFilePath();
33
- const relativePath = path.relative(src, filePath);
34
- // Générer le texte modifié avec JSDoc pour les exports
35
- const _text = analyse_utils.addJSDocToSourceText(sourceFile);
36
- // #region Analyser les imports et exports
37
- const imports$1 = imports.analyzeImports(sourceFile);
38
- const exports$1 = _exports.analyzeExports(sourceFile);
39
- // #endregion
40
- // Construire les imports à partir de fileAnalysis.imports
41
- const importsStrings = imports.buildImportStrings(imports$1);
42
- // Combiner imports et contenu
43
- const importsSection = importsStrings.length > 0 ? importsStrings.join('\n') : '';
44
- const text = importsSection === ''
45
- ? _text
46
- : `${importsSection}
16
+ * Analyse tous les fichiers TypeScript dans src/ (sauf src/scripts/)
17
+ */
18
+ const analyze = ({ src = require_constants.SRC_DIR, excludes: _excludes } = {}) => {
19
+ console.log("🔍 Analyse du codebase en cours...");
20
+ const excludes = require_helpers.toArray(_excludes);
21
+ const sourceFiles = new ts_morph.Project({ tsConfigFilePath: (0, path.join)(process.cwd(), "tsconfig.json") }).addSourceFilesAtPaths([
22
+ `${src}/**/*.ts`,
23
+ `!${src}/**/*.test.ts`,
24
+ `!${src}/**/*.spec.ts`
25
+ ].concat(excludes.map((exclude) => `!${exclude}`)));
26
+ const analysis = {};
27
+ let processedCount = 0;
28
+ for (const sourceFile of sourceFiles) {
29
+ const relativePath = (0, path.relative)(src, sourceFile.getFilePath());
30
+ const _text = require_analyse_utils.addJSDocToSourceText(sourceFile);
31
+ const imports = require_imports.analyzeImports(sourceFile);
32
+ const exports = require_exports.analyzeExports(sourceFile);
33
+ const importsStrings = require_imports.buildImportStrings(imports);
34
+ const importsSection = importsStrings.length > 0 ? importsStrings.join("\n") : "";
35
+ const text = importsSection === "" ? _text : `${importsSection}
47
36
 
48
37
  ${_text}
49
38
  `;
50
- analysis[utils.pathToDotNotation(relativePath)] = {
51
- relativePath,
52
- imports: imports$1,
53
- exports: exports$1,
54
- text,
55
- };
56
- processedCount++;
57
- // #region Afficher l'avancement de l'analyse par palliers de 50
58
- if (processedCount % 50 === 0) {
59
- console.log(`📊 Analysé ${processedCount}/${sourceFiles.length} fichiers...`);
60
- }
61
- // #endregion
62
- }
63
- console.log(`✅ Analyse terminée: ${processedCount} fichiers analysés`);
64
- return analysis;
39
+ analysis[require_utils.pathToDotNotation(relativePath)] = {
40
+ relativePath,
41
+ imports,
42
+ exports,
43
+ text
44
+ };
45
+ processedCount++;
46
+ if (processedCount % 50 === 0) console.log(`📊 Analysé ${processedCount}/${sourceFiles.length} fichiers...`);
47
+ }
48
+ console.log(`✅ Analyse terminée: ${processedCount} fichiers analysés`);
49
+ return valibot.parse(require_schemas.CodebaseAnalysisSchema, analysis);
65
50
  };
66
-
51
+ //#endregion
67
52
  exports.analyze = analyze;
68
- //# sourceMappingURL=analyse.cjs.map
53
+
54
+ //# sourceMappingURL=analyse.cjs.map
@@ -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 './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","exports","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,MAAMC,SAAO,GAAGC,uBAAc,CAAC,UAAU,CAAC;;;AAI1C,QAAA,MAAM,cAAc,GAAGC,0BAAkB,CAACJ,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,CAACK,uBAAiB,CAAC,YAAY,CAAC,CAAC,GAAG;YAC1C,YAAY;qBACZL,SAAO;qBACPE,SAAO;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","names":["SRC_DIR","toArray","Project","addJSDocToSourceText","analyzeImports","analyzeExports","buildImportStrings","pathToDotNotation","v","CodebaseAnalysisSchema"],"sources":["../src/analyse.ts"],"sourcesContent":["import { join, relative } from \"path\";\nimport { Project } from \"ts-morph\";\nimport * as v from \"valibot\";\nimport { addJSDocToSourceText } from \"./analyse.utils\";\nimport { SRC_DIR } from \"./constants\";\nimport { analyzeExports } from \"./exports\";\nimport { toArray } from \"./helpers\";\nimport { analyzeImports, buildImportStrings } from \"./imports\";\nimport { CodebaseAnalysisSchema } 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 = {}) => {\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}/**/*.test.ts`, // Exclude test files\n `!${src}/**/*.spec.ts`, // Exclude spec files\n ].concat(excludes.map((exclude) => `!${exclude}`)),\n );\n\n const analysis: v.InferInput<typeof CodebaseAnalysisSchema> = {};\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 v.parse(CodebaseAnalysisSchema, analysis);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;AAmBA,MAAa,WAAW,EACtB,MAAMA,kBAAAA,SACN,UAAU,cACQ,EAAE,KAAK;AACzB,SAAQ,IAAI,qCAAqC;CACjD,MAAM,WAAWC,gBAAAA,QAAQ,UAAU;CAQnC,MAAM,cALU,IAAIC,SAAAA,QAAQ,EAC1B,mBAAA,GAAA,KAAA,MAAuB,QAAQ,KAAK,EAAE,gBAAgB,EACvD,CAAC,CAG0B,sBAC1B;EACE,GAAG,IAAI;EACP,IAAI,IAAI;EACR,IAAI,IAAI;EACT,CAAC,OAAO,SAAS,KAAK,YAAY,IAAI,UAAU,CAAC,CACnD;CAED,MAAM,WAAwD,EAAE;CAChE,IAAI,iBAAiB;AAErB,MAAK,MAAM,cAAc,aAAa;EAEpC,MAAM,gBAAA,GAAA,KAAA,UAAwB,KADb,WAAW,aAAa,CACG;EAI5C,MAAM,QAAQC,sBAAAA,qBAAqB,WAAW;EAG9C,MAAM,UAAUC,gBAAAA,eAAe,WAAW;EAC1C,MAAM,UAAUC,gBAAAA,eAAe,WAAW;EAI1C,MAAM,iBAAiBC,gBAAAA,mBAAmB,QAAQ;EAGlD,MAAM,iBACJ,eAAe,SAAS,IAAI,eAAe,KAAK,KAAK,GAAG;EAE1D,MAAM,OACJ,mBAAmB,KACf,QACA,GAAG,eAAe;;EAE1B,MAAM;;AAGJ,WAASC,cAAAA,kBAAkB,aAAa,IAAI;GAC1C;GACA;GACA;GACA;GACD;AAED;AAGA,MAAI,iBAAiB,OAAO,EAC1B,SAAQ,IACN,cAAc,eAAe,GAAG,YAAY,OAAO,cACpD;;AAKL,SAAQ,IAAI,uBAAuB,eAAe,oBAAoB;AACtE,QAAOC,QAAE,MAAMC,gBAAAA,wBAAwB,SAAS"}
package/lib/analyse.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import type { CodebaseAnalysis } from './schemas';
2
1
  export type AnalyzeOptions = {
3
2
  src?: string;
4
3
  excludes?: string | string[];
@@ -6,5 +5,24 @@ export type AnalyzeOptions = {
6
5
  /**
7
6
  * Analyse tous les fichiers TypeScript dans src/ (sauf src/scripts/)
8
7
  */
9
- export declare const analyze: ({ src, excludes: _excludes, }?: AnalyzeOptions) => CodebaseAnalysis;
10
- //# sourceMappingURL=analyse.d.ts.map
8
+ export declare const analyze: ({ src, excludes: _excludes, }?: AnalyzeOptions) => {
9
+ [x: string]: {
10
+ relativePath: string;
11
+ imports: {
12
+ moduleSpecifier: string;
13
+ kind: "default" | "named" | "namespace" | "side-effect";
14
+ namedImports?: string[] | undefined;
15
+ default?: string | undefined;
16
+ isDynamic?: boolean | undefined;
17
+ isTypeOnly?: boolean | undefined;
18
+ }[];
19
+ exports?: {
20
+ name: string;
21
+ kind: "default" | "named" | "namespace";
22
+ text?: string | undefined;
23
+ moduleSpecifier?: string | undefined;
24
+ declarationKind?: "function" | "class" | "variable" | "interface" | "type" | "enum" | "const" | "let" | undefined;
25
+ }[] | undefined;
26
+ text: string;
27
+ };
28
+ };
package/lib/analyse.js CHANGED
@@ -1,66 +1,51 @@
1
- import { join, relative } from 'path';
2
- import { Project } from 'ts-morph';
3
- import { addJSDocToSourceText } from './analyse.utils.js';
4
- import { SRC_DIR } from './constants.js';
5
- import { analyzeExports } from './exports.js';
6
- import { toArray } from './helpers.js';
7
- import { analyzeImports, buildImportStrings } from './imports.js';
8
- import { pathToDotNotation } from './utils.js';
9
-
1
+ import { pathToDotNotation } from "./utils.js";
2
+ import { SRC_DIR } from "./constants.js";
3
+ import { CodebaseAnalysisSchema } from "./schemas.js";
4
+ import { addJSDocToSourceText } from "./analyse.utils.js";
5
+ import { analyzeExports } from "./exports.js";
6
+ import { toArray } from "./helpers.js";
7
+ import { analyzeImports, buildImportStrings } from "./imports.js";
8
+ import * as v from "valibot";
9
+ import { join, relative } from "path";
10
+ import { Project } from "ts-morph";
11
+ //#region src/analyse.ts
10
12
  /**
11
- * Analyse tous les fichiers TypeScript dans src/ (sauf src/scripts/)
12
- */
13
- const analyze = ({ src = SRC_DIR, excludes: _excludes, } = {}) => {
14
- console.log('🔍 Analyse du codebase en cours...');
15
- const excludes = toArray(_excludes);
16
- // Initialiser le projet ts-morph
17
- const project = new Project({
18
- tsConfigFilePath: join(process.cwd(), 'tsconfig.json'),
19
- });
20
- // Ajouter tous les fichiers TypeScript du dossier src
21
- const sourceFiles = project.addSourceFilesAtPaths([
22
- 'src/**/*.ts',
23
- '!src/scripts/**/*', // Exclure le dossier scripts
24
- '!src/**/*.test.ts', // Exclure les fichiers de test
25
- '!src/**/*.spec.ts', // Exclure les fichiers de spec
26
- ].concat(excludes.map(exclude => `!${exclude}`)));
27
- const analysis = {};
28
- let processedCount = 0;
29
- for (const sourceFile of sourceFiles) {
30
- const filePath = sourceFile.getFilePath();
31
- const relativePath = relative(src, filePath);
32
- // Générer le texte modifié avec JSDoc pour les exports
33
- const _text = addJSDocToSourceText(sourceFile);
34
- // #region Analyser les imports et exports
35
- const imports = analyzeImports(sourceFile);
36
- const exports$1 = analyzeExports(sourceFile);
37
- // #endregion
38
- // Construire les imports à partir de fileAnalysis.imports
39
- const importsStrings = buildImportStrings(imports);
40
- // Combiner imports et contenu
41
- const importsSection = importsStrings.length > 0 ? importsStrings.join('\n') : '';
42
- const text = importsSection === ''
43
- ? _text
44
- : `${importsSection}
13
+ * Analyse tous les fichiers TypeScript dans src/ (sauf src/scripts/)
14
+ */
15
+ const analyze = ({ src = SRC_DIR, excludes: _excludes } = {}) => {
16
+ console.log("🔍 Analyse du codebase en cours...");
17
+ const excludes = toArray(_excludes);
18
+ const sourceFiles = new Project({ tsConfigFilePath: join(process.cwd(), "tsconfig.json") }).addSourceFilesAtPaths([
19
+ `${src}/**/*.ts`,
20
+ `!${src}/**/*.test.ts`,
21
+ `!${src}/**/*.spec.ts`
22
+ ].concat(excludes.map((exclude) => `!${exclude}`)));
23
+ const analysis = {};
24
+ let processedCount = 0;
25
+ for (const sourceFile of sourceFiles) {
26
+ const relativePath = relative(src, sourceFile.getFilePath());
27
+ const _text = addJSDocToSourceText(sourceFile);
28
+ const imports = analyzeImports(sourceFile);
29
+ const exports = analyzeExports(sourceFile);
30
+ const importsStrings = buildImportStrings(imports);
31
+ const importsSection = importsStrings.length > 0 ? importsStrings.join("\n") : "";
32
+ const text = importsSection === "" ? _text : `${importsSection}
45
33
 
46
34
  ${_text}
47
35
  `;
48
- analysis[pathToDotNotation(relativePath)] = {
49
- relativePath,
50
- imports,
51
- exports: exports$1,
52
- text,
53
- };
54
- processedCount++;
55
- // #region Afficher l'avancement de l'analyse par palliers de 50
56
- if (processedCount % 50 === 0) {
57
- console.log(`📊 Analysé ${processedCount}/${sourceFiles.length} fichiers...`);
58
- }
59
- // #endregion
60
- }
61
- console.log(`✅ Analyse terminée: ${processedCount} fichiers analysés`);
62
- return analysis;
36
+ analysis[pathToDotNotation(relativePath)] = {
37
+ relativePath,
38
+ imports,
39
+ exports,
40
+ text
41
+ };
42
+ processedCount++;
43
+ if (processedCount % 50 === 0) console.log(`📊 Analysé ${processedCount}/${sourceFiles.length} fichiers...`);
44
+ }
45
+ console.log(`✅ Analyse terminée: ${processedCount} fichiers analysés`);
46
+ return v.parse(CodebaseAnalysisSchema, analysis);
63
47
  };
64
-
48
+ //#endregion
65
49
  export { analyze };
66
- //# sourceMappingURL=analyse.js.map
50
+
51
+ //# sourceMappingURL=analyse.js.map
@@ -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 './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":["exports"],"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,MAAMA,SAAO,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;qBACPA,SAAO;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","names":[],"sources":["../src/analyse.ts"],"sourcesContent":["import { join, relative } from \"path\";\nimport { Project } from \"ts-morph\";\nimport * as v from \"valibot\";\nimport { addJSDocToSourceText } from \"./analyse.utils\";\nimport { SRC_DIR } from \"./constants\";\nimport { analyzeExports } from \"./exports\";\nimport { toArray } from \"./helpers\";\nimport { analyzeImports, buildImportStrings } from \"./imports\";\nimport { CodebaseAnalysisSchema } 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 = {}) => {\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}/**/*.test.ts`, // Exclude test files\n `!${src}/**/*.spec.ts`, // Exclude spec files\n ].concat(excludes.map((exclude) => `!${exclude}`)),\n );\n\n const analysis: v.InferInput<typeof CodebaseAnalysisSchema> = {};\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 v.parse(CodebaseAnalysisSchema, analysis);\n};\n"],"mappings":";;;;;;;;;;;;;;AAmBA,MAAa,WAAW,EACtB,MAAM,SACN,UAAU,cACQ,EAAE,KAAK;AACzB,SAAQ,IAAI,qCAAqC;CACjD,MAAM,WAAW,QAAQ,UAAU;CAQnC,MAAM,cALU,IAAI,QAAQ,EAC1B,kBAAkB,KAAK,QAAQ,KAAK,EAAE,gBAAgB,EACvD,CAAC,CAG0B,sBAC1B;EACE,GAAG,IAAI;EACP,IAAI,IAAI;EACR,IAAI,IAAI;EACT,CAAC,OAAO,SAAS,KAAK,YAAY,IAAI,UAAU,CAAC,CACnD;CAED,MAAM,WAAwD,EAAE;CAChE,IAAI,iBAAiB;AAErB,MAAK,MAAM,cAAc,aAAa;EAEpC,MAAM,eAAe,SAAS,KADb,WAAW,aAAa,CACG;EAI5C,MAAM,QAAQ,qBAAqB,WAAW;EAG9C,MAAM,UAAU,eAAe,WAAW;EAC1C,MAAM,UAAU,eAAe,WAAW;EAI1C,MAAM,iBAAiB,mBAAmB,QAAQ;EAGlD,MAAM,iBACJ,eAAe,SAAS,IAAI,eAAe,KAAK,KAAK,GAAG;EAE1D,MAAM,OACJ,mBAAmB,KACf,QACA,GAAG,eAAe;;EAE1B,MAAM;;AAGJ,WAAS,kBAAkB,aAAa,IAAI;GAC1C;GACA;GACA;GACA;GACD;AAED;AAGA,MAAI,iBAAiB,OAAO,EAC1B,SAAQ,IACN,cAAc,eAAe,GAAG,YAAY,OAAO,cACpD;;AAKL,SAAQ,IAAI,uBAAuB,eAAe,oBAAoB;AACtE,QAAO,EAAE,MAAM,wBAAwB,SAAS"}