( issues: LayoutIssue[], maxIssues: number, )
| 200 | } |
| 201 | |
| 202 | export function limitLayoutIssues( |
| 203 | issues: LayoutIssue[], |
| 204 | maxIssues: number, |
| 205 | ): { issues: LayoutIssue[]; totalIssueCount: number; truncated: boolean } { |
| 206 | const limit = Math.max(1, Math.floor(maxIssues)); |
| 207 | const sortedIssues = [...issues].sort((a, b) => { |
| 208 | const severityDelta = severityRank(a.severity) - severityRank(b.severity); |
| 209 | if (severityDelta !== 0) return severityDelta; |
| 210 | return a.time - b.time; |
| 211 | }); |
| 212 | return { |
| 213 | issues: sortedIssues.slice(0, limit), |
| 214 | totalIssueCount: issues.length, |
| 215 | truncated: issues.length > limit, |
| 216 | }; |
| 217 | } |
| 218 | |
| 219 | function severityRank(severity: LayoutIssueSeverity): number { |
| 220 | if (severity === "error") return 0; |
no test coverage detected