mirror of
https://github.com/AIsouler/GKD_subscription.git
synced 2025-12-20 00:35:17 +08:00
feat: category check group name
This commit is contained in:
@@ -42,6 +42,11 @@ const categories: RawCategory[] = [
|
|||||||
// 如微信朋友圈广告/酷安帖子广告/贴吧帖子广告
|
// 如微信朋友圈广告/酷安帖子广告/贴吧帖子广告
|
||||||
// 需要分阶段多步操作才能关闭, 会造成屏幕略微闪烁, 稍微影响用户体验
|
// 需要分阶段多步操作才能关闭, 会造成屏幕略微闪烁, 稍微影响用户体验
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
key: 9,
|
||||||
|
name: '功能类',
|
||||||
|
// 非广告, 点击某些功能按钮
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
export default categories;
|
export default categories;
|
||||||
|
|||||||
30
src/file.ts
30
src/file.ts
@@ -58,13 +58,12 @@ const pkg: typeof PkgT = JSON.parse(
|
|||||||
);
|
);
|
||||||
const pkgKeys = Object.keys(pkg);
|
const pkgKeys = Object.keys(pkg);
|
||||||
|
|
||||||
export const writeConfig = async (config: RawSubscription) => {
|
const gkdFp = process.cwd() + '/dist/gkd.json5';
|
||||||
const gkdFp = process.cwd() + '/dist/gkd.json5';
|
const versionFp = process.cwd() + '/dist/gkd.version.json';
|
||||||
const versionFp = process.cwd() + '/dist/gkd.version.json';
|
const oldConfig: RawSubscription = JSON5.parse(
|
||||||
const oldConfig: RawSubscription = JSON5.parse(
|
|
||||||
await fs.readFile(gkdFp, 'utf-8').catch(() => '{}'),
|
await fs.readFile(gkdFp, 'utf-8').catch(() => '{}'),
|
||||||
);
|
);
|
||||||
|
export const writeConfig = async (config: RawSubscription) => {
|
||||||
const newConfig: RawSubscription = {
|
const newConfig: RawSubscription = {
|
||||||
...config,
|
...config,
|
||||||
version: oldConfig.version || 0,
|
version: oldConfig.version || 0,
|
||||||
@@ -186,7 +185,26 @@ export const checkConfig = (newConfig: RawSubscription) => {
|
|||||||
apps.forEach((app) => {
|
apps.forEach((app) => {
|
||||||
const deprecatedKeys = app.deprecatedKeys || [];
|
const deprecatedKeys = app.deprecatedKeys || [];
|
||||||
const keys = new Set<number>();
|
const keys = new Set<number>();
|
||||||
|
const oldGroups = oldConfig.apps?.find((a) => a.id == app.id)?.groups || [];
|
||||||
app.groups?.forEach((g) => {
|
app.groups?.forEach((g) => {
|
||||||
|
const oldGroup = oldGroups.find((og) => og.key == g.key);
|
||||||
|
if (!oldGroup || !_.isEqual(oldGroup, g)) {
|
||||||
|
// 检查新增/变动的规则组是否能被分类捕获
|
||||||
|
if (!categories.some((c) => g.name.startsWith(c.name))) {
|
||||||
|
console.error({
|
||||||
|
configName: newConfig.name,
|
||||||
|
appId: app.id,
|
||||||
|
appName: app.name,
|
||||||
|
groupName: g.name,
|
||||||
|
groupKey: g.key,
|
||||||
|
categories: categories.map((c) => c.name),
|
||||||
|
});
|
||||||
|
throw new Error(
|
||||||
|
'invalid group name, it must startsWith any category',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (deprecatedKeys.includes(g.key)) {
|
if (deprecatedKeys.includes(g.key)) {
|
||||||
console.error({
|
console.error({
|
||||||
configName: newConfig.name,
|
configName: newConfig.name,
|
||||||
|
|||||||
Reference in New Issue
Block a user