@@ -8,13 +8,27 @@ import { type Visitor } from './source-code/visitor-collection';
88 *
99 * @returns Visitors for any network rule.
1010 */
11- export const createVisitorsForAnyNetworkRule = ( visitor : Visitor ) => {
11+ export const createVisitorsForAnyNetworkRule = ( visitor : Visitor ) : LinterRuleVisitors => {
1212 return {
1313 NetworkRule : visitor ,
1414 HostRule : visitor ,
1515 } ;
1616} ;
1717
18+ /**
19+ * Helper to create exit visitors for any network rule.
20+ *
21+ * @param visitor The visitor to use.
22+ *
23+ * @returns Exit visitors for any network rule.
24+ */
25+ export const createExitVisitorsForAnyNetworkRule = ( visitor : Visitor ) : LinterRuleVisitors => {
26+ return {
27+ 'NetworkRule:exit' : visitor ,
28+ 'HostRule:exit' : visitor ,
29+ } ;
30+ } ;
31+
1832/**
1933 * Helper to create visitors for any cosmetic rule.
2034 *
@@ -34,6 +48,25 @@ export const createVisitorsForAnyCosmeticRule = (
3448 } ;
3549} ;
3650
51+ /**
52+ * Helper to create exit visitors for any cosmetic rule.
53+ *
54+ * @param visitor The visitor to use.
55+ *
56+ * @returns Exit visitors for any cosmetic rule.
57+ */
58+ export const createExitVisitorsForAnyCosmeticRule = (
59+ visitor : Visitor ,
60+ ) : LinterRuleVisitors => {
61+ return {
62+ 'CssInjectionRule:exit' : visitor ,
63+ 'ElementHidingRule:exit' : visitor ,
64+ 'ScriptletInjectionRule:exit' : visitor ,
65+ 'HtmlFilteringRule:exit' : visitor ,
66+ 'JsInjectionRule:exit' : visitor ,
67+ } ;
68+ } ;
69+
3770/**
3871 * Helper to create visitors for any comment rule.
3972 *
@@ -55,11 +88,31 @@ export const createVisitorsForAnyCommentRule = (
5588} ;
5689
5790/**
58- * Helper to create visitors for any rule.
91+ * Helper to create exit visitors for any comment rule.
5992 *
6093 * @param visitor The visitor to use.
6194 *
62- * @returns Visitors for any rule.
95+ * @returns Exit visitors for any comment rule.
96+ */
97+ export const createExitVisitorsForAnyCommentRule = (
98+ visitor : Visitor ,
99+ ) : LinterRuleVisitors => {
100+ return {
101+ 'AgentCommentRule:exit' : visitor ,
102+ 'CommentRule:exit' : visitor ,
103+ 'ConfigCommentRule:exit' : visitor ,
104+ 'HintCommentRule:exit' : visitor ,
105+ 'MetadataCommentRule:exit' : visitor ,
106+ 'PreProcessorCommentRule:exit' : visitor ,
107+ } ;
108+ } ;
109+
110+ /**
111+ * Helper to create visitors for any valid rule.
112+ *
113+ * @param visitor The visitor to use.
114+ *
115+ * @returns Visitors for any valid rule.
63116 */
64117export const createVisitorsForAnyValidRule = (
65118 visitor : Visitor ,
@@ -72,7 +125,24 @@ export const createVisitorsForAnyValidRule = (
72125} ;
73126
74127/**
75- * Helper to create visitors for any rule.
128+ * Helper to create exit visitors for any valid rule.
129+ *
130+ * @param visitor The visitor to use.
131+ *
132+ * @returns Exit visitors for any valid rule.
133+ */
134+ export const createExitVisitorsForAnyValidRule = (
135+ visitor : Visitor ,
136+ ) : LinterRuleVisitors => {
137+ return {
138+ ...createExitVisitorsForAnyNetworkRule ( visitor ) ,
139+ ...createExitVisitorsForAnyCosmeticRule ( visitor ) ,
140+ ...createExitVisitorsForAnyCommentRule ( visitor ) ,
141+ } ;
142+ } ;
143+
144+ /**
145+ * Helper to create visitors for any rule (including invalid and empty rules).
76146 *
77147 * @param visitor The visitor to use.
78148 *
@@ -89,3 +159,22 @@ export const createVisitorsForAnyRule = (
89159 EmptyRule : visitor ,
90160 } ;
91161} ;
162+
163+ /**
164+ * Helper to create exit visitors for any rule (including invalid and empty rules).
165+ *
166+ * @param visitor The visitor to use.
167+ *
168+ * @returns Exit visitors for any rule.
169+ */
170+ export const createExitVisitorsForAnyRule = (
171+ visitor : Visitor ,
172+ ) : LinterRuleVisitors => {
173+ return {
174+ ...createExitVisitorsForAnyNetworkRule ( visitor ) ,
175+ ...createExitVisitorsForAnyCosmeticRule ( visitor ) ,
176+ ...createExitVisitorsForAnyCommentRule ( visitor ) ,
177+ 'InvalidRule:exit' : visitor ,
178+ 'EmptyRule:exit' : visitor ,
179+ } ;
180+ } ;
0 commit comments