88 LintOptions ,
99 LintRuleOutcome ,
1010 Rule ,
11- RuleSeverity
11+ RuleSeverity ,
12+ BaseRule ,
13+ RuleType
1214} from '@commitlint/types' ;
1315
1416export default async function lint (
@@ -35,7 +37,7 @@ export default async function lint(
3537
3638 // Parse the commit message
3739 const parsed = await parse ( message , undefined , opts . parserOpts ) ;
38- const allRules : Map < string , Rule < unknown > | Rule < never > > = new Map (
40+ const allRules : Map < string , BaseRule < never , RuleType > > = new Map (
3941 Object . entries ( defaultRules )
4042 ) ;
4143
@@ -130,9 +132,9 @@ export default async function lint(
130132 }
131133
132134 // Validate against all rules
133- const results = Object . entries ( rulesConfig )
135+ const pendingResults = Object . entries ( rulesConfig )
134136 . filter ( ( [ , [ level ] ] ) => level > 0 )
135- . map ( entry => {
137+ . map ( async entry => {
136138 const [ name , config ] = entry ;
137139 const [ level , when , value ] = config ;
138140
@@ -148,16 +150,19 @@ export default async function lint(
148150 }
149151
150152 const executableRule = rule as Rule < unknown > ;
151- const [ valid , message ] = executableRule ( parsed , when , value ) ;
153+ const [ valid , message ] = await executableRule ( parsed , when , value ) ;
152154
153155 return {
154156 level,
155157 valid,
156158 name,
157159 message
158160 } ;
159- } )
160- . filter ( ( result ) : result is LintRuleOutcome => result !== null ) ;
161+ } ) ;
162+
163+ const results = ( await Promise . all ( pendingResults ) ) . filter (
164+ ( result ) : result is LintRuleOutcome => result !== null
165+ ) ;
161166
162167 const errors = results . filter ( result => result . level === 2 && ! result . valid ) ;
163168 const warnings = results . filter (
0 commit comments