validate-reject-stats.ts 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import path from 'node:path';
  2. import { readFileByLine } from './lib/fetch-text-by-line';
  3. import { OUTPUT_SURGE_DIR } from './constants/dir';
  4. import { processLine } from './lib/process-line';
  5. import tldts from 'tldts';
  6. import { loosTldOptWithPrivateDomains } from './constants/loose-tldts-opt';
  7. (async () => {
  8. const rejectDomainCountMap = await runAgainstDomainset(new Map<string, number>(), path.join(OUTPUT_SURGE_DIR, 'domainset', 'reject.conf'));
  9. const rejectExtraDomainCountMap = await runAgainstDomainset(new Map<string, number>(), path.join(OUTPUT_SURGE_DIR, 'domainset', 'reject_extra.conf'));
  10. const rejectDomainCountArr = Array.from(rejectDomainCountMap).sort((a, b) => b[1] - a[1]).filter(([, count]) => count > 20);
  11. const rejectExtraDomainCountArr = Array.from(rejectExtraDomainCountMap).sort((a, b) => b[1] - a[1]).filter(([, count]) => count > 20);
  12. console.table(rejectDomainCountArr);
  13. console.table(rejectExtraDomainCountArr);
  14. })();
  15. async function runAgainstDomainset(rejectDomainCountMap: Map<string, number>, file: string) {
  16. for await (const line of readFileByLine(file)) {
  17. if (!processLine(line)) {
  18. continue;
  19. }
  20. const apexDomain = tldts.getDomain(line, loosTldOptWithPrivateDomains);
  21. if (!apexDomain) {
  22. continue;
  23. }
  24. rejectDomainCountMap.set(
  25. apexDomain,
  26. rejectDomainCountMap.has(apexDomain)
  27. ? rejectDomainCountMap.get(apexDomain)! + 1
  28. : 1
  29. );
  30. }
  31. return rejectDomainCountMap;
  32. }