From f87e3047fcbf94e4feaed757ed92b06b92a7e690 Mon Sep 17 00:00:00 2001 From: Florian BOUILLON Date: Mon, 23 Nov 2020 02:27:16 +0100 Subject: [PATCH] Fixed bug where null were considered as objects Signed-off-by: Florian BOUILLON --- .eslintrc.json | 3 +-- packages/object-util/__tests__/index.test.ts | 8 ++++++++ packages/object-util/src/ObjectUtil.ts | 3 +++ tsconfig.base.json | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index fe02e2d..f76857d 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -160,7 +160,6 @@ "no-throw-literal": "error", "no-trailing-spaces": "error", "no-undef-init": "error", - "no-underscore-dangle": "error", "no-unsafe-finally": "error", "no-unused-labels": "error", "no-unused-vars": "off", @@ -186,4 +185,4 @@ "use-isnan": "error", "valid-typeof": "off" } -} \ No newline at end of file +} diff --git a/packages/object-util/__tests__/index.test.ts b/packages/object-util/__tests__/index.test.ts index c3d7010..27fc12b 100644 --- a/packages/object-util/__tests__/index.test.ts +++ b/packages/object-util/__tests__/index.test.ts @@ -157,6 +157,14 @@ describe('Object Equal Test', () => { it('should not be equal if lengths are equal but content different', () => { expect(objectEqual({pouet: true, added: true }, {pouet: true, removed: true})).toBe(false) }) + it('should be equal object contains null', () => { + expect(objectEqual({pouet: null, added: true }, {pouet: true, added: true})).toBe(false) + expect(objectEqual({pouet: null, added: true }, {pouet: null, added: true})).toBe(true) + }) + it('should be equal object contains undefined', () => { + expect(objectEqual({pouet: undefined, added: true }, {pouet: true, added: true})).toBe(false) + expect(objectEqual({pouet: undefined, added: true }, {pouet: undefined, added: true})).toBe(true) + }) it('should not be deeply equal', () => { expect(objectEqual({pouet: {is: true}}, {pouet: {is: false}})).toBe(false) }) diff --git a/packages/object-util/src/ObjectUtil.ts b/packages/object-util/src/ObjectUtil.ts index 1ac240c..0c6e982 100644 --- a/packages/object-util/src/ObjectUtil.ts +++ b/packages/object-util/src/ObjectUtil.ts @@ -139,6 +139,9 @@ export function objectEqual(x: Record, y: Record): boo return false } const item2 = y[key] + if (item === null && item2 === null) { + return true + } if (typeof item === 'object' && typeof item2 === 'object') { return objectEqual(item, item2) } diff --git a/tsconfig.base.json b/tsconfig.base.json index 194f5bb..a8569db 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -15,7 +15,7 @@ "allowJs": true, "sourceMap": false, "strict": true, - "target": "ES2017", // Follow NodeJS oldest supported LTS + "target": "ES2017", // Follow NodeJS oldest supported LTS and compare with https://node.green "module": "commonjs" }, "exclude": [