tutanus 0.12.2 → 0.12.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.
Files changed (309) hide show
  1. package/README.md +7 -7
  2. package/dist/analysts/converters/converter-base.js.map +1 -1
  3. package/dist/analysts/converters/engines/converter-gha-to-gitlab.js.map +1 -1
  4. package/dist/analysts/converters/index.js.map +1 -1
  5. package/dist/analysts/corrections/map-reversion.js +2 -2
  6. package/dist/analysts/corrections/map-reversion.js.map +1 -1
  7. package/dist/analysts/corrections/pruning.js +3 -3
  8. package/dist/analysts/corrections/pruning.js.map +1 -1
  9. package/dist/analysts/detectors/detector-recommendation-architecture.js +2 -2
  10. package/dist/analysts/detectors/detector-recommendation-architecture.js.map +1 -1
  11. package/dist/analysts/github-actions/detectors/org-verified.js.map +1 -1
  12. package/dist/analysts/github-actions/reports/generator-report-github-actions.js +4 -4
  13. package/dist/analysts/github-actions/reports/generator-report-github-actions.js.map +1 -1
  14. package/dist/analysts/js-ts/detectors/detector-context-smart.js +10 -10
  15. package/dist/analysts/js-ts/detectors/detector-context-smart.js.map +1 -1
  16. package/dist/analysts/js-ts/detectors/detector-types-unsafe.js +3 -3
  17. package/dist/analysts/js-ts/detectors/detector-types-unsafe.js.map +1 -1
  18. package/dist/analysts/plugins/detector-documentation.js.map +1 -1
  19. package/dist/analysts/plugins/index.js.map +1 -1
  20. package/dist/analysts/scorers/scorer.js +67 -67
  21. package/dist/analysts/scorers/scorer.js.map +1 -1
  22. package/dist/app/github/app/repo-downloader.d.ts +2 -0
  23. package/dist/app/github/app/repo-downloader.d.ts.map +1 -1
  24. package/dist/app/github/app/repo-downloader.js +2 -2
  25. package/dist/app/github/app/repo-downloader.js.map +1 -1
  26. package/dist/app/github/jobs/auto-fix-job.d.ts.map +1 -1
  27. package/dist/app/github/jobs/auto-fix-job.js +19 -3
  28. package/dist/app/github/jobs/auto-fix-job.js.map +1 -1
  29. package/dist/app/github/push-analysis/push-analysis-service.d.ts.map +1 -1
  30. package/dist/app/github/push-analysis/push-analysis-service.js +19 -7
  31. package/dist/app/github/push-analysis/push-analysis-service.js.map +1 -1
  32. package/dist/app/github/push-analysis/push-report.js +2 -2
  33. package/dist/app/github/push-analysis/push-report.js.map +1 -1
  34. package/dist/bin/index.d.ts.map +1 -1
  35. package/dist/bin/index.js +5 -0
  36. package/dist/bin/index.js.map +1 -1
  37. package/dist/cli/commands/command-azure.js +1 -1
  38. package/dist/cli/commands/command-azure.js.map +1 -1
  39. package/dist/cli/commands/command-circleci.js +1 -1
  40. package/dist/cli/commands/command-circleci.js.map +1 -1
  41. package/dist/cli/commands/command-convert.js.map +1 -1
  42. package/dist/cli/commands/command-github-actions.js +1 -1
  43. package/dist/cli/commands/command-github-actions.js.map +1 -1
  44. package/dist/cli/commands/command-gitlab-ci.js +1 -1
  45. package/dist/cli/commands/command-gitlab-ci.js.map +1 -1
  46. package/dist/cli/commands/command-jenkins.js +1 -1
  47. package/dist/cli/commands/command-jenkins.js.map +1 -1
  48. package/dist/cli/diagnostic/exporters/compliance-exporter.js +2 -2
  49. package/dist/cli/diagnostic/exporters/compliance-exporter.js.map +1 -1
  50. package/dist/cli/diagnostic/exporters/markdown-exporter.js +7 -7
  51. package/dist/cli/diagnostic/exporters/markdown-exporter.js.map +1 -1
  52. package/dist/cli/diagnostic/handlers/archetype-handler.js.map +1 -1
  53. package/dist/cli/diagnostic/handlers/guardian-handler.js.map +1 -1
  54. package/dist/cli/diagnostic/processing-diagnostic.d.ts.map +1 -1
  55. package/dist/cli/diagnostic/processing-diagnostic.js +2 -3
  56. package/dist/cli/diagnostic/processing-diagnostic.js.map +1 -1
  57. package/dist/core/config/auto/fix-config.js.map +1 -1
  58. package/dist/core/execution/executor.js +4 -4
  59. package/dist/core/execution/executor.js.map +1 -1
  60. package/dist/core/execution/inquisitor.js +6 -6
  61. package/dist/core/execution/inquisitor.js.map +1 -1
  62. package/dist/core/execution/scanner.js.map +1 -1
  63. package/dist/core/messages/en/analysts/archetypes-extra-messages.d.ts +2 -2
  64. package/dist/core/messages/en/analysts/archetypes-extra-messages.js +2 -2
  65. package/dist/core/messages/en/analysts/archetypes-extra-messages.js.map +1 -1
  66. package/dist/core/messages/en/analysts/detector-clean-arch-messages.d.ts +4 -4
  67. package/dist/core/messages/en/analysts/detector-clean-arch-messages.js +4 -4
  68. package/dist/core/messages/en/analysts/detector-clean-arch-messages.js.map +1 -1
  69. package/dist/core/messages/en/analysts/detector-js-ts-messages.d.ts +2 -2
  70. package/dist/core/messages/en/analysts/detector-js-ts-messages.js +2 -2
  71. package/dist/core/messages/en/analysts/detector-js-ts-messages.js.map +1 -1
  72. package/dist/core/messages/en/analysts/map-reversion-extra-messages.d.ts +6 -6
  73. package/dist/core/messages/en/analysts/map-reversion-extra-messages.js +6 -6
  74. package/dist/core/messages/en/analysts/map-reversion-extra-messages.js.map +1 -1
  75. package/dist/core/messages/en/analysts/report-github-actions-messages.d.ts +2 -2
  76. package/dist/core/messages/en/analysts/report-github-actions-messages.js +2 -2
  77. package/dist/core/messages/en/analysts/report-github-actions-messages.js.map +1 -1
  78. package/dist/core/messages/en/analysts/scorer-messages.d.ts +45 -45
  79. package/dist/core/messages/en/analysts/scorer-messages.js +49 -49
  80. package/dist/core/messages/en/analysts/scorer-messages.js.map +1 -1
  81. package/dist/core/messages/en/cli/cli-command-convert-messages.d.ts +1 -1
  82. package/dist/core/messages/en/cli/cli-command-convert-messages.js +1 -1
  83. package/dist/core/messages/en/cli/cli-command-convert-messages.js.map +1 -1
  84. package/dist/core/messages/en/cli/cli-command-format-messages.d.ts +1 -1
  85. package/dist/core/messages/en/cli/cli-command-format-messages.js +1 -1
  86. package/dist/core/messages/en/cli/cli-command-format-messages.js.map +1 -1
  87. package/dist/core/messages/en/cli/cli-command-github-actions-messages.d.ts +1 -1
  88. package/dist/core/messages/en/cli/cli-command-github-actions-messages.js +4 -4
  89. package/dist/core/messages/en/cli/cli-command-github-actions-messages.js.map +1 -1
  90. package/dist/core/messages/en/cli/cli-command-update-messages.d.ts +2 -2
  91. package/dist/core/messages/en/cli/cli-command-update-messages.js +2 -2
  92. package/dist/core/messages/en/cli/cli-command-update-messages.js.map +1 -1
  93. package/dist/core/messages/en/cli/cli-flags-validator-messages.d.ts +3 -3
  94. package/dist/core/messages/en/cli/cli-flags-validator-messages.js +3 -3
  95. package/dist/core/messages/en/cli/cli-flags-validator-messages.js.map +1 -1
  96. package/dist/core/messages/en/core/correcoes-messages.js +2 -2
  97. package/dist/core/messages/en/core/correcoes-messages.js.map +1 -1
  98. package/dist/core/messages/en/core/inquisitor-extra-messages.d.ts +2 -2
  99. package/dist/core/messages/en/core/inquisitor-extra-messages.js +2 -2
  100. package/dist/core/messages/en/core/inquisitor-extra-messages.js.map +1 -1
  101. package/dist/core/messages/en/core/parser-extra-messages.d.ts +3 -3
  102. package/dist/core/messages/en/core/parser-extra-messages.js +3 -3
  103. package/dist/core/messages/en/core/parser-extra-messages.js.map +1 -1
  104. package/dist/core/messages/en/guardian/guardian-messages.d.ts +2 -2
  105. package/dist/core/messages/en/guardian/guardian-messages.js +2 -2
  106. package/dist/core/messages/en/guardian/guardian-messages.js.map +1 -1
  107. package/dist/core/messages/en/guardian/watcher-hidden-messages.d.ts +2 -2
  108. package/dist/core/messages/en/guardian/watcher-hidden-messages.js +2 -2
  109. package/dist/core/messages/en/guardian/watcher-hidden-messages.js.map +1 -1
  110. package/dist/core/messages/en/log/log-helper.js.map +1 -1
  111. package/dist/core/messages/en/reports/report-async-patterns-messages.d.ts +3 -3
  112. package/dist/core/messages/en/reports/report-async-patterns-messages.js +3 -3
  113. package/dist/core/messages/en/reports/report-async-patterns-messages.js.map +1 -1
  114. package/dist/core/messages/en/shared/plugin-core-messages.d.ts +2 -2
  115. package/dist/core/messages/en/shared/plugin-core-messages.js +2 -2
  116. package/dist/core/messages/en/shared/plugin-core-messages.js.map +1 -1
  117. package/dist/core/messages/en/shared/plugin-registry-messages.d.ts +4 -4
  118. package/dist/core/messages/en/shared/plugin-registry-messages.js +4 -4
  119. package/dist/core/messages/en/shared/plugin-registry-messages.js.map +1 -1
  120. package/dist/core/messages/ja/analysts/archetypes-extra-messages.d.ts +2 -2
  121. package/dist/core/messages/ja/analysts/archetypes-extra-messages.js +2 -2
  122. package/dist/core/messages/ja/analysts/archetypes-extra-messages.js.map +1 -1
  123. package/dist/core/messages/ja/analysts/detector-clean-arch-messages.d.ts +4 -4
  124. package/dist/core/messages/ja/analysts/detector-clean-arch-messages.js +4 -4
  125. package/dist/core/messages/ja/analysts/detector-clean-arch-messages.js.map +1 -1
  126. package/dist/core/messages/ja/analysts/detector-js-ts-messages.d.ts +2 -2
  127. package/dist/core/messages/ja/analysts/detector-js-ts-messages.js +2 -2
  128. package/dist/core/messages/ja/analysts/detector-js-ts-messages.js.map +1 -1
  129. package/dist/core/messages/ja/analysts/map-reversion-extra-messages.d.ts +6 -6
  130. package/dist/core/messages/ja/analysts/map-reversion-extra-messages.js +6 -6
  131. package/dist/core/messages/ja/analysts/map-reversion-extra-messages.js.map +1 -1
  132. package/dist/core/messages/ja/analysts/report-github-actions-messages.d.ts +2 -2
  133. package/dist/core/messages/ja/analysts/report-github-actions-messages.js +2 -2
  134. package/dist/core/messages/ja/analysts/report-github-actions-messages.js.map +1 -1
  135. package/dist/core/messages/ja/analysts/scorer-messages.d.ts +45 -45
  136. package/dist/core/messages/ja/analysts/scorer-messages.js +49 -49
  137. package/dist/core/messages/ja/analysts/scorer-messages.js.map +1 -1
  138. package/dist/core/messages/ja/cli/cli-command-analysts-messages.d.ts +2 -2
  139. package/dist/core/messages/ja/cli/cli-command-analysts-messages.js +2 -2
  140. package/dist/core/messages/ja/cli/cli-command-analysts-messages.js.map +1 -1
  141. package/dist/core/messages/ja/cli/cli-command-convert-messages.d.ts +1 -1
  142. package/dist/core/messages/ja/cli/cli-command-convert-messages.js +1 -1
  143. package/dist/core/messages/ja/cli/cli-command-convert-messages.js.map +1 -1
  144. package/dist/core/messages/ja/cli/cli-command-format-messages.d.ts +1 -1
  145. package/dist/core/messages/ja/cli/cli-command-format-messages.js +1 -1
  146. package/dist/core/messages/ja/cli/cli-command-format-messages.js.map +1 -1
  147. package/dist/core/messages/ja/cli/cli-command-github-actions-messages.d.ts +1 -1
  148. package/dist/core/messages/ja/cli/cli-command-github-actions-messages.js +4 -4
  149. package/dist/core/messages/ja/cli/cli-command-github-actions-messages.js.map +1 -1
  150. package/dist/core/messages/ja/cli/cli-command-update-messages.d.ts +2 -2
  151. package/dist/core/messages/ja/cli/cli-command-update-messages.js +2 -2
  152. package/dist/core/messages/ja/cli/cli-command-update-messages.js.map +1 -1
  153. package/dist/core/messages/ja/cli/cli-flags-validator-messages.d.ts +3 -3
  154. package/dist/core/messages/ja/cli/cli-flags-validator-messages.js +3 -3
  155. package/dist/core/messages/ja/cli/cli-flags-validator-messages.js.map +1 -1
  156. package/dist/core/messages/ja/core/correcoes-messages.js +2 -2
  157. package/dist/core/messages/ja/core/correcoes-messages.js.map +1 -1
  158. package/dist/core/messages/ja/core/inquisitor-extra-messages.d.ts +2 -2
  159. package/dist/core/messages/ja/core/inquisitor-extra-messages.js +2 -2
  160. package/dist/core/messages/ja/core/inquisitor-extra-messages.js.map +1 -1
  161. package/dist/core/messages/ja/core/parser-extra-messages.d.ts +3 -3
  162. package/dist/core/messages/ja/core/parser-extra-messages.js +3 -3
  163. package/dist/core/messages/ja/core/parser-extra-messages.js.map +1 -1
  164. package/dist/core/messages/ja/guardian/guardian-messages.d.ts +2 -2
  165. package/dist/core/messages/ja/guardian/guardian-messages.js +2 -2
  166. package/dist/core/messages/ja/guardian/guardian-messages.js.map +1 -1
  167. package/dist/core/messages/ja/guardian/watcher-hidden-messages.d.ts +2 -2
  168. package/dist/core/messages/ja/guardian/watcher-hidden-messages.js +2 -2
  169. package/dist/core/messages/ja/guardian/watcher-hidden-messages.js.map +1 -1
  170. package/dist/core/messages/ja/log/log-helper.js.map +1 -1
  171. package/dist/core/messages/ja/reports/report-async-patterns-messages.d.ts +3 -3
  172. package/dist/core/messages/ja/reports/report-async-patterns-messages.js +3 -3
  173. package/dist/core/messages/ja/reports/report-async-patterns-messages.js.map +1 -1
  174. package/dist/core/messages/ja/shared/plugin-core-messages.d.ts +2 -2
  175. package/dist/core/messages/ja/shared/plugin-core-messages.js +2 -2
  176. package/dist/core/messages/ja/shared/plugin-core-messages.js.map +1 -1
  177. package/dist/core/messages/ja/shared/plugin-registry-messages.d.ts +4 -4
  178. package/dist/core/messages/ja/shared/plugin-registry-messages.js +4 -4
  179. package/dist/core/messages/ja/shared/plugin-registry-messages.js.map +1 -1
  180. package/dist/core/messages/pt/analysts/archetypes-extra-messages.d.ts +2 -2
  181. package/dist/core/messages/pt/analysts/archetypes-extra-messages.js +2 -2
  182. package/dist/core/messages/pt/analysts/archetypes-extra-messages.js.map +1 -1
  183. package/dist/core/messages/pt/analysts/detector-clean-arch-messages.d.ts +4 -4
  184. package/dist/core/messages/pt/analysts/detector-clean-arch-messages.js +4 -4
  185. package/dist/core/messages/pt/analysts/detector-clean-arch-messages.js.map +1 -1
  186. package/dist/core/messages/pt/analysts/detector-js-ts-messages.d.ts +2 -2
  187. package/dist/core/messages/pt/analysts/detector-js-ts-messages.js +2 -2
  188. package/dist/core/messages/pt/analysts/detector-js-ts-messages.js.map +1 -1
  189. package/dist/core/messages/pt/analysts/map-reversion-extra-messages.d.ts +6 -6
  190. package/dist/core/messages/pt/analysts/map-reversion-extra-messages.js +6 -6
  191. package/dist/core/messages/pt/analysts/map-reversion-extra-messages.js.map +1 -1
  192. package/dist/core/messages/pt/analysts/report-github-actions-messages.d.ts +2 -2
  193. package/dist/core/messages/pt/analysts/report-github-actions-messages.js +2 -2
  194. package/dist/core/messages/pt/analysts/report-github-actions-messages.js.map +1 -1
  195. package/dist/core/messages/pt/analysts/scorer-messages.d.ts +45 -45
  196. package/dist/core/messages/pt/analysts/scorer-messages.js +49 -49
  197. package/dist/core/messages/pt/analysts/scorer-messages.js.map +1 -1
  198. package/dist/core/messages/pt/cli/cli-command-convert-messages.d.ts +1 -1
  199. package/dist/core/messages/pt/cli/cli-command-convert-messages.js +1 -1
  200. package/dist/core/messages/pt/cli/cli-command-convert-messages.js.map +1 -1
  201. package/dist/core/messages/pt/cli/cli-command-format-messages.d.ts +1 -1
  202. package/dist/core/messages/pt/cli/cli-command-format-messages.js +1 -1
  203. package/dist/core/messages/pt/cli/cli-command-format-messages.js.map +1 -1
  204. package/dist/core/messages/pt/cli/cli-command-github-actions-messages.d.ts +1 -1
  205. package/dist/core/messages/pt/cli/cli-command-github-actions-messages.js +4 -4
  206. package/dist/core/messages/pt/cli/cli-command-github-actions-messages.js.map +1 -1
  207. package/dist/core/messages/pt/cli/cli-command-update-messages.d.ts +2 -2
  208. package/dist/core/messages/pt/cli/cli-command-update-messages.js +2 -2
  209. package/dist/core/messages/pt/cli/cli-command-update-messages.js.map +1 -1
  210. package/dist/core/messages/pt/cli/cli-flags-validator-messages.d.ts +3 -3
  211. package/dist/core/messages/pt/cli/cli-flags-validator-messages.js +3 -3
  212. package/dist/core/messages/pt/cli/cli-flags-validator-messages.js.map +1 -1
  213. package/dist/core/messages/pt/core/correcoes-messages.js +2 -2
  214. package/dist/core/messages/pt/core/correcoes-messages.js.map +1 -1
  215. package/dist/core/messages/pt/core/inquisitor-extra-messages.d.ts +2 -2
  216. package/dist/core/messages/pt/core/inquisitor-extra-messages.js +2 -2
  217. package/dist/core/messages/pt/core/inquisitor-extra-messages.js.map +1 -1
  218. package/dist/core/messages/pt/core/parser-extra-messages.d.ts +3 -3
  219. package/dist/core/messages/pt/core/parser-extra-messages.js +3 -3
  220. package/dist/core/messages/pt/core/parser-extra-messages.js.map +1 -1
  221. package/dist/core/messages/pt/guardian/guardian-messages.d.ts +2 -2
  222. package/dist/core/messages/pt/guardian/guardian-messages.js +2 -2
  223. package/dist/core/messages/pt/guardian/guardian-messages.js.map +1 -1
  224. package/dist/core/messages/pt/guardian/watcher-hidden-messages.d.ts +2 -2
  225. package/dist/core/messages/pt/guardian/watcher-hidden-messages.js +2 -2
  226. package/dist/core/messages/pt/guardian/watcher-hidden-messages.js.map +1 -1
  227. package/dist/core/messages/pt/log/log-helper.js.map +1 -1
  228. package/dist/core/messages/pt/reports/report-async-patterns-messages.d.ts +3 -3
  229. package/dist/core/messages/pt/reports/report-async-patterns-messages.js +3 -3
  230. package/dist/core/messages/pt/reports/report-async-patterns-messages.js.map +1 -1
  231. package/dist/core/messages/pt/shared/plugin-core-messages.d.ts +2 -2
  232. package/dist/core/messages/pt/shared/plugin-core-messages.js +2 -2
  233. package/dist/core/messages/pt/shared/plugin-core-messages.js.map +1 -1
  234. package/dist/core/messages/pt/shared/plugin-registry-messages.d.ts +4 -4
  235. package/dist/core/messages/pt/shared/plugin-registry-messages.js +4 -4
  236. package/dist/core/messages/pt/shared/plugin-registry-messages.js.map +1 -1
  237. package/dist/core/messages/zh/analysts/archetypes-extra-messages.d.ts +2 -2
  238. package/dist/core/messages/zh/analysts/archetypes-extra-messages.js +2 -2
  239. package/dist/core/messages/zh/analysts/archetypes-extra-messages.js.map +1 -1
  240. package/dist/core/messages/zh/analysts/detector-clean-arch-messages.d.ts +4 -4
  241. package/dist/core/messages/zh/analysts/detector-clean-arch-messages.js +4 -4
  242. package/dist/core/messages/zh/analysts/detector-clean-arch-messages.js.map +1 -1
  243. package/dist/core/messages/zh/analysts/detector-js-ts-messages.d.ts +2 -2
  244. package/dist/core/messages/zh/analysts/detector-js-ts-messages.js +2 -2
  245. package/dist/core/messages/zh/analysts/detector-js-ts-messages.js.map +1 -1
  246. package/dist/core/messages/zh/analysts/map-reversion-extra-messages.d.ts +6 -6
  247. package/dist/core/messages/zh/analysts/map-reversion-extra-messages.js +6 -6
  248. package/dist/core/messages/zh/analysts/map-reversion-extra-messages.js.map +1 -1
  249. package/dist/core/messages/zh/analysts/report-github-actions-messages.d.ts +2 -2
  250. package/dist/core/messages/zh/analysts/report-github-actions-messages.js +2 -2
  251. package/dist/core/messages/zh/analysts/report-github-actions-messages.js.map +1 -1
  252. package/dist/core/messages/zh/analysts/scorer-messages.d.ts +45 -45
  253. package/dist/core/messages/zh/analysts/scorer-messages.js +49 -49
  254. package/dist/core/messages/zh/analysts/scorer-messages.js.map +1 -1
  255. package/dist/core/messages/zh/cli/cli-command-analysts-messages.d.ts +2 -2
  256. package/dist/core/messages/zh/cli/cli-command-analysts-messages.js +2 -2
  257. package/dist/core/messages/zh/cli/cli-command-analysts-messages.js.map +1 -1
  258. package/dist/core/messages/zh/cli/cli-command-convert-messages.d.ts +1 -1
  259. package/dist/core/messages/zh/cli/cli-command-convert-messages.js +1 -1
  260. package/dist/core/messages/zh/cli/cli-command-convert-messages.js.map +1 -1
  261. package/dist/core/messages/zh/cli/cli-command-format-messages.d.ts +1 -1
  262. package/dist/core/messages/zh/cli/cli-command-format-messages.js +1 -1
  263. package/dist/core/messages/zh/cli/cli-command-format-messages.js.map +1 -1
  264. package/dist/core/messages/zh/cli/cli-command-github-actions-messages.d.ts +1 -1
  265. package/dist/core/messages/zh/cli/cli-command-github-actions-messages.js +4 -4
  266. package/dist/core/messages/zh/cli/cli-command-github-actions-messages.js.map +1 -1
  267. package/dist/core/messages/zh/cli/cli-command-update-messages.d.ts +2 -2
  268. package/dist/core/messages/zh/cli/cli-command-update-messages.js +2 -2
  269. package/dist/core/messages/zh/cli/cli-command-update-messages.js.map +1 -1
  270. package/dist/core/messages/zh/cli/cli-flags-validator-messages.d.ts +3 -3
  271. package/dist/core/messages/zh/cli/cli-flags-validator-messages.js +3 -3
  272. package/dist/core/messages/zh/cli/cli-flags-validator-messages.js.map +1 -1
  273. package/dist/core/messages/zh/core/correcoes-messages.js +2 -2
  274. package/dist/core/messages/zh/core/correcoes-messages.js.map +1 -1
  275. package/dist/core/messages/zh/core/inquisitor-extra-messages.d.ts +2 -2
  276. package/dist/core/messages/zh/core/inquisitor-extra-messages.js +2 -2
  277. package/dist/core/messages/zh/core/inquisitor-extra-messages.js.map +1 -1
  278. package/dist/core/messages/zh/core/parser-extra-messages.d.ts +3 -3
  279. package/dist/core/messages/zh/core/parser-extra-messages.js +3 -3
  280. package/dist/core/messages/zh/core/parser-extra-messages.js.map +1 -1
  281. package/dist/core/messages/zh/guardian/guardian-messages.d.ts +2 -2
  282. package/dist/core/messages/zh/guardian/guardian-messages.js +2 -2
  283. package/dist/core/messages/zh/guardian/guardian-messages.js.map +1 -1
  284. package/dist/core/messages/zh/guardian/watcher-hidden-messages.d.ts +2 -2
  285. package/dist/core/messages/zh/guardian/watcher-hidden-messages.js +2 -2
  286. package/dist/core/messages/zh/guardian/watcher-hidden-messages.js.map +1 -1
  287. package/dist/core/messages/zh/log/log-helper.js.map +1 -1
  288. package/dist/core/messages/zh/reports/report-async-patterns-messages.d.ts +3 -3
  289. package/dist/core/messages/zh/reports/report-async-patterns-messages.js +3 -3
  290. package/dist/core/messages/zh/reports/report-async-patterns-messages.js.map +1 -1
  291. package/dist/core/messages/zh/shared/plugin-core-messages.d.ts +2 -2
  292. package/dist/core/messages/zh/shared/plugin-core-messages.js +2 -2
  293. package/dist/core/messages/zh/shared/plugin-core-messages.js.map +1 -1
  294. package/dist/core/messages/zh/shared/plugin-registry-messages.d.ts +4 -4
  295. package/dist/core/messages/zh/shared/plugin-registry-messages.js +4 -4
  296. package/dist/core/messages/zh/shared/plugin-registry-messages.js.map +1 -1
  297. package/dist/core/parsing/utils.d.ts +3 -3
  298. package/dist/core/workers/worker-pool.js +1 -1
  299. package/dist/core/workers/worker-pool.js.map +1 -1
  300. package/dist/guardian/baseline.js.map +1 -1
  301. package/dist/guardian/constants.js.map +1 -1
  302. package/dist/guardian/diff.js.map +1 -1
  303. package/dist/reports/analise-async-patterns.js +1 -1
  304. package/dist/reports/analise-async-patterns.js.map +1 -1
  305. package/dist/reports/filter-smart.js.map +1 -1
  306. package/dist/reports/report-caretaker-health.js +1 -1
  307. package/dist/reports/report-caretaker-health.js.map +1 -1
  308. package/dist/shared/plugins/init.js.map +1 -1
  309. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../../src/core/execution/scanner.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: MIT\nimport type { Dirent, Stats } from 'node:fs';\nimport { promises as fs } from 'node:fs';\n\nimport { config } from '@core/config';\nimport { messages } from '@core/messages';\nimport { lerArquivoTexto, lerEstado } from '@shared/persistence';\nimport micromatch from 'micromatch';\nimport path from 'path';\n\nimport type { FileMap, ScanOptions } from '@';\n\nexport type { ScanOptions };\nfunction getErrMsg(err: unknown): string {\n return err instanceof Error ? err.message : String(err);\n}\n\nfunction ensureStringArray(val: unknown[]): string[] {\n if (!Array.isArray(val)) return [];\n for (const item of val) {\n if (typeof item !== 'string') return [];\n }\n return val as string[];\n}\n\nexport async function scanRepository(baseDir: string, options: ScanOptions = {}): Promise<FileMap> {\n // Log de início da varredura\n messages.logVarredor.iniciarVarredura(baseDir);\n\n // Helpers locais de normalização (não exportados)\n const toPosix = (string: string) => string.replace(/\\\\+/g, '/');\n const trimDotSlash = (string: string) => string.replace(/^\\.\\/?/, '');\n const {\n includeContent = true,\n filter = () => true,\n onProgress = () => {\n return undefined;\n }\n } = options;\n // Em modo scan-only, não devemos ler conteúdos de arquivos\n const efetivoIncluirConteudo = includeContent && !config.SCAN_ONLY;\n const fileMap: FileMap = {};\n const statCache = new Map<string, Stats>();\n const cliIncludeGroups = (config as unknown as { CLI_INCLUDE_GROUPS?: string[][] }).CLI_INCLUDE_GROUPS;\n const includeGroups = Array.isArray(cliIncludeGroups) ? cliIncludeGroups : [];\n const includeGroupsNorm: string[][] = includeGroups.map(grupo => (grupo || []).map(caminho => toPosix(trimDotSlash(String(caminho || '')))));\n const includePadroes = ensureStringArray(config.CLI_INCLUDE_PATTERNS);\n const includePadroesNorm = includePadroes.map(caminho => toPosix(trimDotSlash(String(caminho || ''))));\n const excludePadroesNorm = ensureStringArray(config.CLI_EXCLUDE_PATTERNS).map(caminho => toPosix(String(caminho || '')));\n\n // 📌 ÚNICO PONTO DE EXCLUDE: globalExcludeGlob da configuração legacy ou campo simplificado\n const legacyExcludes = config.INCLUDE_EXCLUDE_RULES?.globalExcludeGlob || [];\n const ignorePadroesNorm = ensureStringArray(legacyExcludes).map((caminho: string) => toPosix(String(caminho || '')));\n const hasIncluir = includeGroupsNorm.length > 0 || includePadroesNorm.length > 0;\n // Sinaliza quando os includes pedem ocorrências em qualquer profundidade (ex.: '**/nome/**') ou quando\n // o usuário forneceu nomes simples (que o expandIncludes converte em '**/nome/**').\n const pedeOcorrenciasGlobais = hasIncluir ? [...includePadroesNorm, ...includeGroupsNorm.flat()].some(caminho => caminho.startsWith('**/')) : false;\n // node_modules explicitamente incluído em algum pattern ou grupo de include\n const includeNodeModulesExplicit = hasIncluir ? [...includePadroesNorm, ...includeGroupsNorm.flat()].some(caminho => /(^|\\/)node_modules(\\/|$)/.test(String(caminho || ''))) : false;\n\n function adicionarArquivoAoMapa(fullCaminho: string, relPath: string, content: string | null, mtimeMs: number): void {\n fileMap[`$${relPath}`] = { fullCaminho, relPath, content, ultimaModificacao: mtimeMs };\n if (!config.REPORT_SILENCE_LOGS) {\n onProgress(`[OK] Arquivo lido: ${relPath}`);\n }\n }\n\n // Quando includes estão ativos, derivamos diretórios-raiz a partir dos prefixos antes do primeiro metacaractere\n\n function calcularIncludeRoots(padroes: string[] | undefined, grupos?: string[][]): string[] {\n const roots = new Set<string>();\n const candidatos = new Set<string>();\n if (Array.isArray(padroes)) padroes.forEach(caminho => candidatos.add(toPosix(trimDotSlash(caminho))));\n if (Array.isArray(grupos)) for (const grupo of grupos) grupo.forEach(caminho => candidatos.add(toPosix(trimDotSlash(caminho))));\n if (candidatos.size === 0) return [];\n const META = /[\\\\*\\?\\{\\}\\[\\]]/; // caracteres meta de glob\n for (const raw of candidatos) {\n let caminho = String(raw).trim();\n if (!caminho) continue;\n caminho = toPosix(trimDotSlash(caminho));\n let anchor = '';\n if (caminho.includes('/**')) anchor = caminho.slice(0, caminho.indexOf('/**')); else if (caminho.includes('/*')) anchor = caminho.slice(0, caminho.indexOf('/*')); else if (caminho.includes('/')) anchor = caminho.split('/')[0]; else anchor = '';\n anchor = anchor.replace(/\\/+/g, '/').replace(/\\/$/, '');\n // Ignora anchors inválidos: vazios, apenas '.', '**' ou contendo metacaracteres (ex.: '**/src')\n if (anchor && anchor !== '.' && anchor !== '**' && !META.test(anchor)) {\n const baseNorm = toPosix(String(baseDir)).replace(/\\/$/, '');\n const rootPosix = `${baseNorm}/${anchor}`.replace(/\\/+/g, '/');\n roots.add(rootPosix);\n }\n }\n return Array.from(roots);\n }\n\n // Matcher de include considerando grupos: AND dentro do grupo, OR entre grupos\n\n function matchIncluir(relPath: string): boolean {\n // Função auxiliar: avalia se um padrão casa com o caminho relativo\n const matchesPadrao = (rp: string, caminho: string): boolean => {\n if (!caminho) return false;\n // Casamento direto via micromatch\n if (micromatch.isMatch(rp, [caminho])) return true;\n // Compat extra: reconhece padrões simples com sufixo '/**' por prefixo\n if (caminho.endsWith('/**')) {\n const base = caminho.slice(0, -3); // remove '/**'\n if (base && rp.startsWith(base)) return true;\n }\n // Quando o padrão não possui metacaracteres, trate como diretório/segmento\n const META = /[\\\\*\\?\\{\\}\\[\\]]/;\n if (!META.test(caminho)) {\n const pat = caminho.replace(/\\/+$|\\/+$|^\\.\\/?/g, '').replace(/\\/+/g, '/');\n if (!pat) return false;\n // Se contém barra: trate como caminho base (prefixo)\n if (pat.includes('/')) {\n if (rp === pat) return true;\n if (rp.startsWith(`${pat}/`)) return true;\n if (rp.includes(`/${pat}/`)) return true;\n if (rp.endsWith(`/${pat}`)) return true;\n return false;\n }\n // Segmento simples: casa em qualquer nível\n if (rp === pat) return true;\n if (rp.startsWith(`${pat}/`)) return true;\n if (rp.includes(`/${pat}/`)) return true;\n if (rp.endsWith(`/${pat}`)) return true;\n return false;\n }\n return false;\n };\n // Função auxiliar: extrai a \"base\" do padrão (token original antes das ampliações)\n const baseFromPadrao = (caminho: string): string => {\n let base = caminho.trim();\n base = base.replace(/^\\*\\*\\//, ''); // remove '**/' inicial\n base = base.replace(/\\/\\*\\*$/, ''); // remove '/**' final\n base = base.replace(/^\\.\\/?/, ''); // remove './' inicial\n base = base.replace(/\\/+/g, '/').replace(/\\/$/, '');\n return base;\n };\n // Quando houver grupos, aplica estritamente: OR entre grupos com AND dentro do grupo\n if (includeGroupsNorm.length > 0) {\n for (const grupo of includeGroupsNorm) {\n // Agrupa padrões por base (permite OR entre variantes de um mesmo token e AND entre tokens)\n const porBase = new Map<string, string[]>();\n for (const caminho of grupo) {\n const base = baseFromPadrao(caminho);\n const patternVariants = porBase.get(base) || [];\n patternVariants.push(caminho);\n porBase.set(base, patternVariants);\n }\n const allBasesMatch = Array.from(porBase.values()).every(lista => lista.some(caminho => matchesPadrao(relPath, caminho)));\n if (allBasesMatch) return true;\n }\n // Sem correspondência em nenhum grupo -> não inclui\n return false;\n }\n // Sem grupos: lista achatada (OR)\n if (includePadroesNorm.length && micromatch.isMatch(relPath, includePadroesNorm)) return true;\n // Compat extra também para padrões simples quando não há grupos\n for (const caminho of includePadroesNorm || []) if (matchesPadrao(relPath, caminho)) return true;\n return false;\n }\n async function getStat(caminho: string): Promise<Stats | null> {\n try {\n const sanitizedPath = String(caminho).replace(/\\0/g, '');\n const st = await fs.stat(sanitizedPath);\n statCache.set(sanitizedPath, st);\n return st;\n } catch {\n return null;\n }\n }\n function isStatsWithMtime(value: unknown): value is Stats {\n return typeof value === 'object' && value !== null && 'mtimeMs' in value;\n }\n\n function extractMtimeMs(stat: unknown): number {\n if (isStatsWithMtime(stat)) {\n return typeof stat.mtimeMs === 'number' ? stat.mtimeMs : 0;\n }\n return 0;\n }\n async function readFileContent(caminho: string, relPath: string, prog: typeof onProgress): Promise<string | null> {\n try {\n if (!!process.env.VITEST) {\n return await lerEstado<string>(caminho);\n }\n return await lerArquivoTexto(caminho);\n } catch (erro) {\n prog(JSON.stringify({\n tipo: 'erro',\n acao: 'ler',\n caminho: relPath,\n mensagem: getErrMsg(erro)\n }));\n return null;\n }\n }\n async function scan(dir: string): Promise<void> {\n const sanitizedDir = String(dir).replace(/\\0/g, '');\n let entries: Dirent[];\n try {\n entries = await fs.readdir(sanitizedDir, {\n withFileTypes: true\n });\n entries.sort((arquivo, base) => arquivo.name.localeCompare(base.name));\n } catch (err) {\n onProgress(JSON.stringify({\n tipo: 'erro',\n acao: 'acessar',\n caminho: dir,\n mensagem: getErrMsg(err)\n }));\n return;\n }\n\n // Logar apenas diretórios sendo examinados\n onProgress(JSON.stringify({\n tipo: 'diretorio',\n acao: 'examinar',\n caminho: dir\n }));\n for (const entry of entries) {\n const fullCaminho = path.join(sanitizedDir, entry.name);\n const relPathRaw = path.relative(baseDir, fullCaminho);\n // Normaliza para separador POSIX para que micromatch funcione de forma consistente no Windows\n const relPath = toPosix(relPathRaw);\n\n // Regra fixa do Tutanus: não analisar testes (deixa para o runner, ex.: Vitest)\n // Arquivos auto-gerados / terceiros — pular sempre\n const isThirdParty = (caminho: string): boolean => {\n const rp = toPosix(caminho);\n if (/^THIRD-PARTY[-_]/.test(rp)) return true;\n if (/^(LICENSE|CHANGELOG|CONTRIBUTING|CODE_OF_CONDUCT)/i.test(rp)) return true;\n return false;\n };\n if (isThirdParty(relPath)) {\n continue;\n }\n const isTestLike = (caminho: string): boolean => {\n const rp = toPosix(caminho);\n if (/(^|\\/)__(tests|mocks)__(\\/|$)/.test(rp)) return true;\n if (/(^|\\/)(tests?|test)(\\/|$)/.test(rp)) return true;\n if (/\\.(test|spec)\\.[jt]sx?$/.test(rp)) return true;\n return false;\n };\n if (isTestLike(relPath)) {\n continue;\n }\n if (entry.isDirectory() && !entry.isSymbolicLink()) {\n if (!hasIncluir && micromatch.isMatch(relPath, excludePadroesNorm)) continue;\n if (!hasIncluir && micromatch.isMatch(relPath, ignorePadroesNorm)) continue;\n if (/(^|\\/)node_modules(\\/|$)/.test(relPath) && !includeNodeModulesExplicit) continue;\n await scan(fullCaminho);\n continue;\n }\n if (hasIncluir && !matchIncluir(relPath)) continue;\n if (!hasIncluir && micromatch.isMatch(relPath, excludePadroesNorm)) continue;\n if (!hasIncluir && micromatch.isMatch(relPath, ignorePadroesNorm)) continue;\n if (!filter(relPath, entry)) continue;\n try {\n let stat: unknown = statCache.get(fullCaminho);\n if (!stat) {\n stat = await getStat(fullCaminho);\n if (!stat) continue;\n }\n const mtimeMs = extractMtimeMs(stat);\n let content: string | null = null;\n if (efetivoIncluirConteudo) {\n content = await readFileContent(fullCaminho, relPath, onProgress);\n }\n adicionarArquivoAoMapa(fullCaminho, relPath, content, mtimeMs);\n } catch (err) {\n onProgress(JSON.stringify({\n tipo: 'erro',\n acao: 'ler',\n caminho: relPath,\n mensagem: getErrMsg(err)\n }));\n }\n }\n }\n\n async function processarStartDirs(\n dirs: string[],\n base: string,\n hasInc: boolean,\n efetivoInc: boolean,\n scanFn: typeof scan,\n matchFn: typeof matchIncluir,\n filterFn: typeof filter,\n prog: typeof onProgress,\n exclPad: string[],\n ignPad: string[],\n statC: Map<string, Stats>\n ): Promise<void> {\n const vistos = new Set<string>();\n for (const diretorio of dirs) {\n let norm = diretorio;\n let end = norm.length;\n while (end > 0 && (norm[end - 1] === '\\\\' || norm[end - 1] === '/')) end--;\n norm = norm.slice(0, end);\n if (vistos.has(norm)) continue;\n vistos.add(norm);\n try {\n await fs.readdir(norm);\n await scanFn(norm);\n continue;\n } catch { /* not a dir */ }\n try {\n let st = statC.get(norm);\n if (!st) { st = await fs.stat(norm); statC.set(norm, st); }\n let isDir = st?.isDirectory() ?? false;\n if (!isDir) {\n try { await fs.readdir(norm); isDir = true; } catch { /* file */ }\n }\n if (isDir) { await scanFn(norm); continue; }\n const relPath = toPosix(path.relative(base, norm));\n if (hasInc && !matchFn(relPath)) continue;\n if (!hasInc && (micromatch.isMatch(relPath, exclPad) || micromatch.isMatch(relPath, ignPad))) continue;\n const fakeDirent: Dirent = {\n name: path.basename(norm), isDirectory: () => false, isSymbolicLink: () => false\n } as Dirent;\n if (!filterFn(relPath, fakeDirent)) continue;\n let content: string | null = null;\n if (efetivoInc) {\n try {\n content = !!process.env.VITEST ? await lerEstado<string>(norm) : await lerArquivoTexto(norm);\n } catch (erro) {\n prog(JSON.stringify({ tipo: 'erro', acao: 'ler', caminho: relPath, mensagem: getErrMsg(erro) }));\n content = null;\n }\n }\n adicionarArquivoAoMapa(norm, relPath, content, (isStatsWithMtime(st) ? st.mtimeMs : Date.now()) || Date.now());\n } catch (erro) {\n prog(JSON.stringify({ tipo: 'erro', acao: 'acessar', caminho: norm, mensagem: getErrMsg(erro) }));\n }\n }\n }\n\n let startDirs = hasIncluir ? calcularIncludeRoots(config.CLI_INCLUDE_PATTERNS as string[] | undefined, cliIncludeGroups) : [];\n // Quando o include pede ocorrências em qualquer profundidade, adicionamos também a base do repo para\n // garantir que diretórios-alvo apareçam em níveis arbitrários (ex.: packages/*/node_modules).\n if (hasIncluir && pedeOcorrenciasGlobais) {\n const baseNorm = toPosix(String(baseDir)).replace(/\\/$/, '');\n if (!startDirs.includes(baseNorm)) startDirs = [baseNorm, ...startDirs];\n }\n // Se nenhum root foi derivado (ex.: includes somente de arquivos como 'a.txt'), varremos a base inteira\n // para permitir que o filtro de includes atue nos arquivos diretamente.\n if (hasIncluir && startDirs.length === 0) {\n // Sem roots deriváveis (ex.: include apenas 'a.txt'): varre só a raiz para permitir filtro\n await scan(baseDir);\n return fileMap;\n }\n if (startDirs.length === 0) {\n await scan(baseDir);\n } else {\n await processarStartDirs(startDirs, baseDir, hasIncluir, efetivoIncluirConteudo, scan, matchIncluir, filter, onProgress, excludePadroesNorm, ignorePadroesNorm, statCache);\n }\n\n // Log de conclusão da varredura\n const totalArquivos = Object.keys(fileMap).length;\n const totalDiretorios = new Set(Object.values(fileMap).map(arquivo => path.dirname(arquivo.relPath))).size;\n messages.logVarredor.completo(totalArquivos, totalDiretorios);\n return fileMap;\n}"]}
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../../src/core/execution/scanner.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: MIT\nimport type { Dirent, Stats } from 'node:fs';\nimport { promises as fs } from 'node:fs';\n\nimport { config } from '@core/config';\nimport { messages } from '@core/messages';\nimport { lerArquivoTexto, lerEstado } from '@shared/persistence';\nimport micromatch from 'micromatch';\nimport path from 'path';\n\nimport type { FileMap, ScanOptions } from '@';\n\nexport type { ScanOptions };\nfunction getErrMsg(err: unknown): string {\n return err instanceof Error ? err.message : String(err);\n}\n\nfunction ensureStringArray(val: unknown[]): string[] {\n if (!Array.isArray(val)) return [];\n for (const item of val) {\n if (typeof item !== 'string') return [];\n }\n return val as string[];\n}\n\nexport async function scanRepository(baseDir: string, options: ScanOptions = {}): Promise<FileMap> {\n // Log de início da varredura\n messages.logVarredor.iniciarVarredura(baseDir);\n\n // Helpers locais de normalização (não exportados)\n const toPosix = (string: string) => string.replace(/\\\\+/g, '/');\n const trimDotSlash = (string: string) => string.replace(/^\\.\\/?/, '');\n const {\n includeContent = true,\n filter = () => true,\n onProgress = () => {\n return undefined;\n }\n } = options;\n // Em modo scan-only, não devemos ler conteúdos de arquivos\n const efetivoIncluirConteudo = includeContent && !config.SCAN_ONLY;\n const fileMap: FileMap = {};\n const statCache = new Map<string, Stats>();\n const cliIncludeGroups = (config as unknown as { CLI_INCLUDE_GROUPS?: string[][] }).CLI_INCLUDE_GROUPS;\n const includeGroups = Array.isArray(cliIncludeGroups) ? cliIncludeGroups : [];\n const includeGroupsNorm: string[][] = includeGroups.map(grupo => (grupo || []).map(caminho => toPosix(trimDotSlash(String(caminho || '')))));\n const includePadroes = ensureStringArray(config.CLI_INCLUDE_PATTERNS);\n const includePadroesNorm = includePadroes.map(caminho => toPosix(trimDotSlash(String(caminho || ''))));\n const excludePadroesNorm = ensureStringArray(config.CLI_EXCLUDE_PATTERNS).map(caminho => toPosix(String(caminho || '')));\n\n // [PIN] ÚNICO PONTO DE EXCLUDE: globalExcludeGlob da configuração legacy ou campo simplificado\n const legacyExcludes = config.INCLUDE_EXCLUDE_RULES?.globalExcludeGlob || [];\n const ignorePadroesNorm = ensureStringArray(legacyExcludes).map((caminho: string) => toPosix(String(caminho || '')));\n const hasIncluir = includeGroupsNorm.length > 0 || includePadroesNorm.length > 0;\n // Sinaliza quando os includes pedem ocorrências em qualquer profundidade (ex.: '**/nome/**') ou quando\n // o usuário forneceu nomes simples (que o expandIncludes converte em '**/nome/**').\n const pedeOcorrenciasGlobais = hasIncluir ? [...includePadroesNorm, ...includeGroupsNorm.flat()].some(caminho => caminho.startsWith('**/')) : false;\n // node_modules explicitamente incluído em algum pattern ou grupo de include\n const includeNodeModulesExplicit = hasIncluir ? [...includePadroesNorm, ...includeGroupsNorm.flat()].some(caminho => /(^|\\/)node_modules(\\/|$)/.test(String(caminho || ''))) : false;\n\n function adicionarArquivoAoMapa(fullCaminho: string, relPath: string, content: string | null, mtimeMs: number): void {\n fileMap[`$${relPath}`] = { fullCaminho, relPath, content, ultimaModificacao: mtimeMs };\n if (!config.REPORT_SILENCE_LOGS) {\n onProgress(`[OK] Arquivo lido: ${relPath}`);\n }\n }\n\n // Quando includes estão ativos, derivamos diretórios-raiz a partir dos prefixos antes do primeiro metacaractere\n\n function calcularIncludeRoots(padroes: string[] | undefined, grupos?: string[][]): string[] {\n const roots = new Set<string>();\n const candidatos = new Set<string>();\n if (Array.isArray(padroes)) padroes.forEach(caminho => candidatos.add(toPosix(trimDotSlash(caminho))));\n if (Array.isArray(grupos)) for (const grupo of grupos) grupo.forEach(caminho => candidatos.add(toPosix(trimDotSlash(caminho))));\n if (candidatos.size === 0) return [];\n const META = /[\\\\*\\?\\{\\}\\[\\]]/; // caracteres meta de glob\n for (const raw of candidatos) {\n let caminho = String(raw).trim();\n if (!caminho) continue;\n caminho = toPosix(trimDotSlash(caminho));\n let anchor = '';\n if (caminho.includes('/**')) anchor = caminho.slice(0, caminho.indexOf('/**')); else if (caminho.includes('/*')) anchor = caminho.slice(0, caminho.indexOf('/*')); else if (caminho.includes('/')) anchor = caminho.split('/')[0]; else anchor = '';\n anchor = anchor.replace(/\\/+/g, '/').replace(/\\/$/, '');\n // Ignora anchors inválidos: vazios, apenas '.', '**' ou contendo metacaracteres (ex.: '**/src')\n if (anchor && anchor !== '.' && anchor !== '**' && !META.test(anchor)) {\n const baseNorm = toPosix(String(baseDir)).replace(/\\/$/, '');\n const rootPosix = `${baseNorm}/${anchor}`.replace(/\\/+/g, '/');\n roots.add(rootPosix);\n }\n }\n return Array.from(roots);\n }\n\n // Matcher de include considerando grupos: AND dentro do grupo, OR entre grupos\n\n function matchIncluir(relPath: string): boolean {\n // Função auxiliar: avalia se um padrão casa com o caminho relativo\n const matchesPadrao = (rp: string, caminho: string): boolean => {\n if (!caminho) return false;\n // Casamento direto via micromatch\n if (micromatch.isMatch(rp, [caminho])) return true;\n // Compat extra: reconhece padrões simples com sufixo '/**' por prefixo\n if (caminho.endsWith('/**')) {\n const base = caminho.slice(0, -3); // remove '/**'\n if (base && rp.startsWith(base)) return true;\n }\n // Quando o padrão não possui metacaracteres, trate como diretório/segmento\n const META = /[\\\\*\\?\\{\\}\\[\\]]/;\n if (!META.test(caminho)) {\n const pat = caminho.replace(/\\/+$|\\/+$|^\\.\\/?/g, '').replace(/\\/+/g, '/');\n if (!pat) return false;\n // Se contém barra: trate como caminho base (prefixo)\n if (pat.includes('/')) {\n if (rp === pat) return true;\n if (rp.startsWith(`${pat}/`)) return true;\n if (rp.includes(`/${pat}/`)) return true;\n if (rp.endsWith(`/${pat}`)) return true;\n return false;\n }\n // Segmento simples: casa em qualquer nível\n if (rp === pat) return true;\n if (rp.startsWith(`${pat}/`)) return true;\n if (rp.includes(`/${pat}/`)) return true;\n if (rp.endsWith(`/${pat}`)) return true;\n return false;\n }\n return false;\n };\n // Função auxiliar: extrai a \"base\" do padrão (token original antes das ampliações)\n const baseFromPadrao = (caminho: string): string => {\n let base = caminho.trim();\n base = base.replace(/^\\*\\*\\//, ''); // remove '**/' inicial\n base = base.replace(/\\/\\*\\*$/, ''); // remove '/**' final\n base = base.replace(/^\\.\\/?/, ''); // remove './' inicial\n base = base.replace(/\\/+/g, '/').replace(/\\/$/, '');\n return base;\n };\n // Quando houver grupos, aplica estritamente: OR entre grupos com AND dentro do grupo\n if (includeGroupsNorm.length > 0) {\n for (const grupo of includeGroupsNorm) {\n // Agrupa padrões por base (permite OR entre variantes de um mesmo token e AND entre tokens)\n const porBase = new Map<string, string[]>();\n for (const caminho of grupo) {\n const base = baseFromPadrao(caminho);\n const patternVariants = porBase.get(base) || [];\n patternVariants.push(caminho);\n porBase.set(base, patternVariants);\n }\n const allBasesMatch = Array.from(porBase.values()).every(lista => lista.some(caminho => matchesPadrao(relPath, caminho)));\n if (allBasesMatch) return true;\n }\n // Sem correspondência em nenhum grupo -> não inclui\n return false;\n }\n // Sem grupos: lista achatada (OR)\n if (includePadroesNorm.length && micromatch.isMatch(relPath, includePadroesNorm)) return true;\n // Compat extra também para padrões simples quando não há grupos\n for (const caminho of includePadroesNorm || []) if (matchesPadrao(relPath, caminho)) return true;\n return false;\n }\n async function getStat(caminho: string): Promise<Stats | null> {\n try {\n const sanitizedPath = String(caminho).replace(/\\0/g, '');\n const st = await fs.stat(sanitizedPath);\n statCache.set(sanitizedPath, st);\n return st;\n } catch {\n return null;\n }\n }\n function isStatsWithMtime(value: unknown): value is Stats {\n return typeof value === 'object' && value !== null && 'mtimeMs' in value;\n }\n\n function extractMtimeMs(stat: unknown): number {\n if (isStatsWithMtime(stat)) {\n return typeof stat.mtimeMs === 'number' ? stat.mtimeMs : 0;\n }\n return 0;\n }\n async function readFileContent(caminho: string, relPath: string, prog: typeof onProgress): Promise<string | null> {\n try {\n if (!!process.env.VITEST) {\n return await lerEstado<string>(caminho);\n }\n return await lerArquivoTexto(caminho);\n } catch (erro) {\n prog(JSON.stringify({\n tipo: 'erro',\n acao: 'ler',\n caminho: relPath,\n mensagem: getErrMsg(erro)\n }));\n return null;\n }\n }\n async function scan(dir: string): Promise<void> {\n const sanitizedDir = String(dir).replace(/\\0/g, '');\n let entries: Dirent[];\n try {\n entries = await fs.readdir(sanitizedDir, {\n withFileTypes: true\n });\n entries.sort((arquivo, base) => arquivo.name.localeCompare(base.name));\n } catch (err) {\n onProgress(JSON.stringify({\n tipo: 'erro',\n acao: 'acessar',\n caminho: dir,\n mensagem: getErrMsg(err)\n }));\n return;\n }\n\n // Logar apenas diretórios sendo examinados\n onProgress(JSON.stringify({\n tipo: 'diretorio',\n acao: 'examinar',\n caminho: dir\n }));\n for (const entry of entries) {\n const fullCaminho = path.join(sanitizedDir, entry.name);\n const relPathRaw = path.relative(baseDir, fullCaminho);\n // Normaliza para separador POSIX para que micromatch funcione de forma consistente no Windows\n const relPath = toPosix(relPathRaw);\n\n // Regra fixa do Tutanus: não analisar testes (deixa para o runner, ex.: Vitest)\n // Arquivos auto-gerados / terceiros — pular sempre\n const isThirdParty = (caminho: string): boolean => {\n const rp = toPosix(caminho);\n if (/^THIRD-PARTY[-_]/.test(rp)) return true;\n if (/^(LICENSE|CHANGELOG|CONTRIBUTING|CODE_OF_CONDUCT)/i.test(rp)) return true;\n return false;\n };\n if (isThirdParty(relPath)) {\n continue;\n }\n const isTestLike = (caminho: string): boolean => {\n const rp = toPosix(caminho);\n if (/(^|\\/)__(tests|mocks)__(\\/|$)/.test(rp)) return true;\n if (/(^|\\/)(tests?|test)(\\/|$)/.test(rp)) return true;\n if (/\\.(test|spec)\\.[jt]sx?$/.test(rp)) return true;\n return false;\n };\n if (isTestLike(relPath)) {\n continue;\n }\n if (entry.isDirectory() && !entry.isSymbolicLink()) {\n if (!hasIncluir && micromatch.isMatch(relPath, excludePadroesNorm)) continue;\n if (!hasIncluir && micromatch.isMatch(relPath, ignorePadroesNorm)) continue;\n if (/(^|\\/)node_modules(\\/|$)/.test(relPath) && !includeNodeModulesExplicit) continue;\n await scan(fullCaminho);\n continue;\n }\n if (hasIncluir && !matchIncluir(relPath)) continue;\n if (!hasIncluir && micromatch.isMatch(relPath, excludePadroesNorm)) continue;\n if (!hasIncluir && micromatch.isMatch(relPath, ignorePadroesNorm)) continue;\n if (!filter(relPath, entry)) continue;\n try {\n let stat: unknown = statCache.get(fullCaminho);\n if (!stat) {\n stat = await getStat(fullCaminho);\n if (!stat) continue;\n }\n const mtimeMs = extractMtimeMs(stat);\n let content: string | null = null;\n if (efetivoIncluirConteudo) {\n content = await readFileContent(fullCaminho, relPath, onProgress);\n }\n adicionarArquivoAoMapa(fullCaminho, relPath, content, mtimeMs);\n } catch (err) {\n onProgress(JSON.stringify({\n tipo: 'erro',\n acao: 'ler',\n caminho: relPath,\n mensagem: getErrMsg(err)\n }));\n }\n }\n }\n\n async function processarStartDirs(\n dirs: string[],\n base: string,\n hasInc: boolean,\n efetivoInc: boolean,\n scanFn: typeof scan,\n matchFn: typeof matchIncluir,\n filterFn: typeof filter,\n prog: typeof onProgress,\n exclPad: string[],\n ignPad: string[],\n statC: Map<string, Stats>\n ): Promise<void> {\n const vistos = new Set<string>();\n for (const diretorio of dirs) {\n let norm = diretorio;\n let end = norm.length;\n while (end > 0 && (norm[end - 1] === '\\\\' || norm[end - 1] === '/')) end--;\n norm = norm.slice(0, end);\n if (vistos.has(norm)) continue;\n vistos.add(norm);\n try {\n await fs.readdir(norm);\n await scanFn(norm);\n continue;\n } catch { /* not a dir */ }\n try {\n let st = statC.get(norm);\n if (!st) { st = await fs.stat(norm); statC.set(norm, st); }\n let isDir = st?.isDirectory() ?? false;\n if (!isDir) {\n try { await fs.readdir(norm); isDir = true; } catch { /* file */ }\n }\n if (isDir) { await scanFn(norm); continue; }\n const relPath = toPosix(path.relative(base, norm));\n if (hasInc && !matchFn(relPath)) continue;\n if (!hasInc && (micromatch.isMatch(relPath, exclPad) || micromatch.isMatch(relPath, ignPad))) continue;\n const fakeDirent: Dirent = {\n name: path.basename(norm), isDirectory: () => false, isSymbolicLink: () => false\n } as Dirent;\n if (!filterFn(relPath, fakeDirent)) continue;\n let content: string | null = null;\n if (efetivoInc) {\n try {\n content = !!process.env.VITEST ? await lerEstado<string>(norm) : await lerArquivoTexto(norm);\n } catch (erro) {\n prog(JSON.stringify({ tipo: 'erro', acao: 'ler', caminho: relPath, mensagem: getErrMsg(erro) }));\n content = null;\n }\n }\n adicionarArquivoAoMapa(norm, relPath, content, (isStatsWithMtime(st) ? st.mtimeMs : Date.now()) || Date.now());\n } catch (erro) {\n prog(JSON.stringify({ tipo: 'erro', acao: 'acessar', caminho: norm, mensagem: getErrMsg(erro) }));\n }\n }\n }\n\n let startDirs = hasIncluir ? calcularIncludeRoots(config.CLI_INCLUDE_PATTERNS as string[] | undefined, cliIncludeGroups) : [];\n // Quando o include pede ocorrências em qualquer profundidade, adicionamos também a base do repo para\n // garantir que diretórios-alvo apareçam em níveis arbitrários (ex.: packages/*/node_modules).\n if (hasIncluir && pedeOcorrenciasGlobais) {\n const baseNorm = toPosix(String(baseDir)).replace(/\\/$/, '');\n if (!startDirs.includes(baseNorm)) startDirs = [baseNorm, ...startDirs];\n }\n // Se nenhum root foi derivado (ex.: includes somente de arquivos como 'a.txt'), varremos a base inteira\n // para permitir que o filtro de includes atue nos arquivos diretamente.\n if (hasIncluir && startDirs.length === 0) {\n // Sem roots deriváveis (ex.: include apenas 'a.txt'): varre só a raiz para permitir filtro\n await scan(baseDir);\n return fileMap;\n }\n if (startDirs.length === 0) {\n await scan(baseDir);\n } else {\n await processarStartDirs(startDirs, baseDir, hasIncluir, efetivoIncluirConteudo, scan, matchIncluir, filter, onProgress, excludePadroesNorm, ignorePadroesNorm, statCache);\n }\n\n // Log de conclusão da varredura\n const totalArquivos = Object.keys(fileMap).length;\n const totalDiretorios = new Set(Object.values(fileMap).map(arquivo => path.dirname(arquivo.relPath))).size;\n messages.logVarredor.completo(totalArquivos, totalDiretorios);\n return fileMap;\n}"]}
@@ -3,8 +3,8 @@ export declare const ArquetiposExtraMensagens: {
3
3
  readonly salvo: "[OK] Custom archetype saved to {caminho}";
4
4
  readonly projetoPersonalizado: "[STAR] Custom project detected: \"{nome}\"";
5
5
  readonly descricaoPersonalizado: "The Tutanus identified a project structure that does not match official archetypes,\nbut you can create a custom archetype to receive optimized suggestions!";
6
- readonly estruturaDetectada: "📁 Detected structure:";
7
- readonly arquivosRaiz: "📄 Root files:";
6
+ readonly estruturaDetectada: "[FOLDER] Detected structure:";
7
+ readonly arquivosRaiz: "[FILE] Root files:";
8
8
  readonly dicaCriar: "[TIP] To create your custom archetype, run:";
9
9
  readonly comandoCriar: " tutanus diagnosticar --criar-arquetipo";
10
10
  readonly explicacaoCriar: "This will create a 'tutanus.repo.arquetipo.json' file based on the current structure,\nwhich the Tutanus will use to offer personalized suggestions while keeping best practices.";
@@ -3,8 +3,8 @@ export const ArquetiposExtraMensagens = {
3
3
  salvo: '[OK] Custom archetype saved to {caminho}',
4
4
  projetoPersonalizado: '[STAR] Custom project detected: "{nome}"',
5
5
  descricaoPersonalizado: 'The Tutanus identified a project structure that does not match official archetypes,\nbut you can create a custom archetype to receive optimized suggestions!',
6
- estruturaDetectada: '📁 Detected structure:',
7
- arquivosRaiz: '📄 Root files:',
6
+ estruturaDetectada: '[FOLDER] Detected structure:',
7
+ arquivosRaiz: '[FILE] Root files:',
8
8
  dicaCriar: '[TIP] To create your custom archetype, run:',
9
9
  comandoCriar: ' tutanus diagnosticar --criar-arquetipo',
10
10
  explicacaoCriar: 'This will create a \'tutanus.repo.arquetipo.json\' file based on the current structure,\nwhich the Tutanus will use to offer personalized suggestions while keeping best practices.',
@@ -1 +1 @@
1
- {"version":3,"file":"archetypes-extra-messages.js","sourceRoot":"","sources":["../../../../../src/core/messages/en/analysts/archetypes-extra-messages.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,aAAa,EAAE,4DAA4D;IAC3E,KAAK,EAAE,0CAA0C;IACjD,oBAAoB,EAAE,0CAA0C;IAChE,sBAAsB,EAAE,8JAA8J;IACtL,kBAAkB,EAAE,wBAAwB;IAC5C,YAAY,EAAE,gBAAgB;IAC9B,SAAS,EAAE,6CAA6C;IACxD,YAAY,EAAE,2CAA2C;IACzD,eAAe,EAAE,qLAAqL;IACtM,SAAS,EAAE;QACT,eAAe,EAAE,0BAA0B;QAC3C,oBAAoB,EAAE,qCAAqC;QAC3D,sBAAsB,EAAE,kEAAkE;QAC1F,oBAAoB,EAAE,8BAA8B;QACpD,eAAe,EAAE,8BAA8B;QAC/C,kBAAkB,EAAE,4BAA4B;KACjD;IACD,gBAAgB,EAAE;QAChB,aAAa,EAAE,oCAAoC;QACnD,eAAe,EAAE,wCAAwC;QACzD,aAAa,EAAE,sCAAsC;KACtD;CACO,CAAC","sourcesContent":["/**\n * Extra messages for archetype analysis.\n */\nexport const ArquetiposExtraMensagens = {\n naoEncontrado: '[WARNING] Custom archetype not found in {novo} or {legado}',\n salvo: '[OK] Custom archetype saved to {caminho}',\n projetoPersonalizado: '[STAR] Custom project detected: \"{nome}\"',\n descricaoPersonalizado: 'The Tutanus identified a project structure that does not match official archetypes,\\nbut you can create a custom archetype to receive optimized suggestions!',\n estruturaDetectada: '📁 Detected structure:',\n arquivosRaiz: '📄 Root files:',\n dicaCriar: '[TIP] To create your custom archetype, run:',\n comandoCriar: ' tutanus diagnosticar --criar-arquetipo',\n explicacaoCriar: 'This will create a \\'tutanus.repo.arquetipo.json\\' file based on the current structure,\\nwhich the Tutanus will use to offer personalized suggestions while keeping best practices.',\n validacao: {\n nomeObrigatorio: 'Project name is required',\n arquetipoObrigatorio: 'Base official archetype is required',\n arquetipoNaoEncontrado: 'Official archetype \\'{arquetipo}\\' not found. Use: {disponiveis}',\n estruturaObrigatoria: 'Custom structure is required',\n diretoriosArray: 'Directories must be an array',\n arquivosChaveArray: 'Key files must be an array',\n },\n melhoresPraticas: {\n srcOrganizado: 'Keep source code organized in src/',\n testesDedicados: 'Separate tests into a dedicated folder',\n documenteApis: 'Document APIs and important features',\n },\n} as const;\n"]}
1
+ {"version":3,"file":"archetypes-extra-messages.js","sourceRoot":"","sources":["../../../../../src/core/messages/en/analysts/archetypes-extra-messages.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,aAAa,EAAE,4DAA4D;IAC3E,KAAK,EAAE,0CAA0C;IACjD,oBAAoB,EAAE,0CAA0C;IAChE,sBAAsB,EAAE,8JAA8J;IACtL,kBAAkB,EAAE,8BAA8B;IAClD,YAAY,EAAE,oBAAoB;IAClC,SAAS,EAAE,6CAA6C;IACxD,YAAY,EAAE,2CAA2C;IACzD,eAAe,EAAE,qLAAqL;IACtM,SAAS,EAAE;QACT,eAAe,EAAE,0BAA0B;QAC3C,oBAAoB,EAAE,qCAAqC;QAC3D,sBAAsB,EAAE,kEAAkE;QAC1F,oBAAoB,EAAE,8BAA8B;QACpD,eAAe,EAAE,8BAA8B;QAC/C,kBAAkB,EAAE,4BAA4B;KACjD;IACD,gBAAgB,EAAE;QAChB,aAAa,EAAE,oCAAoC;QACnD,eAAe,EAAE,wCAAwC;QACzD,aAAa,EAAE,sCAAsC;KACtD;CACO,CAAC","sourcesContent":["/**\n * Extra messages for archetype analysis.\n */\nexport const ArquetiposExtraMensagens = {\n naoEncontrado: '[WARNING] Custom archetype not found in {novo} or {legado}',\n salvo: '[OK] Custom archetype saved to {caminho}',\n projetoPersonalizado: '[STAR] Custom project detected: \"{nome}\"',\n descricaoPersonalizado: 'The Tutanus identified a project structure that does not match official archetypes,\\nbut you can create a custom archetype to receive optimized suggestions!',\n estruturaDetectada: '[FOLDER] Detected structure:',\n arquivosRaiz: '[FILE] Root files:',\n dicaCriar: '[TIP] To create your custom archetype, run:',\n comandoCriar: ' tutanus diagnosticar --criar-arquetipo',\n explicacaoCriar: 'This will create a \\'tutanus.repo.arquetipo.json\\' file based on the current structure,\\nwhich the Tutanus will use to offer personalized suggestions while keeping best practices.',\n validacao: {\n nomeObrigatorio: 'Project name is required',\n arquetipoObrigatorio: 'Base official archetype is required',\n arquetipoNaoEncontrado: 'Official archetype \\'{arquetipo}\\' not found. Use: {disponiveis}',\n estruturaObrigatoria: 'Custom structure is required',\n diretoriosArray: 'Directories must be an array',\n arquivosChaveArray: 'Key files must be an array',\n },\n melhoresPraticas: {\n srcOrganizado: 'Keep source code organized in src/',\n testesDedicados: 'Separate tests into a dedicated folder',\n documenteApis: 'Document APIs and important features',\n },\n} as const;\n"]}
@@ -1,10 +1,10 @@
1
1
  type ErroUnknown = unknown;
2
2
  export declare const DetectorCleanArchMensagens: {
3
3
  readonly padraoCleanArch: (padrao: string | undefined, confianca: number) => string;
4
- readonly camadaDomain: (presente: boolean) => " Domain layer detected" | " Domain layer missing";
5
- readonly camadaApplication: (presente: boolean) => " Application layer detected" | " Application layer missing";
6
- readonly camadaInfrastructure: (presente: boolean) => " Infrastructure layer detected" | " Infrastructure layer missing";
7
- readonly camadaPresentation: (presente: boolean) => " Presentation layer detected" | " Presentation layer missing";
4
+ readonly camadaDomain: (presente: boolean) => "[V] Domain layer detected" | "[X] Domain layer missing";
5
+ readonly camadaApplication: (presente: boolean) => "[V] Application layer detected" | "[X] Application layer missing";
6
+ readonly camadaInfrastructure: (presente: boolean) => "[V] Infrastructure layer detected" | "[X] Infrastructure layer missing";
7
+ readonly camadaPresentation: (presente: boolean) => "[V] Presentation layer detected" | "[X] Presentation layer missing";
8
8
  readonly violacaoDependencia: (camada: string, dependencia: string) => string;
9
9
  readonly recomendacaoUseCases: "Add use-cases in the application layer to orchestrate business rules";
10
10
  readonly recomendacaoEntities: "Create rich domain entities with encapsulated business rules";
@@ -3,10 +3,10 @@ function erroToMessage(erro) {
3
3
  }
4
4
  export const DetectorCleanArchMensagens = {
5
5
  padraoCleanArch: (padrao, confianca) => `Clean Architecture: ${padrao} (${confianca}% confidence)`,
6
- camadaDomain: (presente) => presente ? ' Domain layer detected' : ' Domain layer missing',
7
- camadaApplication: (presente) => presente ? ' Application layer detected' : ' Application layer missing',
8
- camadaInfrastructure: (presente) => presente ? ' Infrastructure layer detected' : ' Infrastructure layer missing',
9
- camadaPresentation: (presente) => presente ? ' Presentation layer detected' : ' Presentation layer missing',
6
+ camadaDomain: (presente) => presente ? '[V] Domain layer detected' : '[X] Domain layer missing',
7
+ camadaApplication: (presente) => presente ? '[V] Application layer detected' : '[X] Application layer missing',
8
+ camadaInfrastructure: (presente) => presente ? '[V] Infrastructure layer detected' : '[X] Infrastructure layer missing',
9
+ camadaPresentation: (presente) => presente ? '[V] Presentation layer detected' : '[X] Presentation layer missing',
10
10
  violacaoDependencia: (camada, dependencia) => `Violation: ${camada} depends on ${dependencia}. Clean Architecture requires dependencies pointing inward.`,
11
11
  recomendacaoUseCases: 'Add use-cases in the application layer to orchestrate business rules',
12
12
  recomendacaoEntities: 'Create rich domain entities with encapsulated business rules',
@@ -1 +1 @@
1
- {"version":3,"file":"detector-clean-arch-messages.js","sourceRoot":"","sources":["../../../../../src/core/messages/en/analysts/detector-clean-arch-messages.ts"],"names":[],"mappings":"AAGA,SAAS,aAAa,CAAC,IAAiB;IACtC,OAAO,IAAI,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;AAChE,CAAC;AACD,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,eAAe,EAAE,CAAC,MAA0B,EAAE,SAAiB,EAAE,EAAE,CAAC,uBAAuB,MAAM,KAAK,SAAS,eAAe;IAC9H,YAAY,EAAE,CAAC,QAAiB,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,wBAAwB;IACpG,iBAAiB,EAAE,CAAC,QAAiB,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,6BAA6B;IACnH,oBAAoB,EAAE,CAAC,QAAiB,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,gCAAgC;IAC5H,kBAAkB,EAAE,CAAC,QAAiB,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,8BAA8B;IACtH,mBAAmB,EAAE,CAAC,MAAc,EAAE,WAAmB,EAAE,EAAE,CAAC,cAAc,MAAM,eAAe,WAAW,6DAA6D;IACzK,oBAAoB,EAAE,sEAAsE;IAC5F,oBAAoB,EAAE,8DAA8D;IACpF,sBAAsB,EAAE,wEAAwE;IAChG,qBAAqB,EAAE,CAAC,IAAiB,EAAE,EAAE,CAAC,uCAAuC,aAAa,CAAC,IAAI,CAAC,EAAE;CAClG,CAAC","sourcesContent":["// SPDX-License-Identifier: MIT\n\ntype ErroUnknown = unknown;\nfunction erroToMessage(erro: ErroUnknown): string {\n return erro instanceof Error ? erro.message : 'Unknown error';\n}\nexport const DetectorCleanArchMensagens = {\n padraoCleanArch: (padrao: string | undefined, confianca: number) => `Clean Architecture: ${padrao} (${confianca}% confidence)`,\n camadaDomain: (presente: boolean) => presente ? ' Domain layer detected' : ' Domain layer missing',\n camadaApplication: (presente: boolean) => presente ? ' Application layer detected' : ' Application layer missing',\n camadaInfrastructure: (presente: boolean) => presente ? ' Infrastructure layer detected' : ' Infrastructure layer missing',\n camadaPresentation: (presente: boolean) => presente ? ' Presentation layer detected' : ' Presentation layer missing',\n violacaoDependencia: (camada: string, dependencia: string) => `Violation: ${camada} depends on ${dependencia}. Clean Architecture requires dependencies pointing inward.`,\n recomendacaoUseCases: 'Add use-cases in the application layer to orchestrate business rules',\n recomendacaoEntities: 'Create rich domain entities with encapsulated business rules',\n recomendacaoRepository: 'Define repository interfaces in domain and implement in infrastructure',\n erroAnalisarCleanArch: (erro: ErroUnknown) => `Error analyzing Clean Architecture: ${erroToMessage(erro)}`\n} as const;\n"]}
1
+ {"version":3,"file":"detector-clean-arch-messages.js","sourceRoot":"","sources":["../../../../../src/core/messages/en/analysts/detector-clean-arch-messages.ts"],"names":[],"mappings":"AAGA,SAAS,aAAa,CAAC,IAAiB;IACtC,OAAO,IAAI,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;AAChE,CAAC;AACD,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,eAAe,EAAE,CAAC,MAA0B,EAAE,SAAiB,EAAE,EAAE,CAAC,uBAAuB,MAAM,KAAK,SAAS,eAAe;IAC9H,YAAY,EAAE,CAAC,QAAiB,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,0BAA0B;IACxG,iBAAiB,EAAE,CAAC,QAAiB,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,+BAA+B;IACvH,oBAAoB,EAAE,CAAC,QAAiB,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,kCAAkC;IAChI,kBAAkB,EAAE,CAAC,QAAiB,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,gCAAgC;IAC1H,mBAAmB,EAAE,CAAC,MAAc,EAAE,WAAmB,EAAE,EAAE,CAAC,cAAc,MAAM,eAAe,WAAW,6DAA6D;IACzK,oBAAoB,EAAE,sEAAsE;IAC5F,oBAAoB,EAAE,8DAA8D;IACpF,sBAAsB,EAAE,wEAAwE;IAChG,qBAAqB,EAAE,CAAC,IAAiB,EAAE,EAAE,CAAC,uCAAuC,aAAa,CAAC,IAAI,CAAC,EAAE;CAClG,CAAC","sourcesContent":["// SPDX-License-Identifier: MIT\n\ntype ErroUnknown = unknown;\nfunction erroToMessage(erro: ErroUnknown): string {\n return erro instanceof Error ? erro.message : 'Unknown error';\n}\nexport const DetectorCleanArchMensagens = {\n padraoCleanArch: (padrao: string | undefined, confianca: number) => `Clean Architecture: ${padrao} (${confianca}% confidence)`,\n camadaDomain: (presente: boolean) => presente ? '[V] Domain layer detected' : '[X] Domain layer missing',\n camadaApplication: (presente: boolean) => presente ? '[V] Application layer detected' : '[X] Application layer missing',\n camadaInfrastructure: (presente: boolean) => presente ? '[V] Infrastructure layer detected' : '[X] Infrastructure layer missing',\n camadaPresentation: (presente: boolean) => presente ? '[V] Presentation layer detected' : '[X] Presentation layer missing',\n violacaoDependencia: (camada: string, dependencia: string) => `Violation: ${camada} depends on ${dependencia}. Clean Architecture requires dependencies pointing inward.`,\n recomendacaoUseCases: 'Add use-cases in the application layer to orchestrate business rules',\n recomendacaoEntities: 'Create rich domain entities with encapsulated business rules',\n recomendacaoRepository: 'Define repository interfaces in domain and implement in infrastructure',\n erroAnalisarCleanArch: (erro: ErroUnknown) => `Error analyzing Clean Architecture: ${erroToMessage(erro)}`\n} as const;\n"]}
@@ -26,8 +26,8 @@ export declare const DetectorJsTsMensagens: {
26
26
  readonly assertionCastPropriedadeSugestao: "Avoid property cast - define the correct type on the parent object";
27
27
  readonly assertionCastParametroSugestao: "Type assertion in parameter - define the correct type in the called function signature";
28
28
  readonly assertionCastGenericoSugestao: "Replace with a specific type or use unknown with runtime validation";
29
- readonly assertionCritico: " | 🚨 CRITICAL: Type safety completely disabled";
30
- readonly angleBracketCast: "Type casting '<any>' (legacy syntax) disables type safety | [IDEA] Use modern 'as' syntax and a specific type | 🚨 CRITICAL: Migrate to modern syntax and a correct type";
29
+ readonly assertionCritico: " | [ALERT] CRITICAL: Type safety completely disabled";
30
+ readonly angleBracketCast: "Type casting '<any>' (legacy syntax) disables type safety | [IDEA] Use modern 'as' syntax and a specific type | [ALERT] CRITICAL: Migrate to modern syntax and a correct type";
31
31
  readonly unknownLegitimo: (varNome?: string, motivo?: string) => string;
32
32
  readonly unknownMelhoravel: (varNome?: string, confianca?: number) => string;
33
33
  readonly unknownCorrigir: (varNome?: string, confianca?: number) => string;
@@ -26,8 +26,8 @@ export const DetectorJsTsMensagens = {
26
26
  assertionCastPropriedadeSugestao: 'Avoid property cast - define the correct type on the parent object',
27
27
  assertionCastParametroSugestao: 'Type assertion in parameter - define the correct type in the called function signature',
28
28
  assertionCastGenericoSugestao: 'Replace with a specific type or use unknown with runtime validation',
29
- assertionCritico: ' | 🚨 CRITICAL: Type safety completely disabled',
30
- angleBracketCast: "Type casting '<any>' (legacy syntax) disables type safety | [IDEA] Use modern 'as' syntax and a specific type | 🚨 CRITICAL: Migrate to modern syntax and a correct type",
29
+ assertionCritico: ' | [ALERT] CRITICAL: Type safety completely disabled',
30
+ angleBracketCast: "Type casting '<any>' (legacy syntax) disables type safety | [IDEA] Use modern 'as' syntax and a specific type | [ALERT] CRITICAL: Migrate to modern syntax and a correct type",
31
31
  unknownLegitimo: (varNome, motivo) => varNome ? `Type 'unknown' in '${varNome}': ${motivo}` : `Type 'unknown': ${motivo}`,
32
32
  unknownMelhoravel: (varNome, confianca) => varNome ? `Type 'unknown' in '${varNome}' can be improved (${confianca}% confidence)` : `Type 'unknown' can be improved (${confianca}% confidence)`,
33
33
  unknownCorrigir: (varNome, confianca) => varNome ? `Type 'unknown' in '${varNome}' should be fixed (${confianca}% confidence)` : `Type 'unknown' should be fixed (${confianca}% confidence)`,
@@ -1 +1 @@
1
- {"version":3,"file":"detector-js-ts-messages.js","sourceRoot":"","sources":["../../../../../src/core/messages/en/analysts/detector-js-ts-messages.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,mBAAmB,EAAE,CAAC,OAAe,EAAE,KAAa,EAAE,EAAE,CAAC,gCAAgC,OAAO,0BAA0B;IAC1H,2BAA2B,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,iBAAiB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE;IACrG,aAAa,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,OAAO,qCAAqC,CAAC,CAAC,CAAC,wDAAwD;IAC/K,qBAAqB,EAAE,8CAA8C;IACrE,WAAW,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,OAAO,sCAAsC,CAAC,CAAC,CAAC,6CAA6C;IACvJ,mBAAmB,EAAE,0DAA0D;IAC/E,eAAe,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,OAAO,wCAAwC,CAAC,CAAC,CAAC,oDAAoD;IACzK,uBAAuB,EAAE,0EAA0E;IACnG,iBAAiB,EAAE,4CAA4C;IAC/D,yBAAyB,EAAE,2DAA2D;IACtF,SAAS,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,OAAO,oBAAoB,CAAC,CAAC,CAAC,oCAAoC;IACtI,iBAAiB,EAAE,qDAAqD;IACxE,QAAQ,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,OAAO,kBAAkB,CAAC,CAAC,CAAC,+BAA+B;IAC3H,gBAAgB,EAAE,2DAA2D;IAC7E,eAAe,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,OAAO,0BAA0B,CAAC,CAAC,CAAC,mCAAmC;IAC1I,uBAAuB,EAAE,mFAAmF;IAC5G,sBAAsB,EAAE,iDAAiD;IACzE,qBAAqB,EAAE,0DAA0D;IACjF,aAAa,EAAE,oCAAoC;IACnD,cAAc,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,SAAS,IAAI,8CAA8C;IAC7F,kBAAkB,EAAE,qDAAqD;IACzE,iBAAiB,EAAE,qEAAqE;IACxF,gBAAgB,EAAE,2DAA2D;IAC7E,2BAA2B,EAAE,0FAA0F;IACvH,gCAAgC,EAAE,oEAAoE;IACtG,8BAA8B,EAAE,wFAAwF;IACxH,6BAA6B,EAAE,qEAAqE;IACpG,gBAAgB,EAAE,iDAAiD;IACnE,gBAAgB,EAAE,0KAA0K;IAC5L,eAAe,EAAE,CAAC,OAAgB,EAAE,MAAe,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,OAAO,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC,mBAAmB,MAAM,EAAE;IAC3I,iBAAiB,EAAE,CAAC,OAAgB,EAAE,SAAkB,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,OAAO,sBAAsB,SAAS,eAAe,CAAC,CAAC,CAAC,mCAAmC,SAAS,eAAe;IAChN,eAAe,EAAE,CAAC,OAAgB,EAAE,SAAkB,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,OAAO,sBAAsB,SAAS,eAAe,CAAC,CAAC,CAAC,mCAAmC,SAAS,eAAe;IAC9M,oBAAoB,EAAE,wCAAwC;IAC9D,yBAAyB,EAAE,oCAAoC;IAC/D,eAAe,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,kCAAkC,QAAQ,0EAA0E;IAC3J,cAAc,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,yBAAyB,QAAQ,kEAAkE;IACzI,UAAU,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,qEAAqE;IACxG,qBAAqB,EAAE,sGAAsG;IAC7H,2BAA2B,EAAE,sEAAsE;IACnG,uBAAuB,EAAE,sIAAsI;CACvJ,CAAC","sourcesContent":["// SPDX-License-Identifier: MIT\n\nexport const DetectorJsTsMensagens = {\n tipoAnyComUtilidade: (varNome: string, _tipo: string) => `Use of 'any' type helper in '${varNome}' masks type safety loss`,\n tipoAnyComUtilidadeSugestao: (tipo: string) => `Replace with: ${tipo.replace('any', 'SpecificType')}`,\n anyCatchBlock: (varNome?: string) => varNome ? `'any' in catch block '${varNome}' - TypeScript recommends 'unknown'` : \"'any' in catch block - TypeScript recommends 'unknown'\",\n anyCatchBlockSugestao: \"Replace with: catch (error: unknown) { ... }\",\n callbackAny: (varNome?: string) => varNome ? `Callback '${varNome}' uses 'any' parameter - weak typing` : \"Callback uses 'any' parameter - weak typing\",\n callbackAnySugestao: 'Define callback interface: (param: SpecificType) => void',\n eventHandlerAny: (varNome?: string) => varNome ? `Event handler '${varNome}' uses 'any' - can use DOM event types` : \"Event handler uses 'any' - can use DOM event types\",\n eventHandlerAnySugestao: 'Use DOM types: MouseEvent, KeyboardEvent, etc or React.SyntheticEvent<T>',\n indexSignatureAny: 'Index signature with any is too permissive',\n indexSignatureAnySugestao: 'Use [key: string]: unknown (safer) or define a union type',\n recordAny: (varNome?: string) => varNome ? `Record with 'any' in '${varNome}' - no type safety` : \"Record with 'any' - no type safety\",\n recordAnySugestao: 'Use Record<string, unknown> or a specific interface',\n arrayAny: (varNome?: string) => varNome ? `Array of 'any' in '${varNome}' - loses typing` : \"Array of 'any' - loses typing\",\n arrayAnySugestao: 'Specify array type: string[], number[], CustomType[], etc',\n tipoAnyGenerico: (varNome?: string) => varNome ? `Type 'any' in '${varNome}' disables type checking` : \"Type 'any' disables type checking\",\n tipoAnyGenericoSugestao: 'Analyze variable usage and define a specific type or use unknown with type guards',\n contextoAdicionalTipos: ' | [WARNING] Type file impacts entire codebase',\n contextoAdicionalCore: ' | [WARNING] Core/shared module used by many components',\n revisaoManual: ' | [REVIEW] Manual review required',\n tipoPermissivo: (tipo: string) => `Type '${tipo}' is too permissive and weak for type safety`,\n tipoObjectSugestao: 'Use Record<string, unknown> or a specific interface',\n tipoVazioSugestao: 'Use Record<string, never> for empty objects or a specific interface',\n typeAssertionAny: \"Type assertion 'as any' completely disables type checking\",\n assertionCastFuncaoSugestao: 'Avoid return type casting - type the function correctly or use unknown with a type guard',\n assertionCastPropriedadeSugestao: 'Avoid property cast - define the correct type on the parent object',\n assertionCastParametroSugestao: 'Type assertion in parameter - define the correct type in the called function signature',\n assertionCastGenericoSugestao: 'Replace with a specific type or use unknown with runtime validation',\n assertionCritico: ' | 🚨 CRITICAL: Type safety completely disabled',\n angleBracketCast: \"Type casting '<any>' (legacy syntax) disables type safety | [IDEA] Use modern 'as' syntax and a specific type | 🚨 CRITICAL: Migrate to modern syntax and a correct type\",\n unknownLegitimo: (varNome?: string, motivo?: string) => varNome ? `Type 'unknown' in '${varNome}': ${motivo}` : `Type 'unknown': ${motivo}`,\n unknownMelhoravel: (varNome?: string, confianca?: number) => varNome ? `Type 'unknown' in '${varNome}' can be improved (${confianca}% confidence)` : `Type 'unknown' can be improved (${confianca}% confidence)`,\n unknownCorrigir: (varNome?: string, confianca?: number) => varNome ? `Type 'unknown' in '${varNome}' should be fixed (${confianca}% confidence)` : `Type 'unknown' should be fixed (${confianca}% confidence)`,\n unknownRevisaoManual: ' | [WARNING] Manual review recommended',\n unknownRevisaoObrigatoria: ' | [REVIEW] Manual review required',\n floatingPromise: (funcName: string) => `Potentially asynchronous call '${funcName}' not awaited (floating promise). Add 'await' or handle with '.catch()'.`,\n asyncInForEach: (propName: string) => `Using 'async' inside '${propName}' does not wait for execution. Prefer iterating with 'for...of'.`,\n asyncInMap: (_propName: string) => `Using 'async' inside 'map'. Wrap and await with 'Promise.all(...)'.`,\n setIntervalUnassigned: 'setInterval call without storing the reference. This can lead to a memory leak and extra processing.',\n windowSetIntervalUnassigned: 'window.setInterval call without storing the reference (memory leak).',\n globalListenerNoCleanup: \"Global addEventListener detected in React component, but removeEventListener was not found. This will cause memory leaks on unmount.\",\n} as const;\n"]}
1
+ {"version":3,"file":"detector-js-ts-messages.js","sourceRoot":"","sources":["../../../../../src/core/messages/en/analysts/detector-js-ts-messages.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: MIT\n\nexport const DetectorJsTsMensagens = {\n tipoAnyComUtilidade: (varNome: string, _tipo: string) => `Use of 'any' type helper in '${varNome}' masks type safety loss`,\n tipoAnyComUtilidadeSugestao: (tipo: string) => `Replace with: ${tipo.replace('any', 'SpecificType')}`,\n anyCatchBlock: (varNome?: string) => varNome ? `'any' in catch block '${varNome}' - TypeScript recommends 'unknown'` : \"'any' in catch block - TypeScript recommends 'unknown'\",\n anyCatchBlockSugestao: \"Replace with: catch (error: unknown) { ... }\",\n callbackAny: (varNome?: string) => varNome ? `Callback '${varNome}' uses 'any' parameter - weak typing` : \"Callback uses 'any' parameter - weak typing\",\n callbackAnySugestao: 'Define callback interface: (param: SpecificType) => void',\n eventHandlerAny: (varNome?: string) => varNome ? `Event handler '${varNome}' uses 'any' - can use DOM event types` : \"Event handler uses 'any' - can use DOM event types\",\n eventHandlerAnySugestao: 'Use DOM types: MouseEvent, KeyboardEvent, etc or React.SyntheticEvent<T>',\n indexSignatureAny: 'Index signature with any is too permissive',\n indexSignatureAnySugestao: 'Use [key: string]: unknown (safer) or define a union type',\n recordAny: (varNome?: string) => varNome ? `Record with 'any' in '${varNome}' - no type safety` : \"Record with 'any' - no type safety\",\n recordAnySugestao: 'Use Record<string, unknown> or a specific interface',\n arrayAny: (varNome?: string) => varNome ? `Array of 'any' in '${varNome}' - loses typing` : \"Array of 'any' - loses typing\",\n arrayAnySugestao: 'Specify array type: string[], number[], CustomType[], etc',\n tipoAnyGenerico: (varNome?: string) => varNome ? `Type 'any' in '${varNome}' disables type checking` : \"Type 'any' disables type checking\",\n tipoAnyGenericoSugestao: 'Analyze variable usage and define a specific type or use unknown with type guards',\n contextoAdicionalTipos: ' | [WARNING] Type file impacts entire codebase',\n contextoAdicionalCore: ' | [WARNING] Core/shared module used by many components',\n revisaoManual: ' | [REVIEW] Manual review required',\n tipoPermissivo: (tipo: string) => `Type '${tipo}' is too permissive and weak for type safety`,\n tipoObjectSugestao: 'Use Record<string, unknown> or a specific interface',\n tipoVazioSugestao: 'Use Record<string, never> for empty objects or a specific interface',\n typeAssertionAny: \"Type assertion 'as any' completely disables type checking\",\n assertionCastFuncaoSugestao: 'Avoid return type casting - type the function correctly or use unknown with a type guard',\n assertionCastPropriedadeSugestao: 'Avoid property cast - define the correct type on the parent object',\n assertionCastParametroSugestao: 'Type assertion in parameter - define the correct type in the called function signature',\n assertionCastGenericoSugestao: 'Replace with a specific type or use unknown with runtime validation',\n assertionCritico: ' | [ALERT] CRITICAL: Type safety completely disabled',\n angleBracketCast: \"Type casting '<any>' (legacy syntax) disables type safety | [IDEA] Use modern 'as' syntax and a specific type | [ALERT] CRITICAL: Migrate to modern syntax and a correct type\",\n unknownLegitimo: (varNome?: string, motivo?: string) => varNome ? `Type 'unknown' in '${varNome}': ${motivo}` : `Type 'unknown': ${motivo}`,\n unknownMelhoravel: (varNome?: string, confianca?: number) => varNome ? `Type 'unknown' in '${varNome}' can be improved (${confianca}% confidence)` : `Type 'unknown' can be improved (${confianca}% confidence)`,\n unknownCorrigir: (varNome?: string, confianca?: number) => varNome ? `Type 'unknown' in '${varNome}' should be fixed (${confianca}% confidence)` : `Type 'unknown' should be fixed (${confianca}% confidence)`,\n unknownRevisaoManual: ' | [WARNING] Manual review recommended',\n unknownRevisaoObrigatoria: ' | [REVIEW] Manual review required',\n floatingPromise: (funcName: string) => `Potentially asynchronous call '${funcName}' not awaited (floating promise). Add 'await' or handle with '.catch()'.`,\n asyncInForEach: (propName: string) => `Using 'async' inside '${propName}' does not wait for execution. Prefer iterating with 'for...of'.`,\n asyncInMap: (_propName: string) => `Using 'async' inside 'map'. Wrap and await with 'Promise.all(...)'.`,\n setIntervalUnassigned: 'setInterval call without storing the reference. This can lead to a memory leak and extra processing.',\n windowSetIntervalUnassigned: 'window.setInterval call without storing the reference (memory leak).',\n globalListenerNoCleanup: \"Global addEventListener detected in React component, but removeEventListener was not found. This will cause memory leaks on unmount.\",\n} as const;\n"]}
@@ -1,10 +1,10 @@
1
1
  export declare const MapaReversaoExtraMensagens: {
2
- readonly mapaSalvo: "💾 Reversal map saved: {total} moves";
2
+ readonly mapaSalvo: "[SAVE] Reversal map saved: {total} moves";
3
3
  readonly moveRegistrado: "[DOCUMENTO] Move registered: {origem} → {destino} ({motivo})";
4
- readonly arquivoRevertidoConteudo: "↩️ File reverted with original content: {destino} → {origem}";
5
- readonly arquivoRevertido: "↩️ File reverted: {destino} → {origem}";
6
- readonly nenhumMoveRegistrado: "📋 No moves registered in the reversal map.";
7
- readonly tituloMapa: "📋 Reversal Map ({total} moves):\n\n";
8
- readonly mapaLimpo: "🧹 Reversal map cleared";
4
+ readonly arquivoRevertidoConteudo: "[BACK] File reverted with original content: {destino} → {origem}";
5
+ readonly arquivoRevertido: "[BACK] File reverted: {destino} → {origem}";
6
+ readonly nenhumMoveRegistrado: "[LIST] No moves registered in the reversal map.";
7
+ readonly tituloMapa: "[LIST] Reversal Map ({total} moves):\n\n";
8
+ readonly mapaLimpo: "[BROOM] Reversal map cleared";
9
9
  };
10
10
  //# sourceMappingURL=map-reversion-extra-messages.d.ts.map
@@ -1,10 +1,10 @@
1
1
  export const MapaReversaoExtraMensagens = {
2
- mapaSalvo: '💾 Reversal map saved: {total} moves',
2
+ mapaSalvo: '[SAVE] Reversal map saved: {total} moves',
3
3
  moveRegistrado: '[DOCUMENTO] Move registered: {origem} → {destino} ({motivo})',
4
- arquivoRevertidoConteudo: '↩️ File reverted with original content: {destino} → {origem}',
5
- arquivoRevertido: '↩️ File reverted: {destino} → {origem}',
6
- nenhumMoveRegistrado: '📋 No moves registered in the reversal map.',
7
- tituloMapa: '📋 Reversal Map ({total} moves):\n\n',
8
- mapaLimpo: '🧹 Reversal map cleared',
4
+ arquivoRevertidoConteudo: '[BACK] File reverted with original content: {destino} → {origem}',
5
+ arquivoRevertido: '[BACK] File reverted: {destino} → {origem}',
6
+ nenhumMoveRegistrado: '[LIST] No moves registered in the reversal map.',
7
+ tituloMapa: '[LIST] Reversal Map ({total} moves):\n\n',
8
+ mapaLimpo: '[BROOM] Reversal map cleared',
9
9
  };
10
10
  //# sourceMappingURL=map-reversion-extra-messages.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"map-reversion-extra-messages.js","sourceRoot":"","sources":["../../../../../src/core/messages/en/analysts/map-reversion-extra-messages.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,SAAS,EAAE,sCAAsC;IACjD,cAAc,EAAE,8DAA8D;IAC9E,wBAAwB,EAAE,8DAA8D;IACxF,gBAAgB,EAAE,wCAAwC;IAC1D,oBAAoB,EAAE,6CAA6C;IACnE,UAAU,EAAE,sCAAsC;IAClD,SAAS,EAAE,yBAAyB;CAC5B,CAAC","sourcesContent":["/**\n * Mensagens em inglês para o analista de mapa de reversão.\n * Contém strings de feedback sobre operações de salvamento, registro de movimentos\n * e limpeza do mapa de reversão.\n */\nexport const MapaReversaoExtraMensagens = {\n mapaSalvo: '💾 Reversal map saved: {total} moves',\n moveRegistrado: '[DOCUMENTO] Move registered: {origem} → {destino} ({motivo})',\n arquivoRevertidoConteudo: '↩️ File reverted with original content: {destino} → {origem}',\n arquivoRevertido: '↩️ File reverted: {destino} → {origem}',\n nenhumMoveRegistrado: '📋 No moves registered in the reversal map.',\n tituloMapa: '📋 Reversal Map ({total} moves):\\n\\n',\n mapaLimpo: '🧹 Reversal map cleared',\n} as const;\n"]}
1
+ {"version":3,"file":"map-reversion-extra-messages.js","sourceRoot":"","sources":["../../../../../src/core/messages/en/analysts/map-reversion-extra-messages.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,SAAS,EAAE,0CAA0C;IACrD,cAAc,EAAE,8DAA8D;IAC9E,wBAAwB,EAAE,kEAAkE;IAC5F,gBAAgB,EAAE,4CAA4C;IAC9D,oBAAoB,EAAE,iDAAiD;IACvE,UAAU,EAAE,0CAA0C;IACtD,SAAS,EAAE,8BAA8B;CACjC,CAAC","sourcesContent":["/**\n * Mensagens em inglês para o analista de mapa de reversão.\n * Contém strings de feedback sobre operações de salvamento, registro de movimentos\n * e limpeza do mapa de reversão.\n */\nexport const MapaReversaoExtraMensagens = {\n mapaSalvo: '[SAVE] Reversal map saved: {total} moves',\n moveRegistrado: '[DOCUMENTO] Move registered: {origem} → {destino} ({motivo})',\n arquivoRevertidoConteudo: '[BACK] File reverted with original content: {destino} → {origem}',\n arquivoRevertido: '[BACK] File reverted: {destino} → {origem}',\n nenhumMoveRegistrado: '[LIST] No moves registered in the reversal map.',\n tituloMapa: '[LIST] Reversal Map ({total} moves):\\n\\n',\n mapaLimpo: '[BROOM] Reversal map cleared',\n} as const;\n"]}
@@ -7,8 +7,8 @@ export declare const RelatorioGithubActionsMensagens: {
7
7
  readonly scoreGeral: (score: number) => string;
8
8
  readonly totalWorkflows: (total: number) => string;
9
9
  readonly totalOcorrencias: (total: number) => string;
10
- readonly severidade: "## 🔴 Severity";
11
- readonly workflowsAnalisados: "## 📋 Workflows Analyzed";
10
+ readonly severidade: "## [RED] Severity";
11
+ readonly workflowsAnalisados: "## [LIST] Workflows Analyzed";
12
12
  readonly ocorrenciasDetalhadas: "## [SEARCH] Detailed Occurrences";
13
13
  readonly scoreIcon: (score: number) => "[OK]" | "[WARNING]" | "[ERROR]";
14
14
  readonly mostrandoLimit: (mostrando: number, total: number) => string;
@@ -7,8 +7,8 @@ export const RelatorioGithubActionsMensagens = {
7
7
  scoreGeral: (score) => `| Overall Score | ${score}/100 |`,
8
8
  totalWorkflows: (total) => `| Total Workflows | ${total} |`,
9
9
  totalOcorrencias: (total) => `| Total Occurrences | ${total} |`,
10
- severidade: '## 🔴 Severity',
11
- workflowsAnalisados: '## 📋 Workflows Analyzed',
10
+ severidade: '## [RED] Severity',
11
+ workflowsAnalisados: '## [LIST] Workflows Analyzed',
12
12
  ocorrenciasDetalhadas: '## [SEARCH] Detailed Occurrences',
13
13
  scoreIcon: (score) => score >= 80 ? '[OK]' : score >= 50 ? '[WARNING]' : '[ERROR]',
14
14
  mostrandoLimit: (mostrando, total) => `> Showing ${mostrando} of ${total} occurrences.`,
@@ -1 +1 @@
1
- {"version":3,"file":"report-github-actions-messages.js","sourceRoot":"","sources":["../../../../../src/core/messages/en/analysts/report-github-actions-messages.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC7C,YAAY,EAAE,kCAAkC;IAChD,WAAW,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,mBAAmB,IAAI,EAAE;IACxD,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE;IAC3C,YAAY,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,sBAAsB,EAAE,IAAI;IAC1D,WAAW,EAAE,4BAA4B;IACzC,UAAU,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,qBAAqB,KAAK,QAAQ;IACjE,cAAc,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,uBAAuB,KAAK,IAAI;IACnE,gBAAgB,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,yBAAyB,KAAK,IAAI;IACvE,UAAU,EAAE,gBAAgB;IAC5B,mBAAmB,EAAE,0BAA0B;IAC/C,qBAAqB,EAAE,kCAAkC;IACzD,SAAS,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;IAC1F,cAAc,EAAE,CAAC,SAAiB,EAAE,KAAa,EAAE,EAAE,CAAC,aAAa,SAAS,OAAO,KAAK,eAAe;IACvG,SAAS,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,yBAAyB,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG;IAChG,mBAAmB,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,uBAAuB,OAAO,EAAE;IAC1E,UAAU,EAAE,4CAA4C;IACxD,MAAM,EAAE,OAAO;IACf,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,4CAA4C;CAClD,CAAC","sourcesContent":["// SPDX-License-Identifier: MIT\n\nexport const RelatorioGithubActionsMensagens = {\n tituloPadrao: 'Analysis Report - GitHub Actions',\n repositorio: (nome: string) => `**Repository:** ${nome}`,\n data: (data: string) => `**Date:** ${data}`,\n tempoAnalise: (ms: number) => `**Analysis Time:** ${ms}ms`,\n resumoGeral: '## [GRAPH] Overall Summary',\n scoreGeral: (score: number) => `| Overall Score | ${score}/100 |`,\n totalWorkflows: (total: number) => `| Total Workflows | ${total} |`,\n totalOcorrencias: (total: number) => `| Total Occurrences | ${total} |`,\n severidade: '## 🔴 Severity',\n workflowsAnalisados: '## 📋 Workflows Analyzed',\n ocorrenciasDetalhadas: '## [SEARCH] Detailed Occurrences',\n scoreIcon: (score: number) => score >= 80 ? '[OK]' : score >= 50 ? '[WARNING]' : '[ERROR]',\n mostrandoLimit: (mostrando: number, total: number) => `> Showing ${mostrando} of ${total} occurrences.`,\n geradoPor: (versao: string) => `*Generated by Tutanus ${versao} on ${new Date().toISOString()}*`,\n formatoNaoSuportado: (formato: string) => `Unsupported format: ${formato}`,\n schemaJson: 'tutanus://schemas/github-actions-report/v1',\n versao: '0.6.0',\n desconhecido: 'unknown',\n csvCabecalho: 'File,Line,Severity,Type,Message,Suggestion',\n} as const;\n"]}
1
+ {"version":3,"file":"report-github-actions-messages.js","sourceRoot":"","sources":["../../../../../src/core/messages/en/analysts/report-github-actions-messages.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC7C,YAAY,EAAE,kCAAkC;IAChD,WAAW,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,mBAAmB,IAAI,EAAE;IACxD,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE;IAC3C,YAAY,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,sBAAsB,EAAE,IAAI;IAC1D,WAAW,EAAE,4BAA4B;IACzC,UAAU,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,qBAAqB,KAAK,QAAQ;IACjE,cAAc,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,uBAAuB,KAAK,IAAI;IACnE,gBAAgB,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,yBAAyB,KAAK,IAAI;IACvE,UAAU,EAAE,mBAAmB;IAC/B,mBAAmB,EAAE,8BAA8B;IACnD,qBAAqB,EAAE,kCAAkC;IACzD,SAAS,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;IAC1F,cAAc,EAAE,CAAC,SAAiB,EAAE,KAAa,EAAE,EAAE,CAAC,aAAa,SAAS,OAAO,KAAK,eAAe;IACvG,SAAS,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,yBAAyB,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG;IAChG,mBAAmB,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,uBAAuB,OAAO,EAAE;IAC1E,UAAU,EAAE,4CAA4C;IACxD,MAAM,EAAE,OAAO;IACf,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,4CAA4C;CAClD,CAAC","sourcesContent":["// SPDX-License-Identifier: MIT\n\nexport const RelatorioGithubActionsMensagens = {\n tituloPadrao: 'Analysis Report - GitHub Actions',\n repositorio: (nome: string) => `**Repository:** ${nome}`,\n data: (data: string) => `**Date:** ${data}`,\n tempoAnalise: (ms: number) => `**Analysis Time:** ${ms}ms`,\n resumoGeral: '## [GRAPH] Overall Summary',\n scoreGeral: (score: number) => `| Overall Score | ${score}/100 |`,\n totalWorkflows: (total: number) => `| Total Workflows | ${total} |`,\n totalOcorrencias: (total: number) => `| Total Occurrences | ${total} |`,\n severidade: '## [RED] Severity',\n workflowsAnalisados: '## [LIST] Workflows Analyzed',\n ocorrenciasDetalhadas: '## [SEARCH] Detailed Occurrences',\n scoreIcon: (score: number) => score >= 80 ? '[OK]' : score >= 50 ? '[WARNING]' : '[ERROR]',\n mostrandoLimit: (mostrando: number, total: number) => `> Showing ${mostrando} of ${total} occurrences.`,\n geradoPor: (versao: string) => `*Generated by Tutanus ${versao} on ${new Date().toISOString()}*`,\n formatoNaoSuportado: (formato: string) => `Unsupported format: ${formato}`,\n schemaJson: 'tutanus://schemas/github-actions-report/v1',\n versao: '0.6.0',\n desconhecido: 'unknown',\n csvCabecalho: 'File,Line,Severity,Type,Message,Suggestion',\n} as const;\n"]}
@@ -14,52 +14,52 @@ export declare const PontuadorMensagens: {
14
14
  readonly explicacaoApiRestParcial: "Structure is partially compatible with api-rest-express. Standardize src/controllers, express dependency, and api/rest routes.";
15
15
  readonly explicacaoApiRestPersonalizada: "Custom structure, but the closest pattern is api-rest-express. Follow best practices to ease maintenance.";
16
16
  readonly outrosCandidatos: "\nOther potential candidates detected: fullstack, api-rest-express.";
17
- readonly detectadoFrameworkNextjs: "\n Next.js framework detected via dependencies and code analysis.";
18
- readonly detectadoRoteamentoNextjs: "\n Next.js routing structure (pages or app dir) confirmed.";
19
- readonly detectadoNextjsFullstack: "\n Next.js framework detected - modern fullstack application.";
20
- readonly detectadoApiRoutes: "\n Next.js API routes detected - integrated backend.";
21
- readonly detectadoPagesRouter: "\n Next.js Pages Router detected.";
22
- readonly detectadoAppRouter: "\n Next.js App Router detected - modern architecture.";
23
- readonly detectadoPrismaOrm: "\n Prisma ORM detected - integrated database.";
24
- readonly detectadoFrontendModerno: "\n Modern frontend technologies detected.";
25
- readonly detectadoBackendApi: "\n Backend/API detected in fullstack.";
26
- readonly detectadoVite: "\n Vite build tool detected.";
27
- readonly detectadoViteConfig: "\n Vite configuration file present.";
28
- readonly detectadoExpress: "\n Express framework detected.";
29
- readonly detectadoFastify: "\n Fastify framework detected - high performance.";
30
- readonly detectadoNestjs: "\n NestJS framework detected - enterprise architecture.";
31
- readonly detectadoKoa: "\n Koa framework detected.";
32
- readonly detectadoHapi: "\n Hapi framework detected.";
33
- readonly detectadoRotasApi: "\n API routes/controllers structure detected.";
34
- readonly detectadoMiddlewareSeguranca: "\n Security/CORS middleware present.";
35
- readonly detectadoValidacao: "\n Data validation detected.";
36
- readonly detectadoOrm: "\n ORM/database layer detected.";
37
- readonly detectadoRepositoryService: "\n Repository/Service pattern compatible with REST APIs.";
38
- readonly detectadoBackendApiFoco: "\n Backend/API-focused development confirmed.";
39
- readonly detectadoVueSpa: "\n Vue.js framework detected - modern SPA.";
40
- readonly detectadoVueRouter: "\n Vue Router detected - SPA routing.";
41
- readonly detectadoStateManagement: "\n State management detected (Vuex/Pinia).";
42
- readonly detectadoBuildToolVue: "\n Vue build tool detected (CLI/Vite).";
43
- readonly detectadoComponentesVue: "\n Vue component structure detected.";
44
- readonly detectadoComposablesVue: "\n Vue 3 composables detected - modern architecture.";
45
- readonly detectadoViewsVue: "\n View/page structure detected.";
46
- readonly detectadoNuxt: "\n Nuxt.js detected - SSR/SSG framework.";
47
- readonly detectadoFrontendFoco: "\n Frontend-focused development confirmed.";
48
- readonly detectadoReact: "\n React framework detected.";
49
- readonly detectadoEstruturaReact: "\n Typical React structure with components detected.";
50
- readonly detectadoVue: "\n Vue framework detected.";
51
- readonly detectadoEstruturaVue: "\n Vue structure with components detected.";
17
+ readonly detectadoFrameworkNextjs: "\n[V] Next.js framework detected via dependencies and code analysis.";
18
+ readonly detectadoRoteamentoNextjs: "\n[V] Next.js routing structure (pages or app dir) confirmed.";
19
+ readonly detectadoNextjsFullstack: "\n[V] Next.js framework detected - modern fullstack application.";
20
+ readonly detectadoApiRoutes: "\n[V] Next.js API routes detected - integrated backend.";
21
+ readonly detectadoPagesRouter: "\n[V] Next.js Pages Router detected.";
22
+ readonly detectadoAppRouter: "\n[V] Next.js App Router detected - modern architecture.";
23
+ readonly detectadoPrismaOrm: "\n[V] Prisma ORM detected - integrated database.";
24
+ readonly detectadoFrontendModerno: "\n[V] Modern frontend technologies detected.";
25
+ readonly detectadoBackendApi: "\n[V] Backend/API detected in fullstack.";
26
+ readonly detectadoVite: "\n[V] Vite build tool detected.";
27
+ readonly detectadoViteConfig: "\n[V] Vite configuration file present.";
28
+ readonly detectadoExpress: "\n[V] Express framework detected.";
29
+ readonly detectadoFastify: "\n[V] Fastify framework detected - high performance.";
30
+ readonly detectadoNestjs: "\n[V] NestJS framework detected - enterprise architecture.";
31
+ readonly detectadoKoa: "\n[V] Koa framework detected.";
32
+ readonly detectadoHapi: "\n[V] Hapi framework detected.";
33
+ readonly detectadoRotasApi: "\n[V] API routes/controllers structure detected.";
34
+ readonly detectadoMiddlewareSeguranca: "\n[V] Security/CORS middleware present.";
35
+ readonly detectadoValidacao: "\n[V] Data validation detected.";
36
+ readonly detectadoOrm: "\n[V] ORM/database layer detected.";
37
+ readonly detectadoRepositoryService: "\n[V] Repository/Service pattern compatible with REST APIs.";
38
+ readonly detectadoBackendApiFoco: "\n[V] Backend/API-focused development confirmed.";
39
+ readonly detectadoVueSpa: "\n[V] Vue.js framework detected - modern SPA.";
40
+ readonly detectadoVueRouter: "\n[V] Vue Router detected - SPA routing.";
41
+ readonly detectadoStateManagement: "\n[V] State management detected (Vuex/Pinia).";
42
+ readonly detectadoBuildToolVue: "\n[V] Vue build tool detected (CLI/Vite).";
43
+ readonly detectadoComponentesVue: "\n[V] Vue component structure detected.";
44
+ readonly detectadoComposablesVue: "\n[V] Vue 3 composables detected - modern architecture.";
45
+ readonly detectadoViewsVue: "\n[V] View/page structure detected.";
46
+ readonly detectadoNuxt: "\n[V] Nuxt.js detected - SSR/SSG framework.";
47
+ readonly detectadoFrontendFoco: "\n[V] Frontend-focused development confirmed.";
48
+ readonly detectadoReact: "\n[V] React framework detected.";
49
+ readonly detectadoEstruturaReact: "\n[V] Typical React structure with components detected.";
50
+ readonly detectadoVue: "\n[V] Vue framework detected.";
51
+ readonly detectadoEstruturaVue: "\n[V] Vue structure with components detected.";
52
52
  readonly detectadoTiposTypescript: (count: number) => string;
53
- readonly detectadoTsconfig: "\n TypeScript configuration present.";
54
- readonly detectadoScriptsBuild: "\n Build scripts detected.";
55
- readonly detectadoTypescriptAvancado: "\n Advanced TypeScript usage detected.";
56
- readonly detectadoMonorepoLerna: "\n Monorepo configuration detected (Lerna or pnpm).";
57
- readonly detectadoWorkspaces: "\n Workspace/packages structure detected.";
58
- readonly detectadoComplexidadeAlta: "\n High structural complexity project detected (monorepo compatible).";
59
- readonly detectadoEstruturaCli: "\n CLI structure detected (bin or cli).";
60
- readonly detectadoBibliotecaCli: "\n CLI library detected (commander/yargs/inquirer).";
61
- readonly detectadoPadroesCli: "\n CLI-specific patterns detected.";
62
- readonly incompativelWebComCli: "\n Web structure detected, incompatible with CLI.";
53
+ readonly detectadoTsconfig: "\n[V] TypeScript configuration present.";
54
+ readonly detectadoScriptsBuild: "\n[V] Build scripts detected.";
55
+ readonly detectadoTypescriptAvancado: "\n[V] Advanced TypeScript usage detected.";
56
+ readonly detectadoMonorepoLerna: "\n[V] Monorepo configuration detected (Lerna or pnpm).";
57
+ readonly detectadoWorkspaces: "\n[V] Workspace/packages structure detected.";
58
+ readonly detectadoComplexidadeAlta: "\n[V] High structural complexity project detected (monorepo compatible).";
59
+ readonly detectadoEstruturaCli: "\n[V] CLI structure detected (bin or cli).";
60
+ readonly detectadoBibliotecaCli: "\n[V] CLI library detected (commander/yargs/inquirer).";
61
+ readonly detectadoPadroesCli: "\n[V] CLI-specific patterns detected.";
62
+ readonly incompativelWebComCli: "\n[X] Web structure detected, incompatible with CLI.";
63
63
  readonly detectadoTestRunner: (runner: string) => string;
64
64
  readonly detectadoLinter: (linter: string) => string;
65
65
  readonly detectadoBundler: (bundler: string) => string;