@skip-ai/scanner 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.d.ts CHANGED
@@ -1,3 +1,7 @@
1
+ /** Máscara um token pra nunca imprimir completo em logs/erros: 2ef0...79fb. */
2
+ export declare function maskToken(token: string): string;
3
+ /** Resolve o token: prioriza --token, depois SKIP_TOKEN env var. */
4
+ export declare function resolveToken(cliToken: string | undefined): string;
1
5
  export interface SendOptions {
2
6
  file: string;
3
7
  token: string;
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,eAAO,MAAM,gBAAgB,2BAA2B,CAAC;AAEzD,wBAAgB,QAAQ,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG;IAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,GAAG,WAAW,CAAA;CAAE,CAgDrH"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAGA,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAEjE;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,eAAO,MAAM,gBAAgB,2BAA2B,CAAC;AAEzD,wBAAgB,QAAQ,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG;IAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,GAAG,WAAW,CAAA;CAAE,CAyDrH"}
package/dist/cli.js CHANGED
@@ -1,5 +1,17 @@
1
1
  import { Command } from 'commander';
2
2
  import { CLI_VERSION } from './reporter.js';
3
+ /** Máscara um token pra nunca imprimir completo em logs/erros: 2ef0...79fb. */
4
+ export function maskToken(token) {
5
+ if (!token)
6
+ return '(vazio)';
7
+ if (token.length <= 8)
8
+ return token.slice(0, 2) + '...' + token.slice(-2);
9
+ return token.slice(0, 4) + '...' + token.slice(-4);
10
+ }
11
+ /** Resolve o token: prioriza --token, depois SKIP_TOKEN env var. */
12
+ export function resolveToken(cliToken) {
13
+ return cliToken || process.env.SKIP_TOKEN || '';
14
+ }
3
15
  export const DEFAULT_BASE_URL = 'https://app.goskip.dev';
4
16
  export function parseCli(argv = process.argv) {
5
17
  const program = new Command()
@@ -11,7 +23,7 @@ export function parseCli(argv = process.argv) {
11
23
  .command('send', { isDefault: true })
12
24
  .description('Envia um payload já montado (pelo agente/skill) para o Skip Cloud. Este é o modo recomendado.')
13
25
  .requiredOption('-f, --file <path>', 'Arquivo JSON com o payload (gerado pelo agente)')
14
- .requiredOption('-t, --token <token>', 'Token do projeto (do .skip.json ou dashboard)')
26
+ .option('-t, --token <token>', 'Token do projeto (ou defina SKIP_TOKEN no ambiente)')
15
27
  .option('-u, --url <url>', 'URL do Skip Cloud', DEFAULT_BASE_URL)
16
28
  .option('--no-polling', 'Enviar sem aguardar o enriquecimento', false)
17
29
  .option('-v, --verbose', 'Exibir detalhes no terminal', false)
@@ -20,7 +32,7 @@ export function parseCli(argv = process.argv) {
20
32
  program
21
33
  .command('scan')
22
34
  .description('Modo legado: extrai rotas/componentes via regex e envia. Menos inteligente que o agente.')
23
- .option('-t, --token <token>', 'Token do projeto. Obrigatório salvo em --dry-run.')
35
+ .option('-t, --token <token>', 'Token do projeto (ou SKIP_TOKEN). Obrigatório salvo em --dry-run.')
24
36
  .option('-u, --url <url>', 'URL do Skip Cloud', DEFAULT_BASE_URL)
25
37
  .option('-d, --dir <dir>', 'Diretório raiz do projeto', process.cwd())
26
38
  .option('-i, --ignore <patterns...>', 'Padrões a ignorar além do padrão', [])
@@ -28,15 +40,22 @@ export function parseCli(argv = process.argv) {
28
40
  .option('-v, --verbose', 'Exibir detalhes do scan no terminal', false)
29
41
  .action(() => { });
30
42
  program.parse(argv);
31
- const [cmd] = program.commands.filter((c) => c.name() === program.args[0] || program.args.length === 0);
32
43
  const commandName = program.args[0] === 'scan' ? 'scan' : 'send';
33
44
  const command = program.commands.find((c) => c.name() === commandName);
34
45
  const opts = (command?.opts() ?? {});
35
- // Validação específica do modo scan: token obrigatório fora do dry-run
36
- if (commandName === 'scan') {
46
+ // Resolve token via --token OU SKIP_TOKEN env var
47
+ if (commandName === 'send') {
48
+ const sendOpts = opts;
49
+ sendOpts.token = resolveToken(sendOpts.token);
50
+ if (!sendOpts.token) {
51
+ program.error("erro: token obrigatório. Use --token=<TOKEN> ou defina SKIP_TOKEN no ambiente.", { exitCode: 1 });
52
+ }
53
+ }
54
+ else {
37
55
  const scanOpts = opts;
56
+ scanOpts.token = resolveToken(scanOpts.token);
38
57
  if (!scanOpts.dryRun && !scanOpts.token) {
39
- program.error("erro: a opção '-t, --token <token>' é obrigatória (ou use --dry-run para testar sem enviar).", { exitCode: 1 });
58
+ program.error("erro: token obrigatório. Use --token=<TOKEN> ou SKIP_TOKEN, ou --dry-run para testar sem enviar.", { exitCode: 1 });
40
59
  }
41
60
  }
42
61
  return { command: commandName, opts };
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAmB5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;AAEzD,MAAM,UAAU,QAAQ,CAAC,OAAiB,OAAO,CAAC,IAAI;IACpD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;SAC1B,IAAI,CAAC,cAAc,CAAC;SACpB,WAAW,CAAC,2DAA2D,CAAC;SACxE,OAAO,CAAC,WAAW,CAAC,CAAC;IAExB,sEAAsE;IACtE,OAAO;SACJ,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;SACpC,WAAW,CAAC,+FAA+F,CAAC;SAC5G,cAAc,CAAC,mBAAmB,EAAE,iDAAiD,CAAC;SACtF,cAAc,CAAC,qBAAqB,EAAE,+CAA+C,CAAC;SACtF,MAAM,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;SAChE,MAAM,CAAC,cAAc,EAAE,sCAAsC,EAAE,KAAK,CAAC;SACrE,MAAM,CAAC,eAAe,EAAE,6BAA6B,EAAE,KAAK,CAAC;SAC7D,MAAM,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAEpB,oEAAoE;IACpE,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,0FAA0F,CAAC;SACvG,MAAM,CAAC,qBAAqB,EAAE,mDAAmD,CAAC;SAClF,MAAM,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;SAChE,MAAM,CAAC,iBAAiB,EAAE,2BAA2B,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SACrE,MAAM,CAAC,4BAA4B,EAAE,kCAAkC,EAAE,EAAE,CAAC;SAC5E,MAAM,CAAC,WAAW,EAAE,6CAA6C,EAAE,KAAK,CAAC;SACzE,MAAM,CAAC,eAAe,EAAE,qCAAqC,EAAE,KAAK,CAAC;SACrE,MAAM,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAEpB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEpB,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IACxG,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACjE,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,WAAW,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAA8B,CAAC;IAElE,uEAAuE;IACvE,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAmB,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACxC,OAAO,CAAC,KAAK,CACX,8FAA8F,EAC9F,EAAE,QAAQ,EAAE,CAAC,EAAE,CAChB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -31,11 +31,13 @@ import { detectGuidedFlows } from './scanner/guided-flows.js';
31
31
  import { appendHistory } from './scanner/history.js';
32
32
  import { buildReport, maskReportSecrets, CLI_VERSION } from './reporter.js';
33
33
  import { DEFAULT_IGNORE_PATTERNS } from './scanner/ignore.js';
34
+ import { maskToken } from './cli.js';
34
35
  // ============ MODO SEND (transportador puro) ============
35
36
  async function sendMode(opts) {
36
37
  console.log(banner(CLI_VERSION));
37
38
  console.log(chalk.dim(` Modo: send (transportador)`));
38
39
  console.log(chalk.dim(` Plataforma: ${opts.url}`));
40
+ console.log(chalk.dim(` Token: ${maskToken(opts.token)}`));
39
41
  console.log(chalk.dim(` Arquivo: ${opts.file}\n`));
40
42
  // 1. Ler o payload do arquivo
41
43
  if (!fs.existsSync(opts.file)) {
@@ -51,9 +53,13 @@ async function sendMode(opts) {
51
53
  throw new Error(`JSON inválido em ${opts.file}: ${e instanceof Error ? e.message : String(e)}`);
52
54
  }
53
55
  readSpinner.succeed('Payload carregado.');
54
- // 2. Checagem mínima de estrutura
55
- if (!payload.navigationMap && !payload.routes) {
56
- throw new Error('O payload não contém navigationMap nem routes. Use o validador da skill antes de enviar: node validate-report.js <arquivo>');
56
+ // 2. Checagem mínima de estrutura — bloqueia se não há dados de scan
57
+ if (!payload.navigationMap && !payload.routes && !payload.wcag) {
58
+ throw new Error('O payload não contém navigationMap, routes nem wcag. Use o validador da skill antes de enviar: node validate-report.js <arquivo>');
59
+ }
60
+ // Aviso (não bloqueia) se faltar auditoria WCAG — o scan estará incompleto
61
+ if (!payload.wcag) {
62
+ console.log(chalk.yellow(' ⚠ Payload sem bloco wcag — o scan estará incompleto no dashboard.'));
57
63
  }
58
64
  // 3. Preencher metadados se faltarem
59
65
  if (!payload.metadata) {
@@ -133,7 +139,7 @@ async function scanMode(opts) {
133
139
  contentsByFile[s.filePath] = '';
134
140
  }
135
141
  }
136
- const violations = auditWcag(navigationMap.screens, contentsByFile);
142
+ const { violations, checks } = auditWcag(navigationMap.screens, contentsByFile);
137
143
  const summary = summarize(violations);
138
144
  const { score, level, total } = calculateScore(violations);
139
145
  const wcag = {
@@ -141,10 +147,11 @@ async function scanMode(opts) {
141
147
  level,
142
148
  violations,
143
149
  summary,
150
+ checks,
144
151
  auditedAt: new Date().toISOString(),
145
152
  rulesVersion: WCAG_RULES_VERSION,
146
153
  };
147
- auditSpinner.succeed(`WCAG: score ${colorScore(score)} (${level}), ${total} violação(ões) [${summary.critical}c/${summary.serious}s/${summary.moderate}m/${summary.minor}i]`);
154
+ auditSpinner.succeed(`WCAG: score ${colorScore(score)} (${level}), ${total} violação(ões) únicas, ${checks.total} checks [${summary.critical}c/${summary.serious}s/${summary.moderate}m/${summary.minor}i/${summary.unknown}u]`);
148
155
  // ---- Fluxos guiados ----
149
156
  const guidedFlows = detectGuidedFlows(navigationMap);
150
157
  // ---- Histórico (local, enviado junto pra o dashboard) ----
@@ -156,6 +163,7 @@ async function scanMode(opts) {
156
163
  serious: summary.serious,
157
164
  moderate: summary.moderate,
158
165
  minor: summary.minor,
166
+ unknown: summary.unknown,
159
167
  };
160
168
  const history = appendHistory(rootDir, historyEntry);
161
169
  const uniqueFiles = new Set([
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import type { NavigationMap } from './scanner/navigation.js';
6
6
  import type { WcagReport } from './scanner/wcag.js';
7
7
  import type { GuidedFlow } from './scanner/guided-flows.js';
8
8
  import type { HistoryEntry } from './scanner/history.js';
9
- export declare const CLI_VERSION = "0.4.0";
9
+ export declare const CLI_VERSION = "0.5.0";
10
10
  export interface ScanMetadata {
11
11
  framework: string;
12
12
  language: string;
package/dist/reporter.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { maskObject } from './scanner/secrets.js';
2
- export const CLI_VERSION = '0.4.0';
2
+ export const CLI_VERSION = '0.5.0';
3
3
  /**
4
4
  * Monta o payload final (ScanReport) enviado para a API.
5
5
  */
@@ -7,6 +7,7 @@ export interface HistoryEntry {
7
7
  serious: number;
8
8
  moderate: number;
9
9
  minor: number;
10
+ unknown: number;
10
11
  }
11
12
  export declare const HISTORY_FILE = ".skip-history.json";
12
13
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/scanner/history.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,YAAY,uBAAuB,CAAC;AAGjD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,CAS3D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,EAAE,CAalF"}
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/scanner/history.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,YAAY,uBAAuB,CAAC;AAGjD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,CAS3D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,EAAE,CAalF"}
@@ -1 +1 @@
1
- {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/scanner/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAaxB,MAAM,CAAC,MAAM,YAAY,GAAG,oBAAoB,CAAC;AACjD,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QACxD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,KAAmB;IAChE,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC;IAE5C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,qDAAqD;IACvD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/scanner/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAcxB,MAAM,CAAC,MAAM,YAAY,GAAG,oBAAoB,CAAC;AACjD,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QACxD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,KAAmB;IAChE,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC;IAE5C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,qDAAqD;IACvD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"score.d.ts","sourceRoot":"","sources":["../../src/scanner/score.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAEpE,+DAA+D;AAC/D,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAKpD,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,YAAY;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,KAAK,EAAE,SAAS,CAAC;IACjB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,WAAW,CAcvE;AAsBD,kEAAkE;AAClE,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKhD"}
1
+ {"version":3,"file":"score.d.ts","sourceRoot":"","sources":["../../src/scanner/score.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAEpE,+DAA+D;AAC/D,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAMpD,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,YAAY;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,KAAK,EAAE,SAAS,CAAC;IACjB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,WAAW,CAcvE;AAmBD,kEAAkE;AAClE,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKhD"}
@@ -4,6 +4,7 @@ export const SEVERITY_WEIGHT = {
4
4
  serious: 6,
5
5
  moderate: 3,
6
6
  minor: 1,
7
+ unknown: 0, // indeterminado (ex.: contraste sem cálculo) não penaliza o score
7
8
  };
8
9
  /**
9
10
  * Calcula o score de acessibilidade (0–100).
@@ -21,20 +22,17 @@ export function calculateScore(violations) {
21
22
  return { score, level, total };
22
23
  }
23
24
  /**
24
- * Determina o nível WCAG alcançável:
25
- * - AAA: nenhuma violação
26
- * - AA: nenhuma violação AA/AAA (pode ter A)
27
- * - A: nenhuma violação A... na prática, se há A, fica A
28
- *
29
- * Observação: projetado como indicador de conformidade alcançável, não certificação.
25
+ * Determina o nível WCAG alcançável.
26
+ * Ignora violações `unknown` (indeterminadas), pois não são falhas confirmadas.
30
27
  */
31
28
  function determineLevel(violations) {
32
- if (violations.length === 0)
29
+ const confirmed = violations.filter((v) => v.severity !== 'unknown');
30
+ if (confirmed.length === 0)
33
31
  return 'AAA';
34
- const hasA = violations.some((v) => v.level === 'A');
32
+ const hasA = confirmed.some((v) => v.level === 'A');
35
33
  if (hasA)
36
34
  return 'A';
37
- const hasAA = violations.some((v) => v.level === 'AA');
35
+ const hasAA = confirmed.some((v) => v.level === 'AA');
38
36
  if (hasAA)
39
37
  return 'AA';
40
38
  return 'AA';
@@ -1 +1 @@
1
- {"version":3,"file":"score.js","sourceRoot":"","sources":["../../src/scanner/score.ts"],"names":[],"mappings":"AAEA,+DAA+D;AAC/D,MAAM,CAAC,MAAM,eAAe,GAA6B;IACvD,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC;IACX,KAAK,EAAE,CAAC;CACT,CAAC;AAWF;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,UAA2B;IACxD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;IAE9B,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,OAAO,IAAI,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,wFAAwF;IACxF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAErD,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAEzC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACjC,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,cAAc,CAAC,UAA2B;IACjD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE1C,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC;IACrD,IAAI,IAAI;QAAE,OAAO,GAAG,CAAC;IAErB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;IACvD,IAAI,KAAK;QAAE,OAAO,IAAI,CAAC;IAEvB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,OAAO,CAAC;IAChC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IACjC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC;IAClC,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"score.js","sourceRoot":"","sources":["../../src/scanner/score.ts"],"names":[],"mappings":"AAEA,+DAA+D;AAC/D,MAAM,CAAC,MAAM,eAAe,GAA6B;IACvD,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC;IACX,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC,EAAE,kEAAkE;CAC/E,CAAC;AAWF;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,UAA2B;IACxD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;IAE9B,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,OAAO,IAAI,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,wFAAwF;IACxF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAErD,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAEzC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAC,UAA2B;IACjD,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;IACrE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEzC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC;IACpD,IAAI,IAAI;QAAE,OAAO,GAAG,CAAC;IAErB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;IACtD,IAAI,KAAK;QAAE,OAAO,IAAI,CAAC;IAEvB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,OAAO,CAAC;IAChC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IACjC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC;IAClC,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,40 +1,70 @@
1
1
  import type { ScreenMap } from './navigation.js';
2
- export type Severity = 'critical' | 'serious' | 'moderate' | 'minor';
2
+ export type Severity = 'critical' | 'serious' | 'moderate' | 'minor' | 'unknown';
3
3
  export type WcagLevel = 'A' | 'AA' | 'AAA';
4
+ export interface WcagSourceLocation {
5
+ filePath: string;
6
+ line: number;
7
+ column: number;
8
+ }
4
9
  export interface WcagViolation {
10
+ /** Fingerprint estável: hash(ruleId + normalizedFilePath + normalizedSelector). */
11
+ fingerprint: string;
5
12
  id: string;
13
+ ruleId: string;
6
14
  rule: string;
7
15
  level: WcagLevel;
8
16
  severity: Severity;
9
17
  impact: string;
10
18
  title: string;
11
19
  description: string;
20
+ /** Tela onde ocorre (para a ocorrência primária). */
12
21
  screen: string;
13
22
  filePath: string;
14
23
  selector: string;
15
24
  fix: string;
16
25
  wcagUrl: string;
26
+ /** Localização no código-fonte (linha/coluna). */
27
+ source: WcagSourceLocation;
28
+ /** Telas afetadas por esse mesmo problema (deduplicação). */
29
+ affectedScreens: string[];
30
+ /** Quantas ocorrências do mesmo problema foram consolidadas. */
31
+ occurrenceCount: number;
17
32
  }
18
33
  export interface WcagSummary {
19
34
  critical: number;
20
35
  serious: number;
21
36
  moderate: number;
22
37
  minor: number;
38
+ unknown: number;
39
+ }
40
+ export interface WcagChecks {
41
+ total: number;
42
+ passed: number;
43
+ failed: number;
44
+ /** Verificações indeterminadas (ex.: contraste sem cálculo real). */
45
+ needsReview: number;
23
46
  }
24
47
  export interface WcagReport {
25
48
  score: number;
26
49
  level: WcagLevel;
27
50
  violations: WcagViolation[];
28
51
  summary: WcagSummary;
52
+ checks: WcagChecks;
29
53
  auditedAt: string;
30
54
  rulesVersion: string;
31
55
  }
32
- export declare const WCAG_RULES_VERSION = "1.0.0";
56
+ export declare const WCAG_RULES_VERSION = "1.1.0";
33
57
  export interface AuditContext {
34
58
  screen: ScreenMap;
35
59
  /** Conteúdo do arquivo da tela (lido localmente; NUNCA enviado ao servidor). */
36
60
  content: string;
37
61
  }
62
+ /** Resultado interno de uma regra: violações + contagem de elementos verificados. */
63
+ interface RuleResult {
64
+ violations: WcagViolation[];
65
+ /** Elementos verificados por essa regra (para contar checks aprovados). */
66
+ elementsChecked: number;
67
+ }
38
68
  export interface RuleDef {
39
69
  id: string;
40
70
  rule: string;
@@ -44,15 +74,21 @@ export interface RuleDef {
44
74
  title: string;
45
75
  wcagUrl: string;
46
76
  defaultFix: string;
47
- /** Extrai as violações desta regra no contexto. */
48
- check: (ctx: AuditContext) => WcagViolation[];
77
+ /** Extrai as violações desta regra no contexto. Recebe a própria regra. */
78
+ check: (ctx: AuditContext, rule: RuleDef) => RuleResult;
49
79
  }
50
80
  export declare const RULES: RuleDef[];
51
81
  /**
52
82
  * Aplica todas as regras WCAG a um conjunto de telas.
53
83
  * Os conteúdos dos arquivos são lidos localmente e NÃO são enviados ao servidor.
84
+ * Realiza deduplicação por fingerprint: o mesmo problema em N telas vira 1 violação
85
+ * com occurrenceCount = N e affectedScreens = [...].
54
86
  */
55
- export declare function auditWcag(screens: ScreenMap[], contentsByFile: Record<string, string>): WcagViolation[];
56
- /** Conta violações por severidade. */
87
+ export declare function auditWcag(screens: ScreenMap[], contentsByFile: Record<string, string>): {
88
+ violations: WcagViolation[];
89
+ checks: WcagChecks;
90
+ };
91
+ /** Conta violações por severidade (após deduplicação). */
57
92
  export declare function summarize(violations: WcagViolation[]): WcagSummary;
93
+ export {};
58
94
  //# sourceMappingURL=wcag.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wcag.d.ts","sourceRoot":"","sources":["../../src/scanner/wcag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjD,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;AACrE,MAAM,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC;AAE3C,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,OAAO,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAI1C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,CAAC;IAClB,gFAAgF;IAChF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,KAAK,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,aAAa,EAAE,CAAC;CAC/C;AA6FD,eAAO,MAAM,KAAK,EAAE,OAAO,EAuP1B,CAAC;AA4CF;;;GAGG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,SAAS,EAAE,EACpB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACrC,aAAa,EAAE,CAwBjB;AAED,sCAAsC;AACtC,wBAAgB,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,WAAW,CAIlE"}
1
+ {"version":3,"file":"wcag.d.ts","sourceRoot":"","sources":["../../src/scanner/wcag.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,25 @@
1
- export const WCAG_RULES_VERSION = '1.0.0';
1
+ import { createHash } from 'node:crypto';
2
+ export const WCAG_RULES_VERSION = '1.1.0';
3
+ // Índices (início e fim) de cada comentário JSX no conteúdo.
4
+ function findJsxComments(content) {
5
+ const ranges = [];
6
+ const re = /\{\/[\s\S]*?\/\}/g;
7
+ let m;
8
+ while ((m = re.exec(content)) !== null) {
9
+ ranges.push([m.index, m.index + m[0].length]);
10
+ }
11
+ return ranges;
12
+ }
2
13
  function findTags(content, tagNames) {
3
14
  const out = [];
15
+ const comments = findJsxComments(content);
16
+ const isInComment = (idx) => comments.some(([s, e]) => idx >= s && idx < e);
4
17
  const re = new RegExp(`<(${tagNames.join('|')})\\b`, 'gi');
5
18
  let m;
6
19
  while ((m = re.exec(content)) !== null) {
7
20
  const lt = m.index;
21
+ if (isInComment(lt))
22
+ continue; // ignora tags dentro de comentários JSX
8
23
  const tag = m[1];
9
24
  let i = lt + 1 + tag.length;
10
25
  let brace = 0;
@@ -38,6 +53,7 @@ function findTags(content, tagNames) {
38
53
  tag,
39
54
  attrs: content.substring(lt + 1 + tag.length, i).trim(),
40
55
  contentStart: i + 1,
56
+ startIndex: lt,
41
57
  });
42
58
  break;
43
59
  }
@@ -46,16 +62,59 @@ function findTags(content, tagNames) {
46
62
  }
47
63
  return out;
48
64
  }
65
+ /** Lê um atributo, aceitando tanto `for` quanto `htmlFor` (React). */
49
66
  function attr(attrs, name) {
50
67
  const m = attrs.match(new RegExp(`\\b${name}\\s*=\\s*["']([^"']*)["']`, 'i'));
51
68
  return m ? m[1] : null;
52
69
  }
70
+ /** Lê um atributo aceitando variações (for, htmlFor). */
71
+ function attrAny(attrs, names) {
72
+ for (const n of names) {
73
+ const v = attr(attrs, n);
74
+ if (v)
75
+ return v;
76
+ }
77
+ return null;
78
+ }
79
+ /** Texto visível depois da tag até o próximo '<' (com suporte a span/sr-only). */
53
80
  function visibleText(content, from) {
54
81
  if (from < 0)
55
82
  return '';
56
- const slice = content.substring(from, from + 120);
57
- const m = slice.match(/^\s*([^<{]+)/);
58
- return m ? m[1].trim() : '';
83
+ const slice = content.substring(from, from + 200);
84
+ // Texto direto após '>'
85
+ const direct = slice.match(/^\s*([^<{]+)/);
86
+ if (direct && direct[1].trim())
87
+ return direct[1].trim().replace(/\s+/g, ' ').slice(0, 80);
88
+ // Texto dentro de <span> filho imediato (inclui sr-only)
89
+ const span = slice.match(/^\s*<span[^>]*>([^<]+)/i);
90
+ if (span && span[1].trim())
91
+ return span[1].trim().slice(0, 80);
92
+ return '';
93
+ }
94
+ /** Calcula linha/coluna (1-based) a partir de um índice no conteúdo. */
95
+ function lineCol(content, index) {
96
+ let line = 1;
97
+ let col = 1;
98
+ for (let i = 0; i < index && i < content.length; i++) {
99
+ if (content[i] === '\n') {
100
+ line++;
101
+ col = 1;
102
+ }
103
+ else {
104
+ col++;
105
+ }
106
+ }
107
+ return { line, column: col };
108
+ }
109
+ /** Normaliza um seletor pra fingerprint (remove variações irrelevantes). */
110
+ function normalizeSelector(selector) {
111
+ return selector.replace(/['"`]/g, '').replace(/\s+/g, ' ').trim().toLowerCase();
112
+ }
113
+ /** Calcula fingerprint estável de uma violação. */
114
+ function makeFingerprint(ruleId, filePath, selector) {
115
+ const norm = normalizeSelector(selector);
116
+ const filePathNorm = filePath.replace(/\\/g, '/').toLowerCase();
117
+ return createHash('sha256').update(`${ruleId}|${filePathNorm}|${norm}`).digest('hex').slice(0, 16);
59
118
  }
60
119
  function buildSelectorFromTag(tag, attrs, inputName) {
61
120
  const id = attr(attrs, 'id');
@@ -66,12 +125,35 @@ function buildSelectorFromTag(tag, attrs, inputName) {
66
125
  return `[data-skip-anchor='${anchor}']`;
67
126
  if (inputName)
68
127
  return `${tag}[name='${inputName}']`;
69
- const aria = attr(attrs, 'aria-label');
128
+ const aria = attrAny(attrs, ['aria-label', 'aria-labelledby']);
70
129
  if (aria)
71
130
  return `${tag}[aria-label='${aria}']`;
72
131
  return tag;
73
132
  }
74
- // ---- Definição das regras WCAG ----
133
+ // ---- Helpers de construção de violação ----
134
+ function buildViolation(ctx, rule, tag, selector, severityOverride) {
135
+ const { line, column } = tag ? lineCol(ctx.content, tag.startIndex) : { line: 1, column: 1 };
136
+ const filePath = ctx.screen.filePath;
137
+ return {
138
+ fingerprint: makeFingerprint(rule.id, filePath, selector),
139
+ id: `${rule.id}-${ctx.screen.id}`,
140
+ ruleId: rule.id,
141
+ rule: rule.rule,
142
+ level: rule.level,
143
+ severity: severityOverride ?? rule.severity,
144
+ impact: rule.impact,
145
+ title: rule.title,
146
+ description: `${rule.title} em ${ctx.screen.route} (${filePath}).`,
147
+ screen: ctx.screen.route,
148
+ filePath,
149
+ selector,
150
+ fix: rule.defaultFix,
151
+ wcagUrl: rule.wcagUrl,
152
+ source: { filePath, line, column },
153
+ affectedScreens: [ctx.screen.route],
154
+ occurrenceCount: 1,
155
+ };
156
+ }
75
157
  const VALID_ROLES = new Set([
76
158
  'alert', 'alertdialog', 'banner', 'button', 'checkbox', 'complementary',
77
159
  'contentinfo', 'dialog', 'document', 'form', 'grid', 'gridcell', 'heading',
@@ -81,6 +163,7 @@ const VALID_ROLES = new Set([
81
163
  'search', 'separator', 'slider', 'spinbutton', 'status', 'tab', 'tablist',
82
164
  'tabpanel', 'textbox', 'timer', 'toolbar', 'tooltip', 'tree', 'treegrid', 'treeitem',
83
165
  ]);
166
+ // ---- Definição das regras WCAG ----
84
167
  export const RULES = [
85
168
  // 1.1.1 — Imagem sem alt
86
169
  {
@@ -92,17 +175,18 @@ export const RULES = [
92
175
  title: 'Imagem sem texto alternativo',
93
176
  wcagUrl: 'https://www.w3.org/WAI/WCAG22/quickref/#non-text-content',
94
177
  defaultFix: "Adicione alt='...' descrevendo a imagem, ou alt='' se for puramente decorativa.",
95
- check: (ctx) => {
96
- const out = [];
97
- for (const t of findTags(ctx.content, ['img'])) {
178
+ check: (ctx, rule) => {
179
+ const violations = [];
180
+ const imgs = findTags(ctx.content, ['img']);
181
+ for (const t of imgs) {
98
182
  if (!/\balt\s*=/.test(t.attrs)) {
99
- out.push(violation(thisId(ctx, 'img-alt'), ctx, t, buildSelectorFromTag('img', t.attrs, null)));
183
+ violations.push(buildViolation(ctx, rule, t, buildSelectorFromTag('img', t.attrs, null)));
100
184
  }
101
185
  }
102
- return out;
186
+ return { violations, elementsChecked: imgs.length };
103
187
  },
104
188
  },
105
- // 4.1.2 — Button sem nome acessível
189
+ // 4.1.2 — Button sem nome acessível (texto, aria-label, span, sr-only)
106
190
  {
107
191
  id: 'button-no-name',
108
192
  rule: '4.1.2 Name, Role, Value',
@@ -111,20 +195,21 @@ export const RULES = [
111
195
  impact: 'Usuários de leitor de tela ouvem apenas "botão" sem saber sua função.',
112
196
  title: 'Botão sem nome acessível',
113
197
  wcagUrl: 'https://www.w3.org/WAI/WCAG22/quickref/#name-role-value',
114
- defaultFix: "Adicione texto visível, aria-label='...' ou aria-labelledby='...'.",
115
- check: (ctx) => {
116
- const out = [];
117
- for (const t of findTags(ctx.content, ['button'])) {
118
- const aria = attr(t.attrs, 'aria-label') || attr(t.attrs, 'aria-labelledby');
198
+ defaultFix: "Adicione texto visível, aria-label='...', aria-labelledby='...' ou um <span> com texto.",
199
+ check: (ctx, rule) => {
200
+ const violations = [];
201
+ const btns = findTags(ctx.content, ['button']);
202
+ for (const t of btns) {
203
+ const aria = attrAny(t.attrs, ['aria-label', 'aria-labelledby']);
119
204
  const text = visibleText(ctx.content, t.contentStart);
120
205
  if (!aria && !text) {
121
- out.push(violation(thisId(ctx, 'btn-name'), ctx, t, buildSelectorFromTag('button', t.attrs, null)));
206
+ violations.push(buildViolation(ctx, rule, t, buildSelectorFromTag('button', t.attrs, null)));
122
207
  }
123
208
  }
124
- return out;
209
+ return { violations, elementsChecked: btns.length };
125
210
  },
126
211
  },
127
- // 1.3.1 / 3.3.2 — Input sem label
212
+ // 1.3.1 / 3.3.2 — Input sem label (aceita for, htmlFor, aria-label, label envolvente)
128
213
  {
129
214
  id: 'input-no-label',
130
215
  rule: '1.3.1 Info and Relationships / 3.3.2 Labels or Instructions',
@@ -133,13 +218,13 @@ export const RULES = [
133
218
  impact: 'Usuários não sabem o que preencher; leitores de tela anunciam "campo de texto" sem contexto.',
134
219
  title: 'Campo de formulário sem label associada',
135
220
  wcagUrl: 'https://www.w3.org/WAI/WCAG22/quickref/#labels-or-instructions',
136
- defaultFix: "Associe um <label for='id'>, ou adicione aria-label='...' ou aria-labelledby='...'.",
137
- check: (ctx) => {
138
- const out = [];
221
+ defaultFix: "Associe <label htmlFor='id'> (ou <label for='id'>), use <label> envolvente, ou aria-label='...'.",
222
+ check: (ctx, rule) => {
223
+ const violations = [];
139
224
  const inputs = findTags(ctx.content, ['input', 'textarea', 'select']);
140
- // Procura <label for="x"> no conteúdo pra ver se o input tem label
225
+ // Coleta IDs referenciados por <label for> OU <label htmlFor>
141
226
  const labelFors = new Set();
142
- const labelRe = /<label\b[^>]*\bfor\s*=\s*["']([^"']+)["']/gi;
227
+ const labelRe = /<label\b[^>]*?\b(?:for|htmlFor)\s*=\s*["']([^"']+)["']/gi;
143
228
  let lm;
144
229
  while ((lm = labelRe.exec(ctx.content)) !== null)
145
230
  labelFors.add(lm[1]);
@@ -147,17 +232,19 @@ export const RULES = [
147
232
  if (t.attrs.includes('type="hidden"') || t.attrs.includes("type='hidden'"))
148
233
  continue;
149
234
  const id = attr(t.attrs, 'id');
150
- const aria = attr(t.attrs, 'aria-label') || attr(t.attrs, 'aria-labelledby');
151
- const labelled = (id && labelFors.has(id)) || aria;
152
- if (!labelled) {
235
+ const aria = attrAny(t.attrs, ['aria-label', 'aria-labelledby']);
236
+ const labelledByFor = id && labelFors.has(id);
237
+ // Detecta <label> envolvente: procura <label ...> antes do input sem </label> entre eles
238
+ const labelWrap = isInsideLabel(ctx.content, t.startIndex);
239
+ if (!labelledByFor && !aria && !labelWrap) {
153
240
  const name = attr(t.attrs, 'name');
154
- out.push(violation(thisId(ctx, 'input-label'), ctx, t, buildSelectorFromTag(t.tag, t.attrs, name)));
241
+ violations.push(buildViolation(ctx, rule, t, buildSelectorFromTag(t.tag, t.attrs, name)));
155
242
  }
156
243
  }
157
- return out;
244
+ return { violations, elementsChecked: inputs.length };
158
245
  },
159
246
  },
160
- // 2.4.4 — Link com href vazio
247
+ // 2.4.4 — Link sem destino válido (reconhece <a href> E <Link to> do React Router)
161
248
  {
162
249
  id: 'link-href-empty',
163
250
  rule: '2.4.4 Link Purpose (In Context)',
@@ -166,16 +253,19 @@ export const RULES = [
166
253
  impact: "Links com href='#' ou vazio não levam a lugar algum, confundindo navegação.",
167
254
  title: 'Link sem destino válido',
168
255
  wcagUrl: 'https://www.w3.org/WAI/WCAG22/quickref/#link-purpose-in-context',
169
- defaultFix: "Use um href válido apontando para a rota correta, ou transforme em <button> se for uma ação.",
170
- check: (ctx) => {
171
- const out = [];
172
- for (const t of findTags(ctx.content, ['a'])) {
173
- const href = attr(t.attrs, 'href');
256
+ defaultFix: "Use um href/to válido apontando para a rota correta, ou transforme em <button> se for uma ação.",
257
+ check: (ctx, rule) => {
258
+ const violations = [];
259
+ const anchors = findTags(ctx.content, ['a', 'Link']);
260
+ for (const t of anchors) {
261
+ const href = attrAny(t.attrs, ['href', 'to']);
262
+ // Link sem href E sem to = problema. href="#" ou "" = problema.
174
263
  if (href === '#' || href === '' || href == null) {
175
- out.push(violation(thisId(ctx, 'link-href'), ctx, t, buildSelectorFromTag('a', t.attrs, null)));
264
+ const domTag = t.tag === 'Link' ? 'a' : t.tag;
265
+ violations.push(buildViolation(ctx, rule, t, buildSelectorFromTag(domTag, t.attrs, null)));
176
266
  }
177
267
  }
178
- return out;
268
+ return { violations, elementsChecked: anchors.length };
179
269
  },
180
270
  },
181
271
  // 2.4.3 — tabindex positivo
@@ -188,14 +278,17 @@ export const RULES = [
188
278
  title: 'tabindex positivo quebra ordem de foco',
189
279
  wcagUrl: 'https://www.w3.org/WAI/WCAG22/quickref/#focus-order',
190
280
  defaultFix: "Remova o tabindex positivo; use ordem natural do DOM. Use tabindex='0' se precisar tornar focável.",
191
- check: (ctx) => {
192
- const out = [];
281
+ check: (ctx, rule) => {
282
+ const violations = [];
193
283
  const re = /<(\w+)\b([^>]*?)\btabindex\s*=\s*["']([1-9]\d*)["']/gi;
284
+ let count = 0;
194
285
  let m;
195
286
  while ((m = re.exec(ctx.content)) !== null) {
196
- out.push(violationRaw(thisId(ctx, 'tabindex'), ctx, `${m[1]}`, m[2], `${m[1]}[tabindex='${m[3]}']`));
287
+ count++;
288
+ const sel = `${m[1]}[tabindex='${m[3]}']`;
289
+ violations.push(buildViolation(ctx, rule, null, sel));
197
290
  }
198
- return out;
291
+ return { violations, elementsChecked: count };
199
292
  },
200
293
  },
201
294
  // 1.3.1 — ordem de headings
@@ -208,19 +301,21 @@ export const RULES = [
208
301
  title: 'Ordem de headings inconsistente',
209
302
  wcagUrl: 'https://www.w3.org/WAI/WCAG22/quickref/#info-and-relationships',
210
303
  defaultFix: 'Não pule níveis: após h1 use h2, após h2 use h3, etc.',
211
- check: (ctx) => {
212
- const out = [];
304
+ check: (ctx, rule) => {
305
+ const violations = [];
213
306
  const re = /<h([1-6])\b/gi;
214
307
  let prev = 0;
308
+ let count = 0;
215
309
  let m;
216
310
  while ((m = re.exec(ctx.content)) !== null) {
311
+ count++;
217
312
  const lvl = parseInt(m[1], 10);
218
313
  if (prev !== 0 && lvl > prev + 1) {
219
- out.push(violationRaw(thisId(ctx, 'heading'), ctx, `h${lvl}`, '', `h${lvl}`));
314
+ violations.push(buildViolation(ctx, rule, null, `h${lvl}`));
220
315
  }
221
316
  prev = lvl;
222
317
  }
223
- return out;
318
+ return { violations, elementsChecked: count };
224
319
  },
225
320
  },
226
321
  // 4.1.2 — role inválida
@@ -233,19 +328,21 @@ export const RULES = [
233
328
  title: 'atributo role inválido',
234
329
  wcagUrl: 'https://www.w3.org/WAI/WCAG22/quickref/#name-role-value',
235
330
  defaultFix: 'Use um valor de role válido da especificação ARIA, ou remova o atributo.',
236
- check: (ctx) => {
237
- const out = [];
331
+ check: (ctx, rule) => {
332
+ const violations = [];
238
333
  const re = /<(\w+)\b([^>]*?)\brole\s*=\s*["']([^"']+)["']/gi;
334
+ let count = 0;
239
335
  let m;
240
336
  while ((m = re.exec(ctx.content)) !== null) {
337
+ count++;
241
338
  if (!VALID_ROLES.has(m[3])) {
242
- out.push(violationRaw(thisId(ctx, 'aria-role'), ctx, m[1], m[2], `${m[1]}[role='${m[3]}']`));
339
+ violations.push(buildViolation(ctx, rule, null, `${m[1]}[role='${m[3]}']`));
243
340
  }
244
341
  }
245
- return out;
342
+ return { violations, elementsChecked: count };
246
343
  },
247
344
  },
248
- // 3.1.1 — html sem lang
345
+ // 3.1.1 — html sem lang (checado UMA vez globalmente, não por tela)
249
346
  {
250
347
  id: 'lang-missing',
251
348
  rule: '3.1.1 Language of Page',
@@ -255,14 +352,15 @@ export const RULES = [
255
352
  title: 'Documento sem idioma declarado',
256
353
  wcagUrl: 'https://www.w3.org/WAI/WCAG22/quickref/#language-of-page',
257
354
  defaultFix: "Adicione lang='pt-BR' (ou o idioma correto) na tag <html>.",
258
- check: (ctx) => {
355
+ check: (ctx, rule) => {
356
+ // Só dispara na tela raiz "/" — evita repetir em cada rota de SPA.
357
+ if (ctx.screen.route !== '/')
358
+ return { violations: [], elementsChecked: 0 };
259
359
  const htmlMatch = ctx.content.match(/<html\b([^>]*)>/i);
260
360
  if (htmlMatch && !/\blang\s*=/.test(htmlMatch[1])) {
261
- return [
262
- violationRaw(thisId(ctx, 'lang'), ctx, 'html', htmlMatch[1], 'html'),
263
- ];
361
+ return { violations: [buildViolation(ctx, rule, null, 'html')], elementsChecked: 1 };
264
362
  }
265
- return [];
363
+ return { violations: [], elementsChecked: 1 };
266
364
  },
267
365
  },
268
366
  // 2.4.1 — sem skip link
@@ -274,34 +372,36 @@ export const RULES = [
274
372
  impact: 'Usuários de teclado precisam tabular por toda a navegação repetitiva a cada página.',
275
373
  title: 'Sem link de pular para o conteúdo',
276
374
  wcagUrl: 'https://www.w3.org/WAI/WCAG22/quickref/#bypass-blocks',
277
- defaultFix: "Adicione um <a href='#main' className='skip-link'>Pular para o conteúdo</a> como primeiro elemento focável.",
278
- check: (ctx) => {
375
+ defaultFix: "Adicione <a href='#main' className='skip-link'>Pular para o conteúdo</a> como primeiro elemento focável.",
376
+ check: (ctx, rule) => {
279
377
  const hasSkip = /href\s*=\s*["']#(?:main|content)["']/i.test(ctx.content);
280
378
  const hasMain = /id\s*=\s*["']main["']/i.test(ctx.content) || /<main\b/i.test(ctx.content);
281
379
  if (!hasSkip && hasMain) {
282
- return [violationRaw(thisId(ctx, 'skip'), ctx, 'body', '', 'body')];
380
+ return { violations: [buildViolation(ctx, rule, null, 'body')], elementsChecked: 1 };
283
381
  }
284
- return [];
382
+ return { violations: [], elementsChecked: 1 };
285
383
  },
286
384
  },
287
- // 1.4.3 — contraste (heurística estática)
385
+ // 1.4.3 — contraste (heurística estática → unknown / needs-review)
288
386
  {
289
387
  id: 'low-contrast-hint',
290
388
  rule: '1.4.3 Contrast (Minimum)',
291
389
  level: 'AA',
292
- severity: 'minor',
390
+ severity: 'unknown', // heurística sem cálculo real → não confirma falha
293
391
  impact: 'Possível baixo contraste texto/fundo dificulta leitura para usuários com baixa visão.',
294
392
  title: 'Possível baixo contraste de cor',
295
393
  wcagUrl: 'https://www.w3.org/WAI/WCAG22/quickref/#contrast-minimum',
296
- defaultFix: 'Verifique a razão de contraste (mínimo 4.5:1 para texto normal). Evite classes como text-gray-300 em fundos brancos.',
297
- check: (ctx) => {
298
- const out = [];
394
+ defaultFix: 'Verifique a razão de contraste (mínimo 4.5:1 para texto normal). Evite tons muito claros em fundos brancos.',
395
+ check: (ctx, rule) => {
396
+ const violations = [];
299
397
  const suspect = /(text-(?:gray|slate|zinc|neutral)-(?:200|300))|(text-white\/[1-4]\d)|(opacity-(?:[1-3]\d|40))/gi;
398
+ let count = 0;
300
399
  let m;
301
400
  while ((m = suspect.exec(ctx.content)) !== null) {
302
- out.push(violationRaw(thisId(ctx, 'contrast'), ctx, '*', m[0], m[0]));
401
+ count++;
402
+ violations.push(buildViolation(ctx, rule, null, m[0]));
303
403
  }
304
- return out;
404
+ return { violations, elementsChecked: count };
305
405
  },
306
406
  },
307
407
  // 3.3.2 — form sem instrução
@@ -314,77 +414,72 @@ export const RULES = [
314
414
  title: 'Formulário sem instrução de preenchimento',
315
415
  wcagUrl: 'https://www.w3.org/WAI/WCAG22/quickref/#labels-or-instructions',
316
416
  defaultFix: 'Adicione uma instrução curta antes do formulário, ou aria-describedby nos campos.',
317
- check: (ctx) => {
417
+ check: (ctx, rule) => {
318
418
  const forms = findTags(ctx.content, ['form']);
319
419
  if (forms.length === 0)
320
- return [];
321
- // heurística: se há <form> mas nenhum <p>/<span> com texto de instrução antes
420
+ return { violations: [], elementsChecked: 0 };
322
421
  const hasInstruction = /(por favor|preencha|informe|digite|required|obrigat)/i.test(ctx.content);
323
422
  if (!hasInstruction) {
324
- return [violationRaw(thisId(ctx, 'form-instr'), ctx, 'form', '', 'form')];
423
+ return { violations: [buildViolation(ctx, rule, null, 'form')], elementsChecked: forms.length };
325
424
  }
326
- return [];
425
+ return { violations: [], elementsChecked: forms.length };
327
426
  },
328
427
  },
329
428
  ];
330
- // ---- Helpers de construção de violação ----
331
- function thisId(ctx, slug) {
332
- return `${slug}-${ctx.screen.id}`;
333
- }
334
- function violation(id, ctx, tag, selector) {
335
- return violationRaw(id, ctx, tag.tag, tag.attrs, selector);
336
- }
337
- function violationRaw(id, ctx, tag, attrs, selector) {
338
- void tag;
339
- void attrs;
340
- return {
341
- id,
342
- rule: '',
343
- level: 'A',
344
- severity: 'minor',
345
- impact: '',
346
- title: '',
347
- description: '',
348
- screen: ctx.screen.route,
349
- filePath: ctx.screen.filePath,
350
- selector,
351
- fix: '',
352
- wcagUrl: '',
353
- };
429
+ /** Verifica se um índice está dentro de um <label>...</label> (label envolvente). */
430
+ function isInsideLabel(content, index) {
431
+ // Procura o último <label ...> aberto antes do índice, sem </label> entre eles.
432
+ const before = content.substring(0, index);
433
+ const lastOpen = before.lastIndexOf('<label');
434
+ if (lastOpen === -1)
435
+ return false;
436
+ const segment = content.substring(lastOpen, index);
437
+ // Se há </label> entre a abertura e o índice, o input não está dentro.
438
+ return !segment.includes('</label>');
354
439
  }
355
440
  // ---- Orquestrador da auditoria ----
356
441
  /**
357
442
  * Aplica todas as regras WCAG a um conjunto de telas.
358
443
  * Os conteúdos dos arquivos são lidos localmente e NÃO são enviados ao servidor.
444
+ * Realiza deduplicação por fingerprint: o mesmo problema em N telas vira 1 violação
445
+ * com occurrenceCount = N e affectedScreens = [...].
359
446
  */
360
447
  export function auditWcag(screens, contentsByFile) {
361
- const all = [];
448
+ const raw = [];
449
+ const checks = { total: 0, passed: 0, failed: 0, needsReview: 0 };
362
450
  for (const screen of screens) {
363
451
  const content = contentsByFile[screen.filePath] ?? '';
364
452
  const ctx = { screen, content };
365
453
  for (const rule of RULES) {
366
- const found = rule.check(ctx);
367
- for (const v of found) {
368
- all.push({
369
- ...v,
370
- id: v.id,
371
- rule: rule.rule,
372
- level: rule.level,
373
- severity: rule.severity,
374
- impact: rule.impact,
375
- title: rule.title,
376
- fix: rule.defaultFix,
377
- wcagUrl: rule.wcagUrl,
378
- description: `${rule.title} em ${screen.route} (${screen.filePath}).`,
379
- });
454
+ const result = rule.check(ctx, rule);
455
+ checks.total += result.elementsChecked;
456
+ checks.failed += result.violations.filter((v) => v.severity !== 'unknown').length;
457
+ checks.needsReview += result.violations.filter((v) => v.severity === 'unknown').length;
458
+ for (const v of result.violations)
459
+ raw.push(v);
460
+ }
461
+ }
462
+ // Deduplicação por fingerprint
463
+ const byFingerprint = new Map();
464
+ for (const v of raw) {
465
+ const existing = byFingerprint.get(v.fingerprint);
466
+ if (existing) {
467
+ existing.occurrenceCount += 1;
468
+ if (!existing.affectedScreens.includes(v.screen)) {
469
+ existing.affectedScreens.push(v.screen);
380
470
  }
381
471
  }
472
+ else {
473
+ byFingerprint.set(v.fingerprint, { ...v });
474
+ }
382
475
  }
383
- return all;
476
+ const violations = [...byFingerprint.values()];
477
+ checks.passed = Math.max(0, checks.total - checks.failed - checks.needsReview);
478
+ return { violations, checks };
384
479
  }
385
- /** Conta violações por severidade. */
480
+ /** Conta violações por severidade (após deduplicação). */
386
481
  export function summarize(violations) {
387
- const s = { critical: 0, serious: 0, moderate: 0, minor: 0 };
482
+ const s = { critical: 0, serious: 0, moderate: 0, minor: 0, unknown: 0 };
388
483
  for (const v of violations)
389
484
  s[v.severity]++;
390
485
  return s;
@@ -1 +1 @@
1
- {"version":3,"file":"wcag.js","sourceRoot":"","sources":["../../src/scanner/wcag.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wcag.js","sourceRoot":"","sources":["../../src/scanner/wcag.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skip-ai/scanner",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Scanner CLI para a plataforma Skip AI Accessibility Layer",
5
5
  "type": "module",
6
6
  "bin": {