build-apple-cdn.ts 1.1 KB

12345678910111213141516171819202122232425
  1. import { parseFelixDnsmasqFromResp } from './lib/parse-dnsmasq';
  2. import { task } from './trace';
  3. import { SHARED_DESCRIPTION } from './constants/description';
  4. import { once } from 'foxts/once';
  5. import { DomainsetOutput } from './lib/rules/domainset';
  6. import { $$fetch } from './lib/fetch-retry';
  7. export const getAppleCdnDomainsPromise = once(() => $$fetch('https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/apple.china.conf').then(parseFelixDnsmasqFromResp));
  8. export const buildAppleCdn = task(require.main === module, __filename)(async (span) => {
  9. const res: string[] = await span.traceChildPromise('get apple cdn domains', getAppleCdnDomainsPromise());
  10. return new DomainsetOutput(span, 'apple_cdn')
  11. .withTitle('Sukka\'s Ruleset - Apple CDN')
  12. .appendDescription(SHARED_DESCRIPTION)
  13. .appendDescription(
  14. '',
  15. 'This file contains Apple\'s domains using their China mainland CDN servers.',
  16. '',
  17. 'Data from:',
  18. ' - https://github.com/felixonmars/dnsmasq-china-list'
  19. )
  20. .bulkAddDomainSuffix(res)
  21. .write();
  22. });