tools-migrate-domains.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import path from 'node:path';
  2. import { readFileByLine } from './lib/fetch-text-by-line';
  3. import { processFilterRulesWithPreload } from './lib/parse-filter/filters';
  4. import { processHosts } from './lib/parse-filter/hosts';
  5. import { processLine } from './lib/process-line';
  6. import { HostnameSmolTrie } from './lib/trie';
  7. import { dummySpan } from './trace';
  8. import { SOURCE_DIR } from './constants/dir';
  9. (async () => {
  10. const trie = new HostnameSmolTrie();
  11. writeFiltersToTrie(trie, 'https://cdn.jsdelivr.net/gh/DandelionSprout/adfilt@master/GameConsoleAdblockList.txt', true);
  12. for await (const line of readFileByLine(path.join(SOURCE_DIR, 'domainset', 'reject.conf'))) {
  13. const l = processLine(line);
  14. if (l) {
  15. trie.whitelist(l);
  16. }
  17. }
  18. console.log('---------------------------');
  19. console.log(trie.dump().join('\n'));
  20. console.log('---------------------------');
  21. })();
  22. // eslint-disable-next-line unused-imports/no-unused-vars -- ready to use function
  23. async function writeHostsToTrie(trie: HostnameSmolTrie, hostsUrl: string, includeAllSubDomain = false) {
  24. const hosts = await processHosts(dummySpan, 'https://cdn.jsdelivr.net/gh/DandelionSprout/adfilt@master/GameConsoleAdblockList.txt', [], includeAllSubDomain);
  25. for (let i = 0, len = hosts.length; i < len; i++) {
  26. trie.add(hosts[i]);
  27. }
  28. }
  29. async function writeFiltersToTrie(trie: HostnameSmolTrie, filterUrl: string, includeThirdParty = false) {
  30. const { whiteDomainSuffixes, whiteDomains, blackDomainSuffixes, blackDomains } = await processFilterRulesWithPreload(filterUrl, [], includeThirdParty)(dummySpan);
  31. for (let i = 0, len = blackDomainSuffixes.length; i < len; i++) {
  32. trie.add(blackDomainSuffixes[i], true);
  33. }
  34. for (let i = 0, len = blackDomains.length; i < len; i++) {
  35. trie.add(blackDomains[i], false);
  36. }
  37. for (let i = 0, len = whiteDomainSuffixes.length; i < len; i++) {
  38. trie.whitelist(whiteDomainSuffixes[i], true);
  39. }
  40. for (let i = 0, len = whiteDomains.length; i < len; i++) {
  41. trie.whitelist(whiteDomains[i], false);
  42. }
  43. }