Skip to content

Commit 26943b6

Browse files
committed
refactor: streamline domain conversion functions for improved clarity and maintainability
1 parent 8a5b11c commit 26943b6

1 file changed

Lines changed: 25 additions & 4 deletions

File tree

builder/source/references/index.ts

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,26 @@ import { RegroupDomainTldLevel } from '@builder/utils/regroup-domain-tldlevel.js
55
import { ConvertWildcardSuffixToRegexPattern } from '@builder/utils/wildcard-suffix-converter.js'
66
import { CustomDefinedMatches, CustomExcludeMatches } from './custom-defined.js'
77

8-
type TASDomainContainer = Map<'Normal', Set<string>> & Map<'Full', Set<string>> & Map<'EachDomain', Set<Set<string>>> & Map<'EachDomainFull', Set<Set<string>>>
8+
export type TASDomainContainer = Map<'Normal', Set<string>> & Map<'Full', Set<string>> & Map<'EachDomain', Set<Set<string>>> & Map<'EachDomainFull', Set<Set<string>>>
9+
10+
function ConvertToFlatFullDomains(Origin: Set<string>): Set<string> {
11+
return new Set<string>([...Origin].flatMap(Domain => ConvertWildcardSuffixToRegexPattern(Domain)))
12+
}
13+
14+
function IsGroupedDomains(Origin: Set<string> | Set<Set<string>>): Origin is Set<Set<string>> {
15+
const FirstValue = Origin.values().next().value
16+
return typeof FirstValue !== 'string' && typeof FirstValue !== 'undefined'
17+
}
18+
19+
function ConvertToFullDomains(Origin: Set<string>): Set<string>
20+
function ConvertToFullDomains(Origin: Set<Set<string>>): Set<Set<string>>
21+
function ConvertToFullDomains(Origin: Set<string> | Set<Set<string>>): Set<string> | Set<Set<string>> {
22+
if (IsGroupedDomains(Origin)) {
23+
return new Set<Set<string>>([...Origin].map(DomainGroup => ConvertToFlatFullDomains(DomainGroup)))
24+
}
25+
26+
return ConvertToFlatFullDomains(Origin)
27+
}
928

1029
export async function FetchAdShieldDomains(): Promise<TASDomainContainer> {
1130
const [IABSellersDomains, FiltersListsDomains] = await Promise.all([
@@ -18,12 +37,14 @@ export async function FetchAdShieldDomains(): Promise<TASDomainContainer> {
1837
const NormalDomains = DiscardResolvedDupWildcard(CombinedDomains)
1938
CustomDefinedMatches.forEach(Match => NormalDomains.add(Match))
2039
CustomExcludeMatches.forEach(Match => NormalDomains.delete(Match))
21-
const FullDomains = new Set<string>([...NormalDomains].flatMap(Domain => ConvertWildcardSuffixToRegexPattern(Domain)))
40+
const FullDomains = ConvertToFullDomains(NormalDomains)
41+
const EachDomain = RegroupDomainTldLevel(NormalDomains)
42+
const EachDomainFull = ConvertToFullDomains(EachDomain)
2243

2344
Result.set('Normal', NormalDomains)
2445
Result.set('Full', FullDomains)
25-
Result.set('EachDomain', RegroupDomainTldLevel(NormalDomains))
26-
Result.set('EachDomainFull', RegroupDomainTldLevel(FullDomains))
46+
Result.set('EachDomain', EachDomain)
47+
Result.set('EachDomainFull', EachDomainFull)
2748

2849
return Result
2950
}

0 commit comments

Comments
 (0)