@@ -338,7 +338,7 @@ type GenericMappingFunc<M extends Mapped, D extends number> =
338
338
type SubMap < M extends Mapped , D extends number , K extends PropertyKey > =
339
339
K extends keyof M
340
340
? M [ K ] extends Mapped
341
- ? ConstMap < M [ K ] , Depth [ D ] >
341
+ ? ConstMapImpl < M [ K ] , Depth [ D ] >
342
342
: never
343
343
: never ;
344
344
@@ -365,14 +365,14 @@ type HasGetFuncs<M extends Mapped, D extends number> =
365
365
? { readonly has : ( ...args : P ) => boolean , readonly get : ( ...args : P ) => R | undefined }
366
366
: never ;
367
367
368
- type ConstMap < M extends Mapped , D extends number > =
368
+ type ConstMapImpl < M extends Mapped , D extends number > =
369
369
D extends 1
370
370
? GenericMappingFunc < M , D > & HasGetFuncs < M , D >
371
371
: GenericMappingFunc < M , D > & HasGetFuncs < M , D > & SubMapFunc < M , D > ;
372
372
373
- type ToConstMap < M extends MappingEntries , S extends ShapeLike | undefined = undefined > =
373
+ type ConstMap < M extends MappingEntries , S extends ShapeLike | undefined = undefined > =
374
374
ToMappingAndDepth < M , S > extends [ infer TM extends Mapped , infer D extends Depth [ number ] ]
375
- ? ConstMap < TM , D >
375
+ ? ConstMapImpl < TM , D >
376
376
: never ;
377
377
378
378
const isRecursiveTuple = ( arr : RoArray ) =>
@@ -383,7 +383,7 @@ export const cartesianRightRecursive =
383
383
arr . length === 0
384
384
? [ ]
385
385
: Array . isArray ( arr [ 0 ] )
386
- ? ( arr as MappingEntries ) . map ( ( [ key , val ] ) =>
386
+ ? ( arr as MappingEntries ) . map ( ( [ key , val ] : readonly [ MappableKey , unknown ] ) =>
387
387
Array . isArray ( val )
388
388
? ( isRecursiveTuple ( val ) ? cartesianRightRecursive ( val as unknown as RoTuple ) : val )
389
389
. map ( ele => [ key , ele ] . flat ( ) )
@@ -484,18 +484,20 @@ const toMapping = <
484
484
export function constMap <
485
485
const M extends MappingEntries ,
486
486
const S extends ShapeLike | undefined = undefined ,
487
- > ( mappingEntries : M , shape ?: S ) : ToConstMap < M , S > {
488
- const mapping = toMapping ( mappingEntries , shape ) ;
489
- const genericMappingFunc = ( ( ...args : MappableKey [ ] ) =>
490
- args . reduce ( ( subMapping : any , key ) =>
491
- subMapping ? subMapping [ key . toString ( ) ] ?? undefined : undefined ,
492
- mapping
493
- ) ) ;
494
- return Object . assign ( genericMappingFunc , {
495
- has : ( ...args : RoArray < MappableKey > ) => genericMappingFunc ( ...args ) !== undefined ,
496
- get : ( ...args : RoArray < MappableKey > ) => genericMappingFunc ( ...args ) ,
497
- subMap : ( key : MappableKey ) => ( mapping as any ) [ key . toString ( ) ] ,
498
- } ) as unknown as ToConstMap < M , S > ;
487
+ > ( mappingEntries : M , shape ?: S ) : ConstMap < M , S > {
488
+ const toConstMap = ( mapping : Mapped ) : ConstMap < M , S > => {
489
+ const genericMappingFunc = ( ( ...args : MappableKey [ ] ) =>
490
+ args . reduce ( ( subMapping : any , key ) =>
491
+ subMapping ? subMapping [ key . toString ( ) ] ?? undefined : undefined ,
492
+ mapping
493
+ ) ) ;
494
+ return Object . assign ( genericMappingFunc , {
495
+ has : ( ...args : RoArray < MappableKey > ) => genericMappingFunc ( ...args ) !== undefined ,
496
+ get : ( ...args : RoArray < MappableKey > ) => genericMappingFunc ( ...args ) ,
497
+ subMap : ( key : MappableKey ) => toConstMap ( ( mapping as any ) [ key . toString ( ) ] ) ,
498
+ } ) as unknown as ConstMap < M , S > ;
499
+ } ;
500
+ return toConstMap ( toMapping ( mappingEntries , shape ) ) ;
499
501
}
500
502
501
503
//--- find a bunch of "tests" below
0 commit comments