@@ -59,7 +59,7 @@ export async function setConfig ({ page, config }: { page: Page, config: Partial
59
59
}
60
60
} )
61
61
const db = await openDb ( )
62
- const put = async ( key , value ) : Promise < void > => {
62
+ const put = async ( key : keyof ConfigDb , value ) : Promise < void > => {
63
63
const transaction = db . transaction ( storeName , 'readwrite' )
64
64
const store = transaction . objectStore ( storeName )
65
65
const request = store . put ( value , key )
@@ -88,6 +88,49 @@ export async function setConfig ({ page, config }: { page: Page, config: Partial
88
88
} )
89
89
}
90
90
91
+ export async function getConfig ( { page } : { page : Page } ) : Promise < ConfigDb > {
92
+ const config : ConfigDb = await page . evaluate ( async ( ) => {
93
+ const dbName = 'helia-sw'
94
+ const storeName = 'config'
95
+ const openDb = async ( ) : Promise < IDBDatabase > => new Promise ( ( resolve , reject ) => {
96
+ const request = indexedDB . open ( dbName , 1 )
97
+ request . onerror = ( ) => { reject ( request . error ) }
98
+ request . onsuccess = ( ) => { resolve ( request . result ) }
99
+ request . onupgradeneeded = ( event ) => {
100
+ const db = request . result
101
+ db . createObjectStore ( storeName )
102
+ }
103
+ } )
104
+ const db = await openDb ( )
105
+ const get = async ( key ) : Promise < any > => {
106
+ const transaction = db . transaction ( storeName , 'readonly' )
107
+ const store = transaction . objectStore ( storeName )
108
+ const request = store . get ( key )
109
+ return new Promise ( ( resolve , reject ) => {
110
+ request . onerror = ( ) => { reject ( request . error ) }
111
+ request . onsuccess = ( ) => { resolve ( request . result ) }
112
+ } )
113
+ }
114
+
115
+ const config : ConfigDb = {
116
+ gateways : await get ( 'gateways' ) ,
117
+ routers : await get ( 'routers' ) ,
118
+ dnsJsonResolvers : await get ( 'dnsJsonResolvers' ) ,
119
+ enableWss : await get ( 'enableWss' ) ,
120
+ enableWebTransport : await get ( 'enableWebTransport' ) ,
121
+ enableRecursiveGateways : await get ( 'enableRecursiveGateways' ) ,
122
+ enableGatewayProviders : await get ( 'enableGatewayProviders' ) ,
123
+ debug : await get ( 'debug' )
124
+ }
125
+
126
+ db . close ( )
127
+
128
+ return config
129
+ } , { } )
130
+
131
+ return config
132
+ }
133
+
91
134
export async function setSubdomainConfig ( { page, config } : { page : Page , config : Partial < ConfigDb > } ) : Promise < void > {
92
135
await waitForServiceWorker ( page )
93
136
0 commit comments