11import { FetchAdShieldDomainsFromFiltersLists } from './filterslists.js'
22import { 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