1- export type EnvironmentConfig = ReturnType < typeof environmentConfig > ;
1+ type EnvironmentVariables = {
2+ public : Map < string , string > ;
3+ private : Map < string , string > ;
4+ } ;
5+
6+ export type EnvironmentConfig = {
7+ get id ( ) : string ;
8+ setId ( newId : string ) : EnvironmentConfig ;
9+ setEnvVariable ( type : keyof EnvironmentVariables , name : string , value : any ) : EnvironmentConfig ;
10+ removeEnvVariable ( type : keyof EnvironmentVariables , name : string ) : EnvironmentConfig ;
11+ get publicVariables ( ) : EnvironmentVariables [ 'public' ] ;
12+ get privateVariables ( ) : EnvironmentVariables [ 'private' ] ;
13+ toJson ( ) : { public : Record < string , string > ; private : Record < string , string > } ;
14+ fromJson ( json : ReturnType < EnvironmentConfig [ 'toJson' ] > ) : EnvironmentConfig ;
15+ clone ( ) : EnvironmentConfig ;
16+ } ;
217
318export const environmentConfig = ( ) => {
419 let id = '' ;
5- const envVars = { public : new Map < string , string > ( ) , private : new Map < string , string > ( ) } ;
20+ const envVars : EnvironmentVariables = {
21+ public : new Map < string , string > ( ) ,
22+ private : new Map < string , string > ( ) ,
23+ } ;
624
7- const self = {
25+ const self : EnvironmentConfig = {
826 setId : ( newId : string ) => {
927 id = newId ;
1028 return self ;
1129 } ,
1230 get id ( ) {
1331 return id ;
1432 } ,
15- setEnvVariable : ( type : keyof typeof envVars , name : string , value : string ) => {
33+ setEnvVariable : ( type , name , value ) => {
1634 envVars [ type ] . set ( name , value ) ;
1735 return self ;
1836 } ,
37+ removeEnvVariable : ( type , name ) => {
38+ envVars [ type ] . delete ( name ) ;
39+ return self ;
40+ } ,
1941 get publicVariables ( ) {
2042 return envVars . public ;
2143 } ,
@@ -28,7 +50,7 @@ export const environmentConfig = () => {
2850 private : Object . fromEntries ( envVars . private ) ,
2951 } ;
3052 } ,
31- fromJson : ( json : ReturnType < typeof self . toJson > ) => {
53+ fromJson : json => {
3254 Object . entries ( json . public ) . forEach ( ( [ k , v ] ) => self . setEnvVariable ( 'public' , k , v ) ) ;
3355 Object . entries ( json . private ) . forEach ( ( [ k , v ] ) => self . setEnvVariable ( 'private' , k , v ) ) ;
3456 return self ;
0 commit comments