From ff1dacda87312345d171842283fc6c9accad9eef Mon Sep 17 00:00:00 2001 From: xream Date: Sun, 2 Mar 2025 10:07:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=BA=E5=9F=9F=E8=BF=87=E6=BB=A4=E5=92=8C?= =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E8=BF=87=E6=BB=A4=E6=94=AF=E6=8C=81=E4=BF=9D?= =?UTF-8?q?=E7=95=99=E6=A8=A1=E5=BC=8F=E5=92=8C=E8=BF=87=E6=BB=A4=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F(=E5=90=8E=E7=AB=AF=E9=9C=80=20>=3D=202.17.0,=20?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E9=9C=80=20>=3D=202.15.0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/package.json | 2 +- .../src/core/proxy-utils/processors/index.js | 22 +++++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/backend/package.json b/backend/package.json index 7badcb981..412002522 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "sub-store", - "version": "2.16.63", + "version": "2.17.0", "description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and Shadowrocket.", "main": "src/main.js", "scripts": { diff --git a/backend/src/core/proxy-utils/processors/index.js b/backend/src/core/proxy-utils/processors/index.js index 031272988..5c26da0a3 100644 --- a/backend/src/core/proxy-utils/processors/index.js +++ b/backend/src/core/proxy-utils/processors/index.js @@ -849,7 +849,12 @@ function UselessFilter() { } // filter by regions -function RegionFilter(regions) { +function RegionFilter(input) { + let regions = input?.value || input; + if (!Array.isArray(regions)) { + regions = []; + } + const keep = input?.keep ?? true; const REGION_MAP = { HK: '🇭🇰', TW: '🇹🇼', @@ -866,7 +871,8 @@ function RegionFilter(regions) { // this would be high memory usage return proxies.map((proxy) => { const flag = getFlag(proxy.name); - return regions.some((r) => REGION_MAP[r] === flag); + const selected = regions.some((r) => REGION_MAP[r] === flag); + return keep ? selected : !selected; }); }, }; @@ -898,11 +904,19 @@ function buildRegex(str, ...options) { } // filter by proxy types -function TypeFilter(types) { +function TypeFilter(input) { + let types = input?.value || input; + if (!Array.isArray(types)) { + types = []; + } + const keep = input?.keep ?? true; return { name: 'Type Filter', func: (proxies) => { - return proxies.map((proxy) => types.some((t) => proxy.type === t)); + return proxies.map((proxy) => { + const selected = types.some((t) => proxy.type === t); + return keep ? selected : !selected; + }); }, }; }