Files
NapCatQQ/.pnpm-store/v3/files/37/4f869c460b20b2db9cd8321b0c91232b93a151a6a3205fce2bd2d14948fb603f91ce0395ccae9381c8da46ff5c45ee125a0a134728def4227552ab68443714
TanTan e311ca3275
Build NapCat Artifacts / Windows Loader Test (push) Canceled after 0s
Build NapCat Artifacts / Type Check & Test (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Framework (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Shell (push) Canceled after 0s
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

28 lines
869 B
Plaintext

import { isPlainObject as _iPO } from '../core/rtkImports'
// remove type guard
const isPlainObject: (_: any) => boolean = _iPO
export function copyWithStructuralSharing<T>(oldObj: any, newObj: T): T
export function copyWithStructuralSharing(oldObj: any, newObj: any): any {
if (
oldObj === newObj ||
!(
(isPlainObject(oldObj) && isPlainObject(newObj)) ||
(Array.isArray(oldObj) && Array.isArray(newObj))
)
) {
return newObj
}
const newKeys = Object.keys(newObj)
const oldKeys = Object.keys(oldObj)
let isSameObject = newKeys.length === oldKeys.length
const mergeObj: any = Array.isArray(newObj) ? [] : {}
for (const key of newKeys) {
mergeObj[key] = copyWithStructuralSharing(oldObj[key], newObj[key])
if (isSameObject) isSameObject = oldObj[key] === mergeObj[key]
}
return isSameObject ? oldObj : mergeObj
}