forked from Yara724/api
114 lines
2.7 KiB
TypeScript
114 lines
2.7 KiB
TypeScript
import {
|
|
IsBooleanString,
|
|
IsEnum,
|
|
IsNumber,
|
|
IsNumberString,
|
|
IsOptional,
|
|
IsPositive,
|
|
IsString,
|
|
IsUrl,
|
|
Length,
|
|
Matches,
|
|
Max,
|
|
Min,
|
|
MinLength,
|
|
} from "class-validator";
|
|
import { StringValue } from "ms";
|
|
|
|
export enum Environment {
|
|
Development = "development",
|
|
Production = "production",
|
|
}
|
|
|
|
export class EnvironmentVariables {
|
|
@IsEnum(Environment, {
|
|
message: "NODE_ENV should be development or production",
|
|
})
|
|
NODE_ENV: Environment;
|
|
|
|
// --------------------------------------------------------- //
|
|
|
|
@IsNumber(
|
|
{
|
|
allowNaN: false,
|
|
allowInfinity: false,
|
|
},
|
|
{
|
|
message: "PORT must be a valid number",
|
|
},
|
|
)
|
|
@IsPositive({ message: "PORT must be positive" })
|
|
@Min(0, { message: "PORT must be between 0 and 65535" })
|
|
@Max(65535, { message: "PORT must be between 0 and 65535" })
|
|
PORT: number;
|
|
|
|
// --------------------------------------------------------- //
|
|
|
|
@IsString({ message: "MONGO_URI must be string" })
|
|
@IsUrl(
|
|
{
|
|
require_tld: false,
|
|
protocols: ["mongodb", "mongodb+srv"],
|
|
},
|
|
{
|
|
message: "MONGO_URI must be in the correct format (mongodb://...)",
|
|
},
|
|
)
|
|
MONGO_URI: string;
|
|
|
|
// --------------------------------------------------------- //
|
|
|
|
@IsBooleanString({ message: "MONGO_TLS must be boolean" })
|
|
MONGO_TLS: string;
|
|
|
|
// --------------------------------------------------------- //
|
|
|
|
@IsBooleanString({ message: "MONGO_TLS_ALLOW_INVALID_CERTS must be boolean" })
|
|
MONGO_TLS_ALLOW_INVALID_CERTS: string;
|
|
|
|
// --------------------------------------------------------- //
|
|
|
|
@IsString({ message: "JWT_SECRET must be string" })
|
|
@MinLength(32, {
|
|
message: "JWT_SECRET must be at least 32 characters",
|
|
})
|
|
JWT_SECRET: string;
|
|
|
|
// --------------------------------------------------------- //
|
|
|
|
@Matches(/^\d+(ms|s|m|h|d|w|y)$/, {
|
|
message: "JWT_EXPIRY must be in the correct format",
|
|
})
|
|
JWT_EXPIRY: StringValue;
|
|
|
|
// --------------------------------------------------------- //
|
|
|
|
@IsString({ message: "HASH_PEPPER must be string" })
|
|
@IsOptional()
|
|
HASH_PEPPER?: string;
|
|
|
|
// --------------------------------------------------------- //
|
|
|
|
@IsOptional()
|
|
@IsString({ message: "CLAIM_V2_TOTAL_PAYMENT_CAP_ENABLED must be string" })
|
|
CLAIM_V2_TOTAL_PAYMENT_CAP_ENABLED?: string;
|
|
|
|
// --------------------------------------------------------- //
|
|
|
|
@IsOptional()
|
|
@IsNumber(
|
|
{
|
|
allowNaN: false,
|
|
allowInfinity: false,
|
|
},
|
|
{
|
|
message: "CLAIM_V2_TOTAL_PAYMENT_CAP_TOMAN must be a valid number",
|
|
},
|
|
)
|
|
@IsPositive({
|
|
message: "CLAIM_V2_TOTAL_PAYMENT_CAP_TOMAN must be a positive number",
|
|
})
|
|
CLAIM_V2_TOTAL_PAYMENT_CAP_TOMAN?: number;
|
|
// --------------------------------------------------------- //
|
|
}
|