build-stream-service.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // @ts-check
  2. import { task } from './lib/trace-runner';
  3. import path from 'path';
  4. import { createRuleset } from './lib/create-file';
  5. import { ALL, NORTH_AMERICA, EU, HK, TW, JP, KR } from '../Source/stream';
  6. import { SHARED_DESCRIPTION } from './lib/constants';
  7. const createRulesetForStreamService = (fileId: string, title: string, streamServices: import('../Source/stream').StreamService[]) => {
  8. return [
  9. // Domains
  10. ...createRuleset(
  11. `Sukka's Ruleset - Stream Services: ${title}`,
  12. [
  13. ...SHARED_DESCRIPTION,
  14. '',
  15. ...streamServices.map((i: { name: any; }) => `- ${i.name}`)
  16. ],
  17. new Date(),
  18. streamServices.flatMap((i: { rules: any; }) => i.rules),
  19. 'ruleset',
  20. path.resolve(import.meta.dir, `../List/non_ip/${fileId}.conf`),
  21. path.resolve(import.meta.dir, `../Clash/non_ip/${fileId}.txt`)
  22. ),
  23. // IP
  24. ...createRuleset(
  25. `Sukka's Ruleset - Stream Services' IPs: ${title}`,
  26. [
  27. ...SHARED_DESCRIPTION,
  28. '',
  29. ...streamServices.map((i: { name: any; }) => `- ${i.name}`)
  30. ],
  31. new Date(),
  32. streamServices.flatMap((i) => (
  33. i.ip
  34. ? [
  35. ...i.ip.v4.map((ip: any) => `IP-CIDR,${ip},no-resolve`),
  36. ...i.ip.v6.map((ip: any) => `IP-CIDR6,${ip},no-resolve`)
  37. ]
  38. : []
  39. )),
  40. 'ruleset',
  41. path.resolve(import.meta.dir, `../List/ip/${fileId}.conf`),
  42. path.resolve(import.meta.dir, `../Clash/ip/${fileId}.txt`)
  43. )
  44. ];
  45. };
  46. export const buildStreamService = task(import.meta.path, async () => {
  47. return Promise.all([
  48. ...createRulesetForStreamService('stream', 'All', ALL),
  49. ...createRulesetForStreamService('stream_us', 'North America', NORTH_AMERICA),
  50. ...createRulesetForStreamService('stream_eu', 'Europe', EU),
  51. ...createRulesetForStreamService('stream_hk', 'Hong Kong', HK),
  52. ...createRulesetForStreamService('stream_tw', 'Taiwan', TW),
  53. ...createRulesetForStreamService('stream_jp', 'Japan', JP),
  54. // ...createRulesetForStreamService('stream_au', 'Oceania', AU),
  55. ...createRulesetForStreamService('stream_kr', 'Korean', KR)
  56. // ...createRulesetForStreamService('stream_south_east_asia', 'South East Asia', SOUTH_EAST_ASIA)
  57. ]);
  58. });
  59. if (import.meta.main) {
  60. buildStreamService();
  61. }