build-internal-reverse-chn-cidr.ts 895 B

123456789101112131415161718192021222324252627
  1. import path from 'path';
  2. import { task } from './trace';
  3. import { exclude, merge } from 'fast-cidr-tools';
  4. import { getChnCidrPromise } from './build-chn-cidr';
  5. import { NON_CN_CIDR_INCLUDED_IN_CHNROUTE, RESERVED_IPV4_CIDR } from './constants/cidr';
  6. export const buildInternalReverseChnCIDR = task(import.meta.main, import.meta.path)(async () => {
  7. const cidrPromise = getChnCidrPromise();
  8. const peeked = Bun.peek(cidrPromise);
  9. const cidr: string[] = peeked === cidrPromise
  10. ? await cidrPromise
  11. : (peeked as string[]);
  12. const reversedCidr = merge(
  13. exclude(
  14. ['0.0.0.0/0'],
  15. RESERVED_IPV4_CIDR.concat(cidr),
  16. true
  17. ).concat(
  18. // https://github.com/misakaio/chnroutes2/issues/25
  19. NON_CN_CIDR_INCLUDED_IN_CHNROUTE
  20. )
  21. );
  22. return Bun.write(path.resolve(import.meta.dir, '../Internal/reversed-chn-cidr.txt'), `${reversedCidr.join('\n')}\n`);
  23. });