1- const validAuthModes = [ 'firebase' , 'passcode' , 'none' ] as const ;
2- type AuthMode = ( typeof validAuthModes ) [ number ] ;
3-
4- const requiredEnvVars = {
5- VITE_SET_AUTH : validAuthModes ,
6- } satisfies Record < string , readonly string [ ] > ;
7-
81// it uses functions for easier mocking in jest tests
92const clientEnv = {
103 FIREBASE_API_KEY : ( ) => import . meta. env . VITE_FIREBASE_API_KEY ,
@@ -16,7 +9,7 @@ const clientEnv = {
169
1710 LIVEKIT_URL : ( ) => import . meta. env . VITE_LIVEKIT_URL ,
1811
19- SET_AUTH : ( ) => import . meta. env . VITE_SET_AUTH as AuthMode ,
12+ SET_AUTH : ( ) => import . meta. env . VITE_SET_AUTH ,
2013 DISABLE_TWILIO_CONVERSATIONS : ( ) => import . meta. env . VITE_DISABLE_TWILIO_CONVERSATIONS ,
2114 TOKEN_ENDPOINT : ( ) => import . meta. env . VITE_TOKEN_ENDPOINT ,
2215 ROOM_TYPE : ( ) => import . meta. env . VITE_ROOM_TYPE ,
@@ -27,18 +20,4 @@ const clientEnv = {
2720 IS_DEV_MODE : ( ) => import . meta. env . DEV ,
2821} ;
2922
30- function validateEnvVars ( rules : Record < string , readonly string [ ] > ) {
31- for ( const [ key , allowed ] of Object . entries ( rules ) ) {
32- const val = import . meta. env [ key ] ;
33- if ( ! val ) {
34- throw new Error ( `Missing required environment variable: ${ key } ` ) ;
35- }
36- if ( ! allowed . includes ( val ) ) {
37- throw new Error ( `Invalid value for ${ key } : "${ val } ". Expected one of: ${ allowed . join ( ', ' ) } ` ) ;
38- }
39- }
40- }
41-
42- validateEnvVars ( requiredEnvVars ) ;
43-
4423export { clientEnv } ;
0 commit comments