Skip to content

Commit 1af9271

Browse files
authored
Merge pull request #7 from panates/dev
Dev
2 parents 955047d + 5138e4c commit 1af9271

5 files changed

Lines changed: 73 additions & 42 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,7 @@
11
## Changelog
22

3-
### [v2.0.1](https://github.com/panates/jsopen-objects/compare/v2.0.0...v2.0.1) -
3+
### [v2.0.2](https://github.com/panates/jsopen-objects/compare/v2.0.1...v2.0.2) -
44

55
#### 🛠 Refactoring and Updates
66

7-
- refactor: Made default "symbolKeys" option to true @Eray Hanoğlu
8-
9-
#### 💬 General Changes
10-
11-
- dev: Coveralls parallel @Eray Hanoğlu
12-
- dev: Coveralls parallel @Eray Hanoğlu
7+
- refactor: Minor typing changes @Eray Hanoğlu

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@jsopen/objects",
33
"description": "Helper utilities for working with JavaScript objects and arrays",
4-
"version": "2.0.1",
4+
"version": "2.0.2",
55
"author": "Panates",
66
"license": "MIT",
77
"private": true,

src/merge.ts

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,34 @@ import { isBuiltIn } from './type-guards.js';
33

44
const hasOwnProperty = Object.prototype.hasOwnProperty;
55

6-
export function merge<A, B>(
7-
target: A,
8-
source: B,
9-
options?: merge.Options,
10-
): A & B;
11-
export function merge<A, B, C>(
6+
export function merge<A extends object, B extends object, C extends object>(
127
target: A,
138
source: [B, C],
149
options?: merge.Options,
1510
): A & B & C;
16-
export function merge<A, B, C, D>(
17-
target: A,
18-
source: [B, C, D],
19-
options?: merge.Options,
20-
): A & B & C & D;
21-
export function merge<A, B, C, D, E>(
22-
target: A,
23-
source: [B, C, D, E],
24-
options?: merge.Options,
25-
): A & B & C & D & E;
11+
export function merge<
12+
A extends object,
13+
B extends object,
14+
C extends object,
15+
D extends object,
16+
>(target: A, source: [B, C, D], options?: merge.Options): A & B & C & D;
17+
export function merge<
18+
A extends object,
19+
B extends object,
20+
C extends object,
21+
D extends object,
22+
E extends object,
23+
>(target: A, source: [B, C, D, E], options?: merge.Options): A & B & C & D & E;
2624
export function merge<A, B, C, D, F>(
2725
target: A,
2826
source: [B, C, D, F],
2927
options?: merge.Options,
3028
): A & B & C & D & F;
29+
export function merge<A extends object, B extends object>(
30+
target: A,
31+
source: B,
32+
options?: merge.Options,
33+
): A & B;
3134
export function merge(
3235
targetObject: any,
3336
sourceObject: any,

src/omit.ts

Lines changed: 49 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@ import {
1010
} from 'ts-gems';
1111
import { merge } from './merge.js';
1212

13-
export function omit<T, K extends keyof T>(obj: T, keys: K[]): Omit<T, K> {
13+
export function omit<T extends object, K extends keyof T>(
14+
obj: T,
15+
keys: K[],
16+
): Omit<T, K> {
1417
const keysSet = new Set<any>(keys);
1518
return merge({}, obj, {
1619
deep: false,
@@ -20,23 +23,44 @@ export function omit<T, K extends keyof T>(obj: T, keys: K[]): Omit<T, K> {
2023
});
2124
}
2225

23-
export function omitUndefined<T>(obj: T, deep: true): DeepOmitUndefined<T>;
24-
export function omitUndefined<T>(obj: T, deep: 'full'): DeeperOmitUndefined<T>;
25-
export function omitUndefined<T>(obj: T, deep: false): OmitUndefined<T>;
26-
export function omitUndefined<T>(obj: T): OmitUndefined<T>;
27-
export function omitUndefined<T>(obj: T, deep?: boolean | 'full') {
26+
export function omitUndefined<T extends object>(
27+
obj: T,
28+
deep: true,
29+
): DeepOmitUndefined<T>;
30+
export function omitUndefined<T extends object>(
31+
obj: T,
32+
deep: 'full',
33+
): DeeperOmitUndefined<T>;
34+
export function omitUndefined<T extends object>(
35+
obj: T,
36+
deep: false,
37+
): OmitUndefined<T>;
38+
export function omitUndefined<T extends object>(obj: T): OmitUndefined<T>;
39+
export function omitUndefined<T extends object>(
40+
obj: T,
41+
deep?: boolean | 'full',
42+
) {
2843
return merge({}, obj, {
2944
deep,
3045
ignoreUndefined: true,
3146
copyDescriptors: true,
3247
});
3348
}
3449

35-
export function omitNull<T>(obj: T, deep: true): DeepOmitTypes<T, null>;
36-
export function omitNull<T>(obj: T, deep: 'full'): DeeperUnNullish<T>;
37-
export function omitNull<T>(obj: T, deep: false): OmitTypes<T, null>;
38-
export function omitNull<T>(obj: T): OmitTypes<T, null>;
39-
export function omitNull<T>(obj: T, deep?: boolean | 'full') {
50+
export function omitNull<T extends object>(
51+
obj: T,
52+
deep: true,
53+
): DeepOmitTypes<T, null>;
54+
export function omitNull<T extends object>(
55+
obj: T,
56+
deep: 'full',
57+
): DeeperUnNullish<T>;
58+
export function omitNull<T extends object>(
59+
obj: T,
60+
deep: false,
61+
): OmitTypes<T, null>;
62+
export function omitNull<T extends object>(obj: T): OmitTypes<T, null>;
63+
export function omitNull<T extends object>(obj: T, deep?: boolean | 'full') {
4064
return merge({}, obj, {
4165
deep,
4266
ignoreNulls: true,
@@ -45,11 +69,20 @@ export function omitNull<T>(obj: T, deep?: boolean | 'full') {
4569
});
4670
}
4771

48-
export function omitNullish<T>(obj: T, deep: true): DeepUnNullish<T>;
49-
export function omitNullish<T>(obj: T, deep: 'full'): DeeperUnNullish<T>;
50-
export function omitNullish<T>(obj: T, deep: false): UnNullish<T>;
51-
export function omitNullish<T>(obj: T): UnNullish<T>;
52-
export function omitNullish<T>(obj: T, deep?: boolean | 'full') {
72+
export function omitNullish<T extends object>(
73+
obj: T,
74+
deep: true,
75+
): DeepUnNullish<T>;
76+
export function omitNullish<T extends object>(
77+
obj: T,
78+
deep: 'full',
79+
): DeeperUnNullish<T>;
80+
export function omitNullish<T extends object>(
81+
obj: T,
82+
deep: false,
83+
): UnNullish<T>;
84+
export function omitNullish<T extends object>(obj: T): UnNullish<T>;
85+
export function omitNullish<T extends object>(obj: T, deep?: boolean | 'full') {
5386
return merge({}, obj, {
5487
deep,
5588
ignoreNulls: true,

0 commit comments

Comments
 (0)