From 2e8ce048f192b9dd5f108a3590c2b8ea01c9eb84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominique=20J=C3=A4ggi?= <1872195+solaris007@users.noreply.github.com> Date: Tue, 2 Jul 2024 14:29:53 +0200 Subject: [PATCH 1/2] feat: isNonEmptyObject (#280) Introduce `isNonEmptyObject` method, which checks whether an object is an object and has properties of its own. --- .../spacecat-shared-utils/src/functions.js | 10 ++++++++++ packages/spacecat-shared-utils/src/index.d.ts | 2 ++ .../test/functions.test.js | 18 ++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/packages/spacecat-shared-utils/src/functions.js b/packages/spacecat-shared-utils/src/functions.js index b3029a6c5..e616c6052 100644 --- a/packages/spacecat-shared-utils/src/functions.js +++ b/packages/spacecat-shared-utils/src/functions.js @@ -66,6 +66,15 @@ function isObject(value) { return !isArray(value) && value !== null && typeof value === 'object'; } +/** + * Checks if the given value is an object and contains properties of its own. + * @param {*} value - The value to check. + * @return {boolean} True if the value is a non-empty object, false otherwise. + */ +function isNonEmptyObject(value) { + return isObject(value) && Object.keys(value).length > 0; +} + /** * Determines if the given parameter is a string. * @@ -196,6 +205,7 @@ export { isIsoTimeOffsetsDate, isNumber, isObject, + isNonEmptyObject, isString, toBoolean, isValidUrl, diff --git a/packages/spacecat-shared-utils/src/index.d.ts b/packages/spacecat-shared-utils/src/index.d.ts index 8d61e5a1a..42e6a0cd1 100644 --- a/packages/spacecat-shared-utils/src/index.d.ts +++ b/packages/spacecat-shared-utils/src/index.d.ts @@ -29,6 +29,8 @@ export function isNumber(value: unknown): boolean; export function isObject(value: unknown): boolean; +export function isNonEmptyObject(value: unknown): boolean; + export function isString(value: unknown): boolean; export function toBoolean(value: unknown): boolean; diff --git a/packages/spacecat-shared-utils/test/functions.test.js b/packages/spacecat-shared-utils/test/functions.test.js index 518afe9b7..a409be201 100644 --- a/packages/spacecat-shared-utils/test/functions.test.js +++ b/packages/spacecat-shared-utils/test/functions.test.js @@ -26,6 +26,7 @@ import { isIsoTimeOffsetsDate, isNumber, isObject, + isNonEmptyObject, isString, toBoolean, arrayEquals, @@ -190,6 +191,23 @@ describe('Shared functions', () => { expect(isObject({ asd: 'dsa' })).to.be.true; }); + it('non empty object', () => { + const invalidObjects = [ + null, + undefined, + 123, + 'dasd', + [], + ['dasd'], + {}, + ]; + + invalidObjects.forEach((value) => expect(isNonEmptyObject(value)).to.be.false); + + expect(isNonEmptyObject({})).to.be.false; + expect(isNonEmptyObject({ asd: 'dsa' })).to.be.true; + }); + it('is string', () => { const invalidStrings = [ null, From 060b0e1c0adba9ed7635662868de5e8778854621 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 2 Jul 2024 12:32:32 +0000 Subject: [PATCH 2/2] chore(release): 1.17.0 [skip ci] # [@adobe/spacecat-shared-utils-v1.17.0](https://github.com/adobe/spacecat-shared/compare/@adobe/spacecat-shared-utils-v1.16.2...@adobe/spacecat-shared-utils-v1.17.0) (2024-07-02) ### Features * isNonEmptyObject ([#280](https://github.com/adobe/spacecat-shared/issues/280)) ([2e8ce04](https://github.com/adobe/spacecat-shared/commit/2e8ce048f192b9dd5f108a3590c2b8ea01c9eb84)) --- packages/spacecat-shared-utils/CHANGELOG.md | 7 +++++++ packages/spacecat-shared-utils/package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/spacecat-shared-utils/CHANGELOG.md b/packages/spacecat-shared-utils/CHANGELOG.md index 7179f0fc4..402fe0bc3 100644 --- a/packages/spacecat-shared-utils/CHANGELOG.md +++ b/packages/spacecat-shared-utils/CHANGELOG.md @@ -1,3 +1,10 @@ +# [@adobe/spacecat-shared-utils-v1.17.0](https://github.com/adobe/spacecat-shared/compare/@adobe/spacecat-shared-utils-v1.16.2...@adobe/spacecat-shared-utils-v1.17.0) (2024-07-02) + + +### Features + +* isNonEmptyObject ([#280](https://github.com/adobe/spacecat-shared/issues/280)) ([2e8ce04](https://github.com/adobe/spacecat-shared/commit/2e8ce048f192b9dd5f108a3590c2b8ea01c9eb84)) + # [@adobe/spacecat-shared-utils-v1.16.2](https://github.com/adobe/spacecat-shared/compare/@adobe/spacecat-shared-utils-v1.16.1...@adobe/spacecat-shared-utils-v1.16.2) (2024-06-29) diff --git a/packages/spacecat-shared-utils/package.json b/packages/spacecat-shared-utils/package.json index a1aad67ff..5b1a6f8b7 100644 --- a/packages/spacecat-shared-utils/package.json +++ b/packages/spacecat-shared-utils/package.json @@ -1,6 +1,6 @@ { "name": "@adobe/spacecat-shared-utils", - "version": "1.16.2", + "version": "1.17.0", "description": "Shared modules of the Spacecat Services - utils", "type": "module", "main": "src/index.js",