feat: add flexible ANIWATCH_API_DEPLOYMENT_ENV env and deployment envs

This commit is contained in:
Ritesh Ghosh
2025-05-25 22:52:35 +05:30
parent ce03d5939d
commit bd597a6fd7
+21 -8
View File
@@ -1,8 +1,23 @@
import { config } from "dotenv"; import { config } from "dotenv";
import { cleanEnv, num, str, bool, url, port } from "envalid"; import { cleanEnv, num, str, url, port } from "envalid";
config(); config();
export enum DeploymentEnv {
NODEJS = "nodejs",
DOCKER = "docker",
VERCEL = "vercel",
CLOUDFLARE_WORKERS = "cloudflare-workers",
RENDER = "render",
}
export const API_DEPLOYMENT_ENVIRONMENTS = Object.values(DeploymentEnv);
export const SERVERLESS_ENVIRONMENTS = [
DeploymentEnv.VERCEL,
DeploymentEnv.CLOUDFLARE_WORKERS,
DeploymentEnv.RENDER,
];
//
export const env = cleanEnv(process.env, { export const env = cleanEnv(process.env, {
ANIWATCH_API_PORT: port({ ANIWATCH_API_PORT: port({
default: 4000, default: 4000,
@@ -28,9 +43,11 @@ export const env = cleanEnv(process.env, {
desc: "Allowed origins, separated by commas and no spaces in between (CSV).", desc: "Allowed origins, separated by commas and no spaces in between (CSV).",
}), }),
ANIWATCH_API_VERCEL_DEPLOYMENT: bool({ ANIWATCH_API_DEPLOYMENT_ENV: str({
default: false, choices: API_DEPLOYMENT_ENVIRONMENTS,
desc: "Required for distinguishing Vercel deployment from other ones; set it to true", default: DeploymentEnv.NODEJS,
example: DeploymentEnv.VERCEL,
desc: "The deployment environment of the Aniwatch API. It must be set incase of serverless deployments, can lead to issues if not set.",
}), }),
ANIWATCH_API_HOSTNAME: str({ ANIWATCH_API_HOSTNAME: str({
@@ -72,7 +89,3 @@ function isDevEnv(): boolean {
process.env.NODE_ENV === "test" process.env.NODE_ENV === "test"
); );
} }
export function isEnvUndefined(envVar?: string): boolean {
return typeof envVar === "undefined" || envVar === "undefined";
}