validate-common-tld.ts 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import path from 'node:path';
  2. import { OUTPUT_SURGE_DIR } from './constants/dir';
  3. import tldts from 'tldts-experimental';
  4. import { looseTldtsOpt } from './constants/loose-tldts-opt';
  5. import runAgainstSourceFile from './lib/run-against-source-file';
  6. import { Counter } from 'foxts/counter';
  7. (async () => {
  8. const tldCountMap = new Counter();
  9. const callback = (map: Counter<string>) => (domain: string) => {
  10. const tld = tldts.getPublicSuffix(domain, looseTldtsOpt);
  11. if (!tld) {
  12. return;
  13. }
  14. map.incr(tld);
  15. };
  16. await runAgainstSourceFile(path.join(OUTPUT_SURGE_DIR, 'domainset', 'apple_cdn.conf'), callback(tldCountMap), 'domainset');
  17. await runAgainstSourceFile(path.join(OUTPUT_SURGE_DIR, 'domainset', 'cdn.conf'), callback(tldCountMap), 'domainset');
  18. await runAgainstSourceFile(path.join(OUTPUT_SURGE_DIR, 'domainset', 'download.conf'), callback(tldCountMap), 'domainset');
  19. await runAgainstSourceFile(path.join(OUTPUT_SURGE_DIR, 'domainset', 'speedtest.conf'), callback(tldCountMap), 'domainset');
  20. await runAgainstSourceFile(path.join(OUTPUT_SURGE_DIR, 'domainset', 'reject.conf'), callback(tldCountMap), 'domainset');
  21. await runAgainstSourceFile(path.join(OUTPUT_SURGE_DIR, 'domainset', 'reject_extra.conf'), callback(tldCountMap), 'domainset');
  22. await runAgainstSourceFile(path.join(OUTPUT_SURGE_DIR, 'non_ip', 'global.conf'), callback(tldCountMap), 'ruleset');
  23. await runAgainstSourceFile(path.join(OUTPUT_SURGE_DIR, 'non_ip', 'ai.conf'), callback(tldCountMap), 'ruleset');
  24. await runAgainstSourceFile(path.join(OUTPUT_SURGE_DIR, 'non_ip', 'microsoft.conf'), callback(tldCountMap), 'ruleset');
  25. await runAgainstSourceFile(path.join(OUTPUT_SURGE_DIR, 'non_ip', 'my_reject.conf'), callback(tldCountMap), 'ruleset');
  26. await runAgainstSourceFile(path.join(OUTPUT_SURGE_DIR, 'non_ip', 'my_direct.conf'), callback(tldCountMap), 'ruleset');
  27. await runAgainstSourceFile(path.join(OUTPUT_SURGE_DIR, 'non_ip', 'my_us.conf'), callback(tldCountMap), 'ruleset');
  28. await runAgainstSourceFile(path.join(OUTPUT_SURGE_DIR, 'non_ip', 'my_tw.conf'), callback(tldCountMap), 'ruleset');
  29. await runAgainstSourceFile(path.join(OUTPUT_SURGE_DIR, 'non_ip', 'stream.conf'), callback(tldCountMap), 'ruleset');
  30. const countArr = Array.from(tldCountMap).sort((a, b) => b[1] - a[1]).filter(([, count]) => count > 20);
  31. console.table(countArr);
  32. })();