ip.ts 698 B

1234567891011121314151617181920
  1. import type { Span } from '../../trace';
  2. import type { BaseWriteStrategy } from '../writing-strategy/base';
  3. import { ClashClassicRuleSet, ClashIPSet } from '../writing-strategy/clash';
  4. import { SingboxSource } from '../writing-strategy/singbox';
  5. import { SurgeRuleSet } from '../writing-strategy/surge';
  6. import { FileOutput } from './base';
  7. export class IPListOutput extends FileOutput {
  8. strategies: BaseWriteStrategy[];
  9. constructor(span: Span, id: string, private readonly clashUseRule = true) {
  10. super(span, id);
  11. this.strategies = [
  12. new SurgeRuleSet('ip'),
  13. this.clashUseRule ? new ClashClassicRuleSet('ip') : new ClashIPSet(),
  14. new SingboxSource('ip')
  15. ];
  16. }
  17. }