mirror of
https://github.com/ershisan99/flashcards-api.git
synced 2025-12-16 12:33:17 +00:00
47 lines
1.8 KiB
TypeScript
47 lines
1.8 KiB
TypeScript
//базовые настройки 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)
|