11import type {
22 AuditOutput ,
33 AuditOutputs ,
4- AuditReport ,
54 Issue ,
65 RunnerFunction ,
76} from '@code-pushup/models' ;
@@ -11,7 +10,7 @@ import {
1110 getTypeScriptDiagnostics ,
1211} from './ts-runner.js' ;
1312import type { CodeRangeName } from './types.js' ;
14- import { getIssueFromDiagnostic , tSCodeToAuditSlug } from './utils.js' ;
13+ import { getIssueFromDiagnostic , tsCodeToAuditSlug } from './utils.js' ;
1514
1615export type RunnerOptions = DiagnosticsOptions & {
1716 expectedAudits : { slug : AuditSlug } [ ] ;
@@ -21,28 +20,22 @@ export function createRunnerFunction(options: RunnerOptions): RunnerFunction {
2120 const { tsconfig, expectedAudits } = options ;
2221 return async ( ) : Promise < AuditOutputs > => {
2322 const diagnostics = await getTypeScriptDiagnostics ( { tsconfig } ) ;
24- const result : Record <
25- CodeRangeName ,
26- Pick < AuditReport , 'slug' | 'details' >
27- > = diagnostics . reduce (
28- ( acc , diag ) => {
29- const slug = tSCodeToAuditSlug ( diag . code ) ;
30- const existingIssues : Issue [ ] = acc [ slug ] ?. details ?. issues ?? [ ] ;
31- return {
32- ...acc ,
33- [ slug ] : {
34- slug,
35- details : {
36- issues : [ ...existingIssues , getIssueFromDiagnostic ( diag ) ] ,
37- } ,
23+ const result = diagnostics . reduce <
24+ Partial < Record < CodeRangeName , Pick < AuditOutput , 'slug' | 'details' > > >
25+ > ( ( acc , diag ) => {
26+ const slug = tsCodeToAuditSlug ( diag . code ) ;
27+ const existingIssues : Issue [ ] =
28+ ( acc [ slug ] && acc [ slug ] . details ?. issues ) || ( [ ] as Issue [ ] ) ;
29+ return {
30+ ...acc ,
31+ [ slug ] : {
32+ slug,
33+ details : {
34+ issues : [ ...existingIssues , getIssueFromDiagnostic ( diag ) ] ,
3835 } ,
39- } ;
40- } ,
41- { } as unknown as Record <
42- CodeRangeName ,
43- Pick < AuditOutput , 'slug' | 'details' >
44- > ,
45- ) ;
36+ } ,
37+ } ;
38+ } , { } ) ;
4639
4740 return expectedAudits . map ( ( { slug } ) => {
4841 const { details } = result [ slug ] ?? { } ;
0 commit comments