Documentation Index
Fetch the complete documentation index at: https://mintlify.com/sebamar88/bytekit/llms.txt
Use this file to discover all available pages before exploring further.
Overview
The ObjectUtils class provides static methods for object manipulation, including deep cloning, merging, property access, filtering, and transformation operations.
Source: workspace/source/src/utils/helpers/ObjectUtils.ts:5
Methods
isEmpty
Check if value is empty (null, undefined, empty string, empty array, empty object).
static isEmpty(value: unknown): boolean
Parameters:
value: unknown - Value to check
Returns: boolean - True if value is empty
Example:
import { ObjectUtils } from 'bytekit';
ObjectUtils.isEmpty(null); // true
ObjectUtils.isEmpty(undefined); // true
ObjectUtils.isEmpty(''); // true
ObjectUtils.isEmpty(' '); // true
ObjectUtils.isEmpty([]); // true
ObjectUtils.isEmpty({}); // true
ObjectUtils.isEmpty({ a: 1 }); // false
isNotEmpty
Check if value is NOT empty.
static isNotEmpty(value: unknown): boolean
Parameters:
value: unknown - Value to check
Returns: boolean - True if value is not empty
Example:
ObjectUtils.isNotEmpty({ a: 1 }); // true
ObjectUtils.isNotEmpty(null); // false
deepClone
Create a deep copy of an object.
static deepClone<T>(obj: T): T
Parameters:
Returns: T - Deep cloned copy
Example:
const original = {
name: 'Alice',
address: { city: 'NYC', zip: 10001 },
hobbies: ['reading', 'coding']
};
const copy = ObjectUtils.deepClone(original);
copy.address.city = 'LA';
console.log(original.address.city); // 'NYC' (unchanged)
console.log(copy.address.city); // 'LA'
merge
Shallow merge objects (right overwrites left).
static merge<T extends Record<string, unknown>>(
...objects: Partial<T>[]
): T
Parameters:
...objects: Partial<T>[] - Objects to merge
Returns: T - Merged object
Example:
const defaults = { port: 3000, host: 'localhost' };
const config = { port: 8080, debug: true };
const result = ObjectUtils.merge(defaults, config);
// { port: 8080, host: 'localhost', debug: true }
deepMerge
Deep merge objects recursively.
static deepMerge(
...objects: Array<Record<string, unknown>>
): Record<string, unknown>
Parameters:
...objects: Array<Record<string, unknown>> - Objects to merge deeply
Returns: Record<string, unknown> - Deeply merged object
Example:
const obj1 = {
server: { port: 3000, host: 'localhost' },
features: { auth: true }
};
const obj2 = {
server: { port: 8080 },
features: { cache: true }
};
const result = ObjectUtils.deepMerge(obj1, obj2);
// {
// server: { port: 8080, host: 'localhost' },
// features: { auth: true, cache: true }
// }
pick
Pick specific keys from object.
static pick<T extends Record<string, unknown>, K extends keyof T>(
obj: T,
keys: K[]
): Partial<T>
Parameters:
obj: T - Source object
keys: K[] - Keys to pick
Returns: Partial<T> - Object with only picked keys
Example:
const user = {
id: 1,
name: 'Alice',
email: 'alice@example.com',
password: 'secret'
};
const public = ObjectUtils.pick(user, ['id', 'name', 'email']);
// { id: 1, name: 'Alice', email: 'alice@example.com' }
omit
Omit specific keys from object.
static omit<T extends Record<string, unknown>, K extends keyof T>(
obj: T,
keys: K[]
): Partial<T>
Parameters:
obj: T - Source object
keys: K[] - Keys to omit
Returns: Partial<T> - Object without omitted keys
Example:
const user = {
id: 1,
name: 'Alice',
password: 'secret'
};
const safe = ObjectUtils.omit(user, ['password']);
// { id: 1, name: 'Alice' }
get
Get nested value using dot notation.
static get<T = unknown>(
obj: Record<string, unknown>,
path: string,
defaultValue?: T
): T
Parameters:
obj: Record<string, unknown> - Source object
path: string - Dot-notation path (e.g., ‘user.address.city’)
defaultValue?: T - Default value if path doesn’t exist
Returns: T - Value at path or default value
Example:
const data = {
user: {
name: 'Alice',
address: { city: 'NYC' }
}
};
ObjectUtils.get(data, 'user.address.city'); // 'NYC'
ObjectUtils.get(data, 'user.age', 25); // 25 (default)
set
Set nested value using dot notation.
static set(
obj: Record<string, unknown>,
path: string,
value: unknown
): Record<string, unknown>
Parameters:
obj: Record<string, unknown> - Target object
path: string - Dot-notation path
value: unknown - Value to set
Returns: Record<string, unknown> - Modified object
Example:
const data = {};
ObjectUtils.set(data, 'user.address.city', 'NYC');
// { user: { address: { city: 'NYC' } } }
flatten
Flatten nested object to single level with dot-notation keys.
static flatten(
obj: Record<string, unknown>,
prefix = ""
): Record<string, unknown>
Parameters:
obj: Record<string, unknown> - Object to flatten
prefix: string - Prefix for keys (default: ”)
Returns: Record<string, unknown> - Flattened object
Example:
const nested = {
user: {
name: 'Alice',
address: { city: 'NYC', zip: 10001 }
}
};
ObjectUtils.flatten(nested);
// {
// 'user.name': 'Alice',
// 'user.address.city': 'NYC',
// 'user.address.zip': 10001
// }
unflatten
Unflatten object (reverse of flatten).
static unflatten(obj: Record<string, unknown>): Record<string, unknown>
Parameters:
obj: Record<string, unknown> - Flattened object
Returns: Record<string, unknown> - Nested object
Example:
const flat = {
'user.name': 'Alice',
'user.address.city': 'NYC'
};
ObjectUtils.unflatten(flat);
// {
// user: {
// name: 'Alice',
// address: { city: 'NYC' }
// }
// }
filter
Filter object properties by predicate.
static filter<T extends Record<string, unknown>>(
obj: T,
predicate: (key: string, value: unknown) => boolean
): Partial<T>
Parameters:
obj: T - Source object
predicate: (key: string, value: unknown) => boolean - Filter function
Returns: Partial<T> - Filtered object
Example:
const obj = { a: 1, b: 2, c: 3, d: 4 };
const result = ObjectUtils.filter(obj, (key, value) => value > 2);
// { c: 3, d: 4 }
mapValues
Map object values with a transformation function.
static mapValues<T extends Record<string, unknown>, R>(
obj: T,
mapper: (value: unknown, key: string) => R
): Record<string, R>
Parameters:
obj: T - Source object
mapper: (value: unknown, key: string) => R - Mapper function
Returns: Record<string, R> - Object with mapped values
Example:
const prices = { apple: 1, banana: 2, cherry: 3 };
const doubled = ObjectUtils.mapValues(prices, val => val * 2);
// { apple: 2, banana: 4, cherry: 6 }
hasKeys
Check if object has all specified keys.
static hasKeys<T extends Record<string, unknown>>(
obj: T,
keys: (keyof T)[]
): boolean
Parameters:
obj: T - Object to check
keys: (keyof T)[] - Keys to look for
Returns: boolean - True if all keys exist
Example:
const user = { id: 1, name: 'Alice' };
ObjectUtils.hasKeys(user, ['id', 'name']); // true
ObjectUtils.hasKeys(user, ['id', 'email']); // false
hasAnyKey
Check if object has any of the specified keys.
static hasAnyKey<T extends Record<string, unknown>>(
obj: T,
keys: (keyof T)[]
): boolean
Parameters:
obj: T - Object to check
keys: (keyof T)[] - Keys to look for
Returns: boolean - True if any key exists
Example:
const user = { id: 1, name: 'Alice' };
ObjectUtils.hasAnyKey(user, ['email', 'id']); // true
invert
Invert object keys and values.
static invert<T extends Record<string, string | number>>(
obj: T
): Record<string | number, string>
Parameters:
obj: T - Object to invert
Returns: Record<string | number, string> - Inverted object
Example:
const statusCodes = { ok: 200, notFound: 404, error: 500 };
ObjectUtils.invert(statusCodes);
// { '200': 'ok', '404': 'notFound', '500': 'error' }
groupBy
Group array of objects by key.
static groupBy<T extends Record<string, unknown>>(
arr: T[],
key: keyof T
): Record<string, T[]>
Parameters:
arr: T[] - Array to group
key: keyof T - Key to group by
Returns: Record<string, T[]> - Grouped object
Example:
const users = [
{ id: 1, role: 'admin' },
{ id: 2, role: 'user' },
{ id: 3, role: 'admin' }
];
ObjectUtils.groupBy(users, 'role');
// {
// admin: [{ id: 1, role: 'admin' }, { id: 3, role: 'admin' }],
// user: [{ id: 2, role: 'user' }]
// }
indexBy
Index array of objects by key.
static indexBy<T extends Record<string, unknown>>(
arr: T[],
key: keyof T
): Record<string, T>
Parameters:
arr: T[] - Array to index
key: keyof T - Key to index by
Returns: Record<string, T> - Indexed object
Example:
const users = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' }
];
ObjectUtils.indexBy(users, 'id');
// {
// '1': { id: 1, name: 'Alice' },
// '2': { id: 2, name: 'Bob' }
// }
deepEqual
Check if two objects are deeply equal.
static deepEqual(a: unknown, b: unknown): boolean
Parameters:
a: unknown - First value
b: unknown - Second value
Returns: boolean - True if deeply equal
Example:
const obj1 = { a: 1, b: { c: 2 } };
const obj2 = { a: 1, b: { c: 2 } };
const obj3 = { a: 1, b: { c: 3 } };
ObjectUtils.deepEqual(obj1, obj2); // true
ObjectUtils.deepEqual(obj1, obj3); // false
size
Get object size (number of keys).
static size(obj: Record<string, unknown> | null | undefined): number
Parameters:
obj: Record<string, unknown> | null | undefined - Object to measure
Returns: number - Number of keys
Example:
ObjectUtils.size({ a: 1, b: 2, c: 3 }); // 3
ObjectUtils.size(null); // 0
entries
Convert object to array of [key, value] pairs.
static entries<T extends Record<string, unknown>>(
obj: T | null | undefined
): Array<[string, unknown]>
Parameters:
obj: T | null | undefined - Object to convert
Returns: Array<[string, unknown]> - Array of entries
Example:
ObjectUtils.entries({ a: 1, b: 2 });
// [['a', 1], ['b', 2]]
fromEntries
Convert array of [key, value] pairs to object.
static fromEntries(
entries: Array<[string, unknown]>
): Record<string, unknown>
Parameters:
entries: Array<[string, unknown]> - Array of entries
Returns: Record<string, unknown> - Object created from entries
Example:
ObjectUtils.fromEntries([['a', 1], ['b', 2]]);
// { a: 1, b: 2 }
assign
Assign properties from sources to target (like Object.assign).
static assign<T extends Record<string, unknown>>(
target: T,
...sources: Partial<T>[]
): T
Parameters:
target: T - Target object (will be modified)
...sources: Partial<T>[] - Source objects
Returns: T - Modified target object
Example:
const target = { a: 1 };
ObjectUtils.assign(target, { b: 2 }, { c: 3 });
console.log(target); // { a: 1, b: 2, c: 3 }
fromKeys
Create object from keys with same value.
static fromKeys<T extends string | number>(
keys: T[],
value: unknown
): Record<T, unknown>
Parameters:
keys: T[] - Array of keys
value: unknown - Value for all keys
Returns: Record<T, unknown> - Object with all keys set to value
Example:
ObjectUtils.fromKeys(['a', 'b', 'c'], 0);
// { a: 0, b: 0, c: 0 }
ObjectUtils.fromKeys(['admin', 'user'], false);
// { admin: false, user: false }