diff --git a/backend/package.json b/backend/package.json index af7d797..a0a95ea 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "sub-store", - "version": "2.19.10", + "version": "2.19.11", "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 5c26da0..a155d36 100644 --- a/backend/src/core/proxy-utils/processors/index.js +++ b/backend/src/core/proxy-utils/processors/index.js @@ -284,7 +284,15 @@ function SortOperator(order = 'asc') { } // sort by regex -function RegexSortOperator(expressions) { +function RegexSortOperator(input) { + const order = input.order || 'asc'; + let expressions = input.expressions; + if (Array.isArray(input)) { + expressions = input; + } + if (!Array.isArray(expressions)) { + expressions = []; + } return { name: 'Regex Sort Operator', func: (proxies) => { @@ -295,8 +303,13 @@ function RegexSortOperator(expressions) { if (oA && !oB) return -1; if (oB && !oA) return 1; if (oA && oB) return oA < oB ? -1 : 1; - if ((!oA && !oB) || (oA && oB && oA === oB)) - return a.name < b.name ? -1 : 1; // fallback to normal sort + if (order === 'original') { + return 0; + } else if (order === 'desc') { + return a.name < b.name ? 1 : -1; + } else { + return a.name < b.name ? -1 : 1; + } }); }, };