This commit is contained in:
2023-06-12 20:01:07 +02:00
parent edc42e3750
commit 59b4eb582e
43 changed files with 1799 additions and 245 deletions

View File

@@ -0,0 +1,54 @@
//базовые настройки env переменных
//по умолчанию переменные беруться сначала из ENV илм смотрят всегда на staging
//для подстановки локальных значений переменных использовать исключительно локальные env файлы env.development.local
//при необзодимости добавляем сюда нужные приложению переменные
import * as dotenv from 'dotenv';
dotenv.config();
export type EnvironmentVariable = { [key: string]: string | undefined };
export type EnvironmentsTypes =
| 'DEVELOPMENT'
| 'STAGING'
| 'PRODUCTION'
| 'TEST';
export class EnvironmentSettings {
constructor(private env: EnvironmentsTypes) {}
getEnv() {
return this.env;
}
isProduction() {
return this.env === 'PRODUCTION';
}
isStaging() {
return this.env === 'STAGING';
}
isDevelopment() {
return this.env === 'DEVELOPMENT';
}
isTesting() {
return this.env === 'TEST';
}
}
class AuthSettings {
public readonly BASE_AUTH_HEADER: string;
public readonly ACCESS_JWT_SECRET_KEY: string;
public readonly REFRESH_JWT_SECRET_KEY: string;
constructor(private envVariables: EnvironmentVariable) {
this.BASE_AUTH_HEADER =
envVariables.BASE_AUTH_HEADER || 'Basic YWRtaW46cXdlcnR5';
this.ACCESS_JWT_SECRET_KEY =
envVariables.ACCESS_JWT_SECRET_KEY || 'accessJwtSecret';
this.REFRESH_JWT_SECRET_KEY =
envVariables.REFRESH_JWT_SECRET_KEY || 'refreshJwtSecret';
}
}
export class AppSettings {
constructor(public env: EnvironmentSettings, public auth: AuthSettings) {}
}
const env = new EnvironmentSettings(
(process.env.NODE_ENV || 'DEVELOPMENT') as EnvironmentsTypes,
);
const auth = new AuthSettings(process.env);
export const appSettings = new AppSettings(env, auth);