refactor: lint (#6511)

* refactor: lint

* chore: remove eslint-plugin/config-prettier
This commit is contained in:
Slinetrac
2026-03-15 07:40:11 +00:00
committed by GitHub
parent 41c3a166a5
commit c672a6fef3
264 changed files with 18749 additions and 18942 deletions
+54 -57
View File
@@ -1,97 +1,94 @@
import { readFileSync } from "fs";
import { readFileSync } from 'fs'
import axios from "axios";
import axios from 'axios'
import { log_error, log_info, log_success } from "./utils.mjs";
import { log_error, log_info, log_success } from './utils.mjs'
const CHAT_ID_RELEASE = "@clash_verge_re"; // 正式发布频道
const CHAT_ID_TEST = "@vergetest"; // 测试频道
const CHAT_ID_RELEASE = '@clash_verge_re' // 正式发布频道
const CHAT_ID_TEST = '@vergetest' // 测试频道
async function sendTelegramNotification() {
if (!process.env.TELEGRAM_BOT_TOKEN) {
throw new Error("TELEGRAM_BOT_TOKEN is required");
throw new Error('TELEGRAM_BOT_TOKEN is required')
}
const version =
process.env.VERSION ||
(() => {
const pkg = readFileSync("package.json", "utf-8");
return JSON.parse(pkg).version;
})();
const pkg = readFileSync('package.json', 'utf-8')
return JSON.parse(pkg).version
})()
const downloadUrl =
process.env.DOWNLOAD_URL ||
`https://github.com/clash-verge-rev/clash-verge-rev/releases/download/v${version}`;
`https://github.com/clash-verge-rev/clash-verge-rev/releases/download/v${version}`
const isAutobuild =
process.env.BUILD_TYPE === "autobuild" || version.includes("autobuild");
const chatId = isAutobuild ? CHAT_ID_TEST : CHAT_ID_RELEASE;
const buildType = isAutobuild ? "滚动更新版" : "正式版";
process.env.BUILD_TYPE === 'autobuild' || version.includes('autobuild')
const chatId = isAutobuild ? CHAT_ID_TEST : CHAT_ID_RELEASE
const buildType = isAutobuild ? '滚动更新版' : '正式版'
log_info(`Preparing Telegram notification for ${buildType} ${version}`);
log_info(`Target channel: ${chatId}`);
log_info(`Download URL: ${downloadUrl}`);
log_info(`Preparing Telegram notification for ${buildType} ${version}`)
log_info(`Target channel: ${chatId}`)
log_info(`Download URL: ${downloadUrl}`)
// 读取发布说明和下载地址
let releaseContent = "";
let releaseContent = ''
try {
releaseContent = readFileSync("release.txt", "utf-8");
log_info("成功读取 release.txt 文件");
releaseContent = readFileSync('release.txt', 'utf-8')
log_info('成功读取 release.txt 文件')
} catch (error) {
log_error("无法读取 release.txt,使用默认发布说明", error);
releaseContent = "更多新功能现已支持,详细更新日志请查看发布页面。";
log_error('无法读取 release.txt,使用默认发布说明', error)
releaseContent = '更多新功能现已支持,详细更新日志请查看发布页面。'
}
// Markdown 转换为 HTML
function convertMarkdownToTelegramHTML(content) {
return content
.split("\n")
.split('\n')
.map((line) => {
if (line.trim().length === 0) {
return "";
} else if (line.startsWith("## ")) {
return `<b>${line.replace("## ", "")}</b>`;
} else if (line.startsWith("### ")) {
return `<b>${line.replace("### ", "")}</b>`;
} else if (line.startsWith("#### ")) {
return `<b>${line.replace("#### ", "")}</b>`;
return ''
} else if (line.startsWith('## ')) {
return `<b>${line.replace('## ', '')}</b>`
} else if (line.startsWith('### ')) {
return `<b>${line.replace('### ', '')}</b>`
} else if (line.startsWith('#### ')) {
return `<b>${line.replace('#### ', '')}</b>`
} else {
let processedLine = line.replace(
/\[([^\]]+)\]\(([^)]+)\)/g,
(match, text, url) => {
const encodedUrl = encodeURI(url);
return `<a href="${encodedUrl}">${text}</a>`;
const encodedUrl = encodeURI(url)
return `<a href="${encodedUrl}">${text}</a>`
},
);
processedLine = processedLine.replace(
/\*\*([^*]+)\*\*/g,
"<b>$1</b>",
);
return processedLine;
)
processedLine = processedLine.replace(/\*\*([^*]+)\*\*/g, '<b>$1</b>')
return processedLine
}
})
.join("\n");
.join('\n')
}
function normalizeDetailsTags(content) {
return content
.replace(
/<summary>\s*<strong>\s*(.*?)\s*<\/strong>\s*<\/summary>/g,
"\n<b>$1</b>\n",
'\n<b>$1</b>\n',
)
.replace(/<summary>\s*(.*?)\s*<\/summary>/g, "\n<b>$1</b>\n")
.replace(/<\/?details>/g, "")
.replace(/<\/?strong>/g, (m) => (m === "</strong>" ? "</b>" : "<b>"))
.replace(/<br\s*\/?>/g, "\n");
.replace(/<summary>\s*(.*?)\s*<\/summary>/g, '\n<b>$1</b>\n')
.replace(/<\/?details>/g, '')
.replace(/<\/?strong>/g, (m) => (m === '</strong>' ? '</b>' : '<b>'))
.replace(/<br\s*\/?>/g, '\n')
}
releaseContent = normalizeDetailsTags(releaseContent);
const formattedContent = convertMarkdownToTelegramHTML(releaseContent);
releaseContent = normalizeDetailsTags(releaseContent)
const formattedContent = convertMarkdownToTelegramHTML(releaseContent)
const releaseTitle = isAutobuild ? "滚动更新版发布" : "正式发布";
const encodedVersion = encodeURIComponent(version);
const releaseTag = isAutobuild ? "autobuild" : `v${version}`;
const content = `<b>🎉 <a href="https://github.com/clash-verge-rev/clash-verge-rev/releases/tag/${releaseTag}">Clash Verge Rev v${version}</a> ${releaseTitle}</b>\n\n${formattedContent}`;
const releaseTitle = isAutobuild ? '滚动更新版发布' : '正式发布'
const encodedVersion = encodeURIComponent(version)
const releaseTag = isAutobuild ? 'autobuild' : `v${version}`
const content = `<b>🎉 <a href="https://github.com/clash-verge-rev/clash-verge-rev/releases/tag/${releaseTag}">Clash Verge Rev v${version}</a> ${releaseTitle}</b>\n\n${formattedContent}`
// 发送到 Telegram
try {
@@ -105,22 +102,22 @@ async function sendTelegramNotification() {
url: `https://github.com/clash-verge-rev/clash-verge-rev/releases/tag/v${encodedVersion}`,
prefer_large_media: true,
},
parse_mode: "HTML",
parse_mode: 'HTML',
},
);
log_success(`✅ Telegram 通知发送成功到 ${chatId}`);
)
log_success(`✅ Telegram 通知发送成功到 ${chatId}`)
} catch (error) {
log_error(
`❌ Telegram 通知发送失败到 ${chatId}:`,
error.response?.data || error.message,
error,
);
process.exit(1);
)
process.exit(1)
}
}
// 执行函数
sendTelegramNotification().catch((error) => {
log_error("脚本执行失败:", error);
process.exit(1);
});
log_error('脚本执行失败:', error)
process.exit(1)
})