build-internal-rules.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // @ts-check
  2. const fs = require('fs');
  3. const fse = require('fs-extra');
  4. const path = require('path');
  5. const readline = require('readline');
  6. const { isDomainLoose } = require('./lib/is-domain-loose');
  7. (async () => {
  8. const results = [];
  9. for await (
  10. const line of readline.createInterface({
  11. input: fs.createReadStream(path.resolve(__dirname, '../List/non_ip/cdn.conf')),
  12. crlfDelay: Infinity
  13. })
  14. ) {
  15. if (line.startsWith('DOMAIN-SUFFIX,')) {
  16. results.push(line.replace('DOMAIN-SUFFIX,', 'SUFFIX,'));
  17. } else if (line.startsWith('DOMAIN,')) {
  18. results.push(line.replace('DOMAIN,', 'SUFFIX,'));
  19. }
  20. }
  21. for await (
  22. const line of readline.createInterface({
  23. input: fs.createReadStream(path.resolve(__dirname, '../List/domainset/cdn.conf')),
  24. crlfDelay: Infinity
  25. })
  26. ) {
  27. if (line[0] === '.') {
  28. results.push(`SUFFIX,${line.slice(1)}`);
  29. } else if (isDomainLoose(line)) {
  30. results.push(`SUFFIX,${line}`);
  31. }
  32. }
  33. for await (
  34. const line of readline.createInterface({
  35. input: fs.createReadStream(path.resolve(__dirname, '../List/domainset/download.conf')),
  36. crlfDelay: Infinity
  37. })
  38. ) {
  39. if (line[0] === '.') {
  40. results.push(`SUFFIX,${line.slice(1)}`);
  41. } else if (isDomainLoose(line)) {
  42. results.push(`SUFFIX,${line}`);
  43. }
  44. }
  45. results.push('');
  46. await fse.ensureDir(path.resolve(__dirname, '../List/internal'));
  47. await fs.promises.writeFile(
  48. path.resolve(__dirname, '../List/internal/cdn.csv'),
  49. results.join('\n')
  50. );
  51. })();