(options: {
audits: Audit[];
targets: ESLintTarget[];
artifacts?: PluginArtifactOptions;
})
| 18 | import { loadArtifacts } from './utils.js'; |
| 19 | |
| 20 | export function createRunnerFunction(options: { |
| 21 | audits: Audit[]; |
| 22 | targets: ESLintTarget[]; |
| 23 | artifacts?: PluginArtifactOptions; |
| 24 | }): RunnerFunction { |
| 25 | const { audits, targets, artifacts } = options; |
| 26 | const config: ESLintPluginRunnerConfig = { |
| 27 | targets, |
| 28 | slugs: audits.map(audit => audit.slug), |
| 29 | }; |
| 30 | |
| 31 | return async (): Promise<AuditOutputs> => { |
| 32 | logger.info( |
| 33 | `ESLint plugin executing ${pluralizeToken('lint target', targets.length)}`, |
| 34 | ); |
| 35 | |
| 36 | const linterOutputs = artifacts |
| 37 | ? await loadArtifacts(artifacts) |
| 38 | : await asyncSequential(targets, lint); |
| 39 | |
| 40 | const lintResults = mergeLinterOutputs(linterOutputs); |
| 41 | const failedAudits = lintResultsToAudits(lintResults); |
| 42 | |
| 43 | const stats = aggregateLintResultsStats(lintResults.results); |
| 44 | logger.info( |
| 45 | stats.problemsCount === 0 |
| 46 | ? 'ESLint did not find any problems' |
| 47 | : `ESLint found ${pluralizeToken('problem', stats.problemsCount)} from ${pluralizeToken('rule', stats.failedRulesCount)} across ${pluralizeToken('file', stats.failedFilesCount)}`, |
| 48 | ); |
| 49 | |
| 50 | const totalCount = config.slugs.length; |
| 51 | const failedCount = failedAudits.length; |
| 52 | const passedCount = totalCount - failedCount; |
| 53 | const percentage = roundDecimals((passedCount / totalCount) * 100, 2); |
| 54 | logger.info( |
| 55 | `${pluralizeToken('audit', passedCount)} passed, ${pluralizeToken('audit', failedCount)} failed (${percentage}% success)`, |
| 56 | ); |
| 57 | |
| 58 | return config.slugs.map( |
| 59 | (slug): AuditOutput => |
| 60 | failedAudits.find(audit => audit.slug === slug) ?? { |
| 61 | slug, |
| 62 | score: 1, |
| 63 | value: 0, |
| 64 | displayValue: 'passed', |
| 65 | details: { issues: [] }, |
| 66 | }, |
| 67 | ); |
| 68 | }; |
| 69 | } |
nothing calls this directly
no test coverage detected