2021-04-18 19:06:54 +02:00
|
|
|
import { Injectable } from '@nestjs/common';
|
2021-05-22 10:04:56 +02:00
|
|
|
import { DataSource } from '@prisma/client';
|
2021-06-14 16:09:40 +02:00
|
|
|
import { bool, cleanEnv, host, json, num, port, str } from 'envalid';
|
2021-04-18 19:06:54 +02:00
|
|
|
|
|
|
|
import { Environment } from './interfaces/environment.interface';
|
|
|
|
|
|
|
|
@Injectable()
|
|
|
|
export class ConfigurationService {
|
|
|
|
private readonly environmentConfiguration: Environment;
|
|
|
|
|
|
|
|
public constructor() {
|
|
|
|
this.environmentConfiguration = cleanEnv(process.env, {
|
|
|
|
ACCESS_TOKEN_SALT: str(),
|
|
|
|
ALPHA_VANTAGE_API_KEY: str({ default: '' }),
|
2022-05-24 20:55:55 +02:00
|
|
|
BASE_CURRENCY: str({ default: 'USD' }),
|
2021-04-18 19:06:54 +02:00
|
|
|
CACHE_TTL: num({ default: 1 }),
|
2022-01-08 18:19:25 +01:00
|
|
|
DATA_SOURCE_PRIMARY: str({ default: DataSource.YAHOO }),
|
2022-08-03 21:36:12 +02:00
|
|
|
DATA_SOURCES: json({
|
|
|
|
default: [DataSource.GHOSTFOLIO, DataSource.YAHOO]
|
|
|
|
}),
|
2021-07-31 11:21:32 +02:00
|
|
|
ENABLE_FEATURE_BLOG: bool({ default: false }),
|
2021-04-19 22:25:52 +02:00
|
|
|
ENABLE_FEATURE_CUSTOM_SYMBOLS: bool({ default: false }),
|
2021-04-18 19:06:54 +02:00
|
|
|
ENABLE_FEATURE_FEAR_AND_GREED_INDEX: bool({ default: false }),
|
2021-12-04 08:57:22 +01:00
|
|
|
ENABLE_FEATURE_IMPORT: bool({ default: true }),
|
2021-12-07 20:24:15 +01:00
|
|
|
ENABLE_FEATURE_READ_ONLY_MODE: bool({ default: false }),
|
2021-04-18 19:06:54 +02:00
|
|
|
ENABLE_FEATURE_SOCIAL_LOGIN: bool({ default: false }),
|
2021-06-17 22:59:48 +02:00
|
|
|
ENABLE_FEATURE_STATISTICS: bool({ default: false }),
|
2021-04-24 22:01:38 +02:00
|
|
|
ENABLE_FEATURE_SUBSCRIPTION: bool({ default: false }),
|
2021-12-06 20:51:38 +01:00
|
|
|
ENABLE_FEATURE_SYSTEM_MESSAGE: bool({ default: false }),
|
2022-05-29 15:37:40 +02:00
|
|
|
EOD_HISTORICAL_DATA_API_KEY: str({ default: '' }),
|
2021-04-18 19:06:54 +02:00
|
|
|
GOOGLE_CLIENT_ID: str({ default: 'dummyClientId' }),
|
|
|
|
GOOGLE_SECRET: str({ default: 'dummySecret' }),
|
2022-01-08 18:19:25 +01:00
|
|
|
GOOGLE_SHEETS_ACCOUNT: str({ default: '' }),
|
|
|
|
GOOGLE_SHEETS_ID: str({ default: '' }),
|
|
|
|
GOOGLE_SHEETS_PRIVATE_KEY: str({ default: '' }),
|
2022-06-14 17:43:42 +02:00
|
|
|
HOST: host({ default: '0.0.0.0' }),
|
2021-04-18 19:06:54 +02:00
|
|
|
JWT_SECRET_KEY: str({}),
|
2022-07-17 20:44:28 +02:00
|
|
|
MAX_ACTIVITIES_TO_IMPORT: num({ default: Number.MAX_SAFE_INTEGER }),
|
2021-04-18 19:06:54 +02:00
|
|
|
MAX_ITEM_IN_CACHE: num({ default: 9999 }),
|
|
|
|
PORT: port({ default: 3333 }),
|
|
|
|
RAKUTEN_RAPID_API_KEY: str({ default: '' }),
|
2022-06-12 17:51:26 +02:00
|
|
|
REDIS_HOST: host({ default: 'localhost' }),
|
2022-05-29 07:18:57 -05:00
|
|
|
REDIS_PASSWORD: str({ default: '' }),
|
2022-05-29 14:54:53 +02:00
|
|
|
REDIS_PORT: port({ default: 6379 }),
|
2021-06-14 16:09:40 +02:00
|
|
|
ROOT_URL: str({ default: 'http://localhost:4200' }),
|
2021-07-17 11:04:43 +02:00
|
|
|
STRIPE_PUBLIC_KEY: str({ default: '' }),
|
2021-06-21 20:03:36 +02:00
|
|
|
STRIPE_SECRET_KEY: str({ default: '' }),
|
2022-02-16 21:17:11 +01:00
|
|
|
TWITTER_ACCESS_TOKEN: str({ default: 'dummyAccessToken' }),
|
|
|
|
TWITTER_ACCESS_TOKEN_SECRET: str({ default: 'dummyAccessTokenSecret' }),
|
|
|
|
TWITTER_API_KEY: str({ default: 'dummyApiKey' }),
|
|
|
|
TWITTER_API_SECRET: str({ default: 'dummyApiSecret' }),
|
2021-06-14 16:09:40 +02:00
|
|
|
WEB_AUTH_RP_ID: host({ default: 'localhost' })
|
2021-04-18 19:06:54 +02:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
public get<K extends keyof Environment>(key: K): Environment[K] {
|
|
|
|
return this.environmentConfiguration[key];
|
|
|
|
}
|
|
|
|
}
|