1
+ import { type Cache , fromSerializableObject , toSerializableObject } from '@cardano-sdk/util' ;
1
2
import { Storage } from 'webextension-polyfill' ;
2
3
3
4
type StorageLocal = Pick < Storage . StorageArea , 'get' | 'set' | 'remove' > ;
@@ -31,7 +32,7 @@ export const makePersistentCacheStorageFactory =
31
32
fallbackMaxCollectionItemsGuard : number ;
32
33
resourceName : string ;
33
34
quotaInBytes : number ;
34
- } ) => {
35
+ } ) : Cache < T > => {
35
36
const loaded = createVolatileCache < T > ( ) ;
36
37
const metadataKey = makeMetadataKey ( resourceName ) ;
37
38
const getItemKey = ( key : string ) => makeItemKey ( resourceName , key ) ;
@@ -91,7 +92,7 @@ export const makePersistentCacheStorageFactory =
91
92
let value = loaded . get ( itemKey ) ;
92
93
if ( ! value ) {
93
94
const result = await extensionLocalStorage . get ( itemKey ) ;
94
- value = result [ itemKey ] ;
95
+ value = fromSerializableObject ( result [ itemKey ] ) ;
95
96
}
96
97
97
98
if ( value ) {
@@ -103,7 +104,7 @@ export const makePersistentCacheStorageFactory =
103
104
async set ( key : string , value : T ) {
104
105
const itemKey = getItemKey ( key ) ;
105
106
loaded . set ( itemKey , value ) ;
106
- await extensionLocalStorage . set ( { [ itemKey ] : value } ) ;
107
+ await extensionLocalStorage . set ( { [ itemKey ] : toSerializableObject ( value ) } ) ;
107
108
108
109
void ( async ( ) => {
109
110
await updateAccessTime ( itemKey ) ;
0 commit comments