@girardelli/architect 5.0.0 → 8.1.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 (335) hide show
  1. package/dist/{cli.d.ts → src/adapters/cli.d.ts} +1 -2
  2. package/dist/{cli.js → src/adapters/cli.js} +191 -213
  3. package/dist/src/adapters/cli.js.map +1 -0
  4. package/dist/src/adapters/github-action.d.ts +9 -0
  5. package/dist/src/adapters/github-action.js +94 -0
  6. package/dist/src/adapters/github-action.js.map +1 -0
  7. package/dist/src/adapters/html-reporter/scripts.d.ts +5 -0
  8. package/dist/src/adapters/html-reporter/scripts.js +400 -0
  9. package/dist/src/adapters/html-reporter/scripts.js.map +1 -0
  10. package/dist/src/adapters/html-reporter/sections/agents.d.ts +2 -0
  11. package/dist/src/adapters/html-reporter/sections/agents.js +260 -0
  12. package/dist/src/adapters/html-reporter/sections/agents.js.map +1 -0
  13. package/dist/src/adapters/html-reporter/sections/anti-patterns.d.ts +13 -0
  14. package/dist/src/adapters/html-reporter/sections/anti-patterns.js +64 -0
  15. package/dist/src/adapters/html-reporter/sections/anti-patterns.js.map +1 -0
  16. package/dist/src/adapters/html-reporter/sections/header.d.ts +3 -0
  17. package/dist/src/adapters/html-reporter/sections/header.js +30 -0
  18. package/dist/src/adapters/html-reporter/sections/header.js.map +1 -0
  19. package/dist/src/adapters/html-reporter/sections/layers.d.ts +9 -0
  20. package/dist/src/adapters/html-reporter/sections/layers.js +143 -0
  21. package/dist/src/adapters/html-reporter/sections/layers.js.map +1 -0
  22. package/dist/src/adapters/html-reporter/sections/overview.d.ts +2 -0
  23. package/dist/src/adapters/html-reporter/sections/overview.js +58 -0
  24. package/dist/src/adapters/html-reporter/sections/overview.js.map +1 -0
  25. package/dist/src/adapters/html-reporter/sections/refactoring-plan.d.ts +3 -0
  26. package/dist/src/adapters/html-reporter/sections/refactoring-plan.js +151 -0
  27. package/dist/src/adapters/html-reporter/sections/refactoring-plan.js.map +1 -0
  28. package/dist/src/adapters/html-reporter/sections/score.d.ts +7 -0
  29. package/dist/src/adapters/html-reporter/sections/score.js +70 -0
  30. package/dist/src/adapters/html-reporter/sections/score.js.map +1 -0
  31. package/dist/src/adapters/html-reporter/sections/suggestions.d.ts +7 -0
  32. package/dist/src/adapters/html-reporter/sections/suggestions.js +34 -0
  33. package/dist/src/adapters/html-reporter/sections/suggestions.js.map +1 -0
  34. package/dist/src/adapters/html-reporter/styles.d.ts +1 -0
  35. package/dist/src/adapters/html-reporter/styles.js +526 -0
  36. package/dist/src/adapters/html-reporter/styles.js.map +1 -0
  37. package/dist/src/adapters/html-reporter/utils_adapters.d.ts +20 -0
  38. package/dist/src/adapters/html-reporter/utils_adapters.js +32 -0
  39. package/dist/src/adapters/html-reporter/utils_adapters.js.map +1 -0
  40. package/dist/src/adapters/html-reporter/utils_sections.d.ts +7 -0
  41. package/dist/src/adapters/html-reporter/utils_sections.js +58 -0
  42. package/dist/src/adapters/html-reporter/utils_sections.js.map +1 -0
  43. package/dist/src/adapters/html-reporter.d.ts +10 -0
  44. package/dist/src/adapters/html-reporter.js +97 -0
  45. package/dist/src/adapters/html-reporter.js.map +1 -0
  46. package/dist/src/adapters/progress-logger.d.ts +55 -0
  47. package/dist/src/adapters/progress-logger.js +200 -0
  48. package/dist/src/adapters/progress-logger.js.map +1 -0
  49. package/dist/{refactor-reporter.d.ts → src/adapters/refactor-reporter.d.ts} +1 -2
  50. package/dist/{refactor-reporter.js → src/adapters/refactor-reporter.js} +1 -1
  51. package/dist/src/adapters/refactor-reporter.js.map +1 -0
  52. package/dist/{reporter.d.ts → src/adapters/reporter.d.ts} +1 -2
  53. package/dist/src/adapters/reporter.js.map +1 -0
  54. package/dist/src/core/GenesisTerminal.d.ts +8 -0
  55. package/dist/src/core/GenesisTerminal.js +105 -0
  56. package/dist/src/core/GenesisTerminal.js.map +1 -0
  57. package/dist/{index.d.ts → src/core/architect.d.ts} +4 -18
  58. package/dist/{index.js → src/core/architect.js} +22 -21
  59. package/dist/src/core/architect.js.map +1 -0
  60. package/dist/tests/architect-adapter-enrichment.test.d.ts +1 -0
  61. package/dist/tests/architect-adapter-enrichment.test.js +11 -0
  62. package/dist/tests/architect-adapter-enrichment.test.js.map +1 -0
  63. package/dist/tests/github-action.test.d.ts +1 -0
  64. package/dist/tests/github-action.test.js +92 -0
  65. package/dist/tests/github-action.test.js.map +1 -0
  66. package/package.json +15 -65
  67. package/src/adapters/cli.ts +492 -0
  68. package/src/adapters/github-action.ts +109 -0
  69. package/src/adapters/html-reporter/scripts.ts +402 -0
  70. package/src/adapters/html-reporter/sections/agents.ts +267 -0
  71. package/src/adapters/html-reporter/sections/anti-patterns.ts +81 -0
  72. package/src/adapters/html-reporter/sections/header.ts +35 -0
  73. package/src/adapters/html-reporter/sections/layers.ts +165 -0
  74. package/src/adapters/html-reporter/sections/overview.ts +64 -0
  75. package/src/adapters/html-reporter/sections/refactoring-plan.ts +166 -0
  76. package/src/adapters/html-reporter/sections/score.ts +80 -0
  77. package/src/adapters/html-reporter/sections/suggestions.ts +39 -0
  78. package/src/adapters/html-reporter/styles.ts +525 -0
  79. package/src/adapters/html-reporter/utils_adapters.ts +39 -0
  80. package/src/adapters/html-reporter/utils_sections.ts +55 -0
  81. package/src/adapters/html-reporter.ts +102 -0
  82. package/src/adapters/progress-logger.ts +236 -0
  83. package/src/{refactor-reporter.ts → adapters/refactor-reporter.ts} +2 -2
  84. package/src/{reporter.ts → adapters/reporter.ts} +1 -1
  85. package/src/core/GenesisTerminal.ts +127 -0
  86. package/src/{index.ts → core/architect.ts} +27 -45
  87. package/tests/github-action.test.ts +109 -0
  88. package/tsconfig.json +12 -19
  89. package/CONTRIBUTING.md +0 -140
  90. package/LICENSE +0 -21
  91. package/PROJECT_STRUCTURE.txt +0 -168
  92. package/README.md +0 -257
  93. package/architect-run.sh +0 -431
  94. package/assets/banner-v3.html +0 -561
  95. package/dist/agent-generator/context-enricher.d.ts +0 -58
  96. package/dist/agent-generator/context-enricher.d.ts.map +0 -1
  97. package/dist/agent-generator/context-enricher.js +0 -613
  98. package/dist/agent-generator/context-enricher.js.map +0 -1
  99. package/dist/agent-generator/domain-inferrer.d.ts +0 -52
  100. package/dist/agent-generator/domain-inferrer.d.ts.map +0 -1
  101. package/dist/agent-generator/domain-inferrer.js +0 -585
  102. package/dist/agent-generator/domain-inferrer.js.map +0 -1
  103. package/dist/agent-generator/framework-detector.d.ts +0 -40
  104. package/dist/agent-generator/framework-detector.d.ts.map +0 -1
  105. package/dist/agent-generator/framework-detector.js +0 -611
  106. package/dist/agent-generator/framework-detector.js.map +0 -1
  107. package/dist/agent-generator/index.d.ts +0 -47
  108. package/dist/agent-generator/index.d.ts.map +0 -1
  109. package/dist/agent-generator/index.js +0 -545
  110. package/dist/agent-generator/index.js.map +0 -1
  111. package/dist/agent-generator/stack-detector.d.ts +0 -14
  112. package/dist/agent-generator/stack-detector.d.ts.map +0 -1
  113. package/dist/agent-generator/stack-detector.js +0 -124
  114. package/dist/agent-generator/stack-detector.js.map +0 -1
  115. package/dist/agent-generator/templates/core/agents.d.ts +0 -17
  116. package/dist/agent-generator/templates/core/agents.d.ts.map +0 -1
  117. package/dist/agent-generator/templates/core/agents.js +0 -1256
  118. package/dist/agent-generator/templates/core/agents.js.map +0 -1
  119. package/dist/agent-generator/templates/core/architecture-rules.d.ts +0 -7
  120. package/dist/agent-generator/templates/core/architecture-rules.d.ts.map +0 -1
  121. package/dist/agent-generator/templates/core/architecture-rules.js +0 -274
  122. package/dist/agent-generator/templates/core/architecture-rules.js.map +0 -1
  123. package/dist/agent-generator/templates/core/general-rules.d.ts +0 -8
  124. package/dist/agent-generator/templates/core/general-rules.d.ts.map +0 -1
  125. package/dist/agent-generator/templates/core/general-rules.js +0 -301
  126. package/dist/agent-generator/templates/core/general-rules.js.map +0 -1
  127. package/dist/agent-generator/templates/core/hooks-generator.d.ts +0 -21
  128. package/dist/agent-generator/templates/core/hooks-generator.d.ts.map +0 -1
  129. package/dist/agent-generator/templates/core/hooks-generator.js +0 -233
  130. package/dist/agent-generator/templates/core/hooks-generator.js.map +0 -1
  131. package/dist/agent-generator/templates/core/index-md.d.ts +0 -7
  132. package/dist/agent-generator/templates/core/index-md.d.ts.map +0 -1
  133. package/dist/agent-generator/templates/core/index-md.js +0 -246
  134. package/dist/agent-generator/templates/core/index-md.js.map +0 -1
  135. package/dist/agent-generator/templates/core/orchestrator.d.ts +0 -8
  136. package/dist/agent-generator/templates/core/orchestrator.d.ts.map +0 -1
  137. package/dist/agent-generator/templates/core/orchestrator.js +0 -422
  138. package/dist/agent-generator/templates/core/orchestrator.js.map +0 -1
  139. package/dist/agent-generator/templates/core/preflight.d.ts +0 -8
  140. package/dist/agent-generator/templates/core/preflight.d.ts.map +0 -1
  141. package/dist/agent-generator/templates/core/preflight.js +0 -213
  142. package/dist/agent-generator/templates/core/preflight.js.map +0 -1
  143. package/dist/agent-generator/templates/core/quality-gates.d.ts +0 -11
  144. package/dist/agent-generator/templates/core/quality-gates.d.ts.map +0 -1
  145. package/dist/agent-generator/templates/core/quality-gates.js +0 -254
  146. package/dist/agent-generator/templates/core/quality-gates.js.map +0 -1
  147. package/dist/agent-generator/templates/core/security-rules.d.ts +0 -7
  148. package/dist/agent-generator/templates/core/security-rules.d.ts.map +0 -1
  149. package/dist/agent-generator/templates/core/security-rules.js +0 -528
  150. package/dist/agent-generator/templates/core/security-rules.js.map +0 -1
  151. package/dist/agent-generator/templates/core/skills-generator.d.ts +0 -19
  152. package/dist/agent-generator/templates/core/skills-generator.d.ts.map +0 -1
  153. package/dist/agent-generator/templates/core/skills-generator.js +0 -546
  154. package/dist/agent-generator/templates/core/skills-generator.js.map +0 -1
  155. package/dist/agent-generator/templates/core/workflow-fix-bug.d.ts +0 -7
  156. package/dist/agent-generator/templates/core/workflow-fix-bug.d.ts.map +0 -1
  157. package/dist/agent-generator/templates/core/workflow-fix-bug.js +0 -237
  158. package/dist/agent-generator/templates/core/workflow-fix-bug.js.map +0 -1
  159. package/dist/agent-generator/templates/core/workflow-new-feature.d.ts +0 -8
  160. package/dist/agent-generator/templates/core/workflow-new-feature.d.ts.map +0 -1
  161. package/dist/agent-generator/templates/core/workflow-new-feature.js +0 -321
  162. package/dist/agent-generator/templates/core/workflow-new-feature.js.map +0 -1
  163. package/dist/agent-generator/templates/core/workflow-review.d.ts +0 -7
  164. package/dist/agent-generator/templates/core/workflow-review.d.ts.map +0 -1
  165. package/dist/agent-generator/templates/core/workflow-review.js +0 -104
  166. package/dist/agent-generator/templates/core/workflow-review.js.map +0 -1
  167. package/dist/agent-generator/templates/domain/index.d.ts +0 -22
  168. package/dist/agent-generator/templates/domain/index.d.ts.map +0 -1
  169. package/dist/agent-generator/templates/domain/index.js +0 -1176
  170. package/dist/agent-generator/templates/domain/index.js.map +0 -1
  171. package/dist/agent-generator/templates/stack/index.d.ts +0 -8
  172. package/dist/agent-generator/templates/stack/index.d.ts.map +0 -1
  173. package/dist/agent-generator/templates/stack/index.js +0 -695
  174. package/dist/agent-generator/templates/stack/index.js.map +0 -1
  175. package/dist/agent-generator/templates/template-helpers.d.ts +0 -75
  176. package/dist/agent-generator/templates/template-helpers.d.ts.map +0 -1
  177. package/dist/agent-generator/templates/template-helpers.js +0 -726
  178. package/dist/agent-generator/templates/template-helpers.js.map +0 -1
  179. package/dist/agent-generator/types.d.ts +0 -196
  180. package/dist/agent-generator/types.d.ts.map +0 -1
  181. package/dist/agent-generator/types.js +0 -27
  182. package/dist/agent-generator/types.js.map +0 -1
  183. package/dist/analyzer.d.ts +0 -38
  184. package/dist/analyzer.d.ts.map +0 -1
  185. package/dist/analyzer.js +0 -383
  186. package/dist/analyzer.js.map +0 -1
  187. package/dist/analyzers/forecast.d.ts +0 -85
  188. package/dist/analyzers/forecast.d.ts.map +0 -1
  189. package/dist/analyzers/forecast.js +0 -337
  190. package/dist/analyzers/forecast.js.map +0 -1
  191. package/dist/analyzers/git-cache.d.ts +0 -7
  192. package/dist/analyzers/git-cache.d.ts.map +0 -1
  193. package/dist/analyzers/git-cache.js +0 -41
  194. package/dist/analyzers/git-cache.js.map +0 -1
  195. package/dist/analyzers/git-history.d.ts +0 -113
  196. package/dist/analyzers/git-history.d.ts.map +0 -1
  197. package/dist/analyzers/git-history.js +0 -333
  198. package/dist/analyzers/git-history.js.map +0 -1
  199. package/dist/analyzers/index.d.ts +0 -10
  200. package/dist/analyzers/index.d.ts.map +0 -1
  201. package/dist/analyzers/index.js +0 -7
  202. package/dist/analyzers/index.js.map +0 -1
  203. package/dist/analyzers/temporal-scorer.d.ts +0 -72
  204. package/dist/analyzers/temporal-scorer.d.ts.map +0 -1
  205. package/dist/analyzers/temporal-scorer.js +0 -140
  206. package/dist/analyzers/temporal-scorer.js.map +0 -1
  207. package/dist/anti-patterns.d.ts +0 -24
  208. package/dist/anti-patterns.d.ts.map +0 -1
  209. package/dist/anti-patterns.js +0 -230
  210. package/dist/anti-patterns.js.map +0 -1
  211. package/dist/cli.d.ts.map +0 -1
  212. package/dist/cli.js.map +0 -1
  213. package/dist/config.d.ts +0 -12
  214. package/dist/config.d.ts.map +0 -1
  215. package/dist/config.js +0 -110
  216. package/dist/config.js.map +0 -1
  217. package/dist/diagram.d.ts +0 -9
  218. package/dist/diagram.d.ts.map +0 -1
  219. package/dist/diagram.js +0 -116
  220. package/dist/diagram.js.map +0 -1
  221. package/dist/html-reporter.d.ts +0 -47
  222. package/dist/html-reporter.d.ts.map +0 -1
  223. package/dist/html-reporter.js +0 -1747
  224. package/dist/html-reporter.js.map +0 -1
  225. package/dist/index.d.ts.map +0 -1
  226. package/dist/index.js.map +0 -1
  227. package/dist/project-summarizer.d.ts +0 -38
  228. package/dist/project-summarizer.d.ts.map +0 -1
  229. package/dist/project-summarizer.js +0 -463
  230. package/dist/project-summarizer.js.map +0 -1
  231. package/dist/refactor-engine.d.ts +0 -18
  232. package/dist/refactor-engine.d.ts.map +0 -1
  233. package/dist/refactor-engine.js +0 -86
  234. package/dist/refactor-engine.js.map +0 -1
  235. package/dist/refactor-reporter.d.ts.map +0 -1
  236. package/dist/refactor-reporter.js.map +0 -1
  237. package/dist/reporter.d.ts.map +0 -1
  238. package/dist/reporter.js.map +0 -1
  239. package/dist/rules/barrel-optimizer.d.ts +0 -13
  240. package/dist/rules/barrel-optimizer.d.ts.map +0 -1
  241. package/dist/rules/barrel-optimizer.js +0 -77
  242. package/dist/rules/barrel-optimizer.js.map +0 -1
  243. package/dist/rules/dead-code-detector.d.ts +0 -21
  244. package/dist/rules/dead-code-detector.d.ts.map +0 -1
  245. package/dist/rules/dead-code-detector.js +0 -117
  246. package/dist/rules/dead-code-detector.js.map +0 -1
  247. package/dist/rules/hub-splitter.d.ts +0 -13
  248. package/dist/rules/hub-splitter.d.ts.map +0 -1
  249. package/dist/rules/hub-splitter.js +0 -110
  250. package/dist/rules/hub-splitter.js.map +0 -1
  251. package/dist/rules/import-organizer.d.ts +0 -13
  252. package/dist/rules/import-organizer.d.ts.map +0 -1
  253. package/dist/rules/import-organizer.js +0 -85
  254. package/dist/rules/import-organizer.js.map +0 -1
  255. package/dist/rules/module-grouper.d.ts +0 -13
  256. package/dist/rules/module-grouper.d.ts.map +0 -1
  257. package/dist/rules/module-grouper.js +0 -110
  258. package/dist/rules/module-grouper.js.map +0 -1
  259. package/dist/scanner.d.ts +0 -31
  260. package/dist/scanner.d.ts.map +0 -1
  261. package/dist/scanner.js +0 -328
  262. package/dist/scanner.js.map +0 -1
  263. package/dist/scorer.d.ts +0 -27
  264. package/dist/scorer.d.ts.map +0 -1
  265. package/dist/scorer.js +0 -229
  266. package/dist/scorer.js.map +0 -1
  267. package/dist/types.d.ts +0 -186
  268. package/dist/types.d.ts.map +0 -1
  269. package/dist/types.js +0 -2
  270. package/dist/types.js.map +0 -1
  271. package/examples/sample-report.md +0 -207
  272. package/jest.config.js +0 -18
  273. package/src/agent-generator/context-enricher.ts +0 -672
  274. package/src/agent-generator/domain-inferrer.ts +0 -635
  275. package/src/agent-generator/framework-detector.ts +0 -669
  276. package/src/agent-generator/index.ts +0 -634
  277. package/src/agent-generator/stack-detector.ts +0 -115
  278. package/src/agent-generator/templates/core/agents.ts +0 -1296
  279. package/src/agent-generator/templates/core/architecture-rules.ts +0 -287
  280. package/src/agent-generator/templates/core/general-rules.ts +0 -306
  281. package/src/agent-generator/templates/core/hooks-generator.ts +0 -242
  282. package/src/agent-generator/templates/core/index-md.ts +0 -260
  283. package/src/agent-generator/templates/core/orchestrator.ts +0 -459
  284. package/src/agent-generator/templates/core/preflight.ts +0 -215
  285. package/src/agent-generator/templates/core/quality-gates.ts +0 -256
  286. package/src/agent-generator/templates/core/security-rules.ts +0 -543
  287. package/src/agent-generator/templates/core/skills-generator.ts +0 -585
  288. package/src/agent-generator/templates/core/workflow-fix-bug.ts +0 -239
  289. package/src/agent-generator/templates/core/workflow-new-feature.ts +0 -323
  290. package/src/agent-generator/templates/core/workflow-review.ts +0 -106
  291. package/src/agent-generator/templates/domain/index.ts +0 -1201
  292. package/src/agent-generator/templates/stack/index.ts +0 -705
  293. package/src/agent-generator/templates/template-helpers.ts +0 -776
  294. package/src/agent-generator/types.ts +0 -232
  295. package/src/analyzer.ts +0 -447
  296. package/src/analyzers/forecast.ts +0 -496
  297. package/src/analyzers/git-cache.ts +0 -52
  298. package/src/analyzers/git-history.ts +0 -488
  299. package/src/analyzers/index.ts +0 -33
  300. package/src/analyzers/temporal-scorer.ts +0 -227
  301. package/src/anti-patterns.ts +0 -287
  302. package/src/cli.ts +0 -517
  303. package/src/config.ts +0 -123
  304. package/src/diagram.ts +0 -144
  305. package/src/html-reporter.ts +0 -1830
  306. package/src/project-summarizer.ts +0 -521
  307. package/src/refactor-engine.ts +0 -117
  308. package/src/rules/barrel-optimizer.ts +0 -97
  309. package/src/rules/dead-code-detector.ts +0 -132
  310. package/src/rules/hub-splitter.ts +0 -123
  311. package/src/rules/import-organizer.ts +0 -98
  312. package/src/rules/module-grouper.ts +0 -124
  313. package/src/scanner.ts +0 -344
  314. package/src/scorer.ts +0 -254
  315. package/src/types.ts +0 -193
  316. package/tests/agent-generator.test.ts +0 -427
  317. package/tests/analyzers-integration.test.ts +0 -174
  318. package/tests/anti-patterns.test.ts +0 -94
  319. package/tests/context-enricher.test.ts +0 -971
  320. package/tests/fixtures/monorepo/package.json +0 -6
  321. package/tests/fixtures/monorepo/packages/app/package.json +0 -12
  322. package/tests/fixtures/monorepo/packages/app/src/index.ts +0 -6
  323. package/tests/fixtures/monorepo/packages/core/package.json +0 -7
  324. package/tests/fixtures/monorepo/packages/core/src/index.ts +0 -7
  325. package/tests/forecast.test.ts +0 -509
  326. package/tests/framework-detector.test.ts +0 -1172
  327. package/tests/git-history.test.ts +0 -254
  328. package/tests/monorepo-scan.test.ts +0 -170
  329. package/tests/scanner.test.ts +0 -54
  330. package/tests/scorer.test.ts +0 -674
  331. package/tests/stack-detector.test.ts +0 -241
  332. package/tests/template-generation.test.ts +0 -706
  333. package/tests/template-helpers.test.ts +0 -1152
  334. package/tests/temporal-scorer.test.ts +0 -307
  335. /package/dist/{reporter.js → src/adapters/reporter.js} +0 -0
@@ -1,18 +0,0 @@
1
- import { AnalysisReport, RefactoringPlan } from './types.js';
2
- /**
3
- * Refactoring Engine v2.0
4
- * Orchestrates Tier 1 (rule-based) and Tier 2 (AST) refactoring rules.
5
- */
6
- export declare class RefactorEngine {
7
- private rules;
8
- constructor();
9
- /**
10
- * Analyze a project and generate a refactoring plan.
11
- */
12
- analyze(report: AnalysisReport, projectPath: string): RefactoringPlan;
13
- /**
14
- * Estimates the architecture score after applying all refactoring steps.
15
- */
16
- private estimateScoreAfter;
17
- }
18
- //# sourceMappingURL=refactor-engine.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"refactor-engine.d.ts","sourceRoot":"","sources":["../src/refactor-engine.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,cAAc,EACd,eAAe,EAIhB,MAAM,YAAY,CAAC;AASpB;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAiB;;IAa9B;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,eAAe;IA8CrE;;OAEG;IACH,OAAO,CAAC,kBAAkB;CA6B3B"}
@@ -1,86 +0,0 @@
1
- // ── Tier 1 Rules ──
2
- import { HubSplitterRule } from './rules/hub-splitter.js';
3
- import { BarrelOptimizerRule } from './rules/barrel-optimizer.js';
4
- import { ImportOrganizerRule } from './rules/import-organizer.js';
5
- import { ModuleGrouperRule } from './rules/module-grouper.js';
6
- import { DeadCodeDetectorRule } from './rules/dead-code-detector.js';
7
- /**
8
- * Refactoring Engine v2.0
9
- * Orchestrates Tier 1 (rule-based) and Tier 2 (AST) refactoring rules.
10
- */
11
- export class RefactorEngine {
12
- constructor() {
13
- this.rules = [
14
- // Tier 1: Rule Engine (pattern matching)
15
- new HubSplitterRule(),
16
- new BarrelOptimizerRule(),
17
- new ImportOrganizerRule(),
18
- new ModuleGrouperRule(),
19
- new DeadCodeDetectorRule(),
20
- ];
21
- }
22
- /**
23
- * Analyze a project and generate a refactoring plan.
24
- */
25
- analyze(report, projectPath) {
26
- const allSteps = [];
27
- let stepId = 1;
28
- // Run each rule
29
- for (const rule of this.rules) {
30
- const steps = rule.analyze(report, projectPath);
31
- for (const step of steps) {
32
- step.id = stepId++;
33
- allSteps.push(step);
34
- }
35
- }
36
- // Sort by priority
37
- const priorityOrder = {
38
- CRITICAL: 0,
39
- HIGH: 1,
40
- MEDIUM: 2,
41
- LOW: 3,
42
- };
43
- allSteps.sort((a, b) => priorityOrder[a.priority] - priorityOrder[b.priority]);
44
- // Re-number after sorting
45
- allSteps.forEach((s, i) => (s.id = i + 1));
46
- // Calculate total operations
47
- const totalOperations = allSteps.reduce((sum, s) => sum + s.operations.length, 0);
48
- // Estimate score after refactoring
49
- const estimatedScoreAfter = this.estimateScoreAfter(report, allSteps);
50
- return {
51
- timestamp: new Date().toISOString(),
52
- projectPath,
53
- currentScore: report.score,
54
- estimatedScoreAfter,
55
- steps: allSteps,
56
- totalOperations,
57
- tier1Steps: allSteps.filter((s) => s.tier === 1).length,
58
- tier2Steps: allSteps.filter((s) => s.tier === 2).length,
59
- };
60
- }
61
- /**
62
- * Estimates the architecture score after applying all refactoring steps.
63
- */
64
- estimateScoreAfter(report, steps) {
65
- const breakdown = { ...report.score.breakdown };
66
- for (const step of steps) {
67
- for (const impact of step.scoreImpact) {
68
- if (impact.metric in breakdown) {
69
- // Use estimated after value, capped at 95
70
- const key = impact.metric;
71
- breakdown[key] = Math.min(95, Math.max(breakdown[key], impact.after));
72
- }
73
- }
74
- }
75
- // Recalculate overall with same weights
76
- const overall = Math.round(breakdown.modularity * 0.4 +
77
- breakdown.coupling * 0.25 +
78
- breakdown.cohesion * 0.2 +
79
- breakdown.layering * 0.15);
80
- return {
81
- overall: Math.min(100, overall),
82
- breakdown,
83
- };
84
- }
85
- }
86
- //# sourceMappingURL=refactor-engine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"refactor-engine.js","sourceRoot":"","sources":["../src/refactor-engine.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"refactor-reporter.d.ts","sourceRoot":"","sources":["../src/refactor-reporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAA+B,MAAM,YAAY,CAAC;AAE1E;;;GAGG;AACH,qBAAa,uBAAuB;IAClC,YAAY,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM;IAqB3C,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,qBAAqB;IAwD7B,OAAO,CAAC,kBAAkB;IAiC1B,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,UAAU;IA2ClB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,SAAS;CA0KlB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"refactor-reporter.js","sourceRoot":"","sources":["../src/refactor-reporter.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,qBAAa,eAAe;IAC1B,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM;IActD,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,2BAA2B;IAoCnC,OAAO,CAAC,qBAAqB;IAyB7B,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,0BAA0B;IA2BlC,OAAO,CAAC,eAAe;CAkBxB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import { AnalysisReport, RefactorRule, RefactorStep } from '../types.js';
2
- /**
3
- * Barrel Optimizer Rule (Tier 1)
4
- * Analyzes barrel files (__init__.py, index.ts) and suggests optimization.
5
- * Barrel files that re-export everything create unnecessary coupling.
6
- */
7
- export declare class BarrelOptimizerRule implements RefactorRule {
8
- name: string;
9
- tier: 1;
10
- private static readonly BARREL_FILES;
11
- analyze(report: AnalysisReport, projectPath: string): RefactorStep[];
12
- }
13
- //# sourceMappingURL=barrel-optimizer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"barrel-optimizer.d.ts","sourceRoot":"","sources":["../../src/rules/barrel-optimizer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAiB,MAAM,aAAa,CAAC;AAExF;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,YAAY;IACtD,IAAI,SAAsB;IAC1B,IAAI,EAAG,CAAC,CAAU;IAElB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAEjC;IAEH,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY,EAAE;CAgFrE"}
@@ -1,77 +0,0 @@
1
- import { basename, dirname } from 'path';
2
- /**
3
- * Barrel Optimizer Rule (Tier 1)
4
- * Analyzes barrel files (__init__.py, index.ts) and suggests optimization.
5
- * Barrel files that re-export everything create unnecessary coupling.
6
- */
7
- export class BarrelOptimizerRule {
8
- constructor() {
9
- this.name = 'barrel-optimizer';
10
- this.tier = 1;
11
- }
12
- analyze(report, projectPath) {
13
- const steps = [];
14
- // Find barrel files in the dependency graph
15
- const barrelNodes = report.dependencyGraph.nodes.filter((n) => BarrelOptimizerRule.BARREL_FILES.has(basename(n)));
16
- for (const barrel of barrelNodes) {
17
- // Count how many things this barrel re-exports (outgoing edges)
18
- const outgoing = report.dependencyGraph.edges.filter((e) => e.from === barrel);
19
- const incoming = report.dependencyGraph.edges.filter((e) => e.to === barrel);
20
- if (outgoing.length < 3)
21
- continue;
22
- // Check for "pass-through" pattern: files import from barrel
23
- // but barrel just re-exports from siblings
24
- const siblingDir = dirname(barrel);
25
- const siblingExports = outgoing.filter((e) => dirname(e.to) === siblingDir);
26
- const operations = [];
27
- // Suggest direct imports instead of barrel
28
- for (const consumer of incoming) {
29
- const consumedModules = outgoing
30
- .filter((e) => {
31
- // Check if consumer actually needs this module
32
- return report.dependencyGraph.edges.some((edge) => edge.from === consumer.from && edge.to === e.to);
33
- })
34
- .map((e) => e.to);
35
- if (consumedModules.length > 0) {
36
- operations.push({
37
- type: 'MODIFY',
38
- path: consumer.from,
39
- description: `Replace barrel import from \`${basename(barrel)}\` with direct imports: ${consumedModules.map((m) => basename(m)).join(', ')}`,
40
- });
41
- }
42
- }
43
- // Suggest simplifying the barrel
44
- if (siblingExports.length > 5) {
45
- operations.push({
46
- type: 'MODIFY',
47
- path: barrel,
48
- description: `Simplify ${basename(barrel)}: only re-export public API (${siblingExports.length} re-exports detected, consider reducing)`,
49
- });
50
- }
51
- if (operations.length > 0) {
52
- steps.push({
53
- id: 0,
54
- tier: 1,
55
- rule: this.name,
56
- priority: outgoing.length >= 8 ? 'HIGH' : 'MEDIUM',
57
- title: `Optimize barrel: ${barrel}`,
58
- description: `\`${barrel}\` re-exports ${outgoing.length} modules. ` +
59
- `This creates a "Shotgun Surgery" risk — any change propagates widely.`,
60
- rationale: `Barrel files that re-export everything make it hard to tree-shake unused code ` +
61
- `and create implicit dependencies. Direct imports make dependency relationships explicit ` +
62
- `and reduce the blast radius of changes.`,
63
- operations,
64
- scoreImpact: [
65
- { metric: 'coupling', before: report.score.breakdown.coupling, after: Math.min(95, report.score.breakdown.coupling + 10) },
66
- { metric: 'layering', before: report.score.breakdown.layering, after: Math.min(95, report.score.breakdown.layering + 5) },
67
- ],
68
- });
69
- }
70
- }
71
- return steps;
72
- }
73
- }
74
- BarrelOptimizerRule.BARREL_FILES = new Set([
75
- '__init__.py', 'index.ts', 'index.js', 'index.tsx', 'index.jsx',
76
- ]);
77
- //# sourceMappingURL=barrel-optimizer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"barrel-optimizer.js","sourceRoot":"","sources":["../../src/rules/barrel-optimizer.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import { AnalysisReport, RefactorRule, RefactorStep } from '../types.js';
2
- /**
3
- * Dead Code Detector Rule (Tier 1)
4
- * Finds files with no incoming edges (nobody imports them)
5
- * and exports that are never used.
6
- *
7
- * Handles both path-style (deepguard/report.py) and
8
- * dot-notation (deepguard.report) references.
9
- */
10
- export declare class DeadCodeDetectorRule implements RefactorRule {
11
- name: string;
12
- tier: 1;
13
- private static readonly ENTRY_POINTS;
14
- analyze(report: AnalysisReport, projectPath: string): RefactorStep[];
15
- /**
16
- * Generate dot-notation variants for a file path.
17
- * "deepguard/report.py" → ["deepguard.report", ".report"]
18
- */
19
- private getDotVariants;
20
- }
21
- //# sourceMappingURL=dead-code-detector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dead-code-detector.d.ts","sourceRoot":"","sources":["../../src/rules/dead-code-detector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAiB,MAAM,aAAa,CAAC;AAExF;;;;;;;GAOG;AACH,qBAAa,oBAAqB,YAAW,YAAY;IACvD,IAAI,SAAwB;IAC5B,IAAI,EAAG,CAAC,CAAU;IAElB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAIjC;IAEH,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY,EAAE;IA0FpE;;;OAGG;IACH,OAAO,CAAC,cAAc;CAgBvB"}
@@ -1,117 +0,0 @@
1
- import { basename } from 'path';
2
- /**
3
- * Dead Code Detector Rule (Tier 1)
4
- * Finds files with no incoming edges (nobody imports them)
5
- * and exports that are never used.
6
- *
7
- * Handles both path-style (deepguard/report.py) and
8
- * dot-notation (deepguard.report) references.
9
- */
10
- export class DeadCodeDetectorRule {
11
- constructor() {
12
- this.name = 'dead-code-detector';
13
- this.tier = 1;
14
- }
15
- analyze(report, projectPath) {
16
- const steps = [];
17
- const edges = report.dependencyGraph.edges;
18
- // Build a set of ALL referenced targets (both path and dot-notation)
19
- const allTargets = new Set();
20
- const allSources = new Set();
21
- for (const edge of edges) {
22
- allTargets.add(edge.to);
23
- allSources.add(edge.from);
24
- }
25
- // Only consider actual files (with path separators) as candidates
26
- const fileNodes = report.dependencyGraph.nodes.filter((n) => n.includes('/') || n.includes('\\'));
27
- // Build incoming edge count considering dot-notation matches
28
- const incomingCount = {};
29
- for (const file of fileNodes) {
30
- incomingCount[file] = 0;
31
- // Direct incoming edges
32
- for (const edge of edges) {
33
- if (edge.to === file) {
34
- incomingCount[file]++;
35
- }
36
- }
37
- // Check dot-notation references:
38
- // deepguard/report.py might be referenced as deepguard.report or .report
39
- const dotVariants = this.getDotVariants(file);
40
- for (const variant of dotVariants) {
41
- if (allTargets.has(variant)) {
42
- incomingCount[file]++;
43
- }
44
- }
45
- }
46
- // Find orphan files
47
- const orphans = [];
48
- for (const [file, count] of Object.entries(incomingCount)) {
49
- const fileName = basename(file);
50
- // Skip entry points and config files
51
- if (DeadCodeDetectorRule.ENTRY_POINTS.has(fileName))
52
- continue;
53
- if (fileName.startsWith('__'))
54
- continue;
55
- if (fileName.startsWith('.'))
56
- continue;
57
- if (fileName.endsWith('.test.ts') || fileName.endsWith('.spec.ts'))
58
- continue;
59
- if (fileName.endsWith('_test.py') || fileName.endsWith('.test.py'))
60
- continue;
61
- // Also skip if the file has outgoing edges (it's active code)
62
- if (allSources.has(file))
63
- continue;
64
- if (count === 0) {
65
- orphans.push(file);
66
- }
67
- }
68
- if (orphans.length > 0) {
69
- const operations = orphans.map((file) => ({
70
- type: 'DELETE',
71
- path: file,
72
- description: `\`${basename(file)}\` has no incoming dependencies — verify if still needed`,
73
- }));
74
- steps.push({
75
- id: 0,
76
- tier: 1,
77
- rule: this.name,
78
- priority: orphans.length >= 3 ? 'MEDIUM' : 'LOW',
79
- title: `Review ${orphans.length} potentially unused file(s)`,
80
- description: `Found ${orphans.length} file(s) with no incoming dependencies: ` +
81
- `${orphans.map((f) => `\`${basename(f)}\``).join(', ')}. ` +
82
- `These may be dead code or missing from the module's public API.`,
83
- rationale: `Files with zero incoming edges are either entry points (already excluded), ` +
84
- `or potentially dead code. Removing dead code reduces maintenance burden ` +
85
- `and improves modularity scores.`,
86
- operations,
87
- scoreImpact: [
88
- { metric: 'modularity', before: report.score.breakdown.modularity, after: Math.min(95, report.score.breakdown.modularity + 5) },
89
- ],
90
- });
91
- }
92
- return steps;
93
- }
94
- /**
95
- * Generate dot-notation variants for a file path.
96
- * "deepguard/report.py" → ["deepguard.report", ".report"]
97
- */
98
- getDotVariants(filePath) {
99
- const variants = [];
100
- const withoutExt = filePath.replace(/\.[^.]+$/, '');
101
- const dotPath = withoutExt.replace(/[/\\]/g, '.');
102
- variants.push(dotPath);
103
- // Relative dot-notation: .report
104
- const parts = filePath.split('/');
105
- if (parts.length >= 2) {
106
- const lastPart = parts[parts.length - 1].replace(/\.[^.]+$/, '');
107
- variants.push(`.${lastPart}`);
108
- }
109
- return variants;
110
- }
111
- }
112
- DeadCodeDetectorRule.ENTRY_POINTS = new Set([
113
- 'main.py', 'cli.py', 'app.py', 'manage.py', 'wsgi.py', 'asgi.py',
114
- 'main.ts', 'main.js', 'app.ts', 'app.js', 'server.ts', 'server.js',
115
- 'index.html', 'setup.py', 'setup.cfg', 'pyproject.toml',
116
- ]);
117
- //# sourceMappingURL=dead-code-detector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dead-code-detector.js","sourceRoot":"","sources":["../../src/rules/dead-code-detector.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import { AnalysisReport, RefactorRule, RefactorStep } from '../types.js';
2
- /**
3
- * Hub Splitter Rule (Tier 1)
4
- * Detects files with many connections and generates split plans.
5
- * A "hub" is a file that many other files depend on, creating tight coupling.
6
- */
7
- export declare class HubSplitterRule implements RefactorRule {
8
- name: string;
9
- tier: 1;
10
- analyze(report: AnalysisReport, projectPath: string): RefactorStep[];
11
- private groupDependents;
12
- }
13
- //# sourceMappingURL=hub-splitter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hub-splitter.d.ts","sourceRoot":"","sources":["../../src/rules/hub-splitter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAiB,MAAM,aAAa,CAAC;AAExF;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,YAAY;IAClD,IAAI,SAAkB;IACtB,IAAI,EAAG,CAAC,CAAU;IAElB,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY,EAAE;IA4FpE,OAAO,CAAC,eAAe;CAkBxB"}
@@ -1,110 +0,0 @@
1
- import { basename, dirname } from 'path';
2
- /**
3
- * Hub Splitter Rule (Tier 1)
4
- * Detects files with many connections and generates split plans.
5
- * A "hub" is a file that many other files depend on, creating tight coupling.
6
- */
7
- export class HubSplitterRule {
8
- constructor() {
9
- this.name = 'hub-splitter';
10
- this.tier = 1;
11
- }
12
- analyze(report, projectPath) {
13
- const steps = [];
14
- // Count connections per node
15
- const connectionCount = {};
16
- for (const edge of report.dependencyGraph.edges) {
17
- if (!connectionCount[edge.from])
18
- connectionCount[edge.from] = { incoming: [], outgoing: [] };
19
- if (!connectionCount[edge.to])
20
- connectionCount[edge.to] = { incoming: [], outgoing: [] };
21
- connectionCount[edge.from].outgoing.push(edge.to);
22
- connectionCount[edge.to].incoming.push(edge.from);
23
- }
24
- // Find hubs (5+ incoming connections, not barrel files)
25
- const barrelFiles = new Set(['__init__.py', 'index.ts', 'index.js', 'index.tsx', 'mod.rs']);
26
- for (const [file, connections] of Object.entries(connectionCount)) {
27
- const fileName = basename(file);
28
- if (barrelFiles.has(fileName))
29
- continue;
30
- if (connections.incoming.length < 5)
31
- continue;
32
- const operations = [];
33
- // Determine if this is a dot-notation module or a real file
34
- const isDotNotation = !file.includes('/') && !file.includes('\\');
35
- const moduleName = isDotNotation
36
- ? file.split('.').pop() || file
37
- : fileName.replace(/\.[^.]+$/, '');
38
- const moduleDir = isDotNotation
39
- ? file.split('.').slice(0, -1).join('/')
40
- : dirname(file);
41
- const ext = isDotNotation ? 'py' : (fileName.split('.').pop() || 'py');
42
- // Analyze what dependents import to suggest groupings
43
- const dependentGroups = this.groupDependents(connections.incoming);
44
- // Suggest splitting into domain modules
45
- if (dependentGroups.length >= 2) {
46
- for (const group of dependentGroups) {
47
- const newFileName = `${moduleName}_${group.name}.${ext}`;
48
- const newPath = moduleDir ? `${moduleDir}/${newFileName}` : newFileName;
49
- operations.push({
50
- type: 'CREATE',
51
- path: newPath,
52
- description: `Create \`${newFileName}\` with functionality used by: ${group.dependents.join(', ')}`,
53
- content: ext === 'py'
54
- ? `"""${moduleName}_${group.name} — extracted from ${moduleName}."""\n# Used by: ${group.dependents.join(', ')}\n`
55
- : `// ${moduleName}_${group.name} — extracted from ${moduleName}\n// Used by: ${group.dependents.join(', ')}\n`,
56
- });
57
- }
58
- // Update imports in all dependents
59
- for (const dependent of connections.incoming) {
60
- operations.push({
61
- type: 'MODIFY',
62
- path: dependent,
63
- description: `Update imports in \`${basename(dependent)}\` to use new split modules`,
64
- });
65
- }
66
- // Mark original for refactoring
67
- operations.push({
68
- type: 'MODIFY',
69
- path: isDotNotation ? `${moduleDir}/${moduleName}.${ext}` : file,
70
- description: `Refactor \`${moduleName}.${ext}\` — extract grouped functionality to new modules`,
71
- });
72
- }
73
- if (operations.length > 0) {
74
- steps.push({
75
- id: 0,
76
- tier: 1,
77
- rule: this.name,
78
- priority: connections.incoming.length >= 8 ? 'CRITICAL' : 'HIGH',
79
- title: `Split hub file: ${moduleName}.${ext}`,
80
- description: `\`${file}\` has ${connections.incoming.length} incoming connections. ` +
81
- `Split into ${dependentGroups.length} focused modules to reduce coupling.`,
82
- rationale: `High fan-in (${connections.incoming.length} files depend on this) creates a bottleneck. ` +
83
- `Changes to this file ripple to ${connections.incoming.length} other files. ` +
84
- `Splitting by usage pattern reduces blast radius.`,
85
- operations,
86
- scoreImpact: [
87
- { metric: 'coupling', before: report.score.breakdown.coupling, after: Math.min(95, report.score.breakdown.coupling + 15) },
88
- ],
89
- });
90
- }
91
- }
92
- return steps;
93
- }
94
- groupDependents(dependents) {
95
- // Group by top-level directory
96
- const groups = {};
97
- for (const dep of dependents) {
98
- const parts = dep.includes('/') ? dep.split('/') : dep.split('.');
99
- const groupName = parts.length >= 2 ? parts[parts.length - 2] : 'core';
100
- if (!groups[groupName])
101
- groups[groupName] = [];
102
- groups[groupName].push(basename(dep));
103
- }
104
- return Object.entries(groups).map(([name, deps]) => ({
105
- name,
106
- dependents: deps,
107
- }));
108
- }
109
- }
110
- //# sourceMappingURL=hub-splitter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hub-splitter.js","sourceRoot":"","sources":["../../src/rules/hub-splitter.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import { AnalysisReport, RefactorRule, RefactorStep } from '../types.js';
2
- /**
3
- * Import Organizer Rule (Tier 1)
4
- * Detects files that import from too many different modules (cross-boundary).
5
- * Suggests dependency injection or facade patterns.
6
- */
7
- export declare class ImportOrganizerRule implements RefactorRule {
8
- name: string;
9
- tier: 1;
10
- analyze(report: AnalysisReport, projectPath: string): RefactorStep[];
11
- private generateFacadeContent;
12
- }
13
- //# sourceMappingURL=import-organizer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"import-organizer.d.ts","sourceRoot":"","sources":["../../src/rules/import-organizer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAiB,MAAM,aAAa,CAAC;AAExF;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,YAAY;IACtD,IAAI,SAAsB;IAC1B,IAAI,EAAG,CAAC,CAAU;IAElB,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY,EAAE;IAuEpE,OAAO,CAAC,qBAAqB;CAc9B"}