mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2025-12-30 03:03:06 -05:00
refactor(api): provide default env values (#57986)
This commit is contained in:
committed by
GitHub
parent
67a7c3254a
commit
56e520b2e4
@@ -23,13 +23,17 @@ function isAllowedEnv(env: string): env is 'development' | 'production' {
|
||||
return ['development', 'production'].includes(env);
|
||||
}
|
||||
|
||||
const _EMAIL_PROVIDER = process.env.EMAIL_PROVIDER || 'ses';
|
||||
const _FREECODECAMP_NODE_ENV =
|
||||
process.env.FREECODECAMP_NODE_ENV || 'production';
|
||||
|
||||
function isAllowedProvider(provider: string): provider is 'ses' | 'nodemailer' {
|
||||
return ['ses', 'nodemailer'].includes(provider);
|
||||
}
|
||||
|
||||
function createTestConnectionURL(url: string, dbId?: string) {
|
||||
assert.notEqual(
|
||||
process.env.FREECODECAMP_NODE_ENV,
|
||||
_FREECODECAMP_NODE_ENV,
|
||||
'production',
|
||||
"The database URL can't be modified in production."
|
||||
);
|
||||
@@ -42,10 +46,8 @@ If so, ensure that the environment variable JEST_WORKER_ID is set.`
|
||||
}
|
||||
|
||||
assert.ok(process.env.HOME_LOCATION);
|
||||
assert.ok(process.env.FREECODECAMP_NODE_ENV);
|
||||
assert.ok(isAllowedEnv(process.env.FREECODECAMP_NODE_ENV));
|
||||
assert.ok(process.env.EMAIL_PROVIDER);
|
||||
assert.ok(isAllowedProvider(process.env.EMAIL_PROVIDER));
|
||||
assert.ok(isAllowedEnv(_FREECODECAMP_NODE_ENV));
|
||||
assert.ok(isAllowedProvider(_EMAIL_PROVIDER));
|
||||
assert.ok(process.env.AUTH0_CLIENT_ID);
|
||||
assert.ok(process.env.AUTH0_CLIENT_SECRET);
|
||||
assert.ok(process.env.AUTH0_DOMAIN);
|
||||
@@ -69,11 +71,11 @@ function isLogLevel(level: string): level is LogLevel {
|
||||
return LOG_LEVELS.includes(level);
|
||||
}
|
||||
|
||||
const LOG_LEVEL = process.env.FCC_API_LOG_LEVEL || 'info';
|
||||
const _FCC_API_LOG_LEVEL = process.env.FCC_API_LOG_LEVEL || 'info';
|
||||
|
||||
assert.ok(
|
||||
isLogLevel(LOG_LEVEL),
|
||||
`FCC_API_LOG_LEVEL must be one of ${LOG_LEVELS.join(', ')}. Found ${LOG_LEVEL}`
|
||||
isLogLevel(_FCC_API_LOG_LEVEL),
|
||||
`FCC_API_LOG_LEVEL must be one of ${LOG_LEVELS.join(', ')}. Found ${_FCC_API_LOG_LEVEL}`
|
||||
);
|
||||
|
||||
if (process.env.FREECODECAMP_NODE_ENV !== 'development') {
|
||||
@@ -84,11 +86,8 @@ if (process.env.FREECODECAMP_NODE_ENV !== 'development') {
|
||||
'ses_secret_from_aws',
|
||||
'The SES secret should be changed from the default value.'
|
||||
);
|
||||
assert.ok(process.env.SES_REGION);
|
||||
assert.ok(process.env.COOKIE_DOMAIN);
|
||||
assert.notEqual(process.env.COOKIE_SECRET, 'a_cookie_secret');
|
||||
assert.ok(process.env.PORT);
|
||||
assert.ok(process.env.HOST);
|
||||
assert.ok(process.env.SENTRY_DSN);
|
||||
assert.ok(process.env.SENTRY_ENVIRONMENT);
|
||||
// The following values can exist in development, but production-like
|
||||
@@ -130,6 +129,8 @@ if (process.env.FREECODECAMP_NODE_ENV !== 'development') {
|
||||
}
|
||||
|
||||
export const HOME_LOCATION = process.env.HOME_LOCATION;
|
||||
// Mailhog is used in development and test environments, hence the localhost
|
||||
// default.
|
||||
export const MAILHOG_HOST = process.env.MAILHOG_HOST ?? 'localhost';
|
||||
export const MONGOHQ_URL =
|
||||
process.env.NODE_ENV === 'test'
|
||||
@@ -139,24 +140,27 @@ export const MONGOHQ_URL =
|
||||
)
|
||||
: process.env.MONGOHQ_URL;
|
||||
|
||||
export const FREECODECAMP_NODE_ENV = process.env.FREECODECAMP_NODE_ENV;
|
||||
export const AUTH0_CLIENT_ID = process.env.AUTH0_CLIENT_ID;
|
||||
export const AUTH0_DOMAIN = process.env.AUTH0_DOMAIN;
|
||||
export const AUTH0_CLIENT_SECRET = process.env.AUTH0_CLIENT_SECRET;
|
||||
export const EMAIL_PROVIDER = _EMAIL_PROVIDER;
|
||||
export const PORT = process.env.PORT || '3000';
|
||||
export const HOST = process.env.HOST || 'localhost';
|
||||
// HOST defaults to 0.0.0.0 because the server is intended to be used in a
|
||||
// container.
|
||||
export const HOST = process.env.HOST || '0.0.0.0';
|
||||
export const API_LOCATION = process.env.API_LOCATION;
|
||||
export const FCC_ENABLE_SWAGGER_UI =
|
||||
process.env.FCC_ENABLE_SWAGGER_UI === 'true';
|
||||
export const FCC_ENABLE_DEV_LOGIN_MODE =
|
||||
process.env.FCC_ENABLE_DEV_LOGIN_MODE === 'true';
|
||||
export const FCC_API_LOG_LEVEL = _FCC_API_LOG_LEVEL;
|
||||
export const FCC_ENABLE_SHADOW_CAPTURE =
|
||||
process.env.FCC_ENABLE_SHADOW_CAPTURE === 'true';
|
||||
export const FCC_ENABLE_EXAM_ENVIRONMENT =
|
||||
process.env.FCC_ENABLE_EXAM_ENVIRONMENT === 'true';
|
||||
export const FCC_ENABLE_SENTRY_ROUTES =
|
||||
process.env.FCC_ENABLE_SENTRY_ROUTES === 'true';
|
||||
export const FCC_API_LOG_LEVEL = LOG_LEVEL;
|
||||
export const FREECODECAMP_NODE_ENV = _FREECODECAMP_NODE_ENV;
|
||||
export const SENTRY_DSN =
|
||||
process.env.SENTRY_DSN === 'dsn_from_sentry_dashboard'
|
||||
? ''
|
||||
@@ -170,8 +174,7 @@ export const COOKIE_SECRET = process.env.COOKIE_SECRET;
|
||||
export const JWT_SECRET = process.env.JWT_SECRET;
|
||||
export const SES_ID = process.env.SES_ID;
|
||||
export const SES_SECRET = process.env.SES_SECRET;
|
||||
export const SES_REGION = process.env.SES_REGION;
|
||||
export const EMAIL_PROVIDER = process.env.EMAIL_PROVIDER;
|
||||
export const SES_REGION = process.env.SES_REGION || 'us-east-1';
|
||||
export const SHOW_UPCOMING_CHANGES =
|
||||
process.env.SHOW_UPCOMING_CHANGES === 'true';
|
||||
export const STRIPE_SECRET_KEY = process.env.STRIPE_SECRET_KEY;
|
||||
|
||||
Reference in New Issue
Block a user