@mocoto/mahoraga 0.15.0 → 0.15.1

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 (49) hide show
  1. package/README.md +263 -26
  2. package/dist/analysts/js-ts/registrar.js +1 -1
  3. package/dist/analysts/react/analysts/analyst-react-hooks.js +30 -15
  4. package/dist/analysts/react/analysts/analyst-react.js +4 -2
  5. package/dist/analysts/react/detectors/detector-react-best-practices.js +7 -4
  6. package/dist/caretakers/caretaker-imports.js +0 -9
  7. package/dist/cli/commands/command-github-actions.js +0 -27
  8. package/dist/core/messages/en/cli/cli-command-github-actions-messages.js +0 -5
  9. package/dist/core/messages/en/github/index.js +0 -1
  10. package/dist/core/messages/ja/cli/cli-command-github-actions-messages.js +0 -5
  11. package/dist/core/messages/ja/github/index.js +0 -1
  12. package/dist/core/messages/pt/cli/cli-command-github-actions-messages.js +0 -5
  13. package/dist/core/messages/pt/github/index.js +0 -1
  14. package/dist/core/messages/zh/cli/cli-command-github-actions-messages.js +0 -5
  15. package/dist/core/messages/zh/github/index.js +0 -1
  16. package/dist/core/registry/file-registry.js +1 -1
  17. package/dist/node.loader.js +0 -2
  18. package/dist/shared/formatters/formatters/commons.js +36 -10
  19. package/dist/shared/formatters/formatters/shell.js +6 -3
  20. package/dist/types/analysts/index.js +1 -1
  21. package/docs/.obsidian/app.json +7 -0
  22. package/docs/.obsidian/appearance.json +8 -0
  23. package/docs/.obsidian/community-plugins.json +28 -0
  24. package/docs/.obsidian/core-plugins-migration.json +18 -0
  25. package/docs/.obsidian/core-plugins.json +73 -0
  26. package/docs/.obsidian/graph.json +22 -0
  27. package/docs/.obsidian/workspace.json +196 -0
  28. package/docs/01-arquitetura/ADR-001-estrutura-testes.md +31 -0
  29. package/docs/01-arquitetura/_index.md +152 -0
  30. package/docs/02-componentes/_index.md +294 -0
  31. package/docs/02-componentes/supressao-inline.md +88 -0
  32. package/docs/03-guias/_index.md +173 -0
  33. package/docs/03-guias/contribuindo.md +71 -0
  34. package/docs/03-guias/testes.md +133 -0
  35. package/docs/04-glossario/_index.md +29 -0
  36. package/docs/04-glossario/termos.md +247 -0
  37. package/docs/05-referencias/_index.md +87 -0
  38. package/docs/_home.md +140 -0
  39. package/docs/partials/AVISO-PROVENIENCIA.md +3 -0
  40. package/docs/templates/ADR.md +24 -0
  41. package/docs/templates/componente.md +34 -0
  42. package/docs/templates/guia.md +28 -0
  43. package/package.json +30 -31
  44. package/dist/app/github.js +0 -14
  45. package/dist/app/index.js +0 -1
  46. package/dist/core/messages/en/github/github-app-messages.js +0 -9
  47. package/dist/core/messages/ja/github/github-app-messages.js +0 -9
  48. package/dist/core/messages/pt/github/github-app-messages.js +0 -9
  49. package/dist/core/messages/zh/github/github-app-messages.js +0 -9
@@ -0,0 +1,152 @@
1
+ ---
2
+ Proveniência e Autoria: Este documento integra o projeto @mocoto/mahoraga (licença MIT-0).
3
+ tags: [moc, arquitetura]
4
+ created: 2026-07-24
5
+ updated: 2026-07-25
6
+ ---
7
+
8
+ # Arquitetura
9
+
10
+ ## Visão Geral
11
+
12
+ O Mahoraga é organizado em 6 camadas:
13
+
14
+ ### 1. Entry Point (`src/bin/index.ts`)
15
+
16
+ Binário executável (`#!/usr/bin/env node`). Inicializa o loader ESM customizado (aliases em runtime), configura handlers globais de erro, carrega configuração, versão, memória de conversação, registra todos os comandos via `registrarComandos()` e executa `program.parseAsync()`.
17
+
18
+ ### 2. CLI Layer (`src/cli/`)
19
+
20
+ Interface com o usuário via Commander.js. 27 comandos registrados em `commands.ts`, cada um implementado em um arquivo `command-*.ts`. Subcomandos para diagnóstico, guardian, CI/CD, licenças, compliance, manutenção, plugins.
21
+
22
+ ### 3. Core Layer (`src/core/`)
23
+
24
+ Motor central do sistema:
25
+ - **execution/**: Scanner, registry, workers, cache, ambiente, linguagens, schema
26
+ - **config/**: Configuração default, scoring, paths, segurança, filtros
27
+ - **parsing/**: Parsers baseados em Babel (AST) + parsers por linguagem
28
+ - **messages/**: Sistema de i18n com suporte a pt (padrão), en, zh, ja
29
+ - **workers/**: Worker pool para processamento paralelo
30
+ - **corrections/**: Auto-fix engine
31
+
32
+ ### 4. Analysis Layer (`src/analysts/`)
33
+
34
+ Analisadores especializados organizados por domínio:
35
+
36
+ **Detectores gerais** (aplicáveis a qualquer projeto):
37
+ - `detectors/`: 12 detectores: architecture, bugs-ml, code-fragile, dependencies, duplications, monorepo, performance, phantoms, recommendation, security, structure
38
+
39
+ **Analisadores por linguagem** (cada um com analysts/, detectors/, corrections/, scorers/):
40
+ - `js-ts/`, `react/`, `css/`, `css-in-js/`, `html/`, `svg/`, `xml/`, `tailwind/`, `python/`, `shell/`, `sql/`, `go/`, `rust/`, `php/`
41
+
42
+ **Analisadores de CI/CD** (cada um com analysts/, detectors/, corrections/, reports/, scorers/):
43
+ - `github-actions/`, `gitlab-ci/`, `circleci/`, `jenkins/`, `azure-pipelines/`
44
+
45
+ **Infraestrutura:**
46
+ - `registry/`: Autodiscovery de analistas
47
+ - `plugins/`: Sistema de plugins (analyst-formatter, detector-documentation, detector-markdown, detector-node)
48
+ - `corrections/`: Correções automáticas (quick-fixes, auto-fix, alias-imports, pruning, barrels, type-safety)
49
+ - `converters/`: Conversão entre plataformas CI/CD
50
+ - `scorers/`: Engine de pontuação
51
+ - `strategists/`: Estratégias de análise (archetypes, suggestions)
52
+
53
+ ### 5. Service Layer
54
+
55
+ | Módulo | Descrição |
56
+ |--------|-----------|
57
+ | `guardian/` | Pipeline de integridade com GPG (Ed25519). Baseline, snapshot, diff, sentinel, verifier |
58
+ | `licenses/` | Gerenciamento de licenças SPDX. Scanner, normalizer, policy, disclaimer, notice generator |
59
+ | `vulnerabilities/` | Scan de vulnerabilidades via npm audit |
60
+ | `caretakers/` | Transformações automáticas: imports, barrels, pruning, map-reversion, scoring |
61
+ | `reports/` | Relatórios: compliance (ISO 27001, SOC 2), advisor, archetypes, streaming NDJSON, fragments |
62
+
63
+ ### 6. Shared Layer (`src/shared/`)
64
+
65
+ Utilitários compartilhados entre módulos:
66
+ - `formatters/`: Motores de formatação (core, engines, formatters)
67
+ - `persistence/`: Persistência de estado
68
+ - `validation/`: Validação de dados
69
+ - `marketplace/`: Marketplace de analistas
70
+ - `plugins/`: Sistema de plugins
71
+ - `helpers/`: Helpers diversos
72
+
73
+ ### 7. Types (`src/types/`)
74
+
75
+ 14 namespaces de tipos TypeScript: analysts, caretakers, common, core, guardian, licenses, processing, project, scripts, sdk, shared, structure, vulnerabilities.
76
+
77
+ ## Fluxo de Dados
78
+
79
+ ```mermaid
80
+ sequenceDiagram
81
+ actor User
82
+ participant CLI as src/cli/
83
+ participant CORE as src/core/
84
+ participant REG as Registry
85
+ participant ANALYST as Analysts
86
+ participant SVC as Services
87
+
88
+ User->>CLI: mahoraga diagnosticar
89
+ CLI->>CORE: scanRepository()
90
+ CORE->>REG: autodiscover()
91
+ REG-->>CORE: analysts[]
92
+ CORE->>ANALYST: analyze(project)
93
+ ANALYST-->>CORE: results[]
94
+ CORE->>SVC: compliance/generate
95
+ SVC-->>CORE: report
96
+ CORE-->>CLI: aggregated results
97
+ CLI-->>User: formatted output
98
+ ```
99
+
100
+ ## Alias System
101
+
102
+ O projeto usa path aliases estilo `@pasta/arquivo` para todos os imports internos, resolvidos em três níveis:
103
+
104
+ 1. **tsconfig.json**: paths mapping (~160+ entradas)
105
+ 2. **node.loader.ts**: Loader ESM customizado para runtime
106
+ 3. **vitest.config.ts**: Aliases para ambiente de teste
107
+
108
+ ## Decisões Arquiteturais
109
+
110
+ - [[ADR-001-estrutura-testes|ADR-001: Estrutura de Testes com Vitest]]
111
+ - Novos ADRs devem seguir o template em `templates/ADR.md`
112
+
113
+ ## Diagrama de Componentes
114
+
115
+ ```mermaid
116
+ flowchart LR
117
+ subgraph CLI["CLI Layer"]
118
+ CMD[commands.ts]
119
+ GHA[github-actions]
120
+ DIAG[diagnosticar]
121
+ LIC[licencas]
122
+ end
123
+ subgraph CORE["Core"]
124
+ EXEC[execution]
125
+ CONF[config]
126
+ MSG[messages]
127
+ WRK[workers]
128
+ end
129
+ subgraph ANAL["Analysts"]
130
+ LANG[js-ts/react/css/...]
131
+ CICD[gha/gitlab/circle/...]
132
+ DET[detectores]
133
+ CORR[corrections]
134
+ end
135
+ subgraph SVC["Services"]
136
+ GRD[guardian]
137
+ CAR[caretakers]
138
+ RPT[reports]
139
+ end
140
+ CLI --> CORE
141
+ CORE --> ANAL
142
+ CORE --> SVC
143
+ ```
144
+
145
+ ## Temas Arquiteturais
146
+
147
+ - **Modularidade**: Cada módulo tem barrel (`index.ts`) e tipos próprios
148
+ - **Autodiscovery**: Novos analistas são detectados sem registro manual
149
+ - **i18n first**: Mensagens em pt, en, zh, ja desde o design
150
+ - **Plugin system**: Analistas e detectores podem ser estendidos via plugins
151
+ - **Streaming**: NDJSON para projetos grandes (>10k arquivos)
152
+ - **Worker pool**: Processamento paralelo para análise intensiva
@@ -0,0 +1,294 @@
1
+ ---
2
+ Proveniência e Autoria: Este documento integra o projeto @mocoto/mahoraga (licença MIT-0).
3
+ tags: [moc, componentes]
4
+ created: 2026-07-24
5
+ updated: 2026-07-25
6
+ ---
7
+
8
+ # Componentes
9
+
10
+ ## src/bin/
11
+
12
+ | Arquivo | Função |
13
+ |---------|--------|
14
+ | `index.ts` | Entry point. Loader ESM, handlers de erro, registro de comandos |
15
+
16
+ ## src/cli/
17
+
18
+ Interface de linha de comando. Commander.js com 27 comandos.
19
+
20
+ ### commands/
21
+
22
+ | Arquivo | Comando | Descrição |
23
+ |---------|---------|-----------|
24
+ | `command-diagnostic.ts` | `diagnosticar` / `diag` | Análise completa do projeto |
25
+ | `command-guardian.ts` | `guardian` | Monitoramento de integridade GPG |
26
+ | `command-formatters.ts` | `formatters` | Gerenciamento de formatadores |
27
+ | `command-format.ts` | `formatar` | Formatação automática |
28
+ | `command-otimizar-svg.ts` | `otimizar-svg` | Otimização de SVGs |
29
+ | `command-podar.ts` | `podar` | Remoção de arquivos órfãos |
30
+ | `command-atualizar.ts` | `atualizar` | Auto-update |
31
+ | `command-fix-types.ts` | `fix-types` | Correção de tipos inseguros |
32
+ | `command-analistas.ts` | `analistas` | Listagem de analistas/detectores |
33
+ | `command-metricas.ts` | `metricas` | Métricas de execução |
34
+ | `command-licencas.ts` | `licencas` | Scan de licenças e notices |
35
+ | `command-vulnerabilities.ts` | `vulnerabilidades` | Scan de vulnerabilities |
36
+ | `command-plugins.ts` | `plugins` | Gerenciamento de plugins |
37
+ | `command-marketplace.ts` | `marketplace` | Marketplace de analistas |
38
+ | `command-imports.ts` | `imports` | Gerenciamento de aliases |
39
+ | `command-barrels.ts` | `barrels` | Gerenciamento de index.ts |
40
+ | `command-names.ts` | `names` | Extração/renomeação de variáveis |
41
+ | `command-reverter.ts` | `reverter` | Rollback de movimentações |
42
+ | `command-compliance.ts` | `compliance` | Relatórios ISO 27001, SOC 2 |
43
+ | `command-convert.ts` | `convert` / `conv` | Conversão entre CI/CD |
44
+ | `command-github-actions.ts` | `github-actions` | Análise GitHub Actions |
45
+ | `command-gitlab-ci.ts` | `gitlab-ci` | Análise GitLab CI |
46
+ | `command-circleci.ts` | `circleci` | Análise CircleCI |
47
+ | `command-jenkins.ts` | `jenkins` | Análise Jenkins |
48
+ | `command-azure.ts` | `azure` | Análise Azure Pipelines |
49
+ | `command-perf.ts` | `perf` | Snapshots de performance |
50
+
51
+ ### Outros diretórios
52
+
53
+ | Diretório | Conteúdo |
54
+ |-----------|----------|
55
+ | `diagnostic/` | Opções e processamento de diagnóstico |
56
+ | `handlers/` | Handlers auxiliares (vulnerabilidades, etc.) |
57
+ | `helpers/` | Exit codes, processPatternList, sair |
58
+ | `options/` | Opções compartilhadas entre comandos |
59
+
60
+ ## src/core/
61
+
62
+ Motor central do sistema.
63
+
64
+ ### execution/
65
+
66
+ Scanner principal, registry de arquivos, executor de análise, cache (analysis, AST), inquisitor, linguagens, parse-errors, schema, structure-json, worker pool integration.
67
+
68
+ ### config/
69
+
70
+ Configuração central: defaults, scoring, conventions, excludes, filters, paths, security, chalk-safe, include-exclude, traverse, format, auto-fix.
71
+
72
+ ### parsing/
73
+
74
+ Parsers baseados em Babel (babel-narrow) + parsers por linguagem em `langs/`. Filtros, plugins, utils.
75
+
76
+ ### messages/
77
+
78
+ Sistema de i18n organizado por idioma (`pt/`, `en/`, `zh/`, `ja/`) e por domínio (`cli/`, `github/`, `analysts/`, etc.). Cada pasta contém subpastas para cada módulo que possui mensagens. Ícones compartilhados em `icons/`.
79
+
80
+ ### workers/
81
+
82
+ Worker pool para processamento paralelo. Gerencia fila de tarefas, workers, resultados.
83
+
84
+ ### Correção e Formatação
85
+
86
+ - `corrections/`: Auto-fix engine
87
+ - `formatters/`: Registro de formatadores built-in
88
+
89
+ ### Utilitários
90
+
91
+ - `registry/`: File registry + paths
92
+ - `reporting/`: Default reporter
93
+ - `runtime/`: Node adapter
94
+ - `schema/`: Schema versioning
95
+ - `utils/`: chalk-safe, exec-safe, import-safe, type declarations
96
+
97
+ ## src/analysts/
98
+
99
+ Sistema de análise multi-linguagem e multi-CI/CD.
100
+
101
+ ### Detectores Gerais (`detectors/`)
102
+
103
+ 12 detectores especializados:
104
+ - **architecture**: Análise de estrutura arquitetural
105
+ - **bugs-ml**: Detecção de bugs via ML (8 padrões, pontuação Bayesiana)
106
+ - **code-fragile**: Código frágil e propenso a erros
107
+ - **dependencies**: Análise de dependências
108
+ - **duplications**: Detecção de duplicação
109
+ - **monorepo**: Suporte a monorepos (pnpm-workspace, lerna, nx, turbo)
110
+ - **performance**: Problemas de performance
111
+ - **phantoms**: Arquivos fantasma (não importados)
112
+ - **recommendation**: Recomendações de boas práticas
113
+ - **security**: Problemas de segurança
114
+ - **structure**: Problemas estruturais
115
+
116
+ ### Infraestrutura
117
+
118
+ | Diretório | Função |
119
+ |-----------|--------|
120
+ | `registry/` | Registro central e autodiscovery |
121
+ | `plugins/` | Plugin system (analyst-formatter, detector-documentation, detector-markdown, detector-node) |
122
+ | `corrections/` | Quick-fixes, auto-fix, alias-imports, pruning, barrels, type-safety, map-reversion, scoring |
123
+ | `converters/` | Conversão entre plataformas CI/CD |
124
+ | `scorers/` | Engine de pontuação |
125
+ | `strategists/` | Archetypes, suggestions contextuais, operator-structure |
126
+ | `architects/` | Análise de estrutura de projetos, archetypes, diagnostic, signals |
127
+
128
+ ### Analisadores por Linguagem
129
+
130
+ Cada um com estrutura `analysts/`, `detectors/`, `corrections/`, `scorers/`:
131
+
132
+ | Linguagem | Parser | Implementação |
133
+ |-----------|--------|---------------|
134
+ | JavaScript/TypeScript | Babel (AST) | `js-ts/` |
135
+ | React/JSX | Babel | `react/` |
136
+ | CSS | postcss | `css/` + `css/plugins/` |
137
+ | CSS-in-JS | postcss | `css-in-js/` + `plugins/` |
138
+ | HTML | htmlparser2 | `html/` |
139
+ | SVG | heuristic | `svg/` |
140
+ | XML | fast-xml-parser | `xml/` |
141
+ | Tailwind CSS | heuristic | `tailwind/` + `plugins/` |
142
+ | Python | heuristic | `python/` |
143
+ | Shell | heuristic | `shell/` |
144
+ | SQL | heuristic | `sql/` |
145
+ | Go | heuristic | `go/` |
146
+ | Rust | heuristic | `rust/` |
147
+ | PHP | heuristic | `php/` |
148
+
149
+ ### Analisadores de CI/CD
150
+
151
+ Cada um com `analysts/`, `detectors/`, `corrections/`, `reports/`, `scorers/`:
152
+
153
+ | Plataforma | Diretório |
154
+ |------------|-----------|
155
+ | GitHub Actions | `github-actions/` |
156
+ | GitLab CI | `gitlab-ci/` |
157
+ | CircleCI | `circleci/` |
158
+ | Jenkins | `jenkins/` |
159
+ | Azure Pipelines | `azure-pipelines/` |
160
+
161
+ ## src/guardian/
162
+
163
+ Pipeline de integridade com assinatura GPG (Ed25519).
164
+
165
+ | Arquivo | Função |
166
+ |---------|--------|
167
+ | `baseline.ts` | Gerenciamento de baselines (criação, carga, salvamento) |
168
+ | `constants.ts` | Constantes do sistema |
169
+ | `diff.ts` | Diferenças entre baseline e estado atual |
170
+ | `gpg.ts` | Assinatura e verificação GPG |
171
+ | `hash.ts` | Hashing de arquivos (xxhash) |
172
+ | `integrity.ts` | Verificação de integridade central |
173
+ | `records.ts` | Registros de auditoria |
174
+ | `result.ts` | Tipos de resultado |
175
+ | `sentinel.ts` | Monitoramento sentinel contínuo |
176
+ | `snapshot.ts` | Snapshots de integridade |
177
+ | `verifier.ts` | Verificador de integridade |
178
+ | `watcher-hidden.ts` | Watcher oculto para detecção de alterações |
179
+
180
+ ## src/licenses/
181
+
182
+ Gestão de licenças SPDX.
183
+
184
+ | Arquivo | Função |
185
+ |---------|--------|
186
+ | `disclaimer.ts` | Adição/verificação de headers SPDX |
187
+ | `fs-utils.ts` | Utilitários de filesystem |
188
+ | `generate-notices.ts` | Geração de THIRD-PARTY-NOTICES.txt |
189
+ | `header-options.ts` | Opções de headers SPDX |
190
+ | `licenses.ts` | Scan de licenças em dependências |
191
+ | `normalizer.ts` | Normalização de nomes de licenças |
192
+ | `policy.ts` | Políticas de licença (checkLicenseStatus) |
193
+ | `scanner.ts` | Scanner de dependências |
194
+ | `types.ts` | Tipos do módulo |
195
+ | `spdx.d.ts` | Declaração de tipos SPDX |
196
+
197
+ ## src/vulnerabilities/
198
+
199
+ Scan de vulnerabilidades.
200
+
201
+ | Arquivo | Função |
202
+ |---------|--------|
203
+ | `npm-audit.ts` | Integração com npm audit |
204
+ | `scanner.ts` | Scanner genérico |
205
+ | `vulnerabilities.ts` | Lógica principal de scan |
206
+
207
+ ## src/caretakers/
208
+
209
+ Transformações automáticas no código fonte.
210
+
211
+ | Arquivo | Função |
212
+ |---------|--------|
213
+ | `caretaker-imports.ts` | Gestão de aliases de import |
214
+ | `imports.ts` | Lógica de imports |
215
+ | `imports-barrel.ts` | Gerenciamento de barrels (index.ts) |
216
+ | `map-reversion.ts` | Reversão de mapas de renomeação |
217
+ | `pruning.ts` | Poda de arquivos órfãos |
218
+ | `scoring.ts` | Pontuação de caretakers |
219
+
220
+ ## src/reports/
221
+
222
+ Geração de relatórios.
223
+
224
+ | Arquivo/Diretório | Função |
225
+ |-------------------|--------|
226
+ | `advisor.ts` | Conselheiro de diagnóstico |
227
+ | `advisor-mahoraga.ts` | Conselheiro específico do mahoraga |
228
+ | `analise-async-patterns.ts` | Análise de padrões assíncronos |
229
+ | `async-analysis.ts` | Análise assíncrona |
230
+ | `compliance.ts` | Relatórios de compliance |
231
+ | `compliance/` | ISO 27001, SOC 2 mappers |
232
+ | `filter-smart.ts` | Filtro inteligente de dados |
233
+ | `fragmentation.ts` | Fragmentação de relatórios grandes |
234
+ | `generator-report.ts` | Gerador de relatórios |
235
+ | `processing.ts` | Processamento de relatórios |
236
+ | `reader.ts` | Leitor de relatórios salvos |
237
+ | `report-archetypes.ts` | Archetypes de relatórios |
238
+ | `report-caretaker-health.ts` | Saúde do caretaker |
239
+ | `report-patterns-usage.ts` | Padrões de uso |
240
+ | `report-pruning.ts` | Relatório de poda |
241
+ | `report-structure.ts` | Estrutura de relatórios |
242
+ | `report-type-definitions.ts` | Tipos de relatórios |
243
+ | `streaming.ts` | Streaming de dados |
244
+ | `streaming-report.ts` | Streaming NDJSON |
245
+ | `structure.ts` | Estrutura de relatórios |
246
+
247
+ ## src/shared/
248
+
249
+ Utilitários compartilhados.
250
+
251
+ | Diretório/Arquivo | Função |
252
+ |-------------------|--------|
253
+ | `context-project.ts` | Contexto do projeto |
254
+ | `data-processing/` | Processamento de dados |
255
+ | `formatters/` | Motores de formatação (core, engines, formatters) com suporte a supressão inline via `@mahoraga-disable` |
256
+ | `helpers.ts` / `helpers/` | Helpers diversos |
257
+ | `impar.ts` | Utilitário ímpar |
258
+ | `imports.ts` | Imports compartilhados |
259
+ | `marketplace/` | Marketplace de analistas |
260
+ | `memory.ts` | Memória de conversação persistente |
261
+ | `persistence.ts` / `persistence/` | Persistência de estado |
262
+ | `plugins/` | Sistema de plugins |
263
+ | `structure.ts` | Estrutura de dados |
264
+ | `validation.ts` / `validation/` | Validação de dados |
265
+
266
+ ## src/types/
267
+
268
+ Definições de tipos TypeScript. 14 namespaces:
269
+
270
+ | Namespace | Conteúdo |
271
+ |-----------|----------|
272
+ | `analysts/` | Tipos de analisadores e correções |
273
+ | `caretakers/` | Tipos de caretakers |
274
+ | `common/` | Tipos comuns |
275
+ | `core/` | Tipos do core (config, execution, messages, parsing) |
276
+ | `guardian/` | Tipos do guardian |
277
+ | `licenses/` | Tipos de licenças |
278
+ | `processing/` | Tipos de processamento |
279
+ | `project/` | Tipos de projeto |
280
+ | `scripts/` | Tipos de scripts |
281
+ | `sdk/` | Tipos do SDK |
282
+ | `shared/` | Tipos compartilhados |
283
+ | `structure/` | Tipos estruturais |
284
+ | `vulnerabilities/` | Tipos de vulnerabilidades |
285
+
286
+ ## src/scripts/
287
+
288
+ | Arquivo | Função |
289
+ |---------|--------|
290
+ | `migrar-aliases.ts` | Script de migração de aliases de import |
291
+
292
+ ## src/node.loader.ts
293
+
294
+ Loader ESM customizado que resolve path aliases (`@core/`, `@cli/`, `@analysts/`, `@types/`, etc.) em tempo de execução. ~160+ mapeamentos.
@@ -0,0 +1,88 @@
1
+ ---
2
+ Proveniência e Autoria: Este documento integra o projeto @mocoto/mahoraga (licença MIT-0).
3
+ tags: [componente]
4
+ status: aceito
5
+ created: 2026-07-25
6
+ ---
7
+
8
+ # Supressão Inline (`@mahoraga-disable`)
9
+
10
+ ## Propósito
11
+
12
+ Permite que o usuário desabilite analistas e formatadores em linhas ou blocos específicos do código fonte, via comentários inline. Evita falsos positivos e protege trechos que não devem ser modificados.
13
+
14
+ ## Arquitetura
15
+
16
+ ```
17
+ Código fonte com @mahoraga-disable
18
+
19
+
20
+ suppressao.ts::extrairSupressoes(src)
21
+
22
+
23
+ RegrasSuprimidas { porLinha: Map<line, Set<rule>>, blocosAtivos: Set<rule> }
24
+
25
+ ├──► Analysts: analyst-wrapper.ts::filtrarOcorrenciasSuprimidas()
26
+
27
+ └──► Formatter: commons.ts::extrairLinhasProtegidasFormatador(src)
28
+
29
+
30
+ Set<number> (linhas protegidas)
31
+
32
+
33
+ collapseRepeatedPunct(code, protectedLines)
34
+ fixSpacingAroundPunct(code, protectedLines)
35
+ normalizeRelationalOperators(code, protectedLines)
36
+ ```
37
+
38
+ ## Componentes
39
+
40
+ ### `src/shared/helpers/suppressao.ts`
41
+
42
+ Core do sistema. Parseia comentários `@mahoraga-disable` no código e retorna `RegrasSuprimidas`.
43
+
44
+ **Exporta:**
45
+ - `extrairSupressoes(src)` — analisa o código e retorna as supressões
46
+ - `isRegraSuprimida(regra, linha, supressoes)` — verifica se uma regra está suprimida em uma linha
47
+ - `filtrarOcorrenciasSuprimidas(ocorrencias, analista, src)` — filtra ocorrências suprimidas
48
+
49
+ ### `src/shared/formatters/formatters/commons.ts`
50
+
51
+ Integração com o formatador mínimo.
52
+
53
+ **Exporta:**
54
+ - `extrairLinhasProtegidasFormatador(src)` — converte supressões em `Set<number>` de linhas protegidas para o formatador
55
+ - `corrigirPontuacaoECodigo(code, protectedLines?)` — função principal com suporte a proteção
56
+ - `corrigirPontuacaoECodigoConservador(code, protectedLines?)` — versão conservadora
57
+
58
+ ### `src/analysts/plugins/analyst-formatter.ts`
59
+
60
+ Integração com o analista de formatação.
61
+
62
+ - `extrairLinhasProtegidas(src)` — bridge que alimenta `formatarMarkdownMinimo()` com linhas protegidas
63
+
64
+ ## Regras do Formatador
65
+
66
+ | Regra | Efeito |
67
+ |-------|--------|
68
+ | `pontuacao-repetida` | Impede colapso de `;;`, ` ...`, `,, etc |
69
+ | `espacamento-incorreto` | Impede correção de espaços ao redor de pontuação |
70
+ | `formatador` | Desativa todas as correções |
71
+ | `analista-formatador` | Desativa apenas o analista de verificação |
72
+ | `*` | Desativa todos os sistemas |
73
+
74
+ ## Exemplos
75
+
76
+ ```typescript
77
+ // @mahoraga-disable-next-line pontuacao-repetida
78
+ const x = a;; // ;; preservado
79
+
80
+ // @mahoraga-disable formatador
81
+ url = "https://example.com/path";
82
+ // @mahoraga-enable formatador
83
+ ```
84
+
85
+ ## Testes
86
+
87
+ - `tests/shared/helpers/suppressao.test.ts` — testes do parser de supressão
88
+ - `tests/shared/formatters/formatters/commons.test.ts` — testes do formatador