Add standard ports mapping and update port formatting for improved consistency
This commit is contained in:
@@ -146,8 +146,16 @@ const PROTOCOL_ICONS = {
|
|||||||
tuic: ""
|
tuic: ""
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const STANDARD_PORTS_BY_TYPE = {
|
||||||
|
wireguard: new Set(["51820"]),
|
||||||
|
vless: new Set(["443"]),
|
||||||
|
trojan: new Set(["443"]),
|
||||||
|
ss: new Set(["443"]),
|
||||||
|
};
|
||||||
|
|
||||||
const PROTOCOL_ICON_DEFAULT = ""; // fallback icon if type is unknown
|
const PROTOCOL_ICON_DEFAULT = ""; // fallback icon if type is unknown
|
||||||
|
|
||||||
|
|
||||||
const METATAG_RULES = {
|
const METATAG_RULES = {
|
||||||
// Keys are "network/type" OR "/type" (network-agnostic) OR "network/" (type-agnostic)
|
// Keys are "network/type" OR "/type" (network-agnostic) OR "network/" (type-agnostic)
|
||||||
// Matching priority: exact "network/type" -> "/type" -> "network/" -> default
|
// Matching priority: exact "network/type" -> "/type" -> "network/" -> default
|
||||||
@@ -170,9 +178,9 @@ const METATAG_RULES = {
|
|||||||
// Port formatting: superscript digits with left padding to 4 chars
|
// Port formatting: superscript digits with left padding to 4 chars
|
||||||
// 𝟎𝟏𝟐𝟑𝟒𝟓𝟔𝟕𝟖𝟗
|
// 𝟎𝟏𝟐𝟑𝟒𝟓𝟔𝟕𝟖𝟗
|
||||||
const PORT_FORMAT = {
|
const PORT_FORMAT = {
|
||||||
padLeftTo: 5,
|
padLeftTo: 3,
|
||||||
padChar: "0",
|
padChar: "0",
|
||||||
superscripts: {
|
fancy: {
|
||||||
"0": "𝟎", "1": "𝟏", "2": "𝟐", "3": "𝟑", "4": "𝟒", "5": "𝟓", "6": "𝟔", "7": "𝟕", "8": "𝟖", "9": "𝟗",
|
"0": "𝟎", "1": "𝟏", "2": "𝟐", "3": "𝟑", "4": "𝟒", "5": "𝟓", "6": "𝟔", "7": "𝟕", "8": "𝟖", "9": "𝟗",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -191,12 +199,14 @@ function uWordBoundaryGroup(inner) {
|
|||||||
return new RegExp(`(?:^|[^\\p{L}\\p{N}])(?:${inner})(?=$|[^\\p{L}\\p{N}])`, "iu");
|
return new RegExp(`(?:^|[^\\p{L}\\p{N}])(?:${inner})(?=$|[^\\p{L}\\p{N}])`, "iu");
|
||||||
}
|
}
|
||||||
|
|
||||||
function portToSuperscript(port) {
|
function portToFancy(port, type) {
|
||||||
let p = String(port ?? "").trim();
|
let p = String(port ?? "").trim();
|
||||||
|
|
||||||
// keep only digits, because providers love putting garbage here
|
|
||||||
p = p.replace(/[^\d]/g, "");
|
p = p.replace(/[^\d]/g, "");
|
||||||
if (!p) p = "0";
|
if (!p) return "";
|
||||||
|
|
||||||
|
if (STANDARD_PORTS_BY_TYPE[type]?.has(p)) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
// left pad to fixed width
|
// left pad to fixed width
|
||||||
if (PORT_FORMAT.padLeftTo && p.length < PORT_FORMAT.padLeftTo) {
|
if (PORT_FORMAT.padLeftTo && p.length < PORT_FORMAT.padLeftTo) {
|
||||||
@@ -205,7 +215,7 @@ function portToSuperscript(port) {
|
|||||||
|
|
||||||
// map digits
|
// map digits
|
||||||
let out = "";
|
let out = "";
|
||||||
for (const ch of p) out += PORT_FORMAT.superscripts[ch] ?? ch;
|
for (const ch of p) out += PORT_FORMAT.fancy[ch] ?? ch;
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -215,7 +225,7 @@ function buildMetaTag(proxy) {
|
|||||||
const port = safeStr(proxy && proxy.port);
|
const port = safeStr(proxy && proxy.port);
|
||||||
|
|
||||||
const { icon, matched } = metaPairIcon(net, typ);
|
const { icon, matched } = metaPairIcon(net, typ);
|
||||||
const portSup = portToSuperscript(port);
|
const portSup = portToFancy(port, typ);
|
||||||
|
|
||||||
if (icon === METATAG_RULES.defaultPair && METATAG_RULES.includeFallbackText) {
|
if (icon === METATAG_RULES.defaultPair && METATAG_RULES.includeFallbackText) {
|
||||||
return `${icon}${portSup}(${normalizeToken(net)}/${normalizeToken(typ)})`;
|
return `${icon}${portSup}(${normalizeToken(net)}/${normalizeToken(typ)})`;
|
||||||
|
|||||||
Reference in New Issue
Block a user