@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 +4 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +25 -6
- package/dist/cli.js.map +1 -1
- package/dist/index.js +13 -5
- package/dist/index.js.map +1 -1
- package/dist/reporter.d.ts +1 -1
- package/dist/reporter.js +1 -1
- package/dist/scanner/history.d.ts +1 -0
- package/dist/scanner/history.d.ts.map +1 -1
- package/dist/scanner/history.js.map +1 -1
- package/dist/scanner/score.d.ts.map +1 -1
- package/dist/scanner/score.js +7 -9
- package/dist/scanner/score.js.map +1 -1
- package/dist/scanner/wcag.d.ts +42 -6
- package/dist/scanner/wcag.d.ts.map +1 -1
- package/dist/scanner/wcag.js +209 -114
- package/dist/scanner/wcag.js.map +1 -1
- package/package.json +1 -1
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,
|
|
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
|
-
.
|
|
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
|
-
//
|
|
36
|
-
if (commandName === '
|
|
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:
|
|
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;
|
|
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
|
|
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":";AACA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE9D,0BAA0B;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAmB,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhE,iGAAiG;AACjG,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,CAAC,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC;IAC3D,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC;IAC7D,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC;IAC/D,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC;AACxC,CAAC;AACD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAqB,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAsC,MAAM,UAAU,CAAC;AAEzE,2DAA2D;AAE3D,KAAK,UAAU,QAAQ,CAAC,IAAiB;IACvC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IAErD,8BAA8B;IAC9B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAChD,IAAI,OAAgC,CAAC;IACrC,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,WAAW,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAE1C,qEAAqE;IACrE,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CACb,kIAAkI,CACnI,CAAC;IACJ,CAAC;IACD,2EAA2E;IAC3E,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sEAAsE,CAAC,CAAC,CAAC;IACpG,CAAC;IAED,qCAAqC;IACrC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,OAAO,CAAC,QAAQ,GAAG;YACjB,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,SAAS;YACzC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,YAAY;YAC1C,YAAY,EAAE,CAAC;YACf,UAAU,EAAE,OAAO,CAAC,QAAQ,KAAK,YAAY;YAC7C,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,UAAU,EAAE,WAAW;SACxB,CAAC;IACJ,CAAC;IAED,qBAAqB;IACrB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,YAAY,EAA6B,CAAC;IACtE,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,YAAY,uDAAuD,CAAC,CAAC,CAAC;IACtG,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/H,CAAC;IAED,YAAY;IACZ,MAAM,aAAa,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAChE,aAAa,CAAC,OAAO,CAAC,qBAAqB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAEnE,wBAAwB;IACxB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAC;QAC3E,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9D,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACxG,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED,mEAAmE;AAEnE,KAAK,UAAU,QAAQ,CAAC,IAAiB;IACvC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2EAA2E,CAAC,CAAC,CAAC;IAEvG,MAAM,cAAc,GAAG,CAAC,GAAG,uBAAuB,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAEpE,MAAM,aAAa,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACzC,aAAa,CAAC,OAAO,CAAC,wBAAwB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC;IAEzG,MAAM,YAAY,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC9E,YAAY,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,oBAAoB,CAAC,CAAC;IAE3D,MAAM,WAAW,GAAG,OAAO,CAAC,oCAAoC,CAAC,CAAC;IAClE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7E,WAAW,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,iBAAiB,MAAM,CAAC,MAAM,UAAU,CAAC,CAAC;IAElF,MAAM,UAAU,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7D,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,6BAA6B,CAAC,CAAC;IAEpE,MAAM,UAAU,GAAG,OAAO,CAAC,kCAAkC,CAAC,CAAC;IAC/D,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE;QAClE,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;QAChG,MAAM,EAAE,SAAS,CAAC,MAAM;KACzB,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACzF,UAAU,CAAC,OAAO,CAChB,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,oBAAoB,YAAY,WAAW,aAAa,CAAC,eAAe,CAAC,MAAM,uBAAuB,CACtI,CAAC;IAEF,MAAM,QAAQ,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,kBAAkB,EAAE,CAAC;IAE3C,2BAA2B;IAC3B,0EAA0E;IAC1E,MAAM,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAClD,MAAM,cAAc,GAA2B,EAAE,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IACD,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAChF,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAe;QACvB,KAAK;QACL,KAAK;QACL,UAAU;QACV,OAAO;QACP,MAAM;QACN,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,YAAY,EAAE,kBAAkB;KACjC,CAAC;IACF,YAAY,CAAC,OAAO,CAClB,eAAe,UAAU,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM,KAAK,0BAA0B,MAAM,CAAC,KAAK,YAAY,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO,IAAI,CAC3M,CAAC;IAEF,2BAA2B;IAC3B,MAAM,WAAW,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAErD,6DAA6D;IAC7D,MAAM,YAAY,GAAiB;QACjC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,KAAK;QACL,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC;IACF,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAErD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS;QAClC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;QACpC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QACpC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAClC,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;KAChD,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,WAAW,CAAC;QAC5B,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ;QAC/C,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO;QAClE,YAAY,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW;KAC5C,CAAC,CAAC;IACH,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAE9D,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,YAAY,uDAAuD,CAAC,CAAC,CAAC;IACtG,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACrD,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,yBAAyB,UAAU,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,OAAO,CAAC,QAAQ,cAAc,OAAO,CAAC,OAAO,aAAa,OAAO,CAAC,QAAQ,cAAc,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC;QACnL,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACrF,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,KAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACjE,aAAa,CAAC,OAAO,CAAC,qBAAqB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAEnE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,KAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/D,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACxG,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED,wCAAwC;AAExC,KAAK,UAAU,IAAI;IACjB,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC;IACrC,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,QAAQ,CAAC,IAAmB,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,CAAC,IAAmB,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC5B,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7D,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/reporter.d.ts
CHANGED
|
@@ -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.
|
|
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 +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;
|
|
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;
|
|
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,
|
|
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"}
|
package/dist/scanner/score.js
CHANGED
|
@@ -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
|
-
*
|
|
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
|
-
|
|
29
|
+
const confirmed = violations.filter((v) => v.severity !== 'unknown');
|
|
30
|
+
if (confirmed.length === 0)
|
|
33
31
|
return 'AAA';
|
|
34
|
-
const hasA =
|
|
32
|
+
const hasA = confirmed.some((v) => v.level === 'A');
|
|
35
33
|
if (hasA)
|
|
36
34
|
return 'A';
|
|
37
|
-
const hasAA =
|
|
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;
|
|
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"}
|
package/dist/scanner/wcag.d.ts
CHANGED
|
@@ -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.
|
|
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) =>
|
|
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>):
|
|
56
|
-
|
|
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":"
|
|
1
|
+
{"version":3,"file":"wcag.d.ts","sourceRoot":"","sources":["../../src/scanner/wcag.ts"],"names":[],"mappings":"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"}
|
package/dist/scanner/wcag.js
CHANGED
|
@@ -1,10 +1,25 @@
|
|
|
1
|
-
|
|
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 +
|
|
57
|
-
|
|
58
|
-
|
|
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 =
|
|
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
|
-
// ----
|
|
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
|
|
97
|
-
|
|
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
|
-
|
|
183
|
+
violations.push(buildViolation(ctx, rule, t, buildSelectorFromTag('img', t.attrs, null)));
|
|
100
184
|
}
|
|
101
185
|
}
|
|
102
|
-
return
|
|
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='...'
|
|
115
|
-
check: (ctx) => {
|
|
116
|
-
const
|
|
117
|
-
|
|
118
|
-
|
|
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
|
-
|
|
206
|
+
violations.push(buildViolation(ctx, rule, t, buildSelectorFromTag('button', t.attrs, null)));
|
|
122
207
|
}
|
|
123
208
|
}
|
|
124
|
-
return
|
|
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
|
|
137
|
-
check: (ctx) => {
|
|
138
|
-
const
|
|
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
|
-
//
|
|
225
|
+
// Coleta IDs referenciados por <label for> OU <label htmlFor>
|
|
141
226
|
const labelFors = new Set();
|
|
142
|
-
const labelRe = /<label\b[^>]
|
|
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 =
|
|
151
|
-
const
|
|
152
|
-
|
|
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
|
-
|
|
241
|
+
violations.push(buildViolation(ctx, rule, t, buildSelectorFromTag(t.tag, t.attrs, name)));
|
|
155
242
|
}
|
|
156
243
|
}
|
|
157
|
-
return
|
|
244
|
+
return { violations, elementsChecked: inputs.length };
|
|
158
245
|
},
|
|
159
246
|
},
|
|
160
|
-
// 2.4.4 — Link
|
|
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
|
|
172
|
-
|
|
173
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
287
|
+
count++;
|
|
288
|
+
const sel = `${m[1]}[tabindex='${m[3]}']`;
|
|
289
|
+
violations.push(buildViolation(ctx, rule, null, sel));
|
|
197
290
|
}
|
|
198
|
-
return
|
|
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
|
|
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
|
-
|
|
314
|
+
violations.push(buildViolation(ctx, rule, null, `h${lvl}`));
|
|
220
315
|
}
|
|
221
316
|
prev = lvl;
|
|
222
317
|
}
|
|
223
|
-
return
|
|
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
|
|
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
|
-
|
|
339
|
+
violations.push(buildViolation(ctx, rule, null, `${m[1]}[role='${m[3]}']`));
|
|
243
340
|
}
|
|
244
341
|
}
|
|
245
|
-
return
|
|
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
|
|
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 [
|
|
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: '
|
|
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
|
|
297
|
-
check: (ctx) => {
|
|
298
|
-
const
|
|
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
|
-
|
|
401
|
+
count++;
|
|
402
|
+
violations.push(buildViolation(ctx, rule, null, m[0]));
|
|
303
403
|
}
|
|
304
|
-
return
|
|
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 [
|
|
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
|
-
|
|
331
|
-
function
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
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
|
|
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
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
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
|
-
|
|
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;
|
package/dist/scanner/wcag.js.map
CHANGED
|
@@ -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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"}
|