@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.
Files changed (165) hide show
  1. package/LICENSE +373 -0
  2. package/NOTICE.md +11 -0
  3. package/README.md +60 -0
  4. package/TRADEMARKS.md +52 -0
  5. package/dist/bin.d.ts +3 -0
  6. package/dist/bin.d.ts.map +1 -0
  7. package/dist/bin.js +9 -0
  8. package/dist/bin.js.map +1 -0
  9. package/dist/ci-policy-options.d.ts +15 -0
  10. package/dist/ci-policy-options.d.ts.map +1 -0
  11. package/dist/ci-policy-options.js +54 -0
  12. package/dist/ci-policy-options.js.map +1 -0
  13. package/dist/cli-progress.d.ts +16 -0
  14. package/dist/cli-progress.d.ts.map +1 -0
  15. package/dist/cli-progress.js +35 -0
  16. package/dist/cli-progress.js.map +1 -0
  17. package/dist/command-program.d.ts +7 -0
  18. package/dist/command-program.d.ts.map +1 -0
  19. package/dist/command-program.js +950 -0
  20. package/dist/command-program.js.map +1 -0
  21. package/dist/commands/audit-flow-output.d.ts +4 -0
  22. package/dist/commands/audit-flow-output.d.ts.map +1 -0
  23. package/dist/commands/audit-flow-output.js +119 -0
  24. package/dist/commands/audit-flow-output.js.map +1 -0
  25. package/dist/commands/audit-policy-output.d.ts +9 -0
  26. package/dist/commands/audit-policy-output.d.ts.map +1 -0
  27. package/dist/commands/audit-policy-output.js +95 -0
  28. package/dist/commands/audit-policy-output.js.map +1 -0
  29. package/dist/commands/audit.d.ts +15 -0
  30. package/dist/commands/audit.d.ts.map +1 -0
  31. package/dist/commands/audit.js +178 -0
  32. package/dist/commands/audit.js.map +1 -0
  33. package/dist/commands/baseline-config.d.ts +14 -0
  34. package/dist/commands/baseline-config.d.ts.map +1 -0
  35. package/dist/commands/baseline-config.js +33 -0
  36. package/dist/commands/baseline-config.js.map +1 -0
  37. package/dist/commands/baseline.d.ts +86 -0
  38. package/dist/commands/baseline.d.ts.map +1 -0
  39. package/dist/commands/baseline.js +392 -0
  40. package/dist/commands/baseline.js.map +1 -0
  41. package/dist/commands/classify.d.ts +30 -0
  42. package/dist/commands/classify.d.ts.map +1 -0
  43. package/dist/commands/classify.js +105 -0
  44. package/dist/commands/classify.js.map +1 -0
  45. package/dist/commands/detect.d.ts +12 -0
  46. package/dist/commands/detect.d.ts.map +1 -0
  47. package/dist/commands/detect.js +213 -0
  48. package/dist/commands/detect.js.map +1 -0
  49. package/dist/commands/doctor.d.ts +16 -0
  50. package/dist/commands/doctor.d.ts.map +1 -0
  51. package/dist/commands/doctor.js +404 -0
  52. package/dist/commands/doctor.js.map +1 -0
  53. package/dist/commands/findings.d.ts +45 -0
  54. package/dist/commands/findings.d.ts.map +1 -0
  55. package/dist/commands/findings.js +220 -0
  56. package/dist/commands/findings.js.map +1 -0
  57. package/dist/commands/flows.d.ts +30 -0
  58. package/dist/commands/flows.d.ts.map +1 -0
  59. package/dist/commands/flows.js +108 -0
  60. package/dist/commands/flows.js.map +1 -0
  61. package/dist/commands/init.d.ts +64 -0
  62. package/dist/commands/init.d.ts.map +1 -0
  63. package/dist/commands/init.js +293 -0
  64. package/dist/commands/init.js.map +1 -0
  65. package/dist/commands/profiles.d.ts +5 -0
  66. package/dist/commands/profiles.d.ts.map +1 -0
  67. package/dist/commands/profiles.js +39 -0
  68. package/dist/commands/profiles.js.map +1 -0
  69. package/dist/commands/report.d.ts +72 -0
  70. package/dist/commands/report.d.ts.map +1 -0
  71. package/dist/commands/report.js +284 -0
  72. package/dist/commands/report.js.map +1 -0
  73. package/dist/commands/results-loader.d.ts +15 -0
  74. package/dist/commands/results-loader.d.ts.map +1 -0
  75. package/dist/commands/results-loader.js +100 -0
  76. package/dist/commands/results-loader.js.map +1 -0
  77. package/dist/commands/routes.d.ts +35 -0
  78. package/dist/commands/routes.d.ts.map +1 -0
  79. package/dist/commands/routes.js +201 -0
  80. package/dist/commands/routes.js.map +1 -0
  81. package/dist/commands/unclassify.d.ts +22 -0
  82. package/dist/commands/unclassify.d.ts.map +1 -0
  83. package/dist/commands/unclassify.js +79 -0
  84. package/dist/commands/unclassify.js.map +1 -0
  85. package/dist/index.d.ts +11 -0
  86. package/dist/index.d.ts.map +1 -0
  87. package/dist/index.js +10 -0
  88. package/dist/index.js.map +1 -0
  89. package/dist/output.d.ts +9 -0
  90. package/dist/output.d.ts.map +1 -0
  91. package/dist/output.js +29 -0
  92. package/dist/output.js.map +1 -0
  93. package/dist/presentation/ansi.d.ts +12 -0
  94. package/dist/presentation/ansi.d.ts.map +1 -0
  95. package/dist/presentation/ansi.js +51 -0
  96. package/dist/presentation/ansi.js.map +1 -0
  97. package/dist/presentation/audit-presentation.d.ts +20 -0
  98. package/dist/presentation/audit-presentation.d.ts.map +1 -0
  99. package/dist/presentation/audit-presentation.js +409 -0
  100. package/dist/presentation/audit-presentation.js.map +1 -0
  101. package/dist/presentation/boundary.d.ts +5 -0
  102. package/dist/presentation/boundary.d.ts.map +1 -0
  103. package/dist/presentation/boundary.js +4 -0
  104. package/dist/presentation/boundary.js.map +1 -0
  105. package/dist/presentation/brand-header.d.ts +6 -0
  106. package/dist/presentation/brand-header.d.ts.map +1 -0
  107. package/dist/presentation/brand-header.js +18 -0
  108. package/dist/presentation/brand-header.js.map +1 -0
  109. package/dist/presentation/capabilities.d.ts +4 -0
  110. package/dist/presentation/capabilities.d.ts.map +1 -0
  111. package/dist/presentation/capabilities.js +25 -0
  112. package/dist/presentation/capabilities.js.map +1 -0
  113. package/dist/presentation/color.d.ts +13 -0
  114. package/dist/presentation/color.d.ts.map +1 -0
  115. package/dist/presentation/color.js +27 -0
  116. package/dist/presentation/color.js.map +1 -0
  117. package/dist/presentation/disclaimers.d.ts +3 -0
  118. package/dist/presentation/disclaimers.d.ts.map +1 -0
  119. package/dist/presentation/disclaimers.js +3 -0
  120. package/dist/presentation/disclaimers.js.map +1 -0
  121. package/dist/presentation/finding-groups.d.ts +14 -0
  122. package/dist/presentation/finding-groups.d.ts.map +1 -0
  123. package/dist/presentation/finding-groups.js +77 -0
  124. package/dist/presentation/finding-groups.js.map +1 -0
  125. package/dist/presentation/finding-source-report.d.ts +21 -0
  126. package/dist/presentation/finding-source-report.d.ts.map +1 -0
  127. package/dist/presentation/finding-source-report.js +134 -0
  128. package/dist/presentation/finding-source-report.js.map +1 -0
  129. package/dist/presentation/human-output.d.ts +4 -0
  130. package/dist/presentation/human-output.d.ts.map +1 -0
  131. package/dist/presentation/human-output.js +8 -0
  132. package/dist/presentation/human-output.js.map +1 -0
  133. package/dist/presentation/index.d.ts +15 -0
  134. package/dist/presentation/index.d.ts.map +1 -0
  135. package/dist/presentation/index.js +13 -0
  136. package/dist/presentation/index.js.map +1 -0
  137. package/dist/presentation/mode.d.ts +4 -0
  138. package/dist/presentation/mode.d.ts.map +1 -0
  139. package/dist/presentation/mode.js +8 -0
  140. package/dist/presentation/mode.js.map +1 -0
  141. package/dist/presentation/progress-mode.d.ts +20 -0
  142. package/dist/presentation/progress-mode.d.ts.map +1 -0
  143. package/dist/presentation/progress-mode.js +38 -0
  144. package/dist/presentation/progress-mode.js.map +1 -0
  145. package/dist/presentation/progress-reporter.d.ts +18 -0
  146. package/dist/presentation/progress-reporter.d.ts.map +1 -0
  147. package/dist/presentation/progress-reporter.js +236 -0
  148. package/dist/presentation/progress-reporter.js.map +1 -0
  149. package/dist/presentation/progress-signals.d.ts +2 -0
  150. package/dist/presentation/progress-signals.d.ts.map +1 -0
  151. package/dist/presentation/progress-signals.js +14 -0
  152. package/dist/presentation/progress-signals.js.map +1 -0
  153. package/dist/presentation/status.d.ts +11 -0
  154. package/dist/presentation/status.d.ts.map +1 -0
  155. package/dist/presentation/status.js +14 -0
  156. package/dist/presentation/status.js.map +1 -0
  157. package/dist/presentation/types.d.ts +23 -0
  158. package/dist/presentation/types.d.ts.map +1 -0
  159. package/dist/presentation/types.js +2 -0
  160. package/dist/presentation/types.js.map +1 -0
  161. package/dist/run-cli.d.ts +6 -0
  162. package/dist/run-cli.d.ts.map +1 -0
  163. package/dist/run-cli.js +15 -0
  164. package/dist/run-cli.js.map +1 -0
  165. package/package.json +69 -0
@@ -0,0 +1,284 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { basename, dirname, isAbsolute, relative, resolve, sep } from "node:path";
3
+ import { emitReportArtifact } from "@a11yst/core";
4
+ import { findConfigPath, loadConfig, DEFAULT_OUTPUT_DIR, } from "@a11yst/config";
5
+ import { readAuditResult } from "@a11yst/reporters";
6
+ function latestError(message) {
7
+ return new Error(`${message} Run \`a11yst audit\` to create a new audit result.`);
8
+ }
9
+ function parseLatestDescriptor(contents, latestPath) {
10
+ let value;
11
+ try {
12
+ value = JSON.parse(contents);
13
+ }
14
+ catch (error) {
15
+ const message = error instanceof Error ? error.message : String(error);
16
+ throw latestError(`Invalid latest audit descriptor at "${latestPath}": ${message}`);
17
+ }
18
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
19
+ throw latestError(`Invalid latest audit descriptor at "${latestPath}": expected an object.`);
20
+ }
21
+ const descriptor = value;
22
+ if (descriptor.schemaVersion !== "1") {
23
+ throw latestError(`Incompatible latest audit descriptor at "${latestPath}": expected schemaVersion "1".`);
24
+ }
25
+ if (typeof descriptor.resultsPath !== "string" || descriptor.resultsPath.length === 0) {
26
+ throw latestError(`Invalid latest audit descriptor at "${latestPath}": resultsPath must be a non-empty string.`);
27
+ }
28
+ if (descriptor.auditId !== undefined && typeof descriptor.auditId !== "string") {
29
+ throw latestError(`Invalid latest audit descriptor at "${latestPath}": auditId must be a string.`);
30
+ }
31
+ return {
32
+ resultsPath: descriptor.resultsPath,
33
+ ...(typeof descriptor.auditId === "string" ? { auditId: descriptor.auditId } : {}),
34
+ };
35
+ }
36
+ function resolveLatestResultsPath(outputRoot, descriptor) {
37
+ const candidate = descriptor.resultsPath;
38
+ const segments = candidate.split(/[\\/]/);
39
+ if (isAbsolute(candidate) ||
40
+ segments.includes("..") ||
41
+ segments.includes("") ||
42
+ segments.includes(".")) {
43
+ throw latestError(`Invalid latest audit descriptor: resultsPath "${candidate}" must be a relative path without traversal.`);
44
+ }
45
+ const resolvedPath = resolve(outputRoot, ...segments);
46
+ const relativePath = relative(outputRoot, resolvedPath);
47
+ if (relativePath === "" ||
48
+ relativePath === ".." ||
49
+ relativePath.startsWith(`..${sep}`) ||
50
+ isAbsolute(relativePath)) {
51
+ throw latestError(`Invalid latest audit descriptor: resultsPath "${candidate}" resolves outside the audit output directory.`);
52
+ }
53
+ return resolvedPath;
54
+ }
55
+ async function resolveOutputRoot(cwd) {
56
+ if (!findConfigPath(cwd)) {
57
+ return resolve(cwd, DEFAULT_OUTPUT_DIR);
58
+ }
59
+ const config = await loadConfig({ cwd });
60
+ return resolve(config.configDir, config.outputDir);
61
+ }
62
+ async function resolveReportPolicy(cwd) {
63
+ if (!findConfigPath(cwd)) {
64
+ return undefined;
65
+ }
66
+ return (await loadConfig({ cwd })).ci;
67
+ }
68
+ function artifactReportPaths(result) {
69
+ const paths = {
70
+ ...(result.reports?.sarif?.path ? { sarif: result.reports.sarif.path } : {}),
71
+ ...(result.reports?.junit?.path ? { junit: result.reports.junit.path } : {}),
72
+ };
73
+ return Object.keys(paths).length > 0 ? paths : undefined;
74
+ }
75
+ async function resolveLatest(cwd) {
76
+ const outputRoot = await resolveOutputRoot(cwd);
77
+ const latestPath = resolve(outputRoot, "latest.json");
78
+ let contents;
79
+ try {
80
+ contents = await readFile(latestPath, "utf8");
81
+ }
82
+ catch (error) {
83
+ const message = error instanceof Error ? error.message : String(error);
84
+ throw latestError(`Unable to read latest audit descriptor at "${latestPath}": ${message}`);
85
+ }
86
+ const descriptor = parseLatestDescriptor(contents, latestPath);
87
+ return {
88
+ resultsPath: resolveLatestResultsPath(outputRoot, descriptor),
89
+ ...(descriptor.auditId ? { auditId: descriptor.auditId } : {}),
90
+ };
91
+ }
92
+ function resolveSarifOutputPath(cwd, output, resultsPath) {
93
+ if (output) {
94
+ return resolve(cwd, output);
95
+ }
96
+ return resolve(dirname(resultsPath), "a11yst.sarif");
97
+ }
98
+ function resolveJunitOutputPath(cwd, output, resultsPath) {
99
+ if (output) {
100
+ return resolve(cwd, output);
101
+ }
102
+ return resolve(dirname(resultsPath), "a11yst.junit.xml");
103
+ }
104
+ function resolveMarkdownOutputPath(cwd, output, resultsPath) {
105
+ if (output) {
106
+ return resolve(cwd, output);
107
+ }
108
+ return resolve(dirname(resultsPath), "a11yst.md");
109
+ }
110
+ function resolveGitHubAnnotationsOutputPath(cwd, output, resultsPath) {
111
+ if (output) {
112
+ return resolve(cwd, output);
113
+ }
114
+ return resolve(dirname(resultsPath), "github-annotations.txt");
115
+ }
116
+ export async function runReport(options) {
117
+ const cwd = resolve(options.cwd);
118
+ const format = options.format ?? "html";
119
+ const latest = options.resultsPath ? undefined : await resolveLatest(cwd);
120
+ const resultsPath = options.resultsPath
121
+ ? resolve(cwd, options.resultsPath)
122
+ : latest.resultsPath;
123
+ let auditResult;
124
+ try {
125
+ auditResult = await readAuditResult(resultsPath);
126
+ }
127
+ catch (error) {
128
+ if (!latest)
129
+ throw error;
130
+ const message = error instanceof Error ? error.message : String(error);
131
+ throw latestError(`Unable to load the latest audit result: ${message}`);
132
+ }
133
+ if (format === "sarif") {
134
+ const sarifPath = resolveSarifOutputPath(cwd, options.output, resultsPath);
135
+ const generation = await emitReportArtifact({
136
+ format: "sarif",
137
+ result: auditResult,
138
+ bundleDirectory: dirname(sarifPath),
139
+ bundleRelativePath: basename(sarifPath),
140
+ });
141
+ return {
142
+ format: "sarif",
143
+ status: "generated",
144
+ resultsPath,
145
+ sarifPath,
146
+ ...(auditResult.auditId ?? latest?.auditId
147
+ ? { auditId: auditResult.auditId ?? latest?.auditId }
148
+ : {}),
149
+ summary: generation.resultReference.summary,
150
+ };
151
+ }
152
+ if (format === "junit") {
153
+ const junitPath = resolveJunitOutputPath(cwd, options.output, resultsPath);
154
+ const policy = await resolveReportPolicy(cwd);
155
+ const generation = await emitReportArtifact({
156
+ format: "junit",
157
+ result: auditResult,
158
+ bundleDirectory: dirname(junitPath),
159
+ bundleRelativePath: basename(junitPath),
160
+ ...(policy ? { policy } : {}),
161
+ });
162
+ return {
163
+ format: "junit",
164
+ status: "generated",
165
+ resultsPath,
166
+ junitPath,
167
+ ...(auditResult.auditId ?? latest?.auditId
168
+ ? { auditId: auditResult.auditId ?? latest?.auditId }
169
+ : {}),
170
+ summary: generation.resultReference.summary,
171
+ };
172
+ }
173
+ if (format === "markdown") {
174
+ const markdownPath = resolveMarkdownOutputPath(cwd, options.output, resultsPath);
175
+ const policy = await resolveReportPolicy(cwd);
176
+ const paths = artifactReportPaths(auditResult);
177
+ const generation = await emitReportArtifact({
178
+ format: "markdown",
179
+ result: auditResult,
180
+ bundleDirectory: dirname(markdownPath),
181
+ bundleRelativePath: basename(markdownPath),
182
+ ...(policy ? { policy } : {}),
183
+ ...(paths ? { artifactReportPaths: paths } : {}),
184
+ });
185
+ return {
186
+ format: "markdown",
187
+ status: "generated",
188
+ resultsPath,
189
+ markdownPath,
190
+ ...(auditResult.auditId ?? latest?.auditId
191
+ ? { auditId: auditResult.auditId ?? latest?.auditId }
192
+ : {}),
193
+ summary: generation.resultReference.summary,
194
+ };
195
+ }
196
+ if (format === "github-annotations") {
197
+ const githubAnnotationsPath = resolveGitHubAnnotationsOutputPath(cwd, options.output, resultsPath);
198
+ const policy = await resolveReportPolicy(cwd);
199
+ const generation = await emitReportArtifact({
200
+ format: "github-annotations",
201
+ result: auditResult,
202
+ bundleDirectory: dirname(githubAnnotationsPath),
203
+ bundleRelativePath: basename(githubAnnotationsPath),
204
+ ...(policy ? { policy } : {}),
205
+ });
206
+ return {
207
+ format: "github-annotations",
208
+ status: "generated",
209
+ resultsPath,
210
+ githubAnnotationsPath,
211
+ ...(auditResult.auditId ?? latest?.auditId
212
+ ? { auditId: auditResult.auditId ?? latest?.auditId }
213
+ : {}),
214
+ summary: generation.resultReference.summary,
215
+ };
216
+ }
217
+ const outputDirectory = options.output
218
+ ? resolve(cwd, options.output)
219
+ : dirname(resultsPath);
220
+ const generated = await emitReportArtifact({
221
+ format: "html",
222
+ result: auditResult,
223
+ bundleDirectory: outputDirectory,
224
+ auditId: auditResult.auditId ?? latest?.auditId,
225
+ });
226
+ return {
227
+ format: "html",
228
+ status: "generated",
229
+ resultsPath,
230
+ reportPath: resolve(generated.bundlePath),
231
+ ...(auditResult.auditId ?? latest?.auditId
232
+ ? { auditId: auditResult.auditId ?? latest?.auditId }
233
+ : {}),
234
+ };
235
+ }
236
+ export function formatReportHuman(result) {
237
+ if (result.format === "sarif") {
238
+ const lines = ["SARIF report generated", ""];
239
+ if (result.auditId) {
240
+ lines.push(`Audit ID: ${result.auditId}`);
241
+ }
242
+ lines.push(`JSON report: ${result.resultsPath}`);
243
+ lines.push(`SARIF report: ${result.sarifPath}`);
244
+ return lines.join("\n");
245
+ }
246
+ if (result.format === "junit") {
247
+ const lines = ["JUnit report generated", ""];
248
+ if (result.auditId) {
249
+ lines.push(`Audit ID: ${result.auditId}`);
250
+ }
251
+ lines.push(`JSON report: ${result.resultsPath}`);
252
+ lines.push(`JUnit report: ${result.junitPath}`);
253
+ return lines.join("\n");
254
+ }
255
+ if (result.format === "markdown") {
256
+ const lines = ["Markdown report generated", ""];
257
+ if (result.auditId) {
258
+ lines.push(`Audit ID: ${result.auditId}`);
259
+ }
260
+ lines.push(`JSON report: ${result.resultsPath}`);
261
+ lines.push(`Markdown report: ${result.markdownPath}`);
262
+ return lines.join("\n");
263
+ }
264
+ if (result.format === "github-annotations") {
265
+ const lines = ["GitHub annotations generated", ""];
266
+ if (result.auditId) {
267
+ lines.push(`Audit ID: ${result.auditId}`);
268
+ }
269
+ lines.push(`JSON report: ${result.resultsPath}`);
270
+ lines.push(`GitHub annotations: ${result.githubAnnotationsPath}`);
271
+ return lines.join("\n");
272
+ }
273
+ const lines = ["HTML report generated", ""];
274
+ if (result.auditId) {
275
+ lines.push(`Audit ID: ${result.auditId}`);
276
+ }
277
+ lines.push(`JSON report: ${result.resultsPath}`);
278
+ lines.push(`HTML report: ${result.reportPath}`);
279
+ return lines.join("\n");
280
+ }
281
+ export function formatReportJson(result) {
282
+ return result;
283
+ }
284
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { AuditExecutionResult } from "@a11yst/types";
2
+ export interface LatestResultsDescriptor {
3
+ resultsPath: string;
4
+ auditId?: string;
5
+ }
6
+ export declare function resolveLatestResults(cwd: string): Promise<LatestResultsDescriptor>;
7
+ export declare function loadAuditResults(options: {
8
+ cwd: string;
9
+ resultsPath?: string;
10
+ }): Promise<{
11
+ result: AuditExecutionResult;
12
+ resultsPath: string;
13
+ auditId?: string;
14
+ }>;
15
+ //# sourceMappingURL=results-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"results-loader.d.ts","sourceRoot":"","sources":["../../src/commands/results-loader.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1D,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAoFD,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAgBxF;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,oBAAoB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAqBnF"}
@@ -0,0 +1,100 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { isAbsolute, relative, resolve, sep, } from "node:path";
3
+ import { findConfigPath, loadConfig, DEFAULT_OUTPUT_DIR, } from "@a11yst/config";
4
+ import { readAuditResult } from "@a11yst/reporters";
5
+ function latestError(message) {
6
+ return new Error(`${message} Run \`a11yst audit\` to create a new audit result.`);
7
+ }
8
+ function parseLatestDescriptor(contents, latestPath) {
9
+ let value;
10
+ try {
11
+ value = JSON.parse(contents);
12
+ }
13
+ catch (error) {
14
+ const message = error instanceof Error ? error.message : String(error);
15
+ throw latestError(`Invalid latest audit descriptor at "${latestPath}": ${message}`);
16
+ }
17
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
18
+ throw latestError(`Invalid latest audit descriptor at "${latestPath}": expected an object.`);
19
+ }
20
+ const descriptor = value;
21
+ if (descriptor.schemaVersion !== "1") {
22
+ throw latestError(`Incompatible latest audit descriptor at "${latestPath}": expected schemaVersion "1".`);
23
+ }
24
+ if (typeof descriptor.resultsPath !== "string" || descriptor.resultsPath.length === 0) {
25
+ throw latestError(`Invalid latest audit descriptor at "${latestPath}": resultsPath must be a non-empty string.`);
26
+ }
27
+ if (descriptor.auditId !== undefined && typeof descriptor.auditId !== "string") {
28
+ throw latestError(`Invalid latest audit descriptor at "${latestPath}": auditId must be a string.`);
29
+ }
30
+ return {
31
+ resultsPath: descriptor.resultsPath,
32
+ ...(typeof descriptor.auditId === "string" ? { auditId: descriptor.auditId } : {}),
33
+ };
34
+ }
35
+ function resolveLatestResultsPath(outputRoot, descriptor) {
36
+ const candidate = descriptor.resultsPath;
37
+ const segments = candidate.split(/[\\/]/);
38
+ if (isAbsolute(candidate) ||
39
+ segments.includes("..") ||
40
+ segments.includes("") ||
41
+ segments.includes(".")) {
42
+ throw latestError(`Invalid latest audit descriptor: resultsPath "${candidate}" must be a relative path without traversal.`);
43
+ }
44
+ const resolvedPath = resolve(outputRoot, ...segments);
45
+ const relativePath = relative(outputRoot, resolvedPath);
46
+ if (relativePath === "" ||
47
+ relativePath === ".." ||
48
+ relativePath.startsWith(`..${sep}`) ||
49
+ isAbsolute(relativePath)) {
50
+ throw latestError(`Invalid latest audit descriptor: resultsPath "${candidate}" resolves outside the audit output directory.`);
51
+ }
52
+ return resolvedPath;
53
+ }
54
+ async function resolveOutputRoot(cwd) {
55
+ if (!findConfigPath(cwd)) {
56
+ return resolve(cwd, DEFAULT_OUTPUT_DIR);
57
+ }
58
+ const config = await loadConfig({ cwd });
59
+ return resolve(config.configDir, config.outputDir);
60
+ }
61
+ export async function resolveLatestResults(cwd) {
62
+ const outputRoot = await resolveOutputRoot(cwd);
63
+ const latestPath = resolve(outputRoot, "latest.json");
64
+ let contents;
65
+ try {
66
+ contents = await readFile(latestPath, "utf8");
67
+ }
68
+ catch (error) {
69
+ const message = error instanceof Error ? error.message : String(error);
70
+ throw latestError(`Unable to read latest audit descriptor at "${latestPath}": ${message}`);
71
+ }
72
+ const descriptor = parseLatestDescriptor(contents, latestPath);
73
+ return {
74
+ resultsPath: resolveLatestResultsPath(outputRoot, descriptor),
75
+ ...(descriptor.auditId ? { auditId: descriptor.auditId } : {}),
76
+ };
77
+ }
78
+ export async function loadAuditResults(options) {
79
+ const cwd = resolve(options.cwd);
80
+ const latest = options.resultsPath ? undefined : await resolveLatestResults(cwd);
81
+ const resultsPath = options.resultsPath
82
+ ? resolve(cwd, options.resultsPath)
83
+ : latest.resultsPath;
84
+ let result;
85
+ try {
86
+ result = await readAuditResult(resultsPath);
87
+ }
88
+ catch (error) {
89
+ if (!latest)
90
+ throw error;
91
+ const message = error instanceof Error ? error.message : String(error);
92
+ throw latestError(`Unable to load the latest audit result: ${message}`);
93
+ }
94
+ return {
95
+ result,
96
+ resultsPath,
97
+ ...(result.auditId ?? latest?.auditId ? { auditId: result.auditId ?? latest?.auditId } : {}),
98
+ };
99
+ }
100
+ //# sourceMappingURL=results-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"results-loader.js","sourceRoot":"","sources":["../../src/commands/results-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { AdapterId, Diagnostic, RouteDiscoveryExplain, RouteDiscoveryMode, RouteOrigin, SkippedRoutePattern, WebFramework } from "@a11yst/types";
2
+ export interface RoutesRouteEntry {
3
+ path: string;
4
+ origin: RouteOrigin;
5
+ sourceFile?: string;
6
+ sourceLine?: number;
7
+ pattern?: string;
8
+ }
9
+ export interface RoutesProjectResult {
10
+ name: string;
11
+ framework: WebFramework;
12
+ adapterId: AdapterId;
13
+ discoveryMode: RouteDiscoveryMode;
14
+ routes: RoutesRouteEntry[];
15
+ skippedPatterns: SkippedRoutePattern[];
16
+ diagnostics: Diagnostic[];
17
+ explain?: RouteDiscoveryExplain;
18
+ explicitRoutes: RoutesRouteEntry[];
19
+ }
20
+ export interface RoutesResult {
21
+ projects: RoutesProjectResult[];
22
+ }
23
+ export interface RunRoutesOptions {
24
+ cwd: string;
25
+ projectName?: string[];
26
+ configPath?: string;
27
+ json?: boolean;
28
+ explain?: boolean;
29
+ }
30
+ export declare function runRoutes(options: RunRoutesOptions): Promise<RoutesResult>;
31
+ export declare function formatRoutesJson(result: RoutesResult): unknown;
32
+ export declare function formatRoutesHuman(result: RoutesResult, options?: {
33
+ explain?: boolean;
34
+ }): string;
35
+ //# sourceMappingURL=routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/commands/routes.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EAEV,qBAAqB,EACrB,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,YAAY,EACb,MAAM,eAAe,CAAC;AAGvB,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,YAAY,CAAC;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,kBAAkB,CAAC;IAClC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,eAAe,EAAE,mBAAmB,EAAE,CAAC;IACvC,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,cAAc,EAAE,gBAAgB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAoChF;AAoGD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAE9D;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,CAqGnG"}