mirror of
https://github.com/SukkaW/Surge.git
synced 2026-01-29 01:51:52 +08:00
New build infra: Build for Clash (#11)
This commit is contained in:
34
Build/lib/clash.js
Normal file
34
Build/lib/clash.js
Normal file
@@ -0,0 +1,34 @@
|
||||
// @ts-check
|
||||
const _Trie = require('mnemonist/trie');
|
||||
const Trie = _Trie.default || _Trie;
|
||||
|
||||
const CLASH_SUPPORTED_RULE_TYPE = [
|
||||
'DOMAIN-SUFFIX',
|
||||
'DOMAIN-KEYWORD',
|
||||
'DOMAIN',
|
||||
'SRC-IP-CIDR',
|
||||
'GEOIP',
|
||||
'IP-CIDR',
|
||||
'IP-CIDR6',
|
||||
'DST-PORT',
|
||||
'SRC-PORT'
|
||||
];
|
||||
|
||||
/**
|
||||
* @param {string[] | Set<string>} rules
|
||||
*/
|
||||
const surgeRulesetToClashClassicalTextRuleset = (rules) => {
|
||||
const trie = Trie.from(rules);
|
||||
return CLASH_SUPPORTED_RULE_TYPE.map(
|
||||
type => trie.find(`${type},`)
|
||||
).flat();
|
||||
};
|
||||
module.exports.surgeRulesetToClashClassicalTextRuleset = surgeRulesetToClashClassicalTextRuleset;
|
||||
|
||||
/**
|
||||
* @param {string[]} domainset
|
||||
*/
|
||||
const surgeDomainsetToClashDomainset = (domainset) => {
|
||||
return domainset.map(i => (i[0] === '.' ? `+${i}` : i));
|
||||
};
|
||||
module.exports.surgeDomainsetToClashDomainset = surgeDomainsetToClashDomainset;
|
||||
Reference in New Issue
Block a user