mirror of
https://github.com/ueberdosis/tiptap.git
synced 2024-11-23 19:19:03 +08:00
fix(core): mergeDeep now can merge nulls (#4088)
This commit is contained in:
parent
31f3746491
commit
fe78faab55
@ -5,14 +5,10 @@ export function mergeDeep(target: Record<string, any>, source: Record<string, an
|
||||
|
||||
if (isPlainObject(target) && isPlainObject(source)) {
|
||||
Object.keys(source).forEach(key => {
|
||||
if (isPlainObject(source[key])) {
|
||||
if (!(key in target)) {
|
||||
Object.assign(output, { [key]: source[key] })
|
||||
} else {
|
||||
output[key] = mergeDeep(target[key], source[key])
|
||||
}
|
||||
if (isPlainObject(source[key]) && isPlainObject(target[key])) {
|
||||
output[key] = mergeDeep(target[key], source[key])
|
||||
} else {
|
||||
Object.assign(output, { [key]: source[key] })
|
||||
output[key] = source[key]
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -19,6 +19,21 @@ describe('mergeDeep', () => {
|
||||
expect(merged).to.deep.eq(result)
|
||||
})
|
||||
|
||||
it('should merge when source has null value', () => {
|
||||
const one = {
|
||||
a: null,
|
||||
}
|
||||
const two = {
|
||||
a: { c: 3 },
|
||||
}
|
||||
const result = {
|
||||
a: { c: 3 },
|
||||
}
|
||||
const merged = mergeDeep(one, two)
|
||||
|
||||
expect(merged).to.deep.eq(result)
|
||||
})
|
||||
|
||||
it('should not merge array', () => {
|
||||
const one = {
|
||||
a: [1],
|
||||
@ -34,6 +49,36 @@ describe('mergeDeep', () => {
|
||||
expect(merged).to.deep.eq(result)
|
||||
})
|
||||
|
||||
it('should merge when source has null value', () => {
|
||||
const one = {
|
||||
a: null,
|
||||
}
|
||||
const two = {
|
||||
a: { c: 3 },
|
||||
}
|
||||
const result = {
|
||||
a: { c: 3 },
|
||||
}
|
||||
const merged = mergeDeep(one, two)
|
||||
|
||||
expect(merged).to.deep.eq(result)
|
||||
})
|
||||
|
||||
it('should allow nulling a value', () => {
|
||||
const one = {
|
||||
a: { c: 3 },
|
||||
}
|
||||
const two = {
|
||||
a: { c: null },
|
||||
}
|
||||
const result = {
|
||||
a: { c: null },
|
||||
}
|
||||
const merged = mergeDeep(one, two)
|
||||
|
||||
expect(merged).to.deep.eq(result)
|
||||
})
|
||||
|
||||
it('should merge deep', () => {
|
||||
const one = {
|
||||
a: 1,
|
||||
|
Loading…
Reference in New Issue
Block a user