UNPKG

nhb-toolbox

Version:

A versatile collection of smart, efficient, and reusable utility functions, classes and types for everyday development needs.

42 lines (41 loc) 1.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.cloneObject = cloneObject; exports.countObjectFields = countObjectFields; exports.extractObjectKeys = extractObjectKeys; exports.extractObjectKeysDeep = extractObjectKeysDeep; const non_primitives_1 = require("../guards/non-primitives"); const index_1 = require("../utils/index"); function cloneObject(obj, serialize = false) { try { if (!serialize && typeof structuredClone === 'function') { return structuredClone(obj); } return JSON.parse((0, index_1.stableStringify)(obj)); } catch { return { ...obj }; } } function countObjectFields(obj) { if (obj != null) return Object.keys(obj)?.length; return 0; } function extractObjectKeys(obj, _tuple) { const keys = (0, non_primitives_1.isNotEmptyObject)(obj) ? Object.keys(obj) : []; return keys; } function extractObjectKeysDeep(obj) { function _getDeepKeys(candidate) { let result = []; for (const key in candidate) { result.push(key); if ((0, non_primitives_1.isNotEmptyObject)(candidate[key])) { result = [...result, ..._getDeepKeys(candidate[key])]; } } return result; } return ((0, non_primitives_1.isNotEmptyObject)(obj) ? _getDeepKeys(obj) : []); }