build-apple-cdn.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // @ts-check
  2. import path from 'path';
  3. import { createRuleset } from './lib/create-file';
  4. import { parseFelixDnsmasq } from './lib/parse-dnsmasq';
  5. import { task } from './lib/trace-runner';
  6. export const buildAppleCdn = task(__filename, async () => {
  7. const res = await parseFelixDnsmasq('https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/apple.china.conf');
  8. const description = [
  9. 'License: AGPL 3.0',
  10. 'Homepage: https://ruleset.skk.moe',
  11. 'GitHub: https://github.com/SukkaW/Surge',
  12. '',
  13. 'This file contains Apple\'s domains using their China mainland CDN servers.',
  14. '',
  15. 'Data from:',
  16. ' - https://github.com/felixonmars/dnsmasq-china-list'
  17. ];
  18. const ruleset = res.map(domain => `DOMAIN-SUFFIX,${domain}`);
  19. const domainset = res.map(i => `.${i}`);
  20. return Promise.all([
  21. ...createRuleset(
  22. 'Sukka\'s Ruleset - Apple CDN',
  23. description,
  24. new Date(),
  25. ruleset,
  26. 'ruleset',
  27. path.resolve(__dirname, '../List/non_ip/apple_cdn.conf'),
  28. path.resolve(__dirname, '../Clash/non_ip/apple_cdn.txt')
  29. ),
  30. ...createRuleset(
  31. 'Sukka\'s Ruleset - Apple CDN',
  32. description,
  33. new Date(),
  34. domainset,
  35. 'domainset',
  36. path.resolve(__dirname, '../List/domainset/apple_cdn.conf'),
  37. path.resolve(__dirname, '../Clash/domainset/apple_cdn.txt')
  38. )
  39. ]);
  40. });
  41. if (import.meta.main) {
  42. buildAppleCdn();
  43. }