@mocoto/mahoraga 0.14.1 → 0.14.2

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 (268) hide show
  1. package/dist/analysts/architects/analyst-structure.js +1 -1
  2. package/dist/analysts/architects/archetypes-custom.js +8 -13
  3. package/dist/analysts/architects/detector-archetypes.js +39 -35
  4. package/dist/analysts/architects/orchestrator-archetypes.js +3 -3
  5. package/dist/analysts/architects/signals-project-advanced.js +2 -2
  6. package/dist/analysts/architects/signals-project.js +1 -1
  7. package/dist/analysts/azure-pipelines/analysts/analyst-azure.js +20 -21
  8. package/dist/analysts/azure-pipelines/detectors/detector-azure-structure.js +0 -3
  9. package/dist/analysts/circleci/analysts/analyst-circleci.js +22 -24
  10. package/dist/analysts/circleci/detectors/detector-circleci-structure.js +4 -7
  11. package/dist/analysts/converters/convert-registry.js +1 -1
  12. package/dist/analysts/converters/index.js +1 -1
  13. package/dist/analysts/corrections/auto-fix-engine.js +1 -1
  14. package/dist/analysts/corrections/corrector-structure.js +8 -7
  15. package/dist/analysts/corrections/map-reversion.js +2 -2
  16. package/dist/analysts/corrections/reorganize-barrels.js +3 -3
  17. package/dist/analysts/corrections/rewrite-testes-aliases.js +23 -22
  18. package/dist/analysts/corrections/type-safety/type-analyzer.js +3 -3
  19. package/dist/analysts/corrections/type-safety/type-validator.js +2 -2
  20. package/dist/analysts/corrections/type-safety/usage-analyzer.js +3 -3
  21. package/dist/analysts/css/analysts/analyst-css.js +27 -28
  22. package/dist/analysts/css-in-js/detectors/detector-css-in-js-best-practices.js +8 -15
  23. package/dist/analysts/detectors/detector-architecture.js +2 -2
  24. package/dist/analysts/detectors/detector-bugs-ml.js +8 -8
  25. package/dist/analysts/detectors/detector-code-fragile.js +11 -10
  26. package/dist/analysts/detectors/detector-dependencies.js +5 -5
  27. package/dist/analysts/detectors/detector-duplications.js +5 -8
  28. package/dist/analysts/detectors/detector-monorepo.js +10 -9
  29. package/dist/analysts/detectors/detector-performance.js +2 -1
  30. package/dist/analysts/detectors/detector-recommendation-architecture.js +1 -1
  31. package/dist/analysts/detectors/detector-security.js +1 -1
  32. package/dist/analysts/detectors/detector-structure.js +3 -3
  33. package/dist/analysts/github-actions/analysts/analyst-github-actions.js +5 -8
  34. package/dist/analysts/github-actions/detectors/detector-workflow-accessibility.js +1 -9
  35. package/dist/analysts/github-actions/detectors/detector-workflow-structure.js +1 -4
  36. package/dist/analysts/github-actions/detectors/detector-workflow-trigger-unsafe.js +6 -5
  37. package/dist/analysts/gitlab-ci/analysts/analyst-gitlab-ci.js +2 -2
  38. package/dist/analysts/gitlab-ci/detectors/detector-gitlab-ci-structure.js +0 -3
  39. package/dist/analysts/go/analysts/analyst-best-practices.js +2 -2
  40. package/dist/analysts/go/analysts/analyst-concurrency.js +1 -1
  41. package/dist/analysts/go/analysts/analyst-security.js +1 -1
  42. package/dist/analysts/go/detectors/detector-conventions.js +1 -1
  43. package/dist/analysts/html/analysts/analyst-html.js +10 -12
  44. package/dist/analysts/html/detectors/detector-html.js +3 -3
  45. package/dist/analysts/js-ts/analysts/analyst-commands-cli.js +22 -22
  46. package/dist/analysts/js-ts/analysts/analyst-functions-long.js +5 -5
  47. package/dist/analysts/js-ts/analysts/analyst-patterns-usage.js +6 -2
  48. package/dist/analysts/js-ts/detectors/detector-anti-patterns-async.js +81 -9
  49. package/dist/analysts/js-ts/detectors/detector-constructions-syntactic.js +35 -6
  50. package/dist/analysts/js-ts/detectors/detector-context-smart.js +6 -6
  51. package/dist/analysts/js-ts/detectors/detector-leaks-memory.js +1 -1
  52. package/dist/analysts/js-ts/detectors/detector-types-unsafe.js +33 -2
  53. package/dist/analysts/php/analysts/analyst-php.js +3 -3
  54. package/dist/analysts/php/detectors/detector-php-best-practices.js +5 -5
  55. package/dist/analysts/php/detectors/detector-php-security.js +5 -5
  56. package/dist/analysts/php/scorers/scorer-php.js +2 -2
  57. package/dist/analysts/plugins/detector-documentation.js +5 -6
  58. package/dist/analysts/plugins/detector-markdown.js +7 -7
  59. package/dist/analysts/python/analysts/analyst-python.js +2 -5
  60. package/dist/analysts/react/analysts/analyst-react-hooks.js +63 -8
  61. package/dist/analysts/react/analysts/analyst-react.js +45 -1
  62. package/dist/analysts/react/corrections/correction-react.js +40 -0
  63. package/dist/analysts/react/detectors/detector-react-best-practices.js +4 -4
  64. package/dist/analysts/react/scorers/scorer-react.js +36 -1
  65. package/dist/analysts/rust/analysts/analyst-best-practices.js +42 -3
  66. package/dist/analysts/rust/analysts/analyst-memory.js +2 -2
  67. package/dist/analysts/rust/analysts/analyst-rust.js +52 -5
  68. package/dist/analysts/rust/analysts/analyst-security.js +29 -1
  69. package/dist/analysts/scorers/scorer.js +5 -5
  70. package/dist/analysts/shell/analysts/analyst-shell.js +81 -5
  71. package/dist/analysts/shell/corrections/correction-shell.js +34 -1
  72. package/dist/analysts/shell/detectors/detector-shell-security.js +88 -0
  73. package/dist/analysts/shell/scorers/scorer-shell.js +58 -1
  74. package/dist/analysts/strategists/operator-structure.js +5 -7
  75. package/dist/analysts/strategists/suggestions-contextuais.js +5 -2
  76. package/dist/analysts/svg/analysts/analyst-svg.js +1 -0
  77. package/dist/analysts/tailwind/analysts/analyst-tailwind.js +79 -55
  78. package/dist/analysts/tailwind/corrections/correction-tailwind.js +116 -9
  79. package/dist/analysts/tailwind/detectors/detector-tailwind-best-practices.js +122 -7
  80. package/dist/analysts/tailwind/scorers/scorer-tailwind.js +62 -10
  81. package/dist/analysts/xml/analysts/analyst-xml.js +2 -2
  82. package/dist/app/index.js +1 -0
  83. package/dist/bin/cli-bootstrap.js +6 -4
  84. package/dist/bin/index.js +6 -4
  85. package/dist/caretakers/scoring.js +1 -0
  86. package/dist/cli/commands/command-analysts.js +1 -1
  87. package/dist/cli/commands/command-azure.js +1 -1
  88. package/dist/cli/commands/command-circleci.js +1 -1
  89. package/dist/cli/commands/command-compliance.js +1 -1
  90. package/dist/cli/commands/command-diagnose.js +10 -13
  91. package/dist/cli/commands/command-fix-types.js +9 -32
  92. package/dist/cli/commands/command-formatters.js +2 -2
  93. package/dist/cli/commands/command-gitlab-ci.js +1 -1
  94. package/dist/cli/commands/command-guardian.js +1 -1
  95. package/dist/cli/commands/command-imports.js +6 -6
  96. package/dist/cli/commands/command-jenkins.js +1 -1
  97. package/dist/cli/commands/command-licenses.js +1 -1
  98. package/dist/cli/commands/command-marketplace.js +3 -3
  99. package/dist/cli/commands/command-names.js +3 -8
  100. package/dist/cli/commands/command-perf.js +7 -9
  101. package/dist/cli/commands/command-plugins.js +4 -4
  102. package/dist/cli/diagnostic/auto-fix.js +2 -2
  103. package/dist/cli/diagnostic/exporters/json-exporter.js +1 -1
  104. package/dist/cli/diagnostic/exporters/sharded-exporter.js +0 -3
  105. package/dist/cli/diagnostic/exporters/svg-optimization-exporter.js +1 -1
  106. package/dist/cli/diagnostic/handlers/archetype-handler.js +3 -6
  107. package/dist/cli/diagnostic/handlers/auto-fix-handler.js +4 -4
  108. package/dist/cli/diagnostic/handlers/guardian-handler.js +1 -1
  109. package/dist/cli/diagnostic/processing-diagnostic.js +31 -35
  110. package/dist/cli/diagnostic/processing-helpers.js +2 -2
  111. package/dist/cli/handlers/fix-types-exporter.js +1 -4
  112. package/dist/cli/helpers/display-frame.js +5 -5
  113. package/dist/core/config/auto/auto-fix-config.js +0 -6
  114. package/dist/core/config/chalk-safe.js +2 -2
  115. package/dist/core/config/config.js +6 -8
  116. package/dist/core/config/conventions.js +1 -1
  117. package/dist/core/config/security.js +2 -2
  118. package/dist/core/execution/analysis-cache.js +5 -8
  119. package/dist/core/execution/executor.js +8 -19
  120. package/dist/core/execution/inquisitor.js +24 -21
  121. package/dist/core/execution/results.js +1 -0
  122. package/dist/core/execution/scanner.js +3 -3
  123. package/dist/core/messages/en/analysts/analyst-github-actions-messages.js +1 -1
  124. package/dist/core/messages/en/analysts/analyst-patterns-usage-messages.js +1 -0
  125. package/dist/core/messages/en/analysts/analyst-shell-messages.js +15 -0
  126. package/dist/core/messages/en/analysts/detector-constructions-syntactic-messages.js +6 -0
  127. package/dist/core/messages/en/analysts/detector-js-ts-messages.js +27 -0
  128. package/dist/core/messages/en/analysts/detector-react-messages.js +8 -0
  129. package/dist/core/messages/en/analysts/detector-shell-messages.js +17 -0
  130. package/dist/core/messages/en/analysts/detector-tailwind-messages.js +3 -3
  131. package/dist/core/messages/en/core/plugin-messages.js +31 -3
  132. package/dist/core/messages/en/log/log.js +4 -4
  133. package/dist/core/messages/en/ui/filter-config.js +1 -5
  134. package/dist/core/messages/i18n-system.js +3 -3
  135. package/dist/core/messages/index.js +3 -3
  136. package/dist/core/messages/ja/analysts/analyst-github-actions-messages.js +1 -1
  137. package/dist/core/messages/ja/analysts/analyst-patterns-usage-messages.js +1 -0
  138. package/dist/core/messages/ja/analysts/analyst-shell-messages.js +15 -0
  139. package/dist/core/messages/ja/analysts/detector-constructions-syntactic-messages.js +6 -0
  140. package/dist/core/messages/ja/analysts/detector-js-ts-messages.js +27 -0
  141. package/dist/core/messages/ja/analysts/detector-react-messages.js +8 -0
  142. package/dist/core/messages/ja/analysts/detector-shell-messages.js +17 -0
  143. package/dist/core/messages/ja/analysts/detector-tailwind-messages.js +3 -3
  144. package/dist/core/messages/ja/core/plugin-messages.js +31 -3
  145. package/dist/core/messages/ja/log/log.js +4 -4
  146. package/dist/core/messages/ja/ui/filter-config.js +1 -1
  147. package/dist/core/messages/pt/analysts/analyst-github-actions-messages.js +1 -1
  148. package/dist/core/messages/pt/analysts/analyst-patterns-usage-messages.js +1 -0
  149. package/dist/core/messages/pt/analysts/analyst-shell-messages.js +15 -0
  150. package/dist/core/messages/pt/analysts/detector-constructions-syntactic-messages.js +6 -0
  151. package/dist/core/messages/pt/analysts/detector-js-ts-messages.js +27 -0
  152. package/dist/core/messages/pt/analysts/detector-react-messages.js +8 -0
  153. package/dist/core/messages/pt/analysts/detector-shell-messages.js +17 -0
  154. package/dist/core/messages/pt/analysts/detector-tailwind-messages.js +3 -3
  155. package/dist/core/messages/pt/core/plugin-messages.js +31 -3
  156. package/dist/core/messages/pt/log/log-engine.js +6 -6
  157. package/dist/core/messages/pt/log/log.js +3 -3
  158. package/dist/core/messages/pt/ui/filter-config.js +1 -1
  159. package/dist/core/messages/shared/icons.js +3 -3
  160. package/dist/core/messages/zh/analysts/analyst-github-actions-messages.js +1 -1
  161. package/dist/core/messages/zh/analysts/analyst-patterns-usage-messages.js +1 -0
  162. package/dist/core/messages/zh/analysts/analyst-shell-messages.js +15 -0
  163. package/dist/core/messages/zh/analysts/detector-constructions-syntactic-messages.js +6 -0
  164. package/dist/core/messages/zh/analysts/detector-js-ts-messages.js +27 -0
  165. package/dist/core/messages/zh/analysts/detector-react-messages.js +8 -0
  166. package/dist/core/messages/zh/analysts/detector-shell-messages.js +17 -0
  167. package/dist/core/messages/zh/analysts/detector-tailwind-messages.js +3 -3
  168. package/dist/core/messages/zh/core/plugin-messages.js +31 -3
  169. package/dist/core/messages/zh/log/log.js +3 -3
  170. package/dist/core/messages/zh/ui/filter-config.js +1 -5
  171. package/dist/core/parsing/filters.js +3 -3
  172. package/dist/core/parsing/langs/json.js +1 -1
  173. package/dist/core/parsing/langs/python.js +1 -1
  174. package/dist/core/parsing/langs/typescript.js +1 -1
  175. package/dist/core/parsing/parser.js +2 -2
  176. package/dist/core/registry/file-registry.js +3 -2
  177. package/dist/core/registry/paths.js +3 -3
  178. package/dist/core/reporting/default-reporter.js +2 -2
  179. package/dist/core/schema/version.js +6 -6
  180. package/dist/core/workers/worker-executor.js +3 -3
  181. package/dist/core/workers/worker-pool.js +0 -0
  182. package/dist/guardian/baseline.js +1 -1
  183. package/dist/guardian/gpg.js +3 -1
  184. package/dist/guardian/integrity.js +2 -7
  185. package/dist/guardian/records.js +6 -1
  186. package/dist/guardian/result.js +1 -1
  187. package/dist/guardian/sentinel.js +6 -1
  188. package/dist/guardian/watcher-hidden.js +5 -1
  189. package/dist/licenses/fs-utils.js +4 -1
  190. package/dist/licenses/generate-notices.js +1 -1
  191. package/dist/licenses/header-options.js +0 -1
  192. package/dist/licenses/index.js +1 -0
  193. package/dist/licenses/normalizer.js +10 -9
  194. package/dist/node.loader.js +224 -4
  195. package/dist/reports/analise-async-patterns.js +1 -1
  196. package/dist/reports/filter-smart.js +2 -5
  197. package/dist/reports/generator-report.js +4 -4
  198. package/dist/reports/report-archetypes.js +10 -10
  199. package/dist/reports/report-caretaker-health.js +2 -1
  200. package/dist/sdk/analyzer.js +1 -1
  201. package/dist/shared/data-processing/fragment-report.js +10 -10
  202. package/dist/shared/data-processing/json.js +1 -1
  203. package/dist/shared/data-processing/occurrences.js +3 -2
  204. package/dist/shared/formatters/code-min-formatter.js +1 -1
  205. package/dist/shared/formatters/engines/prettier.js +1 -1
  206. package/dist/shared/formatters/engines/stylelint.js +6 -9
  207. package/dist/shared/formatters/formatter.js +8 -8
  208. package/dist/shared/formatters/formatters/code.js +3 -3
  209. package/dist/shared/formatters/formatters/css.js +2 -10
  210. package/dist/shared/formatters/formatters/dotfiles.js +1 -1
  211. package/dist/shared/formatters/formatters/html.js +1 -5
  212. package/dist/shared/formatters/formatters/json.js +0 -3
  213. package/dist/shared/formatters/formatters/markdown.js +18 -23
  214. package/dist/shared/formatters/formatters/properties.js +2 -2
  215. package/dist/shared/formatters/formatters/shell.js +1 -4
  216. package/dist/shared/formatters/formatters/sql.js +0 -3
  217. package/dist/shared/formatters/formatters/xml.js +5 -7
  218. package/dist/shared/formatters/formatters/yaml.js +2 -7
  219. package/dist/shared/formatters/index.js +1 -1
  220. package/dist/shared/helpers/framework-detector.js +1 -1
  221. package/dist/shared/helpers/json.js +1 -1
  222. package/dist/shared/helpers/magic-constants-whitelist.js +1 -1
  223. package/dist/shared/helpers/masking.js +17 -17
  224. package/dist/shared/helpers/reader-report.js +0 -12
  225. package/dist/shared/helpers/structural-hash.js +3 -2
  226. package/dist/shared/helpers/structure.js +1 -1
  227. package/dist/shared/marketplace/registry.js +1 -1
  228. package/dist/shared/marketplace/remote.js +4 -4
  229. package/dist/shared/persistence/persistence.js +0 -1
  230. package/dist/shared/plugins/core-plugin.js +3 -1
  231. package/dist/shared/plugins/registry.js +3 -2
  232. package/dist/types/caretakers/imports-barrel.js +1 -0
  233. package/dist/types/caretakers/index.js +4 -0
  234. package/dist/types/caretakers/map-reversion.js +1 -0
  235. package/dist/types/caretakers/pruning.js +1 -0
  236. package/dist/types/caretakers/scoring.js +1 -0
  237. package/dist/types/common/analysts.js +1 -1
  238. package/dist/types/core/config/filters.js +1 -0
  239. package/dist/types/core/config/index.js +2 -0
  240. package/dist/types/core/execution/ambiente.js +1 -0
  241. package/dist/types/core/execution/linguagens.js +1 -0
  242. package/dist/types/core/execution/parse-errors.js +1 -0
  243. package/dist/types/core/execution/results.js +1 -0
  244. package/dist/types/core/execution/structure-json.js +1 -0
  245. package/dist/types/core/index.js +1 -0
  246. package/dist/types/core/messages/index.js +1 -0
  247. package/dist/types/core/messages/log.js +1 -0
  248. package/dist/types/core/parsing/babel-narrow.js +1 -0
  249. package/dist/types/core/parsing/index.js +1 -0
  250. package/dist/types/core/runtime.js +1 -0
  251. package/dist/types/guardian/index.js +2 -0
  252. package/dist/types/guardian/integrity.js +7 -0
  253. package/dist/types/guardian/snapshot.js +1 -0
  254. package/dist/types/index.js +4 -4
  255. package/dist/types/licenses/index.js +2 -0
  256. package/dist/types/processing/display.js +16 -13
  257. package/dist/types/processing/filters.js +3 -7
  258. package/dist/types/reports/compliance.js +1 -0
  259. package/dist/types/reports/streaming.js +1 -0
  260. package/dist/types/scripts/index.js +1 -0
  261. package/dist/types/scripts/migrar-aliases.js +1 -0
  262. package/dist/types/sdk/index.js +1 -0
  263. package/dist/types/shared/index.js +2 -0
  264. package/dist/types/vulnerabilities/index.js +2 -0
  265. package/dist/vulnerabilities/npm-audit.js +0 -1
  266. package/dist/vulnerabilities/scanner.js +2 -1
  267. package/dist/vulnerabilities/vulnerabilities.js +0 -1
  268. package/package.json +11 -12
@@ -8,15 +8,235 @@ import { existsSync } from 'node:fs';
8
8
  import { join, resolve as resolvePath } from 'node:path';
9
9
  import { pathToFileURL } from 'node:url';
10
10
  // Mapeamento de aliases baseado no tsconfig.json
11
- const aliases = {};
12
- export async function resolve(specifier, context, nextResolve) {
11
+ const aliases = {
12
+ "@": "./src/types/index",
13
+ "@analysts/architects": "./src/analysts/architects/index",
14
+ "@analysts/azure-pipelines": "./src/analysts/azure-pipelines/index",
15
+ "@analysts/azure-pipelines/analysts": "./src/analysts/azure-pipelines/analysts/index",
16
+ "@analysts/azure-pipelines/corrections": "./src/analysts/azure-pipelines/corrections/index",
17
+ "@analysts/azure-pipelines/detectors": "./src/analysts/azure-pipelines/detectors/index",
18
+ "@analysts/azure-pipelines/reports": "./src/analysts/azure-pipelines/reports/index",
19
+ "@analysts/azure-pipelines/scorers": "./src/analysts/azure-pipelines/scorers/index",
20
+ "@analysts/circleci": "./src/analysts/circleci/index",
21
+ "@analysts/circleci/analysts": "./src/analysts/circleci/analysts/index",
22
+ "@analysts/circleci/corrections": "./src/analysts/circleci/corrections/index",
23
+ "@analysts/circleci/detectors": "./src/analysts/circleci/detectors/index",
24
+ "@analysts/circleci/reports": "./src/analysts/circleci/reports/index",
25
+ "@analysts/circleci/scorers": "./src/analysts/circleci/scorers/index",
26
+ "@analysts/converters": "./src/analysts/converters/index",
27
+ "@analysts/converters/engines": "./src/analysts/converters/engines/index",
28
+ "@analysts/corrections": "./src/analysts/corrections/index",
29
+ "@analysts/corrections/quick-fixes": "./src/analysts/corrections/quick-fixes/index",
30
+ "@analysts/corrections/type-safety": "./src/analysts/corrections/type-safety/index",
31
+ "@analysts/css": "./src/analysts/css/index",
32
+ "@analysts/css-in-js": "./src/analysts/css-in-js/index",
33
+ "@analysts/css-in-js/analysts": "./src/analysts/css-in-js/analysts/index",
34
+ "@analysts/css-in-js/corrections": "./src/analysts/css-in-js/corrections/index",
35
+ "@analysts/css-in-js/detectors": "./src/analysts/css-in-js/detectors/index",
36
+ "@analysts/css-in-js/plugins": "./src/analysts/css-in-js/plugins/index",
37
+ "@analysts/css-in-js/scorers": "./src/analysts/css-in-js/scorers/index",
38
+ "@analysts/css/analysts": "./src/analysts/css/analysts/index",
39
+ "@analysts/css/corrections": "./src/analysts/css/corrections/index",
40
+ "@analysts/css/detectors": "./src/analysts/css/detectors/index",
41
+ "@analysts/css/plugins": "./src/analysts/css/plugins/index",
42
+ "@analysts/css/scorers": "./src/analysts/css/scorers/index",
43
+ "@analysts/detectors": "./src/analysts/detectors/index",
44
+ "@analysts/github-actions": "./src/analysts/github-actions/index",
45
+ "@analysts/github-actions/analysts": "./src/analysts/github-actions/analysts/index",
46
+ "@analysts/github-actions/corrections": "./src/analysts/github-actions/corrections/index",
47
+ "@analysts/github-actions/detectors": "./src/analysts/github-actions/detectors/index",
48
+ "@analysts/github-actions/reports": "./src/analysts/github-actions/reports/index",
49
+ "@analysts/github-actions/scorers": "./src/analysts/github-actions/scorers/index",
50
+ "@analysts/gitlab-ci": "./src/analysts/gitlab-ci/index",
51
+ "@analysts/gitlab-ci/analysts": "./src/analysts/gitlab-ci/analysts/index",
52
+ "@analysts/gitlab-ci/corrections": "./src/analysts/gitlab-ci/corrections/index",
53
+ "@analysts/gitlab-ci/detectors": "./src/analysts/gitlab-ci/detectors/index",
54
+ "@analysts/gitlab-ci/reports": "./src/analysts/gitlab-ci/reports/index",
55
+ "@analysts/gitlab-ci/scorers": "./src/analysts/gitlab-ci/scorers/index",
56
+ "@analysts/go": "./src/analysts/go/index",
57
+ "@analysts/go/analysts": "./src/analysts/go/analysts/index",
58
+ "@analysts/go/detectors": "./src/analysts/go/detectors/index",
59
+ "@analysts/html": "./src/analysts/html/index",
60
+ "@analysts/html/analysts": "./src/analysts/html/analysts/index",
61
+ "@analysts/html/corrections": "./src/analysts/html/corrections/index",
62
+ "@analysts/html/detectors": "./src/analysts/html/detectors/index",
63
+ "@analysts/html/scorers": "./src/analysts/html/scorers/index",
64
+ "@analysts/jenkins": "./src/analysts/jenkins/index",
65
+ "@analysts/jenkins/analysts": "./src/analysts/jenkins/analysts/index",
66
+ "@analysts/jenkins/corrections": "./src/analysts/jenkins/corrections/index",
67
+ "@analysts/jenkins/detectors": "./src/analysts/jenkins/detectors/index",
68
+ "@analysts/jenkins/reports": "./src/analysts/jenkins/reports/index",
69
+ "@analysts/jenkins/scorers": "./src/analysts/jenkins/scorers/index",
70
+ "@analysts/js-ts": "./src/analysts/js-ts/index",
71
+ "@analysts/js-ts/analysts": "./src/analysts/js-ts/analysts/index",
72
+ "@analysts/js-ts/detectors": "./src/analysts/js-ts/detectors/index",
73
+ "@analysts/php": "./src/analysts/php/index",
74
+ "@analysts/php/analysts": "./src/analysts/php/analysts/index",
75
+ "@analysts/php/detectors": "./src/analysts/php/detectors/index",
76
+ "@analysts/plugins": "./src/analysts/plugins/index",
77
+ "@analysts/python": "./src/analysts/python/index",
78
+ "@analysts/python/analysts": "./src/analysts/python/analysts/index",
79
+ "@analysts/python/corrections": "./src/analysts/python/corrections/index",
80
+ "@analysts/python/detectors": "./src/analysts/python/detectors/index",
81
+ "@analysts/python/scorers": "./src/analysts/python/scorers/index",
82
+ "@analysts/react": "./src/analysts/react/index",
83
+ "@analysts/react/analysts": "./src/analysts/react/analysts/index",
84
+ "@analysts/react/corrections": "./src/analysts/react/corrections/index",
85
+ "@analysts/react/detectors": "./src/analysts/react/detectors/index",
86
+ "@analysts/react/scorers": "./src/analysts/react/scorers/index",
87
+ "@analysts/registry": "./src/analysts/registry/index",
88
+ "@analysts/rust": "./src/analysts/rust/index",
89
+ "@analysts/rust/analysts": "./src/analysts/rust/analysts/index",
90
+ "@analysts/rust/detectors": "./src/analysts/rust/detectors/index",
91
+ "@analysts/scorers": "./src/analysts/scorers/index",
92
+ "@analysts/shell": "./src/analysts/shell/index",
93
+ "@analysts/shell/analysts": "./src/analysts/shell/analysts/index",
94
+ "@analysts/shell/corrections": "./src/analysts/shell/corrections/index",
95
+ "@analysts/shell/detectors": "./src/analysts/shell/detectors/index",
96
+ "@analysts/shell/scorers": "./src/analysts/shell/scorers/index",
97
+ "@analysts/sql": "./src/analysts/sql/index",
98
+ "@analysts/sql/analysts": "./src/analysts/sql/analysts/index",
99
+ "@analysts/sql/corrections": "./src/analysts/sql/corrections/index",
100
+ "@analysts/sql/detectors": "./src/analysts/sql/detectors/index",
101
+ "@analysts/sql/scorers": "./src/analysts/sql/scorers/index",
102
+ "@analysts/strategists": "./src/analysts/strategists/index",
103
+ "@analysts/svg": "./src/analysts/svg/index",
104
+ "@analysts/svg/analysts": "./src/analysts/svg/analysts/index",
105
+ "@analysts/svg/corrections": "./src/analysts/svg/corrections/index",
106
+ "@analysts/svg/detectors": "./src/analysts/svg/detectors/index",
107
+ "@analysts/svg/scorers": "./src/analysts/svg/scorers/index",
108
+ "@analysts/tailwind": "./src/analysts/tailwind/index",
109
+ "@analysts/tailwind/analysts": "./src/analysts/tailwind/analysts/index",
110
+ "@analysts/tailwind/corrections": "./src/analysts/tailwind/corrections/index",
111
+ "@analysts/tailwind/detectors": "./src/analysts/tailwind/detectors/index",
112
+ "@analysts/tailwind/plugins": "./src/analysts/tailwind/plugins/index",
113
+ "@analysts/tailwind/scorers": "./src/analysts/tailwind/scorers/index",
114
+ "@analysts/xml": "./src/analysts/xml/index",
115
+ "@analysts/xml/analysts": "./src/analysts/xml/analysts/index",
116
+ "@analysts/xml/corrections": "./src/analysts/xml/corrections/index",
117
+ "@analysts/xml/detectors": "./src/analysts/xml/detectors/index",
118
+ "@analysts/xml/scorers": "./src/analysts/xml/scorers/index",
119
+ "@app": "./src/app/index",
120
+ "@app/github": "./src/app/github",
121
+ "@caretakers": "./src/caretakers/index",
122
+ "@cli": "./src/cli/index",
123
+ "@cli/commands": "./src/cli/commands/index",
124
+ "@cli/diagnostic": "./src/cli/diagnostic/index",
125
+ "@cli/diagnostic/exporters": "./src/cli/diagnostic/exporters/index",
126
+ "@cli/diagnostic/handlers": "./src/cli/diagnostic/handlers/index",
127
+ "@cli/handlers": "./src/cli/handlers/index",
128
+ "@cli/helpers": "./src/cli/helpers/index",
129
+ "@cli/options": "./src/cli/options/index",
130
+ "@core": "./src/core/index",
131
+ "@core/config": "./src/core/config/index",
132
+ "@core/config/auto": "./src/core/config/auto/index",
133
+ "@core/corrections": "./src/core/corrections/index",
134
+ "@core/execution": "./src/core/execution/index",
135
+ "@core/formatters": "./src/core/formatters/index",
136
+ "@core/messages": "./src/core/messages/index",
137
+ "@core/messages/en": "./src/core/messages/en/index",
138
+ "@core/messages/en/analysts": "./src/core/messages/en/analysts/index",
139
+ "@core/messages/en/caretakers": "./src/core/messages/en/caretakers/index",
140
+ "@core/messages/en/cli": "./src/core/messages/en/cli/index",
141
+ "@core/messages/en/core": "./src/core/messages/en/core/index",
142
+ "@core/messages/en/github": "./src/core/messages/en/github/index",
143
+ "@core/messages/en/guardian": "./src/core/messages/en/guardian/index",
144
+ "@core/messages/en/licenses": "./src/core/messages/en/licenses/index",
145
+ "@core/messages/en/log": "./src/core/messages/en/log/index",
146
+ "@core/messages/en/reports": "./src/core/messages/en/reports/index",
147
+ "@core/messages/en/shared": "./src/core/messages/en/shared/index",
148
+ "@core/messages/en/ui": "./src/core/messages/en/ui/index",
149
+ "@core/messages/ja": "./src/core/messages/ja/index",
150
+ "@core/messages/ja/analysts": "./src/core/messages/ja/analysts/index",
151
+ "@core/messages/ja/caretakers": "./src/core/messages/ja/caretakers/index",
152
+ "@core/messages/ja/cli": "./src/core/messages/ja/cli/index",
153
+ "@core/messages/ja/core": "./src/core/messages/ja/core/index",
154
+ "@core/messages/ja/github": "./src/core/messages/ja/github/index",
155
+ "@core/messages/ja/guardian": "./src/core/messages/ja/guardian/index",
156
+ "@core/messages/ja/licenses": "./src/core/messages/ja/licenses/index",
157
+ "@core/messages/ja/log": "./src/core/messages/ja/log/index",
158
+ "@core/messages/ja/reports": "./src/core/messages/ja/reports/index",
159
+ "@core/messages/ja/shared": "./src/core/messages/ja/shared/index",
160
+ "@core/messages/ja/ui": "./src/core/messages/ja/ui/index",
161
+ "@core/messages/pt": "./src/core/messages/pt/index",
162
+ "@core/messages/pt/analysts": "./src/core/messages/pt/analysts/index",
163
+ "@core/messages/pt/caretakers": "./src/core/messages/pt/caretakers/index",
164
+ "@core/messages/pt/cli": "./src/core/messages/pt/cli/index",
165
+ "@core/messages/pt/core": "./src/core/messages/pt/core/index",
166
+ "@core/messages/pt/github": "./src/core/messages/pt/github/index",
167
+ "@core/messages/pt/guardian": "./src/core/messages/pt/guardian/index",
168
+ "@core/messages/pt/licenses": "./src/core/messages/pt/licenses/index",
169
+ "@core/messages/pt/log": "./src/core/messages/pt/log/index",
170
+ "@core/messages/pt/reports": "./src/core/messages/pt/reports/index",
171
+ "@core/messages/pt/shared": "./src/core/messages/pt/shared/index",
172
+ "@core/messages/pt/ui": "./src/core/messages/pt/ui/index",
173
+ "@core/messages/shared": "./src/core/messages/shared/index",
174
+ "@core/messages/zh": "./src/core/messages/zh/index",
175
+ "@core/messages/zh/analysts": "./src/core/messages/zh/analysts/index",
176
+ "@core/messages/zh/caretakers": "./src/core/messages/zh/caretakers/index",
177
+ "@core/messages/zh/cli": "./src/core/messages/zh/cli/index",
178
+ "@core/messages/zh/core": "./src/core/messages/zh/core/index",
179
+ "@core/messages/zh/github": "./src/core/messages/zh/github/index",
180
+ "@core/messages/zh/guardian": "./src/core/messages/zh/guardian/index",
181
+ "@core/messages/zh/licenses": "./src/core/messages/zh/licenses/index",
182
+ "@core/messages/zh/log": "./src/core/messages/zh/log/index",
183
+ "@core/messages/zh/reports": "./src/core/messages/zh/reports/index",
184
+ "@core/messages/zh/shared": "./src/core/messages/zh/shared/index",
185
+ "@core/messages/zh/ui": "./src/core/messages/zh/ui/index",
186
+ "@core/parsing": "./src/core/parsing/index",
187
+ "@core/parsing/langs": "./src/core/parsing/langs/index",
188
+ "@core/registry": "./src/core/registry/index",
189
+ "@core/reporting": "./src/core/reporting/index",
190
+ "@core/runtime": "./src/core/runtime/index",
191
+ "@core/schema": "./src/core/schema/index",
192
+ "@core/utils": "./src/core/utils/index",
193
+ "@core/workers": "./src/core/workers/index",
194
+ "@guardian": "./src/guardian/index",
195
+ "@licenses": "./src/licenses/index",
196
+ "@reports": "./src/reports/index",
197
+ "@reports/compliance": "./src/reports/compliance/index",
198
+ "@scripts": "./src/scripts/index",
199
+ "@sdk": "./src/sdk/index",
200
+ "@shared": "./src/shared/index",
201
+ "@shared/data-processing": "./src/shared/data-processing/index",
202
+ "@shared/formatters": "./src/shared/formatters/index",
203
+ "@shared/formatters/core": "./src/shared/formatters/core/index",
204
+ "@shared/formatters/engines": "./src/shared/formatters/engines/index",
205
+ "@shared/formatters/formatters": "./src/shared/formatters/formatters/index",
206
+ "@shared/helpers": "./src/shared/helpers/index",
207
+ "@shared/marketplace": "./src/shared/marketplace/index",
208
+ "@shared/persistence": "./src/shared/persistence/index",
209
+ "@shared/plugins": "./src/shared/plugins/index",
210
+ "@shared/validation": "./src/shared/validation/index",
211
+ "@types": "./src/types/index",
212
+ "@types/analysts": "./src/types/analysts/index",
213
+ "@types/analysts/corrections": "./src/types/analysts/corrections/index",
214
+ "@types/caretakers": "./src/types/caretakers/index",
215
+ "@types/common": "./src/types/common/index",
216
+ "@types/core": "./src/types/core/index",
217
+ "@types/core/config": "./src/types/core/config/index",
218
+ "@types/core/execution": "./src/types/core/execution/index",
219
+ "@types/core/messages": "./src/types/core/messages/index",
220
+ "@types/core/parsing": "./src/types/core/parsing/index",
221
+ "@types/guardian": "./src/types/guardian/index",
222
+ "@types/licenses": "./src/types/licenses/index",
223
+ "@types/processing": "./src/types/processing/index",
224
+ "@types/project": "./src/types/project/index",
225
+ "@types/scripts": "./src/types/scripts/index",
226
+ "@types/sdk": "./src/types/sdk/index",
227
+ "@types/shared": "./src/types/shared/index",
228
+ "@types/structure": "./src/types/structure/index",
229
+ "@types/vulnerabilities": "./src/types/vulnerabilities/index",
230
+ "@vulnerabilities": "./src/vulnerabilities/index",
231
+ };
232
+ export function resolve(specifier, context, nextResolve) {
13
233
  // Se não é um alias, passa para o próximo resolver
14
234
  if (!specifier.startsWith('@')) {
15
235
  return nextResolve(specifier, context);
16
236
  }
17
237
  // Procura pelo alias correspondente (ordena por tamanho decrescente para priorizar match mais específico)
18
238
  let resolved = null;
19
- const sortedAliases = Object.entries(aliases).sort((arquivo, base) => base[0].length - arquivo[0].length);
239
+ const sortedAliases = Object.entries(aliases).sort((a, b) => b[0].length - a[0].length);
20
240
  for (const [prefix, replacement] of sortedAliases) {
21
241
  const isExactMatch = specifier === prefix;
22
242
  const isPrefixMatch = prefix.endsWith('/') && specifier.startsWith(prefix);
@@ -60,7 +280,7 @@ export async function resolve(specifier, context, nextResolve) {
60
280
  if (!existsSync(fullPath)) {
61
281
  let found = false;
62
282
  // Se já tem uma das extensões, tenta removê-la e testar as outras
63
- const currentExt = extensions.find(ext => fullPath.endsWith(ext));
283
+ const currentExt = extensions?.find(ext => fullPath.endsWith(ext));
64
284
  const pathSemExt = currentExt ? fullPath.slice(0, -currentExt.length) : fullPath;
65
285
  for (const ext of extensions) {
66
286
  const testPath = pathSemExt + ext;
@@ -85,7 +85,7 @@ export function analisarAsyncPatterns(ocorrencias, options = {}) {
85
85
  const arquivosOrdenados = Array.from(porArquivo.entries()).map(([arquivo, info]) => ({
86
86
  arquivo,
87
87
  total: info.total,
88
- nivel: (info.nivel || 'info')
88
+ nivel: info.nivel
89
89
  })).sort((arquivo, base) => base.total - arquivo.total);
90
90
  // Top arquivos
91
91
  log.info(RelatorioAsyncPatternsMensagens.topArquivos.replace('{total}', String(Math.min(topN, arquivosOrdenados.length))));
@@ -130,10 +130,7 @@ function agruparOcorrencias(ocorrencias) {
130
130
  function converterGruposEmProblemas(gruposPorTipo, gruposPorMensagem) {
131
131
  const problemasAgrupados = [];
132
132
  for (const [tipo, ocorrenciasTipo] of gruposPorTipo) {
133
- const config = PRIORIDADES[tipo] || {
134
- prioridade: 'baixa',
135
- icone: '??'
136
- };
133
+ const config = PRIORIDADES[tipo];
137
134
  const jaAgrupado = Array.from(gruposPorMensagem.keys()).some(categoria => {
138
135
  const ocorrenciasGrupo = gruposPorMensagem.get(categoria) ?? [];
139
136
  return ocorrenciasGrupo.some(ocorrencia => ocorrencia.tipo === tipo);
@@ -205,7 +202,7 @@ function gerarResumoOcorrencias(ocorrencias) {
205
202
  for (const nivel of ocorrencias.map(ocorrencia => ocorrencia.nivel).filter((nivel) => Boolean(nivel))) {
206
203
  niveisFrequentes[nivel] = (niveisFrequentes[nivel] || 0) + 1;
207
204
  }
208
- const nivelMaisFrequente = Object.entries(niveisFrequentes).sort(([, arquivo], [, base]) => (base ?? 0) - (arquivo ?? 0))[0]?.[0];
205
+ const nivelMaisFrequente = Object.entries(niveisFrequentes).sort(([, arquivo], [, base]) => base - arquivo)[0]?.[0];
209
206
  let resumo = `${ocorrencias.length} ocorrências`;
210
207
  if (arquivos.size > 1) {
211
208
  resumo += ` em ${arquivos.size} arquivos`;
@@ -3,7 +3,7 @@
3
3
  import { getMessages } from '../core/messages/index.js';
4
4
  export async function gerarRelatorioMarkdown(resultado, outputCaminho, modoBrief = false, options) {
5
5
  const { gerarHeaderRelatorio, gerarSecaoGuardian, gerarTabelaOcorrencias, gerarTabelaResumoTipos, RelatorioMensagens } = getMessages();
6
- const { totalArquivos, ocorrencias, guardian, timestamp, duracaoMs } = (resultado || {});
6
+ const { totalArquivos, ocorrencias, guardian, timestamp, duracaoMs } = resultado;
7
7
  const dataISO = new Date(timestamp).toISOString();
8
8
  // Se modo brief, usar filtro inteligente
9
9
  if (modoBrief) {
@@ -13,8 +13,8 @@ export async function gerarRelatorioMarkdown(resultado, outputCaminho, modoBrief
13
13
  return;
14
14
  }
15
15
  const ocorrenciasOrdenadas = [...ocorrencias].sort((arquivo, base) => {
16
- const ra = (arquivo.relPath ?? '');
17
- const rb = (base.relPath ?? '');
16
+ const ra = arquivo.relPath;
17
+ const rb = base.relPath;
18
18
  const cmp = ra.localeCompare(rb);
19
19
  if (cmp !== 0) {
20
20
  return cmp;
@@ -81,5 +81,5 @@ export async function gerarRelatorioJson(resultado, outputCaminho) {
81
81
  // Criar relatório versionado (mantemos metadados, mas salvamos os dados brutos para compatibilidade)
82
82
  const relatorioVersionado = criarRelatorioComVersao(resultado, undefined, 'Relatório completo de diagnóstico do Mahoraga');
83
83
  const { salvarEstado } = await import('../shared/persistence/index.js');
84
- await salvarEstado(outputCaminho, relatorioVersionado.dados ?? resultado);
84
+ await salvarEstado(outputCaminho, relatorioVersionado.dados);
85
85
  }
@@ -16,9 +16,9 @@ export async function exportarRelatorioArquetiposMarkdown(destino, candidatos, c
16
16
  for (const elem of candidatos) {
17
17
  if (!detalhado) {
18
18
  // Relatório compacto
19
- const missing = elem.missingRequired.slice(0, 3) || [];
20
- const forbidden = elem.forbiddenPresent.slice(0, 3) || [];
21
- const dependFalt = elem.dependencyMatches.length === 0 && elem.dependencyMatches !== undefined ? elem.dependencyMatches : [];
19
+ const missing = elem.missingRequired.slice(0, 3);
20
+ const forbidden = elem.forbiddenPresent.slice(0, 3);
21
+ const dependFalt = elem.dependencyMatches.length === 0 ? elem.dependencyMatches : [];
22
22
  let resumo = '';
23
23
  if (missing.length) {
24
24
  resumo += `Faltam pastas: ${missing.join(', ')}. `;
@@ -73,8 +73,8 @@ async function escreverSecaoDetalhadaArquetipo(linhas, elem) {
73
73
  linhas.push('Sugestão de comandos:');
74
74
  elem.missingRequired.forEach(caminho => linhas.push(` mkdir ${caminho}`));
75
75
  }
76
- if (elem.dependencyMatches && Array.isArray(elem.dependencyMatches)) {
77
- const ausentes = elem.dependencyMatches.length === 0 && elem.dependencyMatches !== undefined ? elem.dependencyMatches : [];
76
+ if (Array.isArray(elem.dependencyMatches)) {
77
+ const ausentes = elem.dependencyMatches.length === 0 ? elem.dependencyMatches : [];
78
78
  if (ausentes.length) {
79
79
  linhas.push('Sugestão de comandos para dependências:');
80
80
  ausentes.forEach(dep => linhas.push(` npm install ${dep}`));
@@ -122,7 +122,7 @@ async function analisarDependenciasPackageJson(linhas) {
122
122
  return;
123
123
  }
124
124
  const pkg = JSON.parse(raw);
125
- if (!pkg || typeof pkg !== 'object' || !pkg.dependencies) {
125
+ if (typeof pkg !== 'object' || !pkg.dependencies) {
126
126
  return;
127
127
  }
128
128
  const deps = pkg.dependencies;
@@ -167,9 +167,9 @@ export async function exportarRelatorioArquetiposJson(destino, candidatos, conte
167
167
  candidatos: candidatos.map(elem => {
168
168
  if (!detalhado) {
169
169
  // Compacto
170
- const missing = elem.missingRequired.slice(0, 3) || [];
171
- const forbidden = elem.forbiddenPresent.slice(0, 3) || [];
172
- const dependFalt = elem.dependencyMatches.length === 0 && elem.dependencyMatches !== undefined ? elem.dependencyMatches : [];
170
+ const missing = elem.missingRequired.slice(0, 3);
171
+ const forbidden = elem.forbiddenPresent.slice(0, 3);
172
+ const dependFalt = elem.dependencyMatches.length === 0 ? elem.dependencyMatches : [];
173
173
  let resumo = '';
174
174
  if (missing.length) {
175
175
  resumo += `Faltam pastas: ${missing.join(', ')}. `;
@@ -194,7 +194,7 @@ export async function exportarRelatorioArquetiposJson(destino, candidatos, conte
194
194
  score: elem.score,
195
195
  explicacao,
196
196
  resumo,
197
- matchedRequired: elem.matchedRequired.slice(0, 3) || [],
197
+ matchedRequired: elem.matchedRequired.slice(0, 3),
198
198
  missingRequired: missing,
199
199
  forbiddenPresent: forbidden,
200
200
  descricao: elem.descricao
@@ -108,7 +108,8 @@ function exibirTabelaSimples(totalOcorrencias, arquivosAfetados, maiorPorArquivo
108
108
  log.info('');
109
109
  }
110
110
  function exibirModoVerboso(porArquivo) {
111
- const logInfoRaw = (log.infoSemSanitizar || log.info).bind(log);
111
+ const logAny = log;
112
+ const logInfoRaw = (logAny.infoSemSanitizar ?? logAny.info).bind(log);
112
113
  const titulo = chalk.bold(RelatorioMensagens.saude.secoes.funcoesLongas.titulo);
113
114
  log.info(titulo);
114
115
  const colLeft = 50;
@@ -81,7 +81,7 @@ export async function analyzeProject(projectDir, opts) {
81
81
  const tecnicas = await carregarTecnicas();
82
82
  const resultadoExecucao = await executarInquisicao(filteredEntries, tecnicas, projectDir, null, { verbose: false, compact: true, fast: opts?.fast });
83
83
  return {
84
- ocorrencias: resultadoExecucao.ocorrencias || [],
84
+ ocorrencias: resultadoExecucao.ocorrencias,
85
85
  totalArquivos: entries.length,
86
86
  tempoMs: performance.now() - inicio,
87
87
  };
@@ -11,14 +11,14 @@ function chunkArray(arr, size) {
11
11
  return out;
12
12
  }
13
13
  export async function fragmentarRelatorio(relatorioFull, dir, ts, options) {
14
- const maxOcorrencias = options?.maxOcorrenciasPerShard ?? config.REPORT_FRAGMENT_OCCURRENCES ?? 2000;
15
- const maxArquivoEntries = options?.maxFileEntriesPerShard ?? config.REPORT_FRAGMENT_FILEENTRIES ?? 500;
16
- const topN = config.REPORT_FRAGMENT_SUMMARY_TOPN ?? 5;
14
+ const maxOcorrencias = options?.maxOcorrenciasPerShard ?? config.REPORT_FRAGMENT_OCCURRENCES;
15
+ const maxArquivoEntries = options?.maxFileEntriesPerShard ?? config.REPORT_FRAGMENT_FILEENTRIES;
16
+ const topN = config.REPORT_FRAGMENT_SUMMARY_TOPN;
17
17
  // Normaliza a estrutura esperada
18
18
  const rel = relatorioFull;
19
- const resultado = rel && 'resultado' in rel ? rel.resultado : rel;
20
- const ocorrencias = resultado && Array.isArray((resultado).ocorrencias) ? (resultado).ocorrencias : [];
21
- const fileEntries = resultado && Array.isArray((resultado).fileEntries) ? (resultado).fileEntries : [];
19
+ const resultado = 'resultado' in rel ? rel.resultado : rel;
20
+ const ocorrencias = Array.isArray((resultado).ocorrencias) ? (resultado).ocorrencias : [];
21
+ const fileEntries = Array.isArray((resultado).fileEntries) ? (resultado).fileEntries : [];
22
22
  const salvar = salvarEstado;
23
23
  // Manifest que descreve as partes geradas
24
24
  const manifest = {
@@ -67,9 +67,9 @@ export async function fragmentarRelatorio(relatorioFull, dir, ts, options) {
67
67
  for (const ocorrencia of occPedacos[indice]) {
68
68
  // Suporta formatos legados com 'type' e 'path' para compatibilidade
69
69
  const oLegacy = ocorrencia;
70
- const tipoOcorrencia = ocorrencia && (ocorrencia.tipo || oLegacy.type) ? String(ocorrencia.tipo ?? oLegacy.type) : 'desconhecido';
70
+ const tipoOcorrencia = ocorrencia.tipo ?? oLegacy.type ?? 'desconhecido';
71
71
  tiposContagem[tipoOcorrencia] = (tiposContagem[tipoOcorrencia] || 0) + 1;
72
- const relp = ocorrencia && (ocorrencia.relPath || oLegacy.path) ? (ocorrencia.relPath ?? oLegacy.path) : 'desconhecido';
72
+ const relp = ocorrencia.relPath ?? oLegacy.path ?? 'desconhecido';
73
73
  arquivosContagem[relp] = (arquivosContagem[relp] || 0) + 1;
74
74
  }
75
75
  const topTipos = Object.entries(tiposContagem).sort((arquivo, base) => base[1] - arquivo[1]).slice(0, topN).map(([chave, valor]) => ({
@@ -116,10 +116,10 @@ export async function fragmentarRelatorio(relatorioFull, dir, ts, options) {
116
116
  for (const fe of fePedacos[indice]) {
117
117
  // Suporta formato legado com 'path' para compatibilidade
118
118
  const feLegacy = fe;
119
- const rel = fe && (fe.relPath || fe.fullCaminho || feLegacy.path) ? String(fe.relPath ?? fe.fullCaminho ?? feLegacy.path) : 'desconhecido';
119
+ const rel = fe.relPath ?? fe.fullCaminho ?? feLegacy.path ?? 'desconhecido';
120
120
  let linhas = undefined;
121
121
  try {
122
- if (fe && typeof fe.content === 'string') {
122
+ if (typeof fe.content === 'string') {
123
123
  linhas = fe.content.split(/\r?\n/).length;
124
124
  }
125
125
  }
@@ -24,7 +24,7 @@ export function escapeNonAscii(string) {
24
24
  let out = '';
25
25
  for (const ch of string) {
26
26
  const cp = ch.codePointAt(0);
27
- if (cp === undefined || cp === null || cp <= ASCII_MAX) {
27
+ if (cp === undefined || cp <= ASCII_MAX) {
28
28
  out += ch;
29
29
  }
30
30
  else if (cp <= BMP_MAX) {
@@ -10,7 +10,7 @@
10
10
  */
11
11
  export function dedupeOcorrencias(arr) {
12
12
  const seen = new Map();
13
- for (const ocorrencia of arr || []) {
13
+ for (const ocorrencia of arr) {
14
14
  const key = `${ocorrencia.relPath ?? ''}|${String(ocorrencia.linha ?? '')}|${ocorrencia.tipo ?? ''}|${ocorrencia.mensagem ?? ''}`;
15
15
  if (!seen.has(key)) {
16
16
  seen.set(key, ocorrencia);
@@ -28,7 +28,8 @@ export function agruparAnalistas(analistas) {
28
28
  }
29
29
  const map = new Map();
30
30
  for (const arquivo of analistas) {
31
- const nome = String(arquivo['nome'] ?? 'desconhecido');
31
+ const rawNome = arquivo['nome'];
32
+ const nome = typeof rawNome === 'string' ? rawNome : 'desconhecido';
32
33
  const dur = Number(arquivo['duracaoMs'] ?? 0);
33
34
  const occ = Number(arquivo['ocorrencias'] ?? 0);
34
35
  const globalFlag = Boolean(arquivo['global'] ?? false);
@@ -10,7 +10,7 @@ export function formatarCodeMinimo(code, opts) {
10
10
  const formatted = normalizarNewlinesFinais(removerEspacosFinaisPorLinha(normalized));
11
11
  return {
12
12
  ok: true,
13
- parser: opts?.parser ?? 'code',
13
+ parser: opts?.parser,
14
14
  formatted,
15
15
  changed: formatted !== normalizarNewlinesFinais(normalized),
16
16
  };
@@ -18,7 +18,7 @@ async function carregarPrettierDoProjeto(baseDir) {
18
18
  const tryImportPrettier = async (resolved) => {
19
19
  try {
20
20
  const mod = await import(resolved);
21
- const candidate = mod && typeof mod === 'object' && 'default' in mod ? mod.default : mod;
21
+ const candidate = typeof mod === 'object' && 'default' in mod ? mod.default : mod;
22
22
  if (!candidate || !isPrettierApi(candidate)) {
23
23
  return null;
24
24
  }
@@ -135,7 +135,7 @@ export function lintCssLikeStylelint(opts) {
135
135
  return node.prelude ? normalizeWhitespace(csstree.generate(node.prelude)) : '';
136
136
  }
137
137
  function checkAtImport(node) {
138
- if (node.type !== 'Atrule' || String(node.name ?? '').toLowerCase() !== 'import') {
138
+ if (node.type !== 'Atrule' || typeof node.name !== 'string' || node.name.toLowerCase() !== 'import') {
139
139
  return;
140
140
  }
141
141
  const prelude = generateNodeText(node);
@@ -168,7 +168,7 @@ export function lintCssLikeStylelint(opts) {
168
168
  if (node.type !== 'Atrule') {
169
169
  return;
170
170
  }
171
- const name = String(node.name ?? '').toLowerCase();
171
+ const name = typeof node.name === 'string' ? node.name.toLowerCase() : '';
172
172
  const isKeyframes = name === 'keyframes' || name === '-webkit-keyframes' || name === '-moz-keyframes';
173
173
  if (!isKeyframes) {
174
174
  return;
@@ -192,7 +192,7 @@ export function lintCssLikeStylelint(opts) {
192
192
  if (node.type !== 'Atrule' || !node.block) {
193
193
  return;
194
194
  }
195
- const name = String(node.name ?? '').toLowerCase();
195
+ const name = typeof node.name === 'string' ? node.name.toLowerCase() : '';
196
196
  const prelude = generateNodeText(node);
197
197
  atruleStack.push({ name, prelude });
198
198
  }
@@ -278,7 +278,7 @@ export function lintCssLikeStylelint(opts) {
278
278
  if (node.type !== 'Atrule' || !node.block) {
279
279
  return;
280
280
  }
281
- const name = String(node.name ?? '').toLowerCase();
281
+ const name = typeof node.name === 'string' ? node.name.toLowerCase() : '';
282
282
  const prelude = generateNodeTextSimple(node.prelude);
283
283
  atruleStackForDecl.push({ name, prelude });
284
284
  }
@@ -289,7 +289,7 @@ export function lintCssLikeStylelint(opts) {
289
289
  if (!node.block?.children) {
290
290
  return;
291
291
  }
292
- const name = node.type === 'Atrule' ? String(node.name ?? '').toLowerCase() : '';
292
+ const name = node.type === 'Atrule' && typeof node.name === 'string' ? node.name.toLowerCase() : '';
293
293
  const prelude = node.type === 'Atrule' ? generateNodeTextSimple(node.prelude) : '';
294
294
  declStack.push({
295
295
  nodeType: node.type,
@@ -327,14 +327,11 @@ export function lintCssLikeStylelint(opts) {
327
327
  return;
328
328
  }
329
329
  const current = declStack[declStack.length - 1];
330
- const prop = String(node.property ?? '').toLowerCase();
330
+ const prop = node.property.toLowerCase();
331
331
  const value = node.value ? normalizeWhitespace(csstree.generate(node.value)) : '';
332
332
  const loc = node.loc?.start;
333
333
  checkImportant(node, loc);
334
334
  checkHttpUrl(value, loc);
335
- if (!current) {
336
- return;
337
- }
338
335
  const prev = current.seen.get(prop);
339
336
  if (!prev) {
340
337
  current.seen.set(prop, { value, line: loc?.line, column: loc?.column });
@@ -92,14 +92,14 @@ registerFormatter('.editorconfig', formatarEditorconfigMinimo);
92
92
  registerFormatter('.npmrc', formatarNpmrcMinimo);
93
93
  registerFormatter('.nvmrc', formatarNvmrcMinimo);
94
94
  registerFormatter('.json5', formatarJson5Minimo);
95
- registerFormatter('.ts', (code, relPath) => formatarTypeScriptMinimo(code, relPath ?? ''));
96
- registerFormatter('.tsx', (code, relPath) => formatarTypeScriptMinimo(code, relPath ?? ''));
97
- registerFormatter('.cts', (code, relPath) => formatarTypeScriptMinimo(code, relPath ?? ''));
98
- registerFormatter('.mts', (code, relPath) => formatarTypeScriptMinimo(code, relPath ?? ''));
99
- registerFormatter('.js', (code, relPath) => formatarJavaScriptMinimo(code, relPath ?? ''));
100
- registerFormatter('.jsx', (code, relPath) => formatarJavaScriptMinimo(code, relPath ?? ''));
101
- registerFormatter('.mjs', (code, relPath) => formatarJavaScriptMinimo(code, relPath ?? ''));
102
- registerFormatter('.cjs', (code, relPath) => formatarJavaScriptMinimo(code, relPath ?? ''));
95
+ registerFormatter('.ts', (code, relPath) => formatarTypeScriptMinimo(code, relPath));
96
+ registerFormatter('.tsx', (code, relPath) => formatarTypeScriptMinimo(code, relPath));
97
+ registerFormatter('.cts', (code, relPath) => formatarTypeScriptMinimo(code, relPath));
98
+ registerFormatter('.mts', (code, relPath) => formatarTypeScriptMinimo(code, relPath));
99
+ registerFormatter('.js', (code, relPath) => formatarJavaScriptMinimo(code, relPath));
100
+ registerFormatter('.jsx', (code, relPath) => formatarJavaScriptMinimo(code, relPath));
101
+ registerFormatter('.mjs', (code, relPath) => formatarJavaScriptMinimo(code, relPath));
102
+ registerFormatter('.cjs', (code, relPath) => formatarJavaScriptMinimo(code, relPath));
103
103
  export function getRegisteredFormatter(relPath) {
104
104
  return getFormatterForPath(relPath);
105
105
  }
@@ -16,7 +16,7 @@ export function getProtectedLinesFromTemplateLiterals(code, relPath) {
16
16
  try {
17
17
  const req = createRequire(import.meta.url);
18
18
  const parser = req('@babel/parser');
19
- const rp = (relPath ?? '').toLowerCase();
19
+ const rp = relPath.toLowerCase();
20
20
  const plugins = ['importMeta', 'dynamicImport', 'topLevelAwait', 'classProperties', 'classPrivateProperties', 'classPrivateMethods', 'classStaticBlock', 'optionalChaining', 'nullishCoalescingOperator', 'numericSeparator', 'logicalAssignment', 'privateIn', 'objectRestSpread', 'decorators-legacy'];
21
21
  const isTs = rp.endsWith('.ts') || rp.endsWith('.tsx') || rp.endsWith('.cts') || rp.endsWith('.mts');
22
22
  const isJsx = rp.endsWith('.jsx') || rp.endsWith('.tsx');
@@ -112,7 +112,7 @@ export function normalizarSeparadoresDeSecao(code, opts = {}) {
112
112
  if (!metrica) {
113
113
  continue;
114
114
  }
115
- const symbol = metrica[1] ?? '';
115
+ const symbol = metrica[1];
116
116
  if (!symbol) {
117
117
  continue;
118
118
  }
@@ -138,7 +138,7 @@ export function normalizarSeparadoresDeSecao(code, opts = {}) {
138
138
  if (!metrica) {
139
139
  return null;
140
140
  }
141
- const raw = (metrica[1] ?? '').trim();
141
+ const raw = (metrica[1]).trim();
142
142
  return {
143
143
  titulo: raw ? raw : null
144
144
  };