@@ -96,51 +96,59 @@ declare namespace Immutable {
96
96
type OnlyObject < T > = Extract < T , object > ;
97
97
98
98
/** @ignore */
99
- type ContainObject < T > = OnlyObject < T > extends object
100
- ? OnlyObject < T > extends never
101
- ? false
102
- : true
103
- : false ;
99
+ type ContainObject < T > =
100
+ OnlyObject < T > extends object
101
+ ? OnlyObject < T > extends never
102
+ ? false
103
+ : true
104
+ : false ;
104
105
105
106
/**
106
107
* @ignore
107
108
*
108
109
* Used to convert deeply all immutable types to a plain TS type.
109
110
* Using `unknown` on object instead of recursive call as we have a circular reference issue
110
111
*/
111
- export type DeepCopy < T > = T extends Record < infer R >
112
- ? // convert Record to DeepCopy plain JS object
113
- {
114
- [ key in keyof R ] : ContainObject < R [ key ] > extends true ? unknown : R [ key ] ;
115
- }
116
- : T extends MapOf < infer R >
117
- ? // convert MapOf to DeepCopy plain JS object
118
- {
119
- [ key in keyof R ] : ContainObject < R [ key ] > extends true ? unknown : R [ key ] ;
120
- }
121
- : T extends Collection . Keyed < infer KeyedKey , infer V >
122
- ? // convert KeyedCollection to DeepCopy plain JS object
123
- {
124
- [ key in KeyedKey extends string | number | symbol
125
- ? KeyedKey
126
- : string ] : V extends object ? unknown : V ;
127
- }
128
- : // convert IndexedCollection or Immutable.Set to DeepCopy plain JS array
129
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
130
- T extends Collection < infer _ , infer V >
131
- ? Array < DeepCopy < V > >
132
- : T extends string | number // Iterable scalar types : should be kept as is
133
- ? T
134
- : T extends Iterable < infer V > // Iterable are converted to plain JS array
135
- ? Array < DeepCopy < V > >
136
- : T extends object // plain JS object are converted deeply
137
- ? {
138
- [ ObjectKey in keyof T ] : ContainObject < T [ ObjectKey ] > extends true
139
- ? unknown
140
- : T [ ObjectKey ] ;
141
- }
142
- : // other case : should be kept as is
143
- T ;
112
+ export type DeepCopy < T > =
113
+ T extends Record < infer R >
114
+ ? // convert Record to DeepCopy plain JS object
115
+ {
116
+ [ key in keyof R ] : ContainObject < R [ key ] > extends true
117
+ ? unknown
118
+ : R [ key ] ;
119
+ }
120
+ : T extends MapOf < infer R >
121
+ ? // convert MapOf to DeepCopy plain JS object
122
+ {
123
+ [ key in keyof R ] : ContainObject < R [ key ] > extends true
124
+ ? unknown
125
+ : R [ key ] ;
126
+ }
127
+ : T extends Collection . Keyed < infer KeyedKey , infer V >
128
+ ? // convert KeyedCollection to DeepCopy plain JS object
129
+ {
130
+ [ key in KeyedKey extends string | number | symbol
131
+ ? KeyedKey
132
+ : string ] : V extends object ? unknown : V ;
133
+ }
134
+ : // convert IndexedCollection or Immutable.Set to DeepCopy plain JS array
135
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
136
+ T extends Collection < infer _ , infer V >
137
+ ? Array < DeepCopy < V > >
138
+ : T extends string | number // Iterable scalar types : should be kept as is
139
+ ? T
140
+ : T extends Iterable < infer V > // Iterable are converted to plain JS array
141
+ ? Array < DeepCopy < V > >
142
+ : T extends object // plain JS object are converted deeply
143
+ ? {
144
+ [ ObjectKey in keyof T ] : ContainObject <
145
+ T [ ObjectKey ]
146
+ > extends true
147
+ ? unknown
148
+ : T [ ObjectKey ] ;
149
+ }
150
+ : // other case : should be kept as is
151
+ T ;
144
152
145
153
/**
146
154
* Describes which item in a pair should be placed first when sorting
@@ -895,7 +903,7 @@ declare namespace Immutable {
895
903
/** @ignore */
896
904
type Head < T extends ReadonlyArray < unknown > > = T extends [
897
905
infer H ,
898
- ...Array < unknown >
906
+ ...Array < unknown > ,
899
907
]
900
908
? H
901
909
: never ;
@@ -909,7 +917,7 @@ declare namespace Immutable {
909
917
type RetrievePathReducer <
910
918
T ,
911
919
C ,
912
- L extends ReadonlyArray < unknown >
920
+ L extends ReadonlyArray < unknown > ,
913
921
> = C extends keyof GetMapType < T >
914
922
? L extends [ ]
915
923
? GetMapType < T > [ C ]
@@ -919,7 +927,7 @@ declare namespace Immutable {
919
927
/** @ignore */
920
928
type RetrievePath <
921
929
R ,
922
- P extends ReadonlyArray < string | number | symbol >
930
+ P extends ReadonlyArray < string | number | symbol > ,
923
931
> = P extends [ ] ? P : RetrievePathReducer < R , Head < P > , Tail < P > > ;
924
932
925
933
interface Map < K , V > extends Collection . Keyed < K , V > {
@@ -5419,10 +5427,10 @@ declare namespace Immutable {
5419
5427
type FromJS < JSValue > = JSValue extends FromJSNoTransform
5420
5428
? JSValue
5421
5429
: JSValue extends Array < unknown >
5422
- ? FromJSArray < JSValue >
5423
- : JSValue extends object
5424
- ? FromJSObject < JSValue >
5425
- : unknown ;
5430
+ ? FromJSArray < JSValue >
5431
+ : JSValue extends object
5432
+ ? FromJSObject < JSValue >
5433
+ : unknown ;
5426
5434
5427
5435
type FromJSNoTransform =
5428
5436
| Collection < unknown , unknown >
@@ -5431,9 +5439,8 @@ declare namespace Immutable {
5431
5439
| null
5432
5440
| undefined ;
5433
5441
5434
- type FromJSArray < JSValue > = JSValue extends Array < infer T >
5435
- ? List < FromJS < T > >
5436
- : never ;
5442
+ type FromJSArray < JSValue > =
5443
+ JSValue extends Array < infer T > ? List < FromJS < T > > : never ;
5437
5444
5438
5445
type FromJSObject < JSValue > = JSValue extends object
5439
5446
? Map < keyof JSValue , FromJS < JSValue [ keyof JSValue ] > >
@@ -5748,7 +5755,7 @@ declare namespace Immutable {
5748
5755
function remove <
5749
5756
TProps extends object ,
5750
5757
C extends Record < TProps > ,
5751
- K extends keyof TProps
5758
+ K extends keyof TProps ,
5752
5759
> ( collection : C , key : K ) : C ;
5753
5760
function remove < C extends Array < unknown > > ( collection : C , key : number ) : C ;
5754
5761
function remove < C , K extends keyof C > ( collection : C , key : K ) : C ;
@@ -5784,7 +5791,7 @@ declare namespace Immutable {
5784
5791
function set <
5785
5792
TProps extends object ,
5786
5793
C extends Record < TProps > ,
5787
- K extends keyof TProps
5794
+ K extends keyof TProps ,
5788
5795
> ( record : C , key : K , value : TProps [ K ] ) : C ;
5789
5796
function set < V , C extends Array < V > > ( collection : C , key : number , value : V ) : C ;
5790
5797
function set < C , K extends keyof C > ( object : C , key : K , value : C [ K ] ) : C ;
@@ -5827,13 +5834,13 @@ declare namespace Immutable {
5827
5834
function update <
5828
5835
TProps extends object ,
5829
5836
C extends Record < TProps > ,
5830
- K extends keyof TProps
5837
+ K extends keyof TProps ,
5831
5838
> ( record : C , key : K , updater : ( value : TProps [ K ] ) => TProps [ K ] ) : C ;
5832
5839
function update <
5833
5840
TProps extends object ,
5834
5841
C extends Record < TProps > ,
5835
5842
K extends keyof TProps ,
5836
- NSV
5843
+ NSV ,
5837
5844
> (
5838
5845
record : C ,
5839
5846
key : K ,
0 commit comments