@a11yst/cli 1.0.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/LICENSE +373 -0
- package/NOTICE.md +11 -0
- package/README.md +60 -0
- package/TRADEMARKS.md +52 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +9 -0
- package/dist/bin.js.map +1 -0
- package/dist/ci-policy-options.d.ts +15 -0
- package/dist/ci-policy-options.d.ts.map +1 -0
- package/dist/ci-policy-options.js +54 -0
- package/dist/ci-policy-options.js.map +1 -0
- package/dist/cli-progress.d.ts +16 -0
- package/dist/cli-progress.d.ts.map +1 -0
- package/dist/cli-progress.js +35 -0
- package/dist/cli-progress.js.map +1 -0
- package/dist/command-program.d.ts +7 -0
- package/dist/command-program.d.ts.map +1 -0
- package/dist/command-program.js +950 -0
- package/dist/command-program.js.map +1 -0
- package/dist/commands/audit-flow-output.d.ts +4 -0
- package/dist/commands/audit-flow-output.d.ts.map +1 -0
- package/dist/commands/audit-flow-output.js +119 -0
- package/dist/commands/audit-flow-output.js.map +1 -0
- package/dist/commands/audit-policy-output.d.ts +9 -0
- package/dist/commands/audit-policy-output.d.ts.map +1 -0
- package/dist/commands/audit-policy-output.js +95 -0
- package/dist/commands/audit-policy-output.js.map +1 -0
- package/dist/commands/audit.d.ts +15 -0
- package/dist/commands/audit.d.ts.map +1 -0
- package/dist/commands/audit.js +178 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/baseline-config.d.ts +14 -0
- package/dist/commands/baseline-config.d.ts.map +1 -0
- package/dist/commands/baseline-config.js +33 -0
- package/dist/commands/baseline-config.js.map +1 -0
- package/dist/commands/baseline.d.ts +86 -0
- package/dist/commands/baseline.d.ts.map +1 -0
- package/dist/commands/baseline.js +392 -0
- package/dist/commands/baseline.js.map +1 -0
- package/dist/commands/classify.d.ts +30 -0
- package/dist/commands/classify.d.ts.map +1 -0
- package/dist/commands/classify.js +105 -0
- package/dist/commands/classify.js.map +1 -0
- package/dist/commands/detect.d.ts +12 -0
- package/dist/commands/detect.d.ts.map +1 -0
- package/dist/commands/detect.js +213 -0
- package/dist/commands/detect.js.map +1 -0
- package/dist/commands/doctor.d.ts +16 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +404 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/findings.d.ts +45 -0
- package/dist/commands/findings.d.ts.map +1 -0
- package/dist/commands/findings.js +220 -0
- package/dist/commands/findings.js.map +1 -0
- package/dist/commands/flows.d.ts +30 -0
- package/dist/commands/flows.d.ts.map +1 -0
- package/dist/commands/flows.js +108 -0
- package/dist/commands/flows.js.map +1 -0
- package/dist/commands/init.d.ts +64 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +293 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/profiles.d.ts +5 -0
- package/dist/commands/profiles.d.ts.map +1 -0
- package/dist/commands/profiles.js +39 -0
- package/dist/commands/profiles.js.map +1 -0
- package/dist/commands/report.d.ts +72 -0
- package/dist/commands/report.d.ts.map +1 -0
- package/dist/commands/report.js +284 -0
- package/dist/commands/report.js.map +1 -0
- package/dist/commands/results-loader.d.ts +15 -0
- package/dist/commands/results-loader.d.ts.map +1 -0
- package/dist/commands/results-loader.js +100 -0
- package/dist/commands/results-loader.js.map +1 -0
- package/dist/commands/routes.d.ts +35 -0
- package/dist/commands/routes.d.ts.map +1 -0
- package/dist/commands/routes.js +201 -0
- package/dist/commands/routes.js.map +1 -0
- package/dist/commands/unclassify.d.ts +22 -0
- package/dist/commands/unclassify.d.ts.map +1 -0
- package/dist/commands/unclassify.js +79 -0
- package/dist/commands/unclassify.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/output.d.ts +9 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +29 -0
- package/dist/output.js.map +1 -0
- package/dist/presentation/ansi.d.ts +12 -0
- package/dist/presentation/ansi.d.ts.map +1 -0
- package/dist/presentation/ansi.js +51 -0
- package/dist/presentation/ansi.js.map +1 -0
- package/dist/presentation/audit-presentation.d.ts +20 -0
- package/dist/presentation/audit-presentation.d.ts.map +1 -0
- package/dist/presentation/audit-presentation.js +409 -0
- package/dist/presentation/audit-presentation.js.map +1 -0
- package/dist/presentation/boundary.d.ts +5 -0
- package/dist/presentation/boundary.d.ts.map +1 -0
- package/dist/presentation/boundary.js +4 -0
- package/dist/presentation/boundary.js.map +1 -0
- package/dist/presentation/brand-header.d.ts +6 -0
- package/dist/presentation/brand-header.d.ts.map +1 -0
- package/dist/presentation/brand-header.js +18 -0
- package/dist/presentation/brand-header.js.map +1 -0
- package/dist/presentation/capabilities.d.ts +4 -0
- package/dist/presentation/capabilities.d.ts.map +1 -0
- package/dist/presentation/capabilities.js +25 -0
- package/dist/presentation/capabilities.js.map +1 -0
- package/dist/presentation/color.d.ts +13 -0
- package/dist/presentation/color.d.ts.map +1 -0
- package/dist/presentation/color.js +27 -0
- package/dist/presentation/color.js.map +1 -0
- package/dist/presentation/disclaimers.d.ts +3 -0
- package/dist/presentation/disclaimers.d.ts.map +1 -0
- package/dist/presentation/disclaimers.js +3 -0
- package/dist/presentation/disclaimers.js.map +1 -0
- package/dist/presentation/finding-groups.d.ts +14 -0
- package/dist/presentation/finding-groups.d.ts.map +1 -0
- package/dist/presentation/finding-groups.js +77 -0
- package/dist/presentation/finding-groups.js.map +1 -0
- package/dist/presentation/finding-source-report.d.ts +21 -0
- package/dist/presentation/finding-source-report.d.ts.map +1 -0
- package/dist/presentation/finding-source-report.js +134 -0
- package/dist/presentation/finding-source-report.js.map +1 -0
- package/dist/presentation/human-output.d.ts +4 -0
- package/dist/presentation/human-output.d.ts.map +1 -0
- package/dist/presentation/human-output.js +8 -0
- package/dist/presentation/human-output.js.map +1 -0
- package/dist/presentation/index.d.ts +15 -0
- package/dist/presentation/index.d.ts.map +1 -0
- package/dist/presentation/index.js +13 -0
- package/dist/presentation/index.js.map +1 -0
- package/dist/presentation/mode.d.ts +4 -0
- package/dist/presentation/mode.d.ts.map +1 -0
- package/dist/presentation/mode.js +8 -0
- package/dist/presentation/mode.js.map +1 -0
- package/dist/presentation/progress-mode.d.ts +20 -0
- package/dist/presentation/progress-mode.d.ts.map +1 -0
- package/dist/presentation/progress-mode.js +38 -0
- package/dist/presentation/progress-mode.js.map +1 -0
- package/dist/presentation/progress-reporter.d.ts +18 -0
- package/dist/presentation/progress-reporter.d.ts.map +1 -0
- package/dist/presentation/progress-reporter.js +236 -0
- package/dist/presentation/progress-reporter.js.map +1 -0
- package/dist/presentation/progress-signals.d.ts +2 -0
- package/dist/presentation/progress-signals.d.ts.map +1 -0
- package/dist/presentation/progress-signals.js +14 -0
- package/dist/presentation/progress-signals.js.map +1 -0
- package/dist/presentation/status.d.ts +11 -0
- package/dist/presentation/status.d.ts.map +1 -0
- package/dist/presentation/status.js +14 -0
- package/dist/presentation/status.js.map +1 -0
- package/dist/presentation/types.d.ts +23 -0
- package/dist/presentation/types.d.ts.map +1 -0
- package/dist/presentation/types.js +2 -0
- package/dist/presentation/types.js.map +1 -0
- package/dist/run-cli.d.ts +6 -0
- package/dist/run-cli.d.ts.map +1 -0
- package/dist/run-cli.js +15 -0
- package/dist/run-cli.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { resolveProjectPath, loadConfig } from "@a11yst/config";
|
|
2
|
+
import { createAdapterContext, resolveAdapter, resolveProjectRoutes, } from "@a11yst/adapters";
|
|
3
|
+
import { formatLabelValue } from "../output.js";
|
|
4
|
+
export async function runRoutes(options) {
|
|
5
|
+
const config = await loadConfig({
|
|
6
|
+
cwd: options.cwd,
|
|
7
|
+
configPath: options.configPath,
|
|
8
|
+
});
|
|
9
|
+
const filter = options.projectName?.length
|
|
10
|
+
? new Set(options.projectName)
|
|
11
|
+
: undefined;
|
|
12
|
+
const projects = [];
|
|
13
|
+
for (const project of config.projects) {
|
|
14
|
+
if (project.platform !== "web") {
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
if (filter && !filter.has(project.name)) {
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
projects.push(await resolveProjectRoutesResult(project, config.configDir));
|
|
21
|
+
}
|
|
22
|
+
if (filter) {
|
|
23
|
+
const found = new Set(projects.map((entry) => entry.name));
|
|
24
|
+
const missing = options.projectName.filter((name) => !found.has(name));
|
|
25
|
+
if (missing.length > 0) {
|
|
26
|
+
throw new Error(`Unknown project name(s): ${missing.join(", ")}. Configured: ${config.projects
|
|
27
|
+
.map((entry) => entry.name)
|
|
28
|
+
.join(", ")}.`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return { projects };
|
|
32
|
+
}
|
|
33
|
+
async function resolveProjectRoutesResult(project, configDir) {
|
|
34
|
+
const projectRoot = resolveProjectPath(configDir, project.rootDir);
|
|
35
|
+
const adapter = resolveAdapter({ framework: project.framework, platform: project.platform }) ??
|
|
36
|
+
resolveAdapter({ framework: "unknown", platform: "web" });
|
|
37
|
+
if (!adapter) {
|
|
38
|
+
throw new Error(`No adapter available for web project "${project.name}".`);
|
|
39
|
+
}
|
|
40
|
+
const context = createAdapterContext(projectRoot, configDir, project);
|
|
41
|
+
const discovery = await adapter.discoverRoutes(context);
|
|
42
|
+
const adapterDiagnostics = await adapter.getDiagnostics(context);
|
|
43
|
+
const merged = resolveProjectRoutes({
|
|
44
|
+
explicitRoutes: project.routes,
|
|
45
|
+
discovery,
|
|
46
|
+
mode: project.routeDiscovery.mode,
|
|
47
|
+
samples: project.routeDiscovery.samples,
|
|
48
|
+
});
|
|
49
|
+
const diagnostics = dedupeDiagnostics([...merged.diagnostics, ...adapterDiagnostics]);
|
|
50
|
+
const explain = discovery.explain
|
|
51
|
+
? {
|
|
52
|
+
...discovery.explain,
|
|
53
|
+
fallbackUsed: discovery.explain.fallbackUsed ||
|
|
54
|
+
merged.routes.some((route) => route.origin === "adapter-default"),
|
|
55
|
+
}
|
|
56
|
+
: undefined;
|
|
57
|
+
return {
|
|
58
|
+
name: project.name,
|
|
59
|
+
framework: project.framework,
|
|
60
|
+
adapterId: adapter.id,
|
|
61
|
+
discoveryMode: project.routeDiscovery.mode,
|
|
62
|
+
routes: merged.routes.map((route) => ({
|
|
63
|
+
path: route.path,
|
|
64
|
+
origin: route.origin ?? "explicit",
|
|
65
|
+
...(route.sourceFile !== undefined ? { sourceFile: route.sourceFile } : {}),
|
|
66
|
+
...(route.sourceLine !== undefined ? { sourceLine: route.sourceLine } : {}),
|
|
67
|
+
...(route.pattern !== undefined ? { pattern: route.pattern } : {}),
|
|
68
|
+
})),
|
|
69
|
+
skippedPatterns: merged.skippedPatterns,
|
|
70
|
+
diagnostics,
|
|
71
|
+
explain,
|
|
72
|
+
explicitRoutes: project.routes.map((route) => ({
|
|
73
|
+
path: route.path,
|
|
74
|
+
origin: "explicit",
|
|
75
|
+
})),
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
function dedupeDiagnostics(diagnostics) {
|
|
79
|
+
const seen = new Set();
|
|
80
|
+
const result = [];
|
|
81
|
+
for (const diagnostic of diagnostics) {
|
|
82
|
+
const key = `${diagnostic.code}:${diagnostic.message}:${diagnostic.path ?? ""}`;
|
|
83
|
+
if (seen.has(key)) {
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
seen.add(key);
|
|
87
|
+
result.push(diagnostic);
|
|
88
|
+
}
|
|
89
|
+
return result;
|
|
90
|
+
}
|
|
91
|
+
function formatRouteOriginLabel(origin) {
|
|
92
|
+
switch (origin) {
|
|
93
|
+
case "react-jsx-route":
|
|
94
|
+
case "react-router-object":
|
|
95
|
+
return "react-router";
|
|
96
|
+
case "filesystem":
|
|
97
|
+
return "filesystem";
|
|
98
|
+
case "explicit":
|
|
99
|
+
return "explicit";
|
|
100
|
+
case "adapter-default":
|
|
101
|
+
return "fallback";
|
|
102
|
+
case "dynamic-sample":
|
|
103
|
+
return "dynamic-sample";
|
|
104
|
+
default:
|
|
105
|
+
return origin;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
function formatRouteSource(route) {
|
|
109
|
+
if (!route.sourceFile) {
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
if (route.sourceLine !== undefined) {
|
|
113
|
+
return `${route.sourceFile}:${route.sourceLine}`;
|
|
114
|
+
}
|
|
115
|
+
return route.sourceFile;
|
|
116
|
+
}
|
|
117
|
+
export function formatRoutesJson(result) {
|
|
118
|
+
return result;
|
|
119
|
+
}
|
|
120
|
+
export function formatRoutesHuman(result, options = {}) {
|
|
121
|
+
if (result.projects.length === 0) {
|
|
122
|
+
return "No web projects matched the current filters.";
|
|
123
|
+
}
|
|
124
|
+
const lines = ["Resolved routes", ""];
|
|
125
|
+
for (const project of result.projects) {
|
|
126
|
+
lines.push(project.name);
|
|
127
|
+
lines.push(formatLabelValue("Framework", project.framework));
|
|
128
|
+
lines.push(formatLabelValue("Adapter", project.adapterId));
|
|
129
|
+
lines.push(formatLabelValue("Discovery", project.discoveryMode));
|
|
130
|
+
if (options.explain) {
|
|
131
|
+
lines.push("");
|
|
132
|
+
lines.push("Explain:");
|
|
133
|
+
lines.push(formatLabelValue("Strategy", project.explain?.strategy ?? "unknown"));
|
|
134
|
+
lines.push(formatLabelValue("Router detected", project.explain?.routerDetected ? "yes" : "no"));
|
|
135
|
+
if (project.explain?.routerEvidence.length) {
|
|
136
|
+
lines.push("Router evidence:");
|
|
137
|
+
for (const evidence of project.explain.routerEvidence) {
|
|
138
|
+
lines.push(` - ${evidence}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
lines.push("");
|
|
143
|
+
if (project.routes.length === 0) {
|
|
144
|
+
lines.push(" (no routes resolved)");
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
lines.push("Routes:");
|
|
148
|
+
for (const route of project.routes) {
|
|
149
|
+
const label = formatRouteOriginLabel(route.origin);
|
|
150
|
+
const source = formatRouteSource(route);
|
|
151
|
+
const suffix = [label, source ? `from ${source}` : undefined]
|
|
152
|
+
.filter(Boolean)
|
|
153
|
+
.join(", ");
|
|
154
|
+
lines.push(` ✓ ${route.path}${suffix ? ` ${suffix}` : ""}`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
if (project.skippedPatterns.length > 0) {
|
|
158
|
+
lines.push("");
|
|
159
|
+
if (options.explain) {
|
|
160
|
+
lines.push("Unresolved:");
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
lines.push("Skipped dynamic patterns:");
|
|
164
|
+
}
|
|
165
|
+
for (const skipped of project.skippedPatterns) {
|
|
166
|
+
const source = skipped.sourceFile
|
|
167
|
+
? skipped.sourceLine !== undefined
|
|
168
|
+
? `${skipped.sourceFile}:${skipped.sourceLine}`
|
|
169
|
+
: skipped.sourceFile
|
|
170
|
+
: undefined;
|
|
171
|
+
lines.push(` ! ${skipped.pattern} ${skipped.reason}${source ? ` (${source})` : ""}`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
if (options.explain && project.explicitRoutes.length > 0) {
|
|
175
|
+
lines.push("");
|
|
176
|
+
lines.push("Explicit:");
|
|
177
|
+
for (const route of project.explicitRoutes) {
|
|
178
|
+
lines.push(` ${route.path}`);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
if (options.explain) {
|
|
182
|
+
lines.push("");
|
|
183
|
+
lines.push(formatLabelValue("Fallback", project.explain?.fallbackUsed
|
|
184
|
+
? `yes — ${project.explain.fallbackReason ?? "adapter default route"}`
|
|
185
|
+
: "no"));
|
|
186
|
+
}
|
|
187
|
+
if (project.diagnostics.length > 0) {
|
|
188
|
+
lines.push("");
|
|
189
|
+
lines.push("Diagnostics:");
|
|
190
|
+
for (const diagnostic of project.diagnostics) {
|
|
191
|
+
lines.push(` [${diagnostic.severity}] ${diagnostic.code}: ${diagnostic.message}`);
|
|
192
|
+
if (diagnostic.hint) {
|
|
193
|
+
lines.push(` Hint: ${diagnostic.hint}`);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
lines.push("");
|
|
198
|
+
}
|
|
199
|
+
return lines.join("\n").trimEnd();
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/commands/routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { FindingClassification } from "@a11yst/types";
|
|
2
|
+
export interface RunUnclassifyOptions {
|
|
3
|
+
cwd: string;
|
|
4
|
+
configPath?: string;
|
|
5
|
+
findingId: string;
|
|
6
|
+
from?: string;
|
|
7
|
+
yes?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface UnclassifyResult {
|
|
10
|
+
status: "preview" | "removed";
|
|
11
|
+
baselinePath: string;
|
|
12
|
+
findingId: string;
|
|
13
|
+
fingerprint: string;
|
|
14
|
+
previousClassification?: FindingClassification;
|
|
15
|
+
}
|
|
16
|
+
export declare function runUnclassify(options: RunUnclassifyOptions): Promise<UnclassifyResult>;
|
|
17
|
+
export declare function formatUnclassifyHuman(result: UnclassifyResult): string;
|
|
18
|
+
export declare function formatUnclassifyJson(result: UnclassifyResult): unknown;
|
|
19
|
+
export declare function formatUnclassifyPreviewFromError(error: Error & {
|
|
20
|
+
preview?: UnclassifyResult;
|
|
21
|
+
}): UnclassifyResult | undefined;
|
|
22
|
+
//# sourceMappingURL=unclassify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unclassify.d.ts","sourceRoot":"","sources":["../../src/commands/unclassify.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAK3D,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB,CAAC,EAAE,qBAAqB,CAAC;CAChD;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgE5F;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAoBtE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAEtE;AAED,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,KAAK,GAAG;IAAE,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAAE,GAC5C,gBAAgB,GAAG,SAAS,CAE9B"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { loadBaselineFile, readBaselineFileState, removeClassificationFromEntry, resolveFindingIdentifier, writeBaselineFile, } from "@a11yst/baseline";
|
|
2
|
+
import { formatLabelValue } from "../output.js";
|
|
3
|
+
import { loadBaselineContext } from "./baseline-config.js";
|
|
4
|
+
import { loadAuditResults } from "./results-loader.js";
|
|
5
|
+
export async function runUnclassify(options) {
|
|
6
|
+
const context = await loadBaselineContext({
|
|
7
|
+
cwd: options.cwd,
|
|
8
|
+
configPath: options.configPath,
|
|
9
|
+
});
|
|
10
|
+
const { result } = await loadAuditResults({
|
|
11
|
+
cwd: options.cwd,
|
|
12
|
+
resultsPath: options.from,
|
|
13
|
+
});
|
|
14
|
+
const match = resolveFindingIdentifier(result, options.findingId);
|
|
15
|
+
const finding = match.finding;
|
|
16
|
+
const baseline = await loadBaselineFile(context.baselinePath);
|
|
17
|
+
const entry = baseline.entries.find((item) => item.fingerprint === finding.fingerprint);
|
|
18
|
+
if (!entry) {
|
|
19
|
+
throw new Error(`Finding "${finding.id}" is not present in the baseline at "${context.baselinePath}".`);
|
|
20
|
+
}
|
|
21
|
+
if (!entry.classification) {
|
|
22
|
+
throw new Error(`Finding "${finding.id}" has no classification to remove.`);
|
|
23
|
+
}
|
|
24
|
+
const preview = {
|
|
25
|
+
status: "preview",
|
|
26
|
+
baselinePath: context.baselinePath,
|
|
27
|
+
findingId: finding.id,
|
|
28
|
+
fingerprint: finding.fingerprint,
|
|
29
|
+
previousClassification: entry.classification,
|
|
30
|
+
};
|
|
31
|
+
if (!options.yes) {
|
|
32
|
+
const error = new Error("Unclassify requires confirmation. Re-run with --yes to apply.");
|
|
33
|
+
error.exitCode = 2;
|
|
34
|
+
error.preview = preview;
|
|
35
|
+
throw error;
|
|
36
|
+
}
|
|
37
|
+
const now = new Date().toISOString();
|
|
38
|
+
const updatedEntry = removeClassificationFromEntry(entry, now);
|
|
39
|
+
const fileState = await readBaselineFileState(context.baselinePath);
|
|
40
|
+
await writeBaselineFile(context.baselinePath, {
|
|
41
|
+
...baseline,
|
|
42
|
+
updatedAt: now,
|
|
43
|
+
entries: baseline.entries.map((item) => item.fingerprint === finding.fingerprint ? updatedEntry : item),
|
|
44
|
+
}, {
|
|
45
|
+
expectedHash: fileState.hash,
|
|
46
|
+
expectedMtimeMs: fileState.mtimeMs,
|
|
47
|
+
});
|
|
48
|
+
return {
|
|
49
|
+
status: "removed",
|
|
50
|
+
baselinePath: context.baselinePath,
|
|
51
|
+
findingId: finding.id,
|
|
52
|
+
fingerprint: finding.fingerprint,
|
|
53
|
+
previousClassification: entry.classification,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export function formatUnclassifyHuman(result) {
|
|
57
|
+
const lines = result.status === "removed"
|
|
58
|
+
? ["Classification removed", ""]
|
|
59
|
+
: ["Unclassify preview", ""];
|
|
60
|
+
lines.push(formatLabelValue("Baseline", result.baselinePath));
|
|
61
|
+
lines.push(formatLabelValue("Finding", result.findingId));
|
|
62
|
+
lines.push(formatLabelValue("Fingerprint", result.fingerprint));
|
|
63
|
+
if (result.previousClassification) {
|
|
64
|
+
lines.push(formatLabelValue("Disposition", result.previousClassification.disposition));
|
|
65
|
+
lines.push(formatLabelValue("Reason", result.previousClassification.reason));
|
|
66
|
+
}
|
|
67
|
+
if (result.status === "preview") {
|
|
68
|
+
lines.push("");
|
|
69
|
+
lines.push("No changes were written. Re-run with --yes to apply.");
|
|
70
|
+
}
|
|
71
|
+
return lines.join("\n");
|
|
72
|
+
}
|
|
73
|
+
export function formatUnclassifyJson(result) {
|
|
74
|
+
return result;
|
|
75
|
+
}
|
|
76
|
+
export function formatUnclassifyPreviewFromError(error) {
|
|
77
|
+
return error.preview;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=unclassify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unclassify.js","sourceRoot":"","sources":["../../src/commands/unclassify.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { runCli } from "./run-cli.js";
|
|
2
|
+
export type { RunCliOptions } from "./run-cli.js";
|
|
3
|
+
export { formatDetectHuman, formatDetectJson, runDetect, } from "./commands/detect.js";
|
|
4
|
+
export { formatFlowsHuman, formatFlowsJson, runFlows, } from "./commands/flows.js";
|
|
5
|
+
export { formatRoutesHuman, formatRoutesJson, runRoutes, } from "./commands/routes.js";
|
|
6
|
+
export { formatAuditHuman, formatAuditJson } from "./commands/audit.js";
|
|
7
|
+
export { formatReportHuman, formatReportJson, runReport, } from "./commands/report.js";
|
|
8
|
+
export { formatProfilesHuman, formatProfilesJson, runProfiles, } from "./commands/profiles.js";
|
|
9
|
+
export { formatDoctorHuman, formatDoctorJson, runDoctor, } from "./commands/doctor.js";
|
|
10
|
+
export { assertCanWriteConfig, buildInitConfigSource, configFilePath, formatInitHuman, formatInitJson, runInit, } from "./commands/init.js";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,GACV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,QAAQ,GACT,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,GACV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,GACV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,GACZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,GACV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,cAAc,EACd,OAAO,GACR,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { runCli } from "./run-cli.js";
|
|
2
|
+
export { formatDetectHuman, formatDetectJson, runDetect, } from "./commands/detect.js";
|
|
3
|
+
export { formatFlowsHuman, formatFlowsJson, runFlows, } from "./commands/flows.js";
|
|
4
|
+
export { formatRoutesHuman, formatRoutesJson, runRoutes, } from "./commands/routes.js";
|
|
5
|
+
export { formatAuditHuman, formatAuditJson } from "./commands/audit.js";
|
|
6
|
+
export { formatReportHuman, formatReportJson, runReport, } from "./commands/report.js";
|
|
7
|
+
export { formatProfilesHuman, formatProfilesJson, runProfiles, } from "./commands/profiles.js";
|
|
8
|
+
export { formatDoctorHuman, formatDoctorJson, runDoctor, } from "./commands/doctor.js";
|
|
9
|
+
export { assertCanWriteConfig, buildInitConfigSource, configFilePath, formatInitHuman, formatInitJson, runInit, } from "./commands/init.js";
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,GACV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,QAAQ,GACT,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,GACV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,GACV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,GACZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,GACV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,cAAc,EACd,OAAO,GACR,MAAM,oBAAoB,CAAC"}
|
package/dist/output.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Whether ANSI colour is allowed. Respects NO_COLOR and non-TTY stdout. */
|
|
2
|
+
export declare function colorEnabled(stream?: NodeJS.WriteStream): boolean;
|
|
3
|
+
export declare function writeStdout(message: string): void;
|
|
4
|
+
export declare function writeStderr(message: string): void;
|
|
5
|
+
export declare function writeJson(value: unknown, stream?: NodeJS.WriteStream): void;
|
|
6
|
+
export declare function formatLabelValue(label: string, value: string | number, width?: number): string;
|
|
7
|
+
export declare function preparingMessage(): string;
|
|
8
|
+
export declare function checkingMessage(): string;
|
|
9
|
+
//# sourceMappingURL=output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,MAAM,GAAE,MAAM,CAAC,WAA4B,GAAG,OAAO,CAQjF;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEjD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEjD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,GAAE,MAAM,CAAC,WAA4B,GAAG,IAAI,CAE3F;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,SAAK,GAAG,MAAM,CAE1F;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC"}
|
package/dist/output.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** Whether ANSI colour is allowed. Respects NO_COLOR and non-TTY stdout. */
|
|
2
|
+
export function colorEnabled(stream = process.stdout) {
|
|
3
|
+
if (process.env.NO_COLOR !== undefined && process.env.NO_COLOR !== "") {
|
|
4
|
+
return false;
|
|
5
|
+
}
|
|
6
|
+
if (process.env.FORCE_COLOR === "0") {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
return Boolean(stream.isTTY);
|
|
10
|
+
}
|
|
11
|
+
export function writeStdout(message) {
|
|
12
|
+
process.stdout.write(message.endsWith("\n") ? message : `${message}\n`);
|
|
13
|
+
}
|
|
14
|
+
export function writeStderr(message) {
|
|
15
|
+
process.stderr.write(message.endsWith("\n") ? message : `${message}\n`);
|
|
16
|
+
}
|
|
17
|
+
export function writeJson(value, stream = process.stdout) {
|
|
18
|
+
stream.write(`${JSON.stringify(value, null, 2)}\n`);
|
|
19
|
+
}
|
|
20
|
+
export function formatLabelValue(label, value, width = 12) {
|
|
21
|
+
return `${label.padEnd(width)}${value}`;
|
|
22
|
+
}
|
|
23
|
+
export function preparingMessage() {
|
|
24
|
+
return "Preparing project.";
|
|
25
|
+
}
|
|
26
|
+
export function checkingMessage() {
|
|
27
|
+
return "Running accessibility audit.";
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,MAAM,UAAU,YAAY,CAAC,SAA6B,OAAO,CAAC,MAAM;IACtE,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;QACtE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,GAAG,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAc,EAAE,SAA6B,OAAO,CAAC,MAAM;IACnF,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,KAAsB,EAAE,KAAK,GAAG,EAAE;IAChF,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,8BAA8B,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Severity } from "@a11yst/types";
|
|
2
|
+
export declare function stripAnsi(text: string): string;
|
|
3
|
+
export declare function visibleLength(text: string): number;
|
|
4
|
+
export type AnsiStyle = {
|
|
5
|
+
bold?: boolean;
|
|
6
|
+
dim?: boolean;
|
|
7
|
+
fg?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function styleText(text: string, style: AnsiStyle, colorEnabled: boolean): string;
|
|
10
|
+
export declare function styleSeverityLabel(severity: Severity, colorEnabled: boolean): string;
|
|
11
|
+
export declare function padVisible(text: string, width: number): string;
|
|
12
|
+
//# sourceMappingURL=ansi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ansi.d.ts","sourceRoot":"","sources":["../../src/presentation/ansi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAK9C,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAaF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,GAAG,MAAM,CAkBvF;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,GAAG,MAAM,CAMpF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAM9D"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// eslint-disable-next-line no-control-regex
|
|
2
|
+
const ANSI_PATTERN = /\x1b\[[0-9;]*m/g;
|
|
3
|
+
export function stripAnsi(text) {
|
|
4
|
+
return text.replace(ANSI_PATTERN, "");
|
|
5
|
+
}
|
|
6
|
+
export function visibleLength(text) {
|
|
7
|
+
return stripAnsi(text).length;
|
|
8
|
+
}
|
|
9
|
+
const RESET = "\x1b[0m";
|
|
10
|
+
const BOLD = "\x1b[1m";
|
|
11
|
+
const DIM = "\x1b[2m";
|
|
12
|
+
const SEVERITY_FG = {
|
|
13
|
+
critical: "\x1b[35m",
|
|
14
|
+
high: "\x1b[31m",
|
|
15
|
+
medium: "\x1b[33m",
|
|
16
|
+
minor: "\x1b[36m",
|
|
17
|
+
};
|
|
18
|
+
export function styleText(text, style, colorEnabled) {
|
|
19
|
+
if (!colorEnabled) {
|
|
20
|
+
return text;
|
|
21
|
+
}
|
|
22
|
+
const codes = [];
|
|
23
|
+
if (style.bold) {
|
|
24
|
+
codes.push(BOLD);
|
|
25
|
+
}
|
|
26
|
+
if (style.dim) {
|
|
27
|
+
codes.push(DIM);
|
|
28
|
+
}
|
|
29
|
+
if (style.fg) {
|
|
30
|
+
codes.push(style.fg);
|
|
31
|
+
}
|
|
32
|
+
if (codes.length === 0) {
|
|
33
|
+
return text;
|
|
34
|
+
}
|
|
35
|
+
return `${codes.join("")}${text}${RESET}`;
|
|
36
|
+
}
|
|
37
|
+
export function styleSeverityLabel(severity, colorEnabled) {
|
|
38
|
+
const label = severity.toUpperCase();
|
|
39
|
+
if (!colorEnabled) {
|
|
40
|
+
return label;
|
|
41
|
+
}
|
|
42
|
+
return styleText(label, { bold: true, fg: SEVERITY_FG[severity] }, true);
|
|
43
|
+
}
|
|
44
|
+
export function padVisible(text, width) {
|
|
45
|
+
const len = visibleLength(text);
|
|
46
|
+
if (len >= width) {
|
|
47
|
+
return text;
|
|
48
|
+
}
|
|
49
|
+
return `${text}${" ".repeat(width - len)}`;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=ansi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ansi.js","sourceRoot":"","sources":["../../src/presentation/ansi.ts"],"names":[],"mappings":"AAEA,4CAA4C;AAC5C,MAAM,YAAY,GAAG,iBAAiB,CAAC;AAEvC,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AAChC,CAAC;AAQD,MAAM,KAAK,GAAG,SAAS,CAAC;AACxB,MAAM,IAAI,GAAG,SAAS,CAAC;AACvB,MAAM,GAAG,GAAG,SAAS,CAAC;AAEtB,MAAM,WAAW,GAA6B;IAC5C,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,UAAU;IAClB,KAAK,EAAE,UAAU;CAClB,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,KAAgB,EAAE,YAAqB;IAC7E,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAkB,EAAE,YAAqB;IAC1E,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,KAAa;IACpD,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { AuditExecutionResult, AuditRunResult, Finding } from "@a11yst/types";
|
|
2
|
+
import { buildFindingGroupKey, countUniqueIssues, groupFindings, type FindingGroup } from "@a11yst/reporters";
|
|
3
|
+
export { buildFindingGroupKey, countUniqueIssues, groupFindings, type FindingGroup, };
|
|
4
|
+
import type { ColorMode } from "./color.js";
|
|
5
|
+
import type { TerminalCapabilities, TerminalPresentationMode } from "./types.js";
|
|
6
|
+
export type AuditPresentationOptions = {
|
|
7
|
+
colorMode?: ColorMode;
|
|
8
|
+
capabilities?: TerminalCapabilities;
|
|
9
|
+
presentationMode?: TerminalPresentationMode;
|
|
10
|
+
terminalWidth?: number;
|
|
11
|
+
verbose?: boolean;
|
|
12
|
+
};
|
|
13
|
+
export declare function formatAuditFindingsPresentation(findings: Finding[], options?: AuditPresentationOptions): string[];
|
|
14
|
+
export declare function formatAuditRunSummaries(runs: AuditRunResult[], options?: {
|
|
15
|
+
skipFlowCheckpoints?: boolean;
|
|
16
|
+
}): string[];
|
|
17
|
+
export declare function formatAuditExecutionHeader(result: AuditExecutionResult, labelValue: (label: string, value: string | number) => string): string[];
|
|
18
|
+
export declare function formatAuditFooterSummary(result: AuditExecutionResult): string[];
|
|
19
|
+
export declare function formatProfileReviewSections(result: AuditExecutionResult): string[];
|
|
20
|
+
//# sourceMappingURL=audit-presentation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-presentation.d.ts","sourceRoot":"","sources":["../../src/presentation/audit-presentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EACd,OAAO,EAER,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EAEjB,aAAa,EAEb,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,KAAK,YAAY,GAClB,CAAC;AAEF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAQjF,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,gBAAgB,CAAC,EAAE,wBAAwB,CAAC;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAyUF,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,GAAE,wBAA6B,GACrC,MAAM,EAAE,CAeV;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,cAAc,EAAE,EACtB,OAAO,GAAE;IAAE,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9C,MAAM,EAAE,CA2BV;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,oBAAoB,EAC5B,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,GAC5D,MAAM,EAAE,CAuBV;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAmC/E;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAwClF"}
|