( pluginConfig: Pick<PluginConfig, 'audits' | 'runner'>, args: RunnerArgs, )
| 71 | } |
| 72 | |
| 73 | export async function executePluginRunner( |
| 74 | pluginConfig: Pick<PluginConfig, 'audits' | 'runner'>, |
| 75 | args: RunnerArgs, |
| 76 | ): Promise<RunnerResult> { |
| 77 | const { audits: pluginConfigAudits, runner } = pluginConfig; |
| 78 | |
| 79 | const date = new Date().toISOString(); |
| 80 | const start = performance.now(); |
| 81 | |
| 82 | const unvalidatedAuditOutputs = |
| 83 | typeof runner === 'object' |
| 84 | ? await executeRunnerConfig(runner, args) |
| 85 | : await executeRunnerFunction(runner, args); |
| 86 | |
| 87 | const duration = calcDuration(start); |
| 88 | |
| 89 | const auditOutputs = validate(auditOutputsSchema, unvalidatedAuditOutputs); |
| 90 | auditOutputsCorrelateWithPluginOutput(auditOutputs, pluginConfigAudits); |
| 91 | |
| 92 | return { |
| 93 | date, |
| 94 | duration, |
| 95 | audits: await normalizeAuditOutputs(auditOutputs), |
| 96 | }; |
| 97 | } |
| 98 | |
| 99 | function auditOutputsCorrelateWithPluginOutput( |
| 100 | auditOutputs: AuditOutputs, |
no test coverage detected