From 6de69631b3c38f3502ed08c76b9342e521a42750 Mon Sep 17 00:00:00 2001 From: Jakub Juszczak Date: Sat, 2 Sep 2017 13:40:16 +0200 Subject: [PATCH 1/2] Replace lodash with lodash.merge Single module should be smaller Signed-off-by: Jakub Juszczak --- package.json | 2 +- src/helpers/options.js | 2 +- yarn.lock | 6 +++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 63c0d17..0ecbec6 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "prepublish": "yarn run lint && yarn run test && yarn run build" }, "dependencies": { - "lodash": "^4.17.4" + "lodash.merge": "^4.6.0" }, "peerDependencies": { "chart.js": "^2.6.0", diff --git a/src/helpers/options.js b/src/helpers/options.js index 8175c2c..ccae233 100644 --- a/src/helpers/options.js +++ b/src/helpers/options.js @@ -1,4 +1,4 @@ -import merge from 'lodash/fp/merge' +import merge from 'lodash.merge' export function mergeOptions (obj, src) { return merge(obj, src) diff --git a/yarn.lock b/yarn.lock index 21e0803..6edd212 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3538,6 +3538,10 @@ lodash.keysin@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.keysin/-/lodash.keysin-4.2.0.tgz#8cc3fb35c2d94acc443a1863e02fa40799ea6f28" +lodash.merge@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" + lodash.mergewith@^4.0.0, lodash.mergewith@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55" @@ -3554,7 +3558,7 @@ lodash@^3.8.0: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -lodash@^4.0.0, lodash@^4.0.1, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0: +lodash@^4.0.0, lodash@^4.0.1, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" From d26078f08cec0dbf2d7bc6af79502001648dcace Mon Sep 17 00:00:00 2001 From: Jakub Juszczak Date: Sat, 2 Sep 2017 14:27:48 +0200 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=94=A5=20Remove=20lodash=20merge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaced with Object.assign() Signed-off-by: Jakub Juszczak --- package.json | 4 +--- src/helpers/options.js | 5 ++--- test/unit/specs/helpers/options.spec.js | 28 +++++++++++++++++++++++-- yarn.lock | 4 ---- 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 0ecbec6..0414e9c 100644 --- a/package.json +++ b/package.json @@ -56,9 +56,7 @@ "release": "webpack --progress --hide-modules --config ./build/webpack.release.js && NODE_ENV=production webpack --progress --hide-modules --config ./build/webpack.release.min.js && webpack --progress --hide-modules --config ./build/webpack.release.full.js && NODE_ENV=production webpack --progress --hide-modules --config ./build/webpack.release.full.min.js", "prepublish": "yarn run lint && yarn run test && yarn run build" }, - "dependencies": { - "lodash.merge": "^4.6.0" - }, + "dependencies": {}, "peerDependencies": { "chart.js": "^2.6.0", "vue": "^2.4.2" diff --git a/src/helpers/options.js b/src/helpers/options.js index ccae233..8e3645d 100644 --- a/src/helpers/options.js +++ b/src/helpers/options.js @@ -1,5 +1,4 @@ -import merge from 'lodash.merge' - export function mergeOptions (obj, src) { - return merge(obj, src) + let mutableObj = Object.assign({}, obj) + return Object.assign(mutableObj, src) } diff --git a/test/unit/specs/helpers/options.spec.js b/test/unit/specs/helpers/options.spec.js index d05ad75..47cefb9 100644 --- a/test/unit/specs/helpers/options.spec.js +++ b/test/unit/specs/helpers/options.spec.js @@ -15,16 +15,40 @@ describe('mergeOptions.js', () => { c: 'c' } + const an = { + a: { + a: 'a' + }, + b: { + b: 'a' + } + } + + const bn = { + a: { + a: 'a' + }, + b: { + b: 'b' + } + } + it('should replace old a and b if a and b are new', () => { - let ab = mergeOptions(a, b) + const ab = mergeOptions(a, b) expect(ab).to.have.property('a').and.to.equal('b') expect(ab).to.have.property('b').and.to.equal('b') }) it('should add c if c is new', () => { - let ac = mergeOptions(a, c) + const ac = mergeOptions(a, c) expect(ac).to.have.property('a').and.to.equal('a') expect(ac).to.have.property('b').and.to.equal('a') expect(ac).to.have.property('c').and.to.equal('c') }) + + it('should replace old a and b if a and b are new in nested objects', () => { + const ab = mergeOptions(an, bn) + expect(ab).to.have.deep.property('a.a').and.to.equal('a') + expect(ab).to.have.deep.property('b.b').and.to.equal('b') + }) }) diff --git a/yarn.lock b/yarn.lock index 6edd212..1842a54 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3538,10 +3538,6 @@ lodash.keysin@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.keysin/-/lodash.keysin-4.2.0.tgz#8cc3fb35c2d94acc443a1863e02fa40799ea6f28" -lodash.merge@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" - lodash.mergewith@^4.0.0, lodash.mergewith@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55"