@@ -25,10 +25,6 @@ type CSpellSettingsWST = AdvancedCSpellSettingsWithSourceTrace;
25
25
type CSpellSettingsWSTO = OptionalOrUndefined < AdvancedCSpellSettingsWithSourceTrace > ;
26
26
type CSpellSettingsI = CSpellSettingsInternal ;
27
27
28
- function _unique < T > ( a : T [ ] ) : T [ ] {
29
- return [ ...new Set ( a ) ] ;
30
- }
31
-
32
28
/**
33
29
* Merges two lists and removes duplicates. Order is NOT preserved.
34
30
*/
@@ -38,11 +34,11 @@ function mergeListUnique<T>(left: undefined, right: T[]): T[];
38
34
function mergeListUnique < T > ( left : T [ ] , right : undefined ) : T [ ] ;
39
35
function mergeListUnique < T > ( left : T [ ] | undefined , right : T [ ] | undefined ) : T [ ] | undefined ;
40
36
function mergeListUnique < T > ( left : T [ ] | undefined , right : T [ ] | undefined ) : T [ ] | undefined {
41
- if ( left === undefined ) return right ;
42
- if ( right === undefined ) return left ;
37
+ if ( ! Array . isArray ( left ) ) return Array . isArray ( right ) ? right : undefined ;
38
+ if ( ! Array . isArray ( right ) ) return left ;
43
39
if ( ! right . length ) return left ;
44
40
if ( ! left . length ) return right ;
45
- return _unique ( [ ...left , ...right ] ) ;
41
+ return [ ... new Set ( [ ...left , ...right ] ) ] ;
46
42
}
47
43
48
44
/**
@@ -55,8 +51,8 @@ function mergeList<T>(left: undefined, right: T[]): T[];
55
51
function mergeList < T > ( left : T [ ] , right : undefined ) : T [ ] ;
56
52
function mergeList < T > ( left : T [ ] | undefined , right : T [ ] | undefined ) : T [ ] | undefined ;
57
53
function mergeList < T > ( left : T [ ] | undefined , right : T [ ] | undefined ) : T [ ] | undefined {
58
- if ( left === undefined ) return right ;
59
- if ( right === undefined ) return left ;
54
+ if ( ! Array . isArray ( left ) ) return Array . isArray ( right ) ? right : undefined ;
55
+ if ( ! Array . isArray ( right ) ) return left ;
60
56
if ( ! left . length ) return right ;
61
57
if ( ! right . length ) return left ;
62
58
return left . concat ( right ) ;
@@ -82,10 +78,10 @@ function mergeWordsCached(left: undefined, right: string[]): string[];
82
78
function mergeWordsCached ( left : string [ ] , right : undefined ) : string [ ] ;
83
79
function mergeWordsCached ( left : string [ ] | undefined , right : string [ ] | undefined ) : string [ ] | undefined ;
84
80
function mergeWordsCached ( left : string [ ] | undefined , right : string [ ] | undefined ) : string [ ] | undefined {
85
- if ( left === undefined ) return ! right || right . length ? right : emptyWords ;
86
- if ( right === undefined ) return ! left || left . length ? left : emptyWords ;
87
- if ( ! left . length ) return ! right || right . length ? right : emptyWords ;
88
- if ( ! right . length ) return ! left || left . length ? left : emptyWords ;
81
+ if ( ! Array . isArray ( left ) || ! left . length ) {
82
+ return Array . isArray ( right ) ? ( right . length ? right : emptyWords ) : undefined ;
83
+ }
84
+ if ( ! Array . isArray ( right ) || ! right . length ) return left ;
89
85
90
86
return _mergeWordsCached ( left , right ) ;
91
87
}
@@ -95,8 +91,8 @@ function mergeObjects<T>(left: T, right: undefined): T;
95
91
function mergeObjects < T > ( left : T , right : T ) : T ;
96
92
function mergeObjects < T > ( left : undefined , right : T ) : T ;
97
93
function mergeObjects < T > ( left ?: T , right ?: T ) : T | undefined {
98
- if ( left === undefined ) return right ;
99
- if ( right === undefined ) return left ;
94
+ if ( ! left || typeof left !== 'object' ) return ! right || typeof right !== 'object' ? undefined : right ;
95
+ if ( ! right || typeof right !== 'object' ) return left ;
100
96
return { ...left , ...right } ;
101
97
}
102
98
0 commit comments