mirror of
https://hubproxy.babadafafafafa.cn/https://github.com/mihomo-party-org/clash-party.git
synced 2026-09-20 08:03:39 +08:00
fix: guard deepMerge + syntax behind isOverride
This commit is contained in:
@@ -237,7 +237,7 @@ async function applyOverrides(
|
||||
case 'yaml': {
|
||||
let patch = parse(content) || {}
|
||||
if (typeof patch !== 'object') patch = {}
|
||||
profile = deepMerge(profile, patch)
|
||||
profile = deepMerge(profile, patch, true)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ function trimWrap(str: string): string {
|
||||
return str
|
||||
}
|
||||
|
||||
export function deepMerge<T extends object>(target: T, other: Partial<T>): T {
|
||||
export function deepMerge<T extends object>(target: T, other: Partial<T>, isOverride?: boolean): T {
|
||||
for (const key in other) {
|
||||
if (isObject(other[key])) {
|
||||
if (key.endsWith('!')) {
|
||||
@@ -19,14 +19,14 @@ export function deepMerge<T extends object>(target: T, other: Partial<T>): T {
|
||||
} else {
|
||||
const k = trimWrap(key)
|
||||
if (!target[k]) Object.assign(target, { [k]: {} })
|
||||
deepMerge(target[k] as object, other[k] as object)
|
||||
deepMerge(target[k] as object, other[k] as object, isOverride)
|
||||
}
|
||||
} else if (Array.isArray(other[key])) {
|
||||
if (key.startsWith('+')) {
|
||||
if (isOverride && key.startsWith('+')) {
|
||||
const k = trimWrap(key.slice(1))
|
||||
if (!target[k]) Object.assign(target, { [k]: [] })
|
||||
target[k] = [...other[key], ...(target[k] as never[])]
|
||||
} else if (key.endsWith('+')) {
|
||||
} else if (isOverride && key.endsWith('+')) {
|
||||
const k = trimWrap(key.slice(0, -1))
|
||||
if (!target[k]) Object.assign(target, { [k]: [] })
|
||||
target[k] = [...(target[k] as never[]), ...other[key]]
|
||||
|
||||
Reference in New Issue
Block a user