From 720b9ce23f05e9e5223c22e8164981929af6d88f Mon Sep 17 00:00:00 2001 From: faris Aljohari <83524184+farisaljohari@users.noreply.github.com> Date: Mon, 24 Jun 2024 13:28:21 +0300 Subject: [PATCH] Add snake case converter helper function --- libs/common/src/helper/snakeCaseConverter.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 libs/common/src/helper/snakeCaseConverter.ts diff --git a/libs/common/src/helper/snakeCaseConverter.ts b/libs/common/src/helper/snakeCaseConverter.ts new file mode 100644 index 0000000..3b9ea55 --- /dev/null +++ b/libs/common/src/helper/snakeCaseConverter.ts @@ -0,0 +1,16 @@ +function toSnakeCase(str) { + return str.replace(/([A-Z])/g, '_$1').toLowerCase(); +} + +export function convertKeysToSnakeCase(obj) { + if (Array.isArray(obj)) { + return obj.map((v) => convertKeysToSnakeCase(v)); + } else if (obj !== null && obj.constructor === Object) { + return Object.keys(obj).reduce((result, key) => { + const snakeKey = toSnakeCase(key); + result[snakeKey] = convertKeysToSnakeCase(obj[key]); + return result; + }, {}); + } + return obj; +}