@@ -24,34 +24,45 @@ export const defaultEnableGatewayProviders = true
24
24
25
25
const configDb = new GenericIDB < ConfigDb > ( 'helia-sw' , 'config' )
26
26
27
- export async function resetConfig ( ) : Promise < void > {
28
- await configDb . open ( )
29
- await configDb . put ( 'gateways' , defaultGateways )
30
- await configDb . put ( 'routers' , defaultRouters )
31
- await configDb . put ( 'dnsJsonResolvers' , defaultDnsJsonResolvers )
32
- await configDb . put ( 'enableWss' , defaultEnableWss )
33
- await configDb . put ( 'enableWebTransport' , defaultEnableWebTransport )
34
- await configDb . put ( 'enableRecursiveGateways' , defaultEnableRecursiveGateways )
35
- await configDb . put ( 'enableGatewayProviders' , defaultEnableGatewayProviders )
36
- await configDb . put ( 'debug' , '' )
37
- configDb . close ( )
27
+ export async function resetConfig ( logger : ComponentLogger ) : Promise < void > {
28
+ const log = logger . forComponent ( 'reset-config' )
29
+ try {
30
+ await configDb . open ( )
31
+ await configDb . put ( 'gateways' , defaultGateways )
32
+ await configDb . put ( 'routers' , defaultRouters )
33
+ await configDb . put ( 'dnsJsonResolvers' , defaultDnsJsonResolvers )
34
+ await configDb . put ( 'enableWss' , defaultEnableWss )
35
+ await configDb . put ( 'enableWebTransport' , defaultEnableWebTransport )
36
+ await configDb . put ( 'enableRecursiveGateways' , defaultEnableRecursiveGateways )
37
+ await configDb . put ( 'enableGatewayProviders' , defaultEnableGatewayProviders )
38
+ await configDb . put ( 'debug' , '' )
39
+ } catch ( err ) {
40
+ log ( 'error resetting config in db' , err )
41
+ } finally {
42
+ configDb . close ( )
43
+ }
38
44
}
39
45
40
46
export async function setConfig ( config : ConfigDb , logger : ComponentLogger ) : Promise < void > {
41
47
const log = logger . forComponent ( 'set-config' )
42
48
enable ( config . debug ?? '' ) // set debug level first.
43
- log ( 'config-debug: setting config %O for domain %s' , config , window . location . origin )
44
-
45
- await configDb . open ( )
46
- await configDb . put ( 'gateways' , config . gateways )
47
- await configDb . put ( 'routers' , config . routers )
48
- await configDb . put ( 'dnsJsonResolvers' , config . dnsJsonResolvers )
49
- await configDb . put ( 'enableRecursiveGateways' , config . enableRecursiveGateways )
50
- await configDb . put ( 'enableWss' , config . enableWss )
51
- await configDb . put ( 'enableWebTransport' , config . enableWebTransport )
52
- await configDb . put ( 'enableGatewayProviders' , config . enableGatewayProviders )
53
- await configDb . put ( 'debug' , config . debug ?? '' )
54
- configDb . close ( )
49
+ await validateConfig ( config , logger )
50
+ try {
51
+ log ( 'config-debug: setting config %O for domain %s' , config , window . location . origin )
52
+ await configDb . open ( )
53
+ await configDb . put ( 'gateways' , config . gateways )
54
+ await configDb . put ( 'routers' , config . routers )
55
+ await configDb . put ( 'dnsJsonResolvers' , config . dnsJsonResolvers )
56
+ await configDb . put ( 'enableRecursiveGateways' , config . enableRecursiveGateways )
57
+ await configDb . put ( 'enableWss' , config . enableWss )
58
+ await configDb . put ( 'enableWebTransport' , config . enableWebTransport )
59
+ await configDb . put ( 'enableGatewayProviders' , config . enableGatewayProviders )
60
+ await configDb . put ( 'debug' , config . debug ?? '' )
61
+ } catch ( err ) {
62
+ log ( 'error setting config in db' , err )
63
+ } finally {
64
+ configDb . close ( )
65
+ }
55
66
}
56
67
57
68
export async function getConfig ( logger : ComponentLogger ) : Promise < ConfigDb > {
@@ -81,10 +92,11 @@ export async function getConfig (logger: ComponentLogger): Promise<ConfigDb> {
81
92
enableGatewayProviders = await configDb . get ( 'enableGatewayProviders' ) ?? defaultEnableGatewayProviders
82
93
83
94
debug = await configDb . get ( 'debug' ) ?? ''
84
- configDb . close ( )
85
95
enable ( debug )
86
96
} catch ( err ) {
87
97
log ( 'error loading config from db' , err )
98
+ } finally {
99
+ configDb . close ( )
88
100
}
89
101
90
102
if ( gateways == null || gateways . length === 0 ) {
@@ -110,3 +122,12 @@ export async function getConfig (logger: ComponentLogger): Promise<ConfigDb> {
110
122
debug
111
123
}
112
124
}
125
+
126
+ export async function validateConfig ( config : ConfigDb , logger : ComponentLogger ) : Promise < void > {
127
+ const log = logger . forComponent ( 'validate-config' )
128
+
129
+ if ( ! config . enableRecursiveGateways && ! config . enableGatewayProviders && ! config . enableWss && ! config . enableWebTransport ) {
130
+ log . error ( 'Config is invalid. At least one of the following must be enabled: recursive gateways, gateway providers, wss, or webtransport.' )
131
+ throw new Error ( 'Config is invalid. At least one of the following must be enabled: recursive gateways, gateway providers, wss, or webtransport.' )
132
+ }
133
+ }
0 commit comments