@@ -52,17 +52,17 @@ interface RuleDetailsBase {
5252}
5353
5454interface CreateRuleDetails extends RuleDetailsBase {
55- rule : CreateRule ;
56- visitor : null ;
57- beforeHook : null ;
58- afterHook : null ;
55+ readonly rule : CreateRule ;
56+ readonly visitor : null ;
57+ readonly beforeHook : null ;
58+ readonly afterHook : null ;
5959}
6060
6161interface CreateOnceRuleDetails extends RuleDetailsBase {
62- rule : CreateOnceRule ;
63- visitor : Visitor ;
64- beforeHook : BeforeHook | null ;
65- afterHook : AfterHook | null ;
62+ readonly rule : CreateOnceRule ;
63+ readonly visitor : Visitor ;
64+ readonly beforeHook : BeforeHook | null ;
65+ readonly afterHook : AfterHook | null ;
6666}
6767
6868// Absolute paths of plugins which have been loaded
@@ -167,7 +167,7 @@ async function loadPluginImpl(path: string, packageName?: string): Promise<Plugi
167167 // Create `RuleDetails` object for rule.
168168 const ruleDetails : RuleDetails = {
169169 rule : rule as CreateRule , // Could also be `CreateOnceRule`, but just to satisfy type checker
170- context : null , // Filled in below
170+ context : null as Readonly < Context > , // Filled in below
171171 isFixable,
172172 messages,
173173 ruleIndex : 0 ,
@@ -205,9 +205,9 @@ async function loadPluginImpl(path: string, packageName?: string): Promise<Plugi
205205 afterHook = null ;
206206 }
207207
208- ( ruleDetails as CreateOnceRuleDetails ) . visitor = visitor ;
209- ( ruleDetails as CreateOnceRuleDetails ) . beforeHook = beforeHook ;
210- ( ruleDetails as CreateOnceRuleDetails ) . afterHook = afterHook ;
208+ ( ruleDetails as Writable < CreateOnceRuleDetails > ) . visitor = visitor ;
209+ ( ruleDetails as Writable < CreateOnceRuleDetails > ) . beforeHook = beforeHook ;
210+ ( ruleDetails as Writable < CreateOnceRuleDetails > ) . afterHook = afterHook ;
211211 }
212212
213213 registeredRules . push ( ruleDetails ) ;
0 commit comments