58 lines
1.8 KiB
TypeScript
58 lines
1.8 KiB
TypeScript
import { z } from "zod";
|
|
|
|
const NodeEnvSchema = z.enum(["development", "test", "production"]);
|
|
|
|
const DbSyncModeSchema = z.enum(["none", "alter", "force"]);
|
|
const DbDialectSchema = z.enum(["postgres", "mysql", "mariadb", "mssql", "sqlite"]);
|
|
|
|
export const CompanyCertificateSchema = z.object({
|
|
certificateId: z.string().min(1),
|
|
certificateSecretName: z.string().min(1),
|
|
certificatePasswordSecretName: z.string().min(1),
|
|
});
|
|
|
|
export const CompanyCertificatesSchema = z.record(
|
|
z.string().regex(/^[a-z0-9-]+$/),
|
|
CompanyCertificateSchema
|
|
);
|
|
|
|
export const EnvSchema = z.object({
|
|
NODE_ENV: NodeEnvSchema.default("development"),
|
|
|
|
PORT: z.coerce.number().int().positive().default(3002),
|
|
API_BASE_PATH: z.string(),
|
|
FRONTEND_URL: z.url(),
|
|
TIMEZONE: z.string().default("Europe/Madrid"),
|
|
TRUST_PROXY: z.coerce.number().int().default(0),
|
|
|
|
DB_DIALECT: DbDialectSchema.default("mysql"),
|
|
DB_HOST: z.string().min(1),
|
|
DB_PORT: z.coerce.number().int().positive().default(3306),
|
|
DB_NAME: z.string().min(1),
|
|
DB_USER: z.string().min(1),
|
|
DB_PASS: z.string().min(1),
|
|
DB_LOGGING: z.coerce.boolean().default(false),
|
|
DB_SSL: z.coerce.boolean().default(false),
|
|
DB_SYNC_MODE: DbSyncModeSchema.default("none"),
|
|
|
|
WARMUP_TIMEOUT_MS: z.coerce.number().int().positive(),
|
|
WARMUP_STRICT: z.coerce.boolean().default(false),
|
|
|
|
JWT_SECRET: z.string().min(32),
|
|
JWT_ACCESS_EXPIRATION: z.string(),
|
|
JWT_REFRESH_EXPIRATION: z.string(),
|
|
|
|
TEMPLATES_PATH: z.string(),
|
|
DOCUMENTS_PATH: z.string(),
|
|
SIGNED_DOCUMENTS_PATH: z.string(),
|
|
|
|
FASTREPORT_BIN: z.string(),
|
|
|
|
SIGNING_SERVICE_URL: z.url(),
|
|
SIGNING_SERVICE_METHOD: z.enum(["GET", "POST", "PUT"]),
|
|
SIGNING_SERVICE_TIMEOUT_MS: z.coerce.number().int().positive(),
|
|
SIGNING_SERVICE_MAX_RETRIES: z.coerce.number().int().nonnegative(),
|
|
|
|
COMPANY_CERTIFICATES_PATH: z.string().min(1),
|
|
});
|