Files
Cloudflare-DDNS-Updater/src/providers/environment.ts
T

40 lines
1013 B
TypeScript
Raw Normal View History

2026-07-27 18:13:14 +07:00
import * as path from "node:path";
2022-03-06 16:40:15 +07:00
import * as dotenv from "dotenv";
import Logger from "../libs/logger";
interface EnvironmentVariables {
NODE_ENV: string | undefined;
}
2022-03-06 16:40:15 +07:00
2026-07-01 12:36:05 +07:00
const requiredENV = ["NODE_ENV"];
2022-03-06 16:40:15 +07:00
class Environment {
2026-07-01 12:36:05 +07:00
public init(): void {
dotenv.config({ path: path.resolve(__dirname, "../../.env") });
2022-03-06 16:40:15 +07:00
for (const param of requiredENV) {
2026-07-01 12:36:05 +07:00
if (this.isUndefinedOrEmpty(process.env[param]))
throw new Error(`.env ${param} is undefined`);
2022-03-06 16:40:15 +07:00
}
2026-07-01 12:36:05 +07:00
// NODE_ENV Checks
if (this.get().NODE_ENV !== "production" && this.get().NODE_ENV !== "development")
2026-07-01 12:36:05 +07:00
throw new Error('.env NODE_ENV must be either "production" or "development"');
2022-03-06 16:40:15 +07:00
2026-07-01 12:36:05 +07:00
Logger.log("info", `Running in ${process.env.NODE_ENV} environment`);
}
2022-03-06 16:40:15 +07:00
public get(): EnvironmentVariables {
2026-07-01 12:36:05 +07:00
return {
NODE_ENV: process.env.NODE_ENV,
2026-07-01 12:36:05 +07:00
};
}
2022-03-06 16:40:15 +07:00
private isUndefinedOrEmpty(value: string | undefined): boolean {
return value === undefined || value === "";
2026-07-01 12:36:05 +07:00
}
2022-03-06 16:40:15 +07:00
}
export default new Environment();