diff --git a/CHANGELOG b/CHANGELOG index 3a986c5..5e2b386 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +# 1.2.1 +- fix: merge should not throw an error with non-plain objects in sources + # 1.2.0 - feat: get - feat: isEmpty diff --git a/package.json b/package.json index 408ddf2..05099a4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@bitfinex/lib-js-util-base", - "version": "1.2.0", + "version": "1.2.1", "description": "general utils", "main": "index.js", "scripts": { diff --git a/src/merge.js b/src/merge.js index 0ab0991..cb06ad8 100644 --- a/src/merge.js +++ b/src/merge.js @@ -29,6 +29,10 @@ const merge = (target, ...sources) => { const cloneObj = _cloneObj(target) for (const source of sources) { + if (!isPlainObject(source)) { + continue + } + const keys = Object.keys(source) for (const key of keys) { diff --git a/test/merge.js b/test/merge.js index f6652cd..263c7cf 100644 --- a/test/merge.js +++ b/test/merge.js @@ -129,4 +129,11 @@ describe('merge', () => { circularObj.self = circularObj assert.deepStrictEqual(merge({}, circularObj), Object.assign({}, circularObj)) }) + + it('should not throw an error with non-plain objects in sources', () => { + const expected = { a: 4 } + const actual = merge({ a: 1 }, expected, undefined, null, true, '', NaN, /x/, Symbol('a')) + + assert.deepStrictEqual(actual, expected) + }) })