Skip to content

Commit 0e63f1a

Browse files
committed
add exit visitor creator helpers for all rule types and improve JSDoc comments
- Added createExitVisitorsForAnyNetworkRule helper for network rule exit visitors - Added createExitVisitorsForAnyCosmeticRule helper for cosmetic rule exit visitors - Added createExitVisitorsForAnyCommentRule helper for comment rule exit visitors - Added createExitVisitorsForAnyValidRule helper for valid rule exit visitors - Added createExitVisitorsForAnyRule helper for all rule exit visitors including invalid and empty
1 parent 10ac03a commit 0e63f1a

File tree

2 files changed

+98
-4
lines changed

2 files changed

+98
-4
lines changed

src/linter/index.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@ export {
4646
createVisitorsForAnyNetworkRule,
4747
createVisitorsForAnyRule,
4848
createVisitorsForAnyValidRule,
49+
createExitVisitorsForAnyCommentRule,
50+
createExitVisitorsForAnyCosmeticRule,
51+
createExitVisitorsForAnyNetworkRule,
52+
createExitVisitorsForAnyRule,
53+
createExitVisitorsForAnyValidRule,
4954
} from './visitor-creator';
5055
export { type LinterRuleLoader } from './rule-registry/rule-loader';
5156
export { type LinterFileProps } from './file-props';

src/linter/visitor-creator.ts

Lines changed: 93 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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
*/
64117
export 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

Comments
 (0)