( audits: Audit[], groups: Group[], options?: FilterOptions, )
| 153 | |
| 154 | // eslint-disable-next-line max-lines-per-function |
| 155 | export function markSkippedAuditsAndGroups( |
| 156 | audits: Audit[], |
| 157 | groups: Group[], |
| 158 | options?: FilterOptions, |
| 159 | ): { |
| 160 | audits: Audit[]; |
| 161 | groups: Group[]; |
| 162 | } { |
| 163 | const { |
| 164 | onlyAudits = [], |
| 165 | skipAudits = [], |
| 166 | onlyCategories = [], |
| 167 | } = options ?? {}; |
| 168 | |
| 169 | if ( |
| 170 | onlyCategories.length === 0 && |
| 171 | onlyAudits.length === 0 && |
| 172 | skipAudits.length === 0 |
| 173 | ) { |
| 174 | return { audits, groups }; |
| 175 | } |
| 176 | |
| 177 | if (onlyCategories.length > 0) { |
| 178 | validateOnlyCategories(groups, onlyCategories); |
| 179 | } |
| 180 | |
| 181 | if (onlyAudits.length > 0 || skipAudits.length > 0) { |
| 182 | validateAudits(audits, onlyAudits); |
| 183 | validateAudits(audits, skipAudits); |
| 184 | } |
| 185 | |
| 186 | const onlyGroupSlugs = new Set(onlyCategories); |
| 187 | const onlyAuditSlugs = new Set(onlyAudits); |
| 188 | const skipAuditSlugs = new Set(skipAudits); |
| 189 | |
| 190 | const markedGroups: Group[] = groups.map(group => ({ |
| 191 | ...group, |
| 192 | isSkipped: onlyCategories.length > 0 && !onlyGroupSlugs.has(group.slug), |
| 193 | })); |
| 194 | |
| 195 | const validGroupAuditSlugs = new Set( |
| 196 | markedGroups |
| 197 | .filter(group => !group.isSkipped) |
| 198 | .flatMap(group => group.refs.map(ref => ref.slug)), |
| 199 | ); |
| 200 | |
| 201 | const markedAudits = audits.map(audit => ({ |
| 202 | ...audit, |
| 203 | isSkipped: |
| 204 | (onlyAudits.length > 0 && !onlyAuditSlugs.has(audit.slug)) || |
| 205 | (skipAudits.length > 0 && skipAuditSlugs.has(audit.slug)) || |
| 206 | (validGroupAuditSlugs.size > 0 && !validGroupAuditSlugs.has(audit.slug)), |
| 207 | })); |
| 208 | |
| 209 | const fullyMarkedGroups = markedGroups.map(group => ({ |
| 210 | ...group, |
| 211 | isSkipped: |
| 212 | group.isSkipped || |
no test coverage detected