@@ -14,7 +14,7 @@ import { compareMap, decodeU8a, sortMap, typeToConstructor } from '../utils';
1414const l = logger ( 'Map' ) ;
1515
1616/** @internal */
17- function decodeMapFromU8a < K extends Codec , V extends Codec > ( registry : Registry , KeyClass : CodecClass < K > , ValClass : CodecClass < V > , u8a : Uint8Array ) : [ Map < K , V > , number ] {
17+ function decodeMapFromU8a < K extends Codec , V extends Codec > ( registry : Registry , KeyClass : CodecClass < K > , ValClass : CodecClass < V > , u8a : Uint8Array ) : [ CodecClass < K > , CodecClass < V > , Map < K , V > , number ] {
1818 const output = new Map < K , V > ( ) ;
1919 const [ offset , length ] = compactFromU8a ( u8a ) ;
2020 const count = length . toNumber ( ) ;
@@ -30,11 +30,11 @@ function decodeMapFromU8a<K extends Codec, V extends Codec> (registry: Registry,
3030 output . set ( values [ i ] as K , values [ i + 1 ] as V ) ;
3131 }
3232
33- return [ output , offset + decodedLength ] ;
33+ return [ KeyClass , ValClass , output , offset + decodedLength ] ;
3434}
3535
3636/** @internal */
37- function decodeMapFromMap < K extends Codec , V extends Codec > ( registry : Registry , KeyClass : CodecClass < K > , ValClass : CodecClass < V > , value : Map < any , any > ) : [ Map < K , V > , number ] {
37+ function decodeMapFromMap < K extends Codec , V extends Codec > ( registry : Registry , KeyClass : CodecClass < K > , ValClass : CodecClass < V > , value : Map < any , any > ) : [ CodecClass < K > , CodecClass < V > , Map < K , V > , number ] {
3838 const output = new Map < K , V > ( ) ;
3939
4040 for ( const [ key , val ] of value . entries ( ) ) {
@@ -58,7 +58,7 @@ function decodeMapFromMap<K extends Codec, V extends Codec> (registry: Registry,
5858 }
5959 }
6060
61- return [ output , 0 ] ;
61+ return [ KeyClass , ValClass , output , 0 ] ;
6262}
6363
6464/**
@@ -76,12 +76,12 @@ function decodeMapFromMap<K extends Codec, V extends Codec> (registry: Registry,
7676 * @param jsonMap
7777 * @internal
7878 */
79- function decodeMap < K extends Codec , V extends Codec > ( registry : Registry , keyType : CodecClass < K > | string , valType : CodecClass < V > | string , value ?: Uint8Array | string | Map < any , any > ) : [ Map < K , V > , number ] {
79+ function decodeMap < K extends Codec , V extends Codec > ( registry : Registry , keyType : CodecClass < K > | string , valType : CodecClass < V > | string , value ?: Uint8Array | string | Map < any , any > ) : [ CodecClass < K > , CodecClass < V > , Map < K , V > , number ] {
8080 const KeyClass = typeToConstructor ( registry , keyType ) ;
8181 const ValClass = typeToConstructor ( registry , valType ) ;
8282
8383 if ( ! value ) {
84- return [ new Map < K , V > ( ) , 0 ] ;
84+ return [ KeyClass , ValClass , new Map < K , V > ( ) , 0 ] ;
8585 } else if ( isU8a ( value ) || isHex ( value ) ) {
8686 return decodeMapFromU8a < K , V > ( registry , KeyClass , ValClass , u8aToU8a ( value ) ) ;
8787 } else if ( value instanceof Map ) {
@@ -107,14 +107,14 @@ export class CodecMap<K extends Codec = Codec, V extends Codec = Codec> extends
107107 readonly #type: string ;
108108
109109 constructor ( registry : Registry , keyType : CodecClass < K > | string , valType : CodecClass < V > | string , rawValue : Uint8Array | string | Map < any , any > | undefined , type : 'BTreeMap' | 'HashMap' = 'HashMap' ) {
110- const [ decoded , decodedLength ] = decodeMap ( registry , keyType , valType , rawValue ) ;
110+ const [ KeyClass , ValClass , decoded , decodedLength ] = decodeMap ( registry , keyType , valType , rawValue ) ;
111111
112112 super ( type === 'BTreeMap' ? sortMap ( decoded ) : decoded ) ;
113113
114114 this . registry = registry ;
115115 this . initialU8aLength = decodedLength ;
116- this . #KeyClass = typeToConstructor ( registry , keyType ) ;
117- this . #ValClass = typeToConstructor ( registry , valType ) ;
116+ this . #KeyClass = KeyClass ;
117+ this . #ValClass = ValClass ;
118118 this . #type = type ;
119119 }
120120
0 commit comments