surfboard.ts 995 B

1234567891011121314151617181920212223242526
  1. import { noop } from 'foxts/noop';
  2. import { SurgeRuleSet } from './surge';
  3. import { OUTPUT_SURFBOARD_DIR } from '../../constants/dir';
  4. import { appendSetElementsToArray } from 'foxts/append-set-elements-to-array';
  5. import { MARKER_DOMAIN } from '../../constants/description';
  6. export class SurfboardRuleSet extends SurgeRuleSet {
  7. public override readonly name: string = 'surfboard for android ruleset';
  8. protected result: string[] = [`DOMAIN,${MARKER_DOMAIN}`];
  9. constructor(public readonly type: 'ip' | 'non_ip' /* | (string & {}) */, public readonly outputDir = OUTPUT_SURFBOARD_DIR) {
  10. super(type, outputDir);
  11. }
  12. override writeDomainWildcard = noop;
  13. override writeUserAgents = noop;
  14. override writeUrlRegexes = noop;
  15. override writeIpAsns = noop;
  16. override writeSourcePorts(port: Set<string>): void {
  17. // https://getsurfboard.com/docs/profile-format/rule/misc
  18. appendSetElementsToArray(this.result, port, i => `IN-PORT,${i}`);
  19. }
  20. override writeOtherRules = noop;
  21. }