Skip to content

Commit 8a5b11c

Browse files
committed
feat: enhance domain fetching logic with custom matches and exclusions
1 parent 63374d0 commit 8a5b11c

3 files changed

Lines changed: 25 additions & 6 deletions

File tree

builder/source/build.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ export async function Build(OptionsParam?: BuildOptions): Promise<void> {
2424
Version: Zod.string().optional()
2525
}).parseAsync(OptionsParam)
2626

27-
let MatchingDomains: Set<string> = new Set<string>()
28-
MatchingDomains = await FetchAdShieldDomains()
27+
const FetchedDomains = await FetchAdShieldDomains()
28+
let MatchingDomains: Set<string> = new Set<string>(FetchedDomains.get('Normal'))
2929
CustomDefinedMatches.forEach(Domain => MatchingDomains.add(Domain))
3030

3131
MatchingDomains = new Set<string>([...MatchingDomains].map(Domain => TLDTS.parse(Domain).domain ?? Domain).filter((D): D is string => D !== null))
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
export const CustomDefinedMatches: Set<string> = new Set(['nicovideo.jp'])
1+
export const CustomDefinedMatches: Set<string> = new Set(['nicovideo.jp'])
2+
3+
export const CustomExcludeMatches: Set<string> = new Set(['kio.ac'])

builder/source/references/index.ts

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,29 @@
11
import { FetchAdShieldDomainsFromFiltersLists } from './filterslists.js'
22
import { FetchIABSellersJsonData } from './iabsellers.js'
3+
import { DiscardResolvedDupWildcard } from '@builder/utils/discard-resolved-dup-wildcard.js'
4+
import { RegroupDomainTldLevel } from '@builder/utils/regroup-domain-tldlevel.js'
5+
import { ConvertWildcardSuffixToRegexPattern } from '@builder/utils/wildcard-suffix-converter.js'
6+
import { CustomDefinedMatches, CustomExcludeMatches } from './custom-defined.js'
37

4-
export async function FetchAdShieldDomains(): Promise<Set<string>> {
8+
type TASDomainContainer = Map<'Normal', Set<string>> & Map<'Full', Set<string>> & Map<'EachDomain', Set<Set<string>>> & Map<'EachDomainFull', Set<Set<string>>>
9+
10+
export async function FetchAdShieldDomains(): Promise<TASDomainContainer> {
511
const [IABSellersDomains, FiltersListsDomains] = await Promise.all([
612
FetchIABSellersJsonData(),
713
FetchAdShieldDomainsFromFiltersLists()
814
])
915

1016
const CombinedDomains = new Set<string>([...IABSellersDomains, ...FiltersListsDomains])
11-
return CombinedDomains
12-
}
17+
const Result: TASDomainContainer = new Map()
18+
const NormalDomains = DiscardResolvedDupWildcard(CombinedDomains)
19+
CustomDefinedMatches.forEach(Match => NormalDomains.add(Match))
20+
CustomExcludeMatches.forEach(Match => NormalDomains.delete(Match))
21+
const FullDomains = new Set<string>([...NormalDomains].flatMap(Domain => ConvertWildcardSuffixToRegexPattern(Domain)))
22+
23+
Result.set('Normal', NormalDomains)
24+
Result.set('Full', FullDomains)
25+
Result.set('EachDomain', RegroupDomainTldLevel(NormalDomains))
26+
Result.set('EachDomainFull', RegroupDomainTldLevel(FullDomains))
27+
28+
return Result
29+
}

0 commit comments

Comments
 (0)