validate-global-tld.ts 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. import path from 'node:path';
  2. import { HostnameSmolTrie } from './lib/trie';
  3. import { OUTPUT_SURGE_DIR } from './constants/dir';
  4. import { ICP_TLD } from './constants/domains';
  5. import tldts from 'tldts-experimental';
  6. import { looseTldtsOpt } from './constants/loose-tldts-opt';
  7. import runAgainstSourceFile from './lib/run-against-source-file';
  8. (async () => {
  9. const trie = new HostnameSmolTrie();
  10. const extraWhiteTLDs = new Set<string>();
  11. await runAgainstSourceFile(path.join(OUTPUT_SURGE_DIR, 'non_ip', 'domestic.conf'), (domain) => {
  12. if (domain === 'this_ruleset_is_made_by_sukkaw.ruleset.skk.moe') {
  13. return;
  14. }
  15. const tld = tldts.getPublicSuffix(domain, looseTldtsOpt);
  16. if (tld) {
  17. extraWhiteTLDs.add(tld);
  18. }
  19. }, 'ruleset');
  20. await runAgainstSourceFile(path.join(OUTPUT_SURGE_DIR, 'non_ip', 'global.conf'), (domain, includeAllSubDomain) => {
  21. trie.add(domain, includeAllSubDomain);
  22. }, 'ruleset');
  23. ICP_TLD.forEach(tld => trie.whitelist(tld, true));
  24. extraWhiteTLDs.forEach(tld => trie.whitelist(tld, true));
  25. console.log(trie.dump().join('\n'));
  26. })();