-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathenv.ts
More file actions
45 lines (39 loc) · 1.4 KB
/
env.ts
File metadata and controls
45 lines (39 loc) · 1.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import { z } from 'zod'
import dotenv from 'dotenv'
dotenv.config()
const envSchema = z.object({
PRIVATE_KEY: z.string().optional(),
PUBLIC_ADDRESS: z.string(),
MNEMONIC_SECRET_ARN: z.string().optional(),
AWS_REGION: z.string().optional(),
TESTNET: z.preprocess((str) => str === 'true', z.boolean()),
TOKEN_ADDRESS: z.string(),
PROVIDER_URL: z.string(),
Y2K_TOKEN_MIGRATION_ADDRESS: z.string(),
FRCT_R_MIGRATION_ADDRESS: z.string(),
NODE_ENV: z.string().optional(),
DB_NAME: z.string(),
DB_HOST: z.string().optional(),
DB_PORT: z.coerce.number().optional(),
DB_USER: z.string().optional(),
DB_PASSWORD: z.string().optional(),
DB_SCHEMA: z.string().optional(),
BLOCKCHAIN_ENVIRONMENT: z.string(),
BLOCK_START_NUMBER: z.string(),
SAFETY_CUSHION_NUMBER_OF_BLOCKS: z.coerce.number(),
REDIS_CONNECTION_STRING: z.string(),
REDIS_USE_TLS: z.preprocess((str) => str === 'true', z.boolean()),
SLACK_TOKEN: z.string().optional(),
SLACK_CHANNEL_ID: z.string().optional()
})
const parsedEnv = envSchema.safeParse(process.env)
if (!parsedEnv.success) {
const formattedErrors = parsedEnv.error.errors.map((err) => ({
path: err.path.join('.'),
message: err.message
}))
console.error('Environment variable validation failed:', formattedErrors)
throw new Error('Invalid environment variables.')
}
export type BotEnv = z.infer<typeof envSchema>
export const env = parsedEnv.data