Skip to content

Commit 2029771

Browse files
committed
Added combine()
1 parent 5070c5e commit 2029771

File tree

3 files changed

+26
-19
lines changed

3 files changed

+26
-19
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "lup-utils",
3-
"version": "1.2.2",
3+
"version": "1.2.3",
44
"description": "NodeJS library providing utility functions.",
55
"main": "./lib/index",
66
"types": "./lib/index.d.ts",

src/__tests__/object.test.ts

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,38 @@
1-
import { combineObjects, deepEqual, difference } from '../object';
1+
import { combine, deepEqual, difference } from '../object';
22

3-
test('combineObjects()', async () => {
4-
expect(combineObjects(undefined, undefined)).toBeUndefined();
5-
expect(combineObjects(undefined, 5)).toBe(5);
6-
expect(combineObjects(5, undefined)).toBeUndefined();
7-
expect(combineObjects(5, undefined, { ignoreUndefined: true })).toBe(5);
8-
expect(combineObjects(5, 10)).toBe(10);
9-
expect(combineObjects(5, 0, { ignoreUndefined: true })).toBe(0);
3+
test('combine()', async () => {
4+
expect(combine(undefined, undefined)).toBeUndefined();
5+
expect(combine(undefined, 5)).toBe(5);
6+
expect(combine(5, undefined)).toBeUndefined();
7+
expect(combine(5, undefined, { ignoreUndefined: true })).toBe(5);
8+
expect(combine(5, 10)).toBe(10);
9+
expect(combine(5, 0, { ignoreUndefined: true })).toBe(0);
1010

11-
expect(combineObjects([1, 2], [3, 4])).toEqual([3, 4]);
12-
expect(combineObjects([1, 2], [3, 4], { mergeArrays: true })).toEqual([1, 2, 3, 4]);
11+
expect(combine([1, 2], [3, 4])).toEqual([3, 4]);
12+
expect(combine([1, 2], [3, 4], { mergeArrays: true })).toEqual([1, 2, 3, 4]);
1313

14-
expect(combineObjects({ a: 1, b: 2 }, { b: 3, c: 4 })).toEqual({ a: 1, b: 3, c: 4 });
15-
expect(combineObjects({ a: 1, b: 2 }, { b: undefined, c: 4 }, { ignoreUndefined: false })).toEqual({
14+
expect(combine({ a: 1, b: 2 }, { b: 3, c: 4 })).toEqual({ a: 1, b: 3, c: 4 });
15+
expect(combine({ a: 1, b: 2 }, { b: undefined, c: 4 }, { ignoreUndefined: false })).toEqual({
1616
a: 1,
1717
b: undefined,
1818
c: 4,
1919
});
20-
expect(combineObjects({ a: 1, b: 2 }, { b: undefined, c: 4 }, { ignoreUndefined: true })).toEqual({
20+
expect(combine({ a: 1, b: 2 }, { b: undefined, c: 4 }, { ignoreUndefined: true })).toEqual({
2121
a: 1,
2222
b: 2,
2323
c: 4,
2424
});
2525

26-
expect(combineObjects({ a: 1, b: { c: 5, d: 6 } }, { b: { e: 7 } }, { recursive: false })).toEqual({
26+
expect(combine({ a: 1, b: { c: 5, d: 6 } }, { b: { e: 7 } }, { recursive: false })).toEqual({
2727
a: 1,
2828
b: { e: 7 },
2929
});
30-
expect(combineObjects({ a: 1, b: { c: 5, d: 6 } }, { b: { e: 7 } }, { recursive: true })).toEqual({
30+
expect(combine({ a: 1, b: { c: 5, d: 6 } }, { b: { e: 7 } }, { recursive: true })).toEqual({
3131
a: 1,
3232
b: { c: 5, d: 6, e: 7 },
3333
});
3434

35-
expect(combineObjects({ a: [1, 2], b: 2 }, { a: [3, 4] }, { mergeArrays: true })).toEqual({ a: [1, 2, 3, 4], b: 2 });
35+
expect(combine({ a: [1, 2], b: 2 }, { a: [3, 4] }, { mergeArrays: true })).toEqual({ a: [1, 2, 3, 4], b: 2 });
3636
});
3737

3838
test('deepEqual()', async () => {

src/object.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
1-
export function combineObjects<O, N>(
1+
/**
2+
* Combines two objects into one, with options for handling undefined values, merging arrays, and deep merging.
3+
* @param oldObj The original object.
4+
* @param newObj The object to merge into the original.
5+
* @param options Options for merging behavior.
6+
* @returns A new object that combines the properties of both input objects.
7+
*/
8+
export function combine<O, N>(
29
oldObj: O,
310
newObj: N,
411
options?: {
@@ -49,7 +56,7 @@ export function combineObjects<O, N>(
4956
typeof newValue === 'object' &&
5057
newValue !== null
5158
) {
52-
result[key] = combineObjects(oldValue, newValue, options);
59+
result[key] = combine(oldValue, newValue, options);
5360
continue;
5461
}
5562

0 commit comments

Comments
 (0)