(domains: string[])
| 318 | } |
| 319 | |
| 320 | private async scanBrandsForDomains(domains: string[]): Promise<void> { |
| 321 | const CONCURRENCY = 5; |
| 322 | log.debug({ domainCount: domains.length }, 'Scanning brand.json'); |
| 323 | |
| 324 | for (let i = 0; i < domains.length; i += CONCURRENCY) { |
| 325 | await Promise.all(domains.slice(i, i + CONCURRENCY).map(async (domain) => { |
| 326 | try { |
| 327 | await this.scanBrandForDomain(domain); |
| 328 | } catch (err) { |
| 329 | log.warn({ domain, err: err instanceof Error ? err.message : err }, 'Brand scan failed'); |
| 330 | } |
| 331 | })); |
| 332 | } |
| 333 | |
| 334 | log.info({ domainCount: domains.length }, 'Brand scan complete'); |
| 335 | } |
| 336 | |
| 337 | private extractBrandName(data: unknown, fallback: string): string { |
| 338 | const obj = data as Record<string, unknown>; |
no test coverage detected