claude-in-mobile 3.8.0 → 3.9.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/README.md +11 -0
- package/dist/a11y/categories.d.ts +6 -0
- package/dist/a11y/categories.d.ts.map +1 -0
- package/dist/a11y/categories.js +22 -0
- package/dist/a11y/categories.js.map +1 -0
- package/dist/a11y/formatter.d.ts +16 -1
- package/dist/a11y/formatter.d.ts.map +1 -1
- package/dist/a11y/formatter.js +91 -0
- package/dist/a11y/formatter.js.map +1 -1
- package/dist/a11y/rules/duplicate-descriptions.d.ts.map +1 -1
- package/dist/a11y/rules/duplicate-descriptions.js +8 -3
- package/dist/a11y/rules/duplicate-descriptions.js.map +1 -1
- package/dist/a11y/rules/focus-order.d.ts.map +1 -1
- package/dist/a11y/rules/focus-order.js +3 -1
- package/dist/a11y/rules/focus-order.js.map +1 -1
- package/dist/a11y/rules/interactive-labels.d.ts.map +1 -1
- package/dist/a11y/rules/interactive-labels.js +3 -1
- package/dist/a11y/rules/interactive-labels.js.map +1 -1
- package/dist/a11y/rules/missing-label.d.ts.map +1 -1
- package/dist/a11y/rules/missing-label.js +3 -1
- package/dist/a11y/rules/missing-label.js.map +1 -1
- package/dist/a11y/rules/state-description.d.ts.map +1 -1
- package/dist/a11y/rules/state-description.js +3 -1
- package/dist/a11y/rules/state-description.js.map +1 -1
- package/dist/a11y/rules/touch-target.d.ts.map +1 -1
- package/dist/a11y/rules/touch-target.js +3 -1
- package/dist/a11y/rules/touch-target.js.map +1 -1
- package/dist/a11y/score.d.ts +17 -1
- package/dist/a11y/score.d.ts.map +1 -1
- package/dist/a11y/score.js +80 -1
- package/dist/a11y/score.js.map +1 -1
- package/dist/a11y/types.d.ts +35 -1
- package/dist/a11y/types.d.ts.map +1 -1
- package/dist/adb/ui-parser.d.ts +14 -1
- package/dist/adb/ui-parser.d.ts.map +1 -1
- package/dist/adb/ui-parser.js +67 -2
- package/dist/adb/ui-parser.js.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/profiles.d.ts.map +1 -1
- package/dist/profiles.js +8 -2
- package/dist/profiles.js.map +1 -1
- package/dist/tools/accessibility-tools.d.ts.map +1 -1
- package/dist/tools/accessibility-tools.js +63 -16
- package/dist/tools/accessibility-tools.js.map +1 -1
- package/dist/tools/app-tools.d.ts.map +1 -1
- package/dist/tools/app-tools.js +27 -0
- package/dist/tools/app-tools.js.map +1 -1
- package/dist/tools/intent-tools.d.ts +3 -0
- package/dist/tools/intent-tools.d.ts.map +1 -0
- package/dist/tools/intent-tools.js +411 -0
- package/dist/tools/intent-tools.js.map +1 -0
- package/dist/tools/interaction-tools.d.ts.map +1 -1
- package/dist/tools/interaction-tools.js +21 -14
- package/dist/tools/interaction-tools.js.map +1 -1
- package/dist/tools/meta/accessibility-meta.d.ts.map +1 -1
- package/dist/tools/meta/accessibility-meta.js +9 -0
- package/dist/tools/meta/accessibility-meta.js.map +1 -1
- package/dist/tools/meta/intent-meta.d.ts +6 -0
- package/dist/tools/meta/intent-meta.d.ts.map +1 -0
- package/dist/tools/meta/intent-meta.js +18 -0
- package/dist/tools/meta/intent-meta.js.map +1 -0
- package/dist/tools/meta/network-meta.d.ts +6 -0
- package/dist/tools/meta/network-meta.d.ts.map +1 -0
- package/dist/tools/meta/network-meta.js +18 -0
- package/dist/tools/meta/network-meta.js.map +1 -0
- package/dist/tools/meta/performance-meta.js +1 -1
- package/dist/tools/meta/performance-meta.js.map +1 -1
- package/dist/tools/meta/sandbox-meta.d.ts +6 -0
- package/dist/tools/meta/sandbox-meta.d.ts.map +1 -0
- package/dist/tools/meta/sandbox-meta.js +28 -0
- package/dist/tools/meta/sandbox-meta.js.map +1 -0
- package/dist/tools/meta/sensor-meta.d.ts +6 -0
- package/dist/tools/meta/sensor-meta.d.ts.map +1 -0
- package/dist/tools/meta/sensor-meta.js +50 -0
- package/dist/tools/meta/sensor-meta.js.map +1 -0
- package/dist/tools/network-tools.d.ts +14 -0
- package/dist/tools/network-tools.d.ts.map +1 -0
- package/dist/tools/network-tools.js +350 -0
- package/dist/tools/network-tools.js.map +1 -0
- package/dist/tools/performance-tools.d.ts +2 -1
- package/dist/tools/performance-tools.d.ts.map +1 -1
- package/dist/tools/performance-tools.js +184 -1
- package/dist/tools/performance-tools.js.map +1 -1
- package/dist/tools/sandbox-tools.d.ts +3 -0
- package/dist/tools/sandbox-tools.d.ts.map +1 -0
- package/dist/tools/sandbox-tools.js +538 -0
- package/dist/tools/sandbox-tools.js.map +1 -0
- package/dist/tools/sensor-tools.d.ts +3 -0
- package/dist/tools/sensor-tools.d.ts.map +1 -0
- package/dist/tools/sensor-tools.js +466 -0
- package/dist/tools/sensor-tools.js.map +1 -0
- package/dist/tools/system-tools.d.ts.map +1 -1
- package/dist/tools/system-tools.js +147 -1
- package/dist/tools/system-tools.js.map +1 -1
- package/dist/tools/ui-tools.d.ts.map +1 -1
- package/dist/tools/ui-tools.js +4 -2
- package/dist/tools/ui-tools.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -288,6 +288,17 @@ claude-in-mobile input android "hello world"
|
|
|
288
288
|
claude-in-mobile ui-dump android | grep "Login"
|
|
289
289
|
```
|
|
290
290
|
|
|
291
|
+
#### Coordinate space (raw `x`/`y` in tap / swipe / long_press)
|
|
292
|
+
|
|
293
|
+
When you call an input tool with raw `x`/`y` (or `x1`/`y1`/`x2`/`y2` for swipe), the values are interpreted in **the most recent screenshot's pixel space** and auto-scaled to device coordinates before dispatch. The scale comes from the last `screen_capture` call: e.g., capture at `preset='low'` (270×480) on a 1080×2400 device sets a 4× factor, so `tap(135, 240)` becomes `tap(540, 960)` on the device.
|
|
294
|
+
|
|
295
|
+
This is convenient for the common flow `screen_capture → reason about pixel → tap`, but has two gotchas worth knowing:
|
|
296
|
+
|
|
297
|
+
- **Coordinates from `ui_find` / `ui_tree` are device coordinates**, not screenshot coordinates. They come from `uiautomator` which always reports in device space. If the most recent screenshot was at a low preset, passing those device coords as raw `x`/`y` will over-scale them. Prefer `index`, `text`, or `resourceId` for ui-sourced taps to avoid the issue entirely.
|
|
298
|
+
- **No screenshot taken yet?** Then there's no scale stored, and raw `x`/`y` are passed through 1:1 as device coords.
|
|
299
|
+
|
|
300
|
+
The cleanest mental model: *raw coords match whatever pixel space you're looking at on screen* (your last screenshot). For everything else, use the resolver fields (`index`, `text`, `resourceId`, `label`).
|
|
301
|
+
|
|
291
302
|
---
|
|
292
303
|
|
|
293
304
|
### iOS
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { A11yCategory } from "./types.js";
|
|
2
|
+
export declare const RULE_CATEGORIES: Record<string, A11yCategory>;
|
|
3
|
+
export declare const CATEGORY_LABELS: Record<A11yCategory, string>;
|
|
4
|
+
export declare const CATEGORY_ORDER: A11yCategory[];
|
|
5
|
+
export declare function getCategoryForRule(ruleId: string): A11yCategory;
|
|
6
|
+
//# sourceMappingURL=categories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"categories.d.ts","sourceRoot":"","sources":["../../src/a11y/categories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAOxD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAKxD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,YAAY,EAAmD,CAAC;AAE7F,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAI/D"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export const RULE_CATEGORIES = {
|
|
2
|
+
"missing-label": "labels",
|
|
3
|
+
"interactive-labels": "labels",
|
|
4
|
+
"touch-target": "touch-targets",
|
|
5
|
+
"focus-order": "focus",
|
|
6
|
+
"duplicate-descriptions": "states",
|
|
7
|
+
"state-description": "states",
|
|
8
|
+
};
|
|
9
|
+
export const CATEGORY_LABELS = {
|
|
10
|
+
labels: "Labels",
|
|
11
|
+
"touch-targets": "Touch Targets",
|
|
12
|
+
focus: "Focus",
|
|
13
|
+
states: "States",
|
|
14
|
+
};
|
|
15
|
+
export const CATEGORY_ORDER = ["labels", "touch-targets", "focus", "states"];
|
|
16
|
+
export function getCategoryForRule(ruleId) {
|
|
17
|
+
const cat = RULE_CATEGORIES[ruleId];
|
|
18
|
+
if (!cat)
|
|
19
|
+
throw new Error(`Unknown rule: ${ruleId}`);
|
|
20
|
+
return cat;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=categories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"categories.js","sourceRoot":"","sources":["../../src/a11y/categories.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAiC;IAC3D,eAAe,EAAE,QAAQ;IACzB,oBAAoB,EAAE,QAAQ;IAC9B,cAAc,EAAE,eAAe;IAC/B,aAAa,EAAE,OAAO;IACtB,wBAAwB,EAAE,QAAQ;IAClC,mBAAmB,EAAE,QAAQ;CAC9B,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAiC;IAC3D,MAAM,EAAE,QAAQ;IAChB,eAAe,EAAE,eAAe;IAChC,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAmB,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAE7F,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,EAAE,CAAC,CAAC;IACrD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/a11y/formatter.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { A11yReport, A11ySeverity } from "./types.js";
|
|
1
|
+
import type { A11yReport, A11ySeverity, A11yDetailedReport, A11yCategoryScore, A11yActionItem } from "./types.js";
|
|
2
2
|
/**
|
|
3
3
|
* Format an accessibility report as text for LLM consumption.
|
|
4
4
|
* Follows the PASS/FAIL pattern from visual-tools.
|
|
@@ -33,4 +33,19 @@ export declare function formatRuleDetail(rule: {
|
|
|
33
33
|
description: string;
|
|
34
34
|
platforms: string[];
|
|
35
35
|
}): string;
|
|
36
|
+
/**
|
|
37
|
+
* Format category breakdown as a compact table.
|
|
38
|
+
*/
|
|
39
|
+
export declare function formatCategoryBreakdown(categories: A11yCategoryScore[]): string;
|
|
40
|
+
/**
|
|
41
|
+
* Format action items as a prioritized list.
|
|
42
|
+
*/
|
|
43
|
+
export declare function formatActionItems(items: A11yActionItem[]): string;
|
|
44
|
+
/**
|
|
45
|
+
* Format a detailed accessibility report with category breakdown and action items.
|
|
46
|
+
*/
|
|
47
|
+
export declare function formatDetailedReport(report: A11yDetailedReport, options?: {
|
|
48
|
+
compact?: boolean;
|
|
49
|
+
passwordIndices?: Set<number>;
|
|
50
|
+
}): string;
|
|
36
51
|
//# sourceMappingURL=formatter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../src/a11y/formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAa,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../src/a11y/formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAa,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAoD7H;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE,GAC7D,MAAM,CAgER;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAW7D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GACzH,MAAM,CAWR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,GAAG,MAAM,CAST;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAY/E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM,CAQjE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,kBAAkB,EAC1B,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE,GAC7D,MAAM,CAwER"}
|
package/dist/a11y/formatter.js
CHANGED
|
@@ -131,4 +131,95 @@ export function formatRuleDetail(rule) {
|
|
|
131
131
|
`Platforms: ${rule.platforms.join(", ")}`,
|
|
132
132
|
].join("\n");
|
|
133
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* Format category breakdown as a compact table.
|
|
136
|
+
*/
|
|
137
|
+
export function formatCategoryBreakdown(categories) {
|
|
138
|
+
const lines = [];
|
|
139
|
+
const maxLabelLen = Math.max(...categories.map(c => c.label.length));
|
|
140
|
+
for (const cat of categories) {
|
|
141
|
+
const label = cat.label.padEnd(maxLabelLen);
|
|
142
|
+
const passed = cat.applicableCount - cat.issueCount;
|
|
143
|
+
const pct = `${cat.score}%`;
|
|
144
|
+
lines.push(` ${label} ${pct.padStart(4)} (${passed}/${cat.applicableCount} passed)`);
|
|
145
|
+
}
|
|
146
|
+
return lines.join("\n");
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Format action items as a prioritized list.
|
|
150
|
+
*/
|
|
151
|
+
export function formatActionItems(items) {
|
|
152
|
+
if (items.length === 0)
|
|
153
|
+
return "";
|
|
154
|
+
const lines = ["", "ACTION ITEMS:"];
|
|
155
|
+
for (const item of items) {
|
|
156
|
+
lines.push(` [${item.severity}] ${item.message}`);
|
|
157
|
+
}
|
|
158
|
+
return lines.join("\n");
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Format a detailed accessibility report with category breakdown and action items.
|
|
162
|
+
*/
|
|
163
|
+
export function formatDetailedReport(report, options) {
|
|
164
|
+
const compact = options?.compact === true;
|
|
165
|
+
const passwordIndices = options?.passwordIndices ?? new Set();
|
|
166
|
+
const hasCritical = report.issueCount.critical > 0;
|
|
167
|
+
const isPassing = report.score >= 100 && !hasCritical;
|
|
168
|
+
const status = isPassing ? "PASS" : "FAIL";
|
|
169
|
+
const header = `A11Y AUDIT: ${status} (score: ${report.score}/100)`;
|
|
170
|
+
const meta = `Platform: ${report.platform} | Elements: ${report.totalElements} | Standard: ${report.standard}`;
|
|
171
|
+
const counts = `Issues: ${report.issueCount.critical} critical, ${report.issueCount.serious} serious, ` +
|
|
172
|
+
`${report.issueCount.moderate} moderate, ${report.issueCount.minor} minor (${report.issueCount.total} total)`;
|
|
173
|
+
const lines = [header, meta, counts];
|
|
174
|
+
// Category breakdown
|
|
175
|
+
if (report.categories.length > 0) {
|
|
176
|
+
lines.push("");
|
|
177
|
+
lines.push("CATEGORY BREAKDOWN:");
|
|
178
|
+
lines.push(formatCategoryBreakdown(report.categories));
|
|
179
|
+
}
|
|
180
|
+
// Action items
|
|
181
|
+
if (report.actionItems.length > 0) {
|
|
182
|
+
lines.push(formatActionItems(report.actionItems));
|
|
183
|
+
}
|
|
184
|
+
// Individual issues (same as formatAuditReport)
|
|
185
|
+
if (report.issues.length > 0) {
|
|
186
|
+
const sorted = [...report.issues].sort((a, b) => SEVERITY_ORDER[a.severity] - SEVERITY_ORDER[b.severity]);
|
|
187
|
+
const groups = new Map();
|
|
188
|
+
for (const issue of sorted) {
|
|
189
|
+
const existing = groups.get(issue.severity);
|
|
190
|
+
if (existing)
|
|
191
|
+
existing.push(issue);
|
|
192
|
+
else
|
|
193
|
+
groups.set(issue.severity, [issue]);
|
|
194
|
+
}
|
|
195
|
+
let issueNum = 1;
|
|
196
|
+
const severityLabels = [
|
|
197
|
+
["critical", "CRITICAL"],
|
|
198
|
+
["serious", "SERIOUS"],
|
|
199
|
+
["moderate", "MODERATE"],
|
|
200
|
+
["minor", "MINOR"],
|
|
201
|
+
];
|
|
202
|
+
for (const [sev, label] of severityLabels) {
|
|
203
|
+
const groupIssues = groups.get(sev);
|
|
204
|
+
if (!groupIssues || groupIssues.length === 0)
|
|
205
|
+
continue;
|
|
206
|
+
lines.push("");
|
|
207
|
+
lines.push(`${label}:`);
|
|
208
|
+
for (const issue of groupIssues) {
|
|
209
|
+
if (compact) {
|
|
210
|
+
lines.push(formatIssueCompact(issue, issueNum, passwordIndices));
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
lines.push(formatIssueFull(issue, issueNum, passwordIndices));
|
|
214
|
+
}
|
|
215
|
+
issueNum++;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
if (report.passedRules.length > 0) {
|
|
220
|
+
lines.push("");
|
|
221
|
+
lines.push(`Passed rules: ${report.passedRules.join(", ")}`);
|
|
222
|
+
}
|
|
223
|
+
return lines.join("\n");
|
|
224
|
+
}
|
|
134
225
|
//# sourceMappingURL=formatter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/a11y/formatter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/a11y/formatter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,SAAS,cAAc,CAAC,SAAiB;IACvC,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC;AACjD,CAAC;AAED,SAAS,eAAe,CAAC,UAAkB;IACzC,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAC3B,OAAO,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,UAAU,CAAC;AACtD,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAgB,EAAE,eAA4B;IACtE,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;IACzB,MAAM,UAAU,GAAG,cAAc,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IAChD,MAAM,KAAK,GAAa,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,KAAK,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC;IAE/C,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,eAAe,CACtB,KAAgB,EAChB,GAAW,EACX,eAA4B;IAE5B,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IACrD,OAAO;QACL,MAAM,GAAG,KAAK,KAAK,CAAC,MAAM,UAAU,KAAK,CAAC,IAAI,OAAO,GAAG,EAAE;QAC1D,SAAS,KAAK,CAAC,OAAO,EAAE;KACzB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAgB,EAChB,GAAW,EACX,eAA4B;IAE5B,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IACrD,OAAO,MAAM,GAAG,KAAK,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,OAAO,GAAG,EAAE,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAkB,EAClB,OAA8D;IAE9D,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,IAAI,GAAG,EAAU,CAAC;IAEtE,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;IACtD,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAE3C,MAAM,MAAM,GAAG,eAAe,MAAM,YAAY,MAAM,CAAC,KAAK,OAAO,CAAC;IACpE,MAAM,IAAI,GAAG,aAAa,MAAM,CAAC,QAAQ,gBAAgB,MAAM,CAAC,aAAa,gBAAgB,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC/G,MAAM,MAAM,GACV,WAAW,MAAM,CAAC,UAAU,CAAC,QAAQ,cAAc,MAAM,CAAC,UAAU,CAAC,OAAO,YAAY;QACxF,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,cAAc,MAAM,CAAC,UAAU,CAAC,KAAK,WAAW,MAAM,CAAC,UAAU,CAAC,KAAK,SAAS,CAAC;IAEhH,MAAM,KAAK,GAAa,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAE/C,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,0BAA0B;QAC1B,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CACpC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAClE,CAAC;QAEF,oBAAoB;QACpB,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6B,CAAC;QACpD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,MAAM,cAAc,GAAkC;YACpD,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,SAAS,EAAE,SAAS,CAAC;YACtB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,OAAO,EAAE,OAAO,CAAC;SACnB,CAAC;QAEF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,cAAc,EAAE,CAAC;YAC1C,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAEvD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;YACxB,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;gBAChC,IAAI,OAAO,EAAE,CAAC;oBACZ,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;gBACnE,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;gBAChE,CAAC;gBACD,QAAQ,EAAE,CAAC;YACb,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAkB;IACnD,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;IACtD,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAE3C,OAAO;QACL,SAAS,MAAM,YAAY,MAAM,CAAC,KAAK,OAAO;QAC9C,aAAa,MAAM,CAAC,QAAQ,gBAAgB,MAAM,CAAC,aAAa,gBAAgB,MAAM,CAAC,QAAQ,EAAE;QACjG,WAAW,MAAM,CAAC,UAAU,CAAC,QAAQ,cAAc,MAAM,CAAC,UAAU,CAAC,OAAO,aAAa,MAAM,CAAC,UAAU,CAAC,QAAQ,cAAc,MAAM,CAAC,UAAU,CAAC,KAAK,WAAW,MAAM,CAAC,UAAU,CAAC,KAAK,SAAS;QACnM,WAAW,MAAM,CAAC,WAAW,CAAC,MAAM,QAAQ;KAC7C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,KAA0H;IAE1H,MAAM,KAAK,GAAa,CAAC,wBAAwB,KAAK,CAAC,MAAM,QAAQ,EAAE,EAAE,CAAC,CAAC;IAE3E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,UAAU,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACjE,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAOhC;IACC,OAAO;QACL,SAAS,IAAI,CAAC,EAAE,EAAE;QAClB,SAAS,IAAI,CAAC,IAAI,EAAE;QACpB,SAAS,IAAI,CAAC,IAAI,EAAE;QACpB,aAAa,IAAI,CAAC,QAAQ,EAAE;QAC5B,gBAAgB,IAAI,CAAC,WAAW,EAAE;QAClC,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;KAC1C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,UAA+B;IACrE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAErE,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,UAAU,CAAC;QACpD,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,GAAG,CAAC,eAAe,UAAU,CAAC,CAAC;IACzF,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAuB;IACvD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,MAAM,KAAK,GAAa,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAA0B,EAC1B,OAA8D;IAE9D,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,IAAI,GAAG,EAAU,CAAC;IAEtE,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;IACtD,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAE3C,MAAM,MAAM,GAAG,eAAe,MAAM,YAAY,MAAM,CAAC,KAAK,OAAO,CAAC;IACpE,MAAM,IAAI,GAAG,aAAa,MAAM,CAAC,QAAQ,gBAAgB,MAAM,CAAC,aAAa,gBAAgB,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC/G,MAAM,MAAM,GACV,WAAW,MAAM,CAAC,UAAU,CAAC,QAAQ,cAAc,MAAM,CAAC,UAAU,CAAC,OAAO,YAAY;QACxF,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,cAAc,MAAM,CAAC,UAAU,CAAC,KAAK,WAAW,MAAM,CAAC,UAAU,CAAC,KAAK,SAAS,CAAC;IAEhH,MAAM,KAAK,GAAa,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAE/C,qBAAqB;IACrB,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,eAAe;IACf,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,gDAAgD;IAChD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CACpC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAClE,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6B,CAAC;QACpD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,QAAQ;gBAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;gBAC9B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,MAAM,cAAc,GAAkC;YACpD,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,SAAS,EAAE,SAAS,CAAC;YACtB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,OAAO,EAAE,OAAO,CAAC;SACnB,CAAC;QAEF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,cAAc,EAAE,CAAC;YAC1C,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAEvD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;YACxB,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;gBAChC,IAAI,OAAO,EAAE,CAAC;oBACZ,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;gBACnE,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;gBAChE,CAAC;gBACD,QAAQ,EAAE,CAAC;YACb,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duplicate-descriptions.d.ts","sourceRoot":"","sources":["../../../src/a11y/rules/duplicate-descriptions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"duplicate-descriptions.d.ts","sourceRoot":"","sources":["../../../src/a11y/rules/duplicate-descriptions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAgC,MAAM,aAAa,CAAC;AAE1E,eAAO,MAAM,yBAAyB,EAAE,QAwDvC,CAAC"}
|
|
@@ -8,12 +8,17 @@ export const duplicateDescriptionsRule = {
|
|
|
8
8
|
run(elements) {
|
|
9
9
|
// Group by non-empty contentDesc, exclude short (<=1 char) descriptions
|
|
10
10
|
const groups = new Map();
|
|
11
|
+
let applicableCount = 0;
|
|
11
12
|
for (const el of elements) {
|
|
12
13
|
const desc = el.contentDesc.trim();
|
|
13
14
|
if (desc.length <= 1)
|
|
14
15
|
continue;
|
|
15
16
|
if (el.width <= 0 || el.height <= 0)
|
|
16
17
|
continue;
|
|
18
|
+
// Skip password elements — security fix M-2
|
|
19
|
+
if (el.password)
|
|
20
|
+
continue;
|
|
21
|
+
applicableCount++;
|
|
17
22
|
const existing = groups.get(desc);
|
|
18
23
|
if (existing) {
|
|
19
24
|
existing.push(el);
|
|
@@ -23,7 +28,7 @@ export const duplicateDescriptionsRule = {
|
|
|
23
28
|
}
|
|
24
29
|
}
|
|
25
30
|
const issues = [];
|
|
26
|
-
for (const [
|
|
31
|
+
for (const [, els] of groups) {
|
|
27
32
|
if (els.length <= 1)
|
|
28
33
|
continue;
|
|
29
34
|
// Report each duplicate element
|
|
@@ -32,7 +37,7 @@ export const duplicateDescriptionsRule = {
|
|
|
32
37
|
ruleId: "duplicate-descriptions",
|
|
33
38
|
wcag: "1.3.1",
|
|
34
39
|
severity: "moderate",
|
|
35
|
-
message: `Duplicate content description
|
|
40
|
+
message: `Duplicate content description shared by ${els.length} elements`,
|
|
36
41
|
element: {
|
|
37
42
|
index: el.index,
|
|
38
43
|
className: el.className,
|
|
@@ -44,7 +49,7 @@ export const duplicateDescriptionsRule = {
|
|
|
44
49
|
});
|
|
45
50
|
}
|
|
46
51
|
}
|
|
47
|
-
return issues;
|
|
52
|
+
return { applicableCount, issues };
|
|
48
53
|
},
|
|
49
54
|
};
|
|
50
55
|
//# sourceMappingURL=duplicate-descriptions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duplicate-descriptions.js","sourceRoot":"","sources":["../../../src/a11y/rules/duplicate-descriptions.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,yBAAyB,GAAa;IACjD,EAAE,EAAE,wBAAwB;IAC5B,IAAI,EAAE,wBAAwB;IAC9B,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,UAAU;IACpB,WAAW,EACT,oFAAoF;IACtF,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC;IACxC,GAAG,CAAC,QAAqB;QACvB,wEAAwE;QACxE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"duplicate-descriptions.js","sourceRoot":"","sources":["../../../src/a11y/rules/duplicate-descriptions.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,yBAAyB,GAAa;IACjD,EAAE,EAAE,wBAAwB;IAC5B,IAAI,EAAE,wBAAwB;IAC9B,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,UAAU;IACpB,WAAW,EACT,oFAAoF;IACtF,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC;IACxC,GAAG,CAAC,QAAqB;QACvB,wEAAwE;QACxE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;QAC9C,IAAI,eAAe,GAAG,CAAC,CAAC;QAExB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;gBAAE,SAAS;YAC/B,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC;gBAAE,SAAS;YAC9C,4CAA4C;YAC5C,IAAI,EAAE,CAAC,QAAQ;gBAAE,SAAS;YAE1B,eAAe,EAAE,CAAC;YAElB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAgB,EAAE,CAAC;QAE/B,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;YAC7B,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;gBAAE,SAAS;YAE9B,gCAAgC;YAChC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC;oBACV,MAAM,EAAE,wBAAwB;oBAChC,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,UAAU;oBACpB,OAAO,EAAE,2CAA2C,GAAG,CAAC,MAAM,WAAW;oBACzE,OAAO,EAAE;wBACP,KAAK,EAAE,EAAE,CAAC,KAAK;wBACf,SAAS,EAAE,EAAE,CAAC,SAAS;wBACvB,UAAU,EAAE,EAAE,CAAC,UAAU;wBACzB,MAAM,EAAE,EAAE,CAAC,MAAM;wBACjB,OAAO,EAAE,EAAE,CAAC,OAAO;wBACnB,OAAO,EAAE,EAAE,CAAC,OAAO;qBACpB;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC;IACrC,CAAC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-order.d.ts","sourceRoot":"","sources":["../../../src/a11y/rules/focus-order.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"focus-order.d.ts","sourceRoot":"","sources":["../../../src/a11y/rules/focus-order.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAgC,MAAM,aAAa,CAAC;AAE1E,eAAO,MAAM,cAAc,EAAE,QAsC5B,CAAC"}
|
|
@@ -7,11 +7,13 @@ export const focusOrderRule = {
|
|
|
7
7
|
platforms: ["android", "ios", "desktop"],
|
|
8
8
|
run(elements) {
|
|
9
9
|
const issues = [];
|
|
10
|
+
let applicableCount = 0;
|
|
10
11
|
for (const el of elements) {
|
|
11
12
|
if (!el.clickable)
|
|
12
13
|
continue;
|
|
13
14
|
if (el.width <= 0 || el.height <= 0)
|
|
14
15
|
continue;
|
|
16
|
+
applicableCount++;
|
|
15
17
|
if (!el.focusable) {
|
|
16
18
|
issues.push({
|
|
17
19
|
ruleId: "focus-order",
|
|
@@ -29,7 +31,7 @@ export const focusOrderRule = {
|
|
|
29
31
|
});
|
|
30
32
|
}
|
|
31
33
|
}
|
|
32
|
-
return issues;
|
|
34
|
+
return { applicableCount, issues };
|
|
33
35
|
},
|
|
34
36
|
};
|
|
35
37
|
//# sourceMappingURL=focus-order.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-order.js","sourceRoot":"","sources":["../../../src/a11y/rules/focus-order.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,cAAc,GAAa;IACtC,EAAE,EAAE,aAAa;IACjB,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,SAAS;IACnB,WAAW,EACT,kGAAkG;IACpG,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC;IACxC,GAAG,CAAC,QAAqB;QACvB,MAAM,MAAM,GAAgB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"focus-order.js","sourceRoot":"","sources":["../../../src/a11y/rules/focus-order.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,cAAc,GAAa;IACtC,EAAE,EAAE,aAAa;IACjB,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,SAAS;IACnB,WAAW,EACT,kGAAkG;IACpG,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC;IACxC,GAAG,CAAC,QAAqB;QACvB,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,IAAI,eAAe,GAAG,CAAC,CAAC;QAExB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,EAAE,CAAC,SAAS;gBAAE,SAAS;YAC5B,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC;gBAAE,SAAS;YAE9C,eAAe,EAAE,CAAC;YAElB,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC;oBACV,MAAM,EAAE,aAAa;oBACrB,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,SAAS;oBACnB,OAAO,EAAE,mEAAmE;oBAC5E,OAAO,EAAE;wBACP,KAAK,EAAE,EAAE,CAAC,KAAK;wBACf,SAAS,EAAE,EAAE,CAAC,SAAS;wBACvB,UAAU,EAAE,EAAE,CAAC,UAAU;wBACzB,MAAM,EAAE,EAAE,CAAC,MAAM;wBACjB,OAAO,EAAE,EAAE,CAAC,OAAO;wBACnB,OAAO,EAAE,EAAE,CAAC,OAAO;qBACpB;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC;IACrC,CAAC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-labels.d.ts","sourceRoot":"","sources":["../../../src/a11y/rules/interactive-labels.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"interactive-labels.d.ts","sourceRoot":"","sources":["../../../src/a11y/rules/interactive-labels.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAgC,MAAM,aAAa,CAAC;AAE1E,eAAO,MAAM,qBAAqB,EAAE,QA4CnC,CAAC"}
|
|
@@ -7,6 +7,7 @@ export const interactiveLabelsRule = {
|
|
|
7
7
|
platforms: ["android", "ios", "desktop"],
|
|
8
8
|
run(elements) {
|
|
9
9
|
const issues = [];
|
|
10
|
+
let applicableCount = 0;
|
|
10
11
|
for (const el of elements) {
|
|
11
12
|
if (!el.clickable)
|
|
12
13
|
continue;
|
|
@@ -16,6 +17,7 @@ export const interactiveLabelsRule = {
|
|
|
16
17
|
el.className.includes("ImageButton");
|
|
17
18
|
if (!isImage)
|
|
18
19
|
continue;
|
|
20
|
+
applicableCount++;
|
|
19
21
|
if (el.contentDesc.trim().length === 0) {
|
|
20
22
|
issues.push({
|
|
21
23
|
ruleId: "interactive-labels",
|
|
@@ -33,7 +35,7 @@ export const interactiveLabelsRule = {
|
|
|
33
35
|
});
|
|
34
36
|
}
|
|
35
37
|
}
|
|
36
|
-
return issues;
|
|
38
|
+
return { applicableCount, issues };
|
|
37
39
|
},
|
|
38
40
|
};
|
|
39
41
|
//# sourceMappingURL=interactive-labels.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-labels.js","sourceRoot":"","sources":["../../../src/a11y/rules/interactive-labels.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,qBAAqB,GAAa;IAC7C,EAAE,EAAE,oBAAoB;IACxB,IAAI,EAAE,0BAA0B;IAChC,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,UAAU;IACpB,WAAW,EACT,+EAA+E;IACjF,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC;IACxC,GAAG,CAAC,QAAqB;QACvB,MAAM,MAAM,GAAgB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"interactive-labels.js","sourceRoot":"","sources":["../../../src/a11y/rules/interactive-labels.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,qBAAqB,GAAa;IAC7C,EAAE,EAAE,oBAAoB;IACxB,IAAI,EAAE,0BAA0B;IAChC,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,UAAU;IACpB,WAAW,EACT,+EAA+E;IACjF,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC;IACxC,GAAG,CAAC,QAAqB;QACvB,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,IAAI,eAAe,GAAG,CAAC,CAAC;QAExB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,EAAE,CAAC,SAAS;gBAAE,SAAS;YAC5B,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC;gBAAE,SAAS;YAE9C,MAAM,OAAO,GACX,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAClC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YACvC,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,eAAe,EAAE,CAAC;YAElB,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC;oBACV,MAAM,EAAE,oBAAoB;oBAC5B,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,UAAU;oBACpB,OAAO,EACL,uEAAuE;oBACzE,OAAO,EAAE;wBACP,KAAK,EAAE,EAAE,CAAC,KAAK;wBACf,SAAS,EAAE,EAAE,CAAC,SAAS;wBACvB,UAAU,EAAE,EAAE,CAAC,UAAU;wBACzB,MAAM,EAAE,EAAE,CAAC,MAAM;wBACjB,OAAO,EAAE,EAAE,CAAC,OAAO;wBACnB,OAAO,EAAE,EAAE,CAAC,OAAO;qBACpB;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC;IACrC,CAAC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"missing-label.d.ts","sourceRoot":"","sources":["../../../src/a11y/rules/missing-label.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"missing-label.d.ts","sourceRoot":"","sources":["../../../src/a11y/rules/missing-label.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAgC,MAAM,aAAa,CAAC;AAQ1E,eAAO,MAAM,gBAAgB,EAAE,QAiE9B,CAAC"}
|
|
@@ -11,6 +11,7 @@ export const missingLabelRule = {
|
|
|
11
11
|
platforms: ["android", "ios", "desktop"],
|
|
12
12
|
run(elements) {
|
|
13
13
|
const issues = [];
|
|
14
|
+
let applicableCount = 0;
|
|
14
15
|
for (const el of elements) {
|
|
15
16
|
if (!el.clickable)
|
|
16
17
|
continue;
|
|
@@ -19,6 +20,7 @@ export const missingLabelRule = {
|
|
|
19
20
|
// Invisible elements are skipped
|
|
20
21
|
if (el.width <= 0 || el.height <= 0)
|
|
21
22
|
continue;
|
|
23
|
+
applicableCount++;
|
|
22
24
|
const hasContentDesc = el.contentDesc.trim().length > 0;
|
|
23
25
|
const hasText = el.text.trim().length > 0;
|
|
24
26
|
// Password elements: contentDesc still required, but missing text is ok
|
|
@@ -58,7 +60,7 @@ export const missingLabelRule = {
|
|
|
58
60
|
});
|
|
59
61
|
}
|
|
60
62
|
}
|
|
61
|
-
return issues;
|
|
63
|
+
return { applicableCount, issues };
|
|
62
64
|
},
|
|
63
65
|
};
|
|
64
66
|
//# sourceMappingURL=missing-label.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"missing-label.js","sourceRoot":"","sources":["../../../src/a11y/rules/missing-label.ts"],"names":[],"mappings":"AAGA,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAEjE,SAAS,WAAW,CAAC,SAAiB;IACpC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAa;IACxC,EAAE,EAAE,eAAe;IACnB,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,UAAU;IACpB,WAAW,EACT,sFAAsF;IACxF,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC;IACxC,GAAG,CAAC,QAAqB;QACvB,MAAM,MAAM,GAAgB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"missing-label.js","sourceRoot":"","sources":["../../../src/a11y/rules/missing-label.ts"],"names":[],"mappings":"AAGA,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAEjE,SAAS,WAAW,CAAC,SAAiB;IACpC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAa;IACxC,EAAE,EAAE,eAAe;IACnB,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,UAAU;IACpB,WAAW,EACT,sFAAsF;IACxF,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC;IACxC,GAAG,CAAC,QAAqB;QACvB,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,IAAI,eAAe,GAAG,CAAC,CAAC;QAExB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,EAAE,CAAC,SAAS;gBAAE,SAAS;YAC5B,IAAI,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC;gBAAE,SAAS;YACxC,iCAAiC;YACjC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC;gBAAE,SAAS;YAE9C,eAAe,EAAE,CAAC;YAElB,MAAM,cAAc,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;YACxD,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;YAE1C,wEAAwE;YACxE,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;gBAChB,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,MAAM,CAAC,IAAI,CAAC;wBACV,MAAM,EAAE,eAAe;wBACvB,IAAI,EAAE,OAAO;wBACb,QAAQ,EAAE,UAAU;wBACpB,OAAO,EACL,8DAA8D;wBAChE,OAAO,EAAE;4BACP,KAAK,EAAE,EAAE,CAAC,KAAK;4BACf,SAAS,EAAE,EAAE,CAAC,SAAS;4BACvB,UAAU,EAAE,EAAE,CAAC,UAAU;4BACzB,MAAM,EAAE,EAAE,CAAC,MAAM;4BACjB,OAAO,EAAE,EAAE,CAAC,OAAO;4BACnB,OAAO,EAAE,EAAE,CAAC,OAAO;yBACpB;qBACF,CAAC,CAAC;gBACL,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC;oBACV,MAAM,EAAE,eAAe;oBACvB,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,UAAU;oBACpB,OAAO,EAAE,sDAAsD;oBAC/D,OAAO,EAAE;wBACP,KAAK,EAAE,EAAE,CAAC,KAAK;wBACf,SAAS,EAAE,EAAE,CAAC,SAAS;wBACvB,UAAU,EAAE,EAAE,CAAC,UAAU;wBACzB,MAAM,EAAE,EAAE,CAAC,MAAM;wBACjB,OAAO,EAAE,EAAE,CAAC,OAAO;wBACnB,OAAO,EAAE,EAAE,CAAC,OAAO;qBACpB;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC;IACrC,CAAC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-description.d.ts","sourceRoot":"","sources":["../../../src/a11y/rules/state-description.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"state-description.d.ts","sourceRoot":"","sources":["../../../src/a11y/rules/state-description.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAgC,MAAM,aAAa,CAAC;AAE1E,eAAO,MAAM,oBAAoB,EAAE,QA0ClC,CAAC"}
|
|
@@ -7,11 +7,13 @@ export const stateDescriptionRule = {
|
|
|
7
7
|
platforms: ["android", "ios", "desktop"],
|
|
8
8
|
run(elements) {
|
|
9
9
|
const issues = [];
|
|
10
|
+
let applicableCount = 0;
|
|
10
11
|
for (const el of elements) {
|
|
11
12
|
if (!el.checkable)
|
|
12
13
|
continue;
|
|
13
14
|
if (el.width <= 0 || el.height <= 0)
|
|
14
15
|
continue;
|
|
16
|
+
applicableCount++;
|
|
15
17
|
const hasText = el.text.trim().length > 0;
|
|
16
18
|
const hasContentDesc = el.contentDesc.trim().length > 0;
|
|
17
19
|
if (!hasText && !hasContentDesc) {
|
|
@@ -31,7 +33,7 @@ export const stateDescriptionRule = {
|
|
|
31
33
|
});
|
|
32
34
|
}
|
|
33
35
|
}
|
|
34
|
-
return issues;
|
|
36
|
+
return { applicableCount, issues };
|
|
35
37
|
},
|
|
36
38
|
};
|
|
37
39
|
//# sourceMappingURL=state-description.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-description.js","sourceRoot":"","sources":["../../../src/a11y/rules/state-description.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,oBAAoB,GAAa;IAC5C,EAAE,EAAE,mBAAmB;IACvB,IAAI,EAAE,mBAAmB;IACzB,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,UAAU;IACpB,WAAW,EACT,mGAAmG;IACrG,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC;IACxC,GAAG,CAAC,QAAqB;QACvB,MAAM,MAAM,GAAgB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"state-description.js","sourceRoot":"","sources":["../../../src/a11y/rules/state-description.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,oBAAoB,GAAa;IAC5C,EAAE,EAAE,mBAAmB;IACvB,IAAI,EAAE,mBAAmB;IACzB,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,UAAU;IACpB,WAAW,EACT,mGAAmG;IACrG,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC;IACxC,GAAG,CAAC,QAAqB;QACvB,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,IAAI,eAAe,GAAG,CAAC,CAAC;QAExB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,EAAE,CAAC,SAAS;gBAAE,SAAS;YAC5B,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC;gBAAE,SAAS;YAE9C,eAAe,EAAE,CAAC;YAElB,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;YAC1C,MAAM,cAAc,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;YAExD,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC;oBACV,MAAM,EAAE,mBAAmB;oBAC3B,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,UAAU;oBACpB,OAAO,EACL,4EAA4E;oBAC9E,OAAO,EAAE;wBACP,KAAK,EAAE,EAAE,CAAC,KAAK;wBACf,SAAS,EAAE,EAAE,CAAC,SAAS;wBACvB,UAAU,EAAE,EAAE,CAAC,UAAU;wBACzB,MAAM,EAAE,EAAE,CAAC,MAAM;wBACjB,OAAO,EAAE,EAAE,CAAC,OAAO;wBACnB,OAAO,EAAE,EAAE,CAAC,OAAO;qBACpB;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC;IACrC,CAAC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"touch-target.d.ts","sourceRoot":"","sources":["../../../src/a11y/rules/touch-target.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"touch-target.d.ts","sourceRoot":"","sources":["../../../src/a11y/rules/touch-target.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAgC,MAAM,aAAa,CAAC;AAI1E,eAAO,MAAM,eAAe,EAAE,QAsC7B,CAAC"}
|
|
@@ -8,12 +8,14 @@ export const touchTargetRule = {
|
|
|
8
8
|
platforms: ["android", "ios", "desktop"],
|
|
9
9
|
run(elements) {
|
|
10
10
|
const issues = [];
|
|
11
|
+
let applicableCount = 0;
|
|
11
12
|
for (const el of elements) {
|
|
12
13
|
if (!el.clickable)
|
|
13
14
|
continue;
|
|
14
15
|
// Skip invisible elements
|
|
15
16
|
if (el.width <= 0 || el.height <= 0)
|
|
16
17
|
continue;
|
|
18
|
+
applicableCount++;
|
|
17
19
|
if (el.width < MIN_TARGET_SIZE || el.height < MIN_TARGET_SIZE) {
|
|
18
20
|
issues.push({
|
|
19
21
|
ruleId: "touch-target",
|
|
@@ -31,7 +33,7 @@ export const touchTargetRule = {
|
|
|
31
33
|
});
|
|
32
34
|
}
|
|
33
35
|
}
|
|
34
|
-
return issues;
|
|
36
|
+
return { applicableCount, issues };
|
|
35
37
|
},
|
|
36
38
|
};
|
|
37
39
|
//# sourceMappingURL=touch-target.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"touch-target.js","sourceRoot":"","sources":["../../../src/a11y/rules/touch-target.ts"],"names":[],"mappings":"AAGA,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,MAAM,CAAC,MAAM,eAAe,GAAa;IACvC,EAAE,EAAE,cAAc;IAClB,IAAI,EAAE,mBAAmB;IACzB,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,iEAAiE,eAAe,IAAI,eAAe,KAAK;IACrH,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC;IACxC,GAAG,CAAC,QAAqB;QACvB,MAAM,MAAM,GAAgB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"touch-target.js","sourceRoot":"","sources":["../../../src/a11y/rules/touch-target.ts"],"names":[],"mappings":"AAGA,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,MAAM,CAAC,MAAM,eAAe,GAAa;IACvC,EAAE,EAAE,cAAc;IAClB,IAAI,EAAE,mBAAmB;IACzB,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,iEAAiE,eAAe,IAAI,eAAe,KAAK;IACrH,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC;IACxC,GAAG,CAAC,QAAqB;QACvB,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,IAAI,eAAe,GAAG,CAAC,CAAC;QAExB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,EAAE,CAAC,SAAS;gBAAE,SAAS;YAC5B,0BAA0B;YAC1B,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC;gBAAE,SAAS;YAE9C,eAAe,EAAE,CAAC;YAElB,IAAI,EAAE,CAAC,KAAK,GAAG,eAAe,IAAI,EAAE,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;gBAC9D,MAAM,CAAC,IAAI,CAAC;oBACV,MAAM,EAAE,cAAc;oBACtB,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,SAAS;oBACnB,OAAO,EAAE,gBAAgB,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,4BAA4B,eAAe,IAAI,eAAe,EAAE;oBAC9G,OAAO,EAAE;wBACP,KAAK,EAAE,EAAE,CAAC,KAAK;wBACf,SAAS,EAAE,EAAE,CAAC,SAAS;wBACvB,UAAU,EAAE,EAAE,CAAC,UAAU;wBACzB,MAAM,EAAE,EAAE,CAAC,MAAM;wBACjB,OAAO,EAAE,EAAE,CAAC,OAAO;wBACnB,OAAO,EAAE,EAAE,CAAC,OAAO;qBACpB;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC;IACrC,CAAC;CACF,CAAC"}
|
package/dist/a11y/score.d.ts
CHANGED
|
@@ -1,7 +1,23 @@
|
|
|
1
|
-
import type { A11yIssue } from "./types.js";
|
|
1
|
+
import type { A11yIssue, A11yRuleResult, A11yCategoryScore, A11yActionItem } from "./types.js";
|
|
2
2
|
/**
|
|
3
3
|
* Calculate accessibility score from issues.
|
|
4
4
|
* Score = 100 - sum(severity weights), clamped to [0, 100].
|
|
5
5
|
*/
|
|
6
6
|
export declare function calculateScore(issues: A11yIssue[]): number;
|
|
7
|
+
/**
|
|
8
|
+
* Calculate relative accessibility score from rule results.
|
|
9
|
+
* Score = weighted average of pass rates, weighted by applicableCount.
|
|
10
|
+
* Rules with 0 applicable elements are treated as 100% pass.
|
|
11
|
+
*/
|
|
12
|
+
export declare function calculateRelativeScore(ruleResults: A11yRuleResult[]): number;
|
|
13
|
+
/**
|
|
14
|
+
* Calculate per-category scores from rule results.
|
|
15
|
+
* Categories follow CATEGORY_ORDER for consistent display.
|
|
16
|
+
*/
|
|
17
|
+
export declare function calculateCategoryScores(ruleResults: A11yRuleResult[]): A11yCategoryScore[];
|
|
18
|
+
/**
|
|
19
|
+
* Generate actionable fix items from rule results.
|
|
20
|
+
* Sorted by severity (critical first).
|
|
21
|
+
*/
|
|
22
|
+
export declare function generateActionItems(ruleResults: A11yRuleResult[]): A11yActionItem[];
|
|
7
23
|
//# sourceMappingURL=score.d.ts.map
|
package/dist/a11y/score.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"score.d.ts","sourceRoot":"","sources":["../../src/a11y/score.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"score.d.ts","sourceRoot":"","sources":["../../src/a11y/score.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAgB,MAAM,YAAY,CAAC;AAI7G;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAM1D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,cAAc,EAAE,GAAG,MAAM,CAY5E;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,cAAc,EAAE,GAAG,iBAAiB,EAAE,CA8B1F;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAWnF"}
|
package/dist/a11y/score.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { SEVERITY_WEIGHTS } from "./severity.js";
|
|
1
|
+
import { SEVERITY_WEIGHTS, SEVERITY_ORDER } from "./severity.js";
|
|
2
|
+
import { CATEGORY_LABELS, CATEGORY_ORDER } from "./categories.js";
|
|
2
3
|
/**
|
|
3
4
|
* Calculate accessibility score from issues.
|
|
4
5
|
* Score = 100 - sum(severity weights), clamped to [0, 100].
|
|
@@ -7,4 +8,82 @@ export function calculateScore(issues) {
|
|
|
7
8
|
const penalty = issues.reduce((sum, issue) => sum + (SEVERITY_WEIGHTS[issue.severity] ?? 0), 0);
|
|
8
9
|
return Math.max(0, Math.min(100, 100 - penalty));
|
|
9
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* Calculate relative accessibility score from rule results.
|
|
13
|
+
* Score = weighted average of pass rates, weighted by applicableCount.
|
|
14
|
+
* Rules with 0 applicable elements are treated as 100% pass.
|
|
15
|
+
*/
|
|
16
|
+
export function calculateRelativeScore(ruleResults) {
|
|
17
|
+
let totalApplicable = 0;
|
|
18
|
+
let weightedPassSum = 0;
|
|
19
|
+
for (const r of ruleResults) {
|
|
20
|
+
if (r.applicableCount === 0)
|
|
21
|
+
continue;
|
|
22
|
+
totalApplicable += r.applicableCount;
|
|
23
|
+
weightedPassSum += r.passRate * r.applicableCount;
|
|
24
|
+
}
|
|
25
|
+
if (totalApplicable === 0)
|
|
26
|
+
return 100;
|
|
27
|
+
return Math.round((weightedPassSum / totalApplicable) * 100);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Calculate per-category scores from rule results.
|
|
31
|
+
* Categories follow CATEGORY_ORDER for consistent display.
|
|
32
|
+
*/
|
|
33
|
+
export function calculateCategoryScores(ruleResults) {
|
|
34
|
+
const categoryMap = new Map();
|
|
35
|
+
for (const r of ruleResults) {
|
|
36
|
+
const existing = categoryMap.get(r.category);
|
|
37
|
+
if (existing)
|
|
38
|
+
existing.push(r);
|
|
39
|
+
else
|
|
40
|
+
categoryMap.set(r.category, [r]);
|
|
41
|
+
}
|
|
42
|
+
return CATEGORY_ORDER
|
|
43
|
+
.filter(cat => categoryMap.has(cat))
|
|
44
|
+
.map(cat => {
|
|
45
|
+
const rules = categoryMap.get(cat);
|
|
46
|
+
const totalApplicable = rules.reduce((s, r) => s + r.applicableCount, 0);
|
|
47
|
+
const totalIssues = rules.reduce((s, r) => s + r.issues.length, 0);
|
|
48
|
+
const score = totalApplicable === 0
|
|
49
|
+
? 100
|
|
50
|
+
: Math.round(rules.reduce((s, r) => s + r.passRate * r.applicableCount, 0) / totalApplicable * 100);
|
|
51
|
+
return {
|
|
52
|
+
category: cat,
|
|
53
|
+
label: CATEGORY_LABELS[cat],
|
|
54
|
+
score,
|
|
55
|
+
applicableCount: totalApplicable,
|
|
56
|
+
issueCount: totalIssues,
|
|
57
|
+
rules,
|
|
58
|
+
};
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Generate actionable fix items from rule results.
|
|
63
|
+
* Sorted by severity (critical first).
|
|
64
|
+
*/
|
|
65
|
+
export function generateActionItems(ruleResults) {
|
|
66
|
+
return ruleResults
|
|
67
|
+
.filter(r => r.issues.length > 0)
|
|
68
|
+
.map(r => ({
|
|
69
|
+
ruleId: r.ruleId,
|
|
70
|
+
category: r.category,
|
|
71
|
+
severity: r.issues[0].severity,
|
|
72
|
+
count: r.issues.length,
|
|
73
|
+
message: buildActionMessage(r.ruleId, r.issues.length),
|
|
74
|
+
}))
|
|
75
|
+
.sort((a, b) => SEVERITY_ORDER[a.severity] - SEVERITY_ORDER[b.severity]);
|
|
76
|
+
}
|
|
77
|
+
const ACTION_TEMPLATES = {
|
|
78
|
+
"missing-label": (n) => `Add labels to ${n} clickable element${n > 1 ? "s" : ""} without text or content description`,
|
|
79
|
+
"interactive-labels": (n) => `Add content descriptions to ${n} clickable image${n > 1 ? "s" : ""}`,
|
|
80
|
+
"touch-target": (n) => `Fix touch targets on ${n} element${n > 1 ? "s" : ""} (minimum 48x48dp)`,
|
|
81
|
+
"focus-order": (n) => `Make ${n} clickable element${n > 1 ? "s" : ""} focusable for keyboard navigation`,
|
|
82
|
+
"duplicate-descriptions": (n) => `Fix ${n} element${n > 1 ? "s" : ""} with duplicate content descriptions`,
|
|
83
|
+
"state-description": (n) => `Add labels to ${n} checkable element${n > 1 ? "s" : ""} (checkbox/switch/toggle)`,
|
|
84
|
+
};
|
|
85
|
+
function buildActionMessage(ruleId, count) {
|
|
86
|
+
const template = ACTION_TEMPLATES[ruleId];
|
|
87
|
+
return template ? template(count) : `Fix ${count} ${ruleId} issue${count > 1 ? "s" : ""}`;
|
|
88
|
+
}
|
|
10
89
|
//# sourceMappingURL=score.js.map
|
package/dist/a11y/score.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"score.js","sourceRoot":"","sources":["../../src/a11y/score.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"score.js","sourceRoot":"","sources":["../../src/a11y/score.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAElE;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAmB;IAChD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAC3B,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAC7D,CAAC,CACF,CAAC;IACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;AACnD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,WAA6B;IAClE,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,eAAe,GAAG,CAAC,CAAC;IAExB,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,eAAe,KAAK,CAAC;YAAE,SAAS;QACtC,eAAe,IAAI,CAAC,CAAC,eAAe,CAAC;QACrC,eAAe,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,eAAe,CAAC;IACpD,CAAC;IAED,IAAI,eAAe,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,GAAG,eAAe,CAAC,GAAG,GAAG,CAAC,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,WAA6B;IACnE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkC,CAAC;IAE9D,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,QAAQ;YAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;YAC1B,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,cAAc;SAClB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACnC,GAAG,CAAC,GAAG,CAAC,EAAE;QACT,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QACpC,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACzE,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,eAAe,KAAK,CAAC;YACjC,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,IAAI,CAAC,KAAK,CACR,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,GAAG,eAAe,GAAG,GAAG,CACtF,CAAC;QAEN,OAAO;YACL,QAAQ,EAAE,GAAG;YACb,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC;YAC3B,KAAK;YACL,eAAe,EAAE,eAAe;YAChC,UAAU,EAAE,WAAW;YACvB,KAAK;SACN,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAA6B;IAC/D,OAAO,WAAW;SACf,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;SAChC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACT,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ;QAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;QACtB,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;KACvD,CAAC,CAAC;SACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,gBAAgB,GAA8C;IAClE,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,sCAAsC;IACrH,oBAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,+BAA+B,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;IAClG,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,wBAAwB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,oBAAoB;IAC/F,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,oCAAoC;IACxG,wBAAwB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,sCAAsC;IAC1G,mBAAmB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,2BAA2B;CAC/G,CAAC;AAEF,SAAS,kBAAkB,CAAC,MAAc,EAAE,KAAa;IACvD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,MAAM,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC5F,CAAC"}
|