(text: string)
| 117 | } |
| 118 | |
| 119 | export function countRulesFromText(text: string): number { |
| 120 | const parsed = parse(text) as |
| 121 | | { |
| 122 | groups?: Array<{ |
| 123 | rules?: { |
| 124 | domain?: unknown[]; |
| 125 | domainSuffix?: unknown[]; |
| 126 | domainKeyword?: unknown[]; |
| 127 | domainRegex?: unknown[]; |
| 128 | processName?: unknown[]; |
| 129 | ipCidr?: unknown[]; |
| 130 | ipCidr6?: unknown[]; |
| 131 | asn?: unknown[]; |
| 132 | }; |
| 133 | }>; |
| 134 | } |
| 135 | | null |
| 136 | | undefined; |
| 137 | |
| 138 | if (!parsed?.groups) { |
| 139 | return 0; |
| 140 | } |
| 141 | |
| 142 | let count = 0; |
| 143 | for (const group of parsed.groups) { |
| 144 | const rules = group.rules ?? {}; |
| 145 | count += rules.domain?.length ?? 0; |
| 146 | count += rules.domainSuffix?.length ?? 0; |
| 147 | count += rules.domainKeyword?.length ?? 0; |
| 148 | count += rules.domainRegex?.length ?? 0; |
| 149 | count += rules.processName?.length ?? 0; |
| 150 | count += rules.ipCidr?.length ?? 0; |
| 151 | count += rules.ipCidr6?.length ?? 0; |
| 152 | count += rules.asn?.length ?? 0; |
| 153 | } |
| 154 | return count; |
| 155 | } |
| 156 |
no outgoing calls
no test coverage detected