-
-
Notifications
You must be signed in to change notification settings - Fork 107
Expand file tree
/
Copy pathenv.ts
More file actions
72 lines (68 loc) · 1.95 KB
/
Copy pathenv.ts
File metadata and controls
72 lines (68 loc) · 1.95 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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import process from 'node:process'
import { type } from 'arktype'
import { consola } from 'consola'
export const nodeEnv = type('"production" | "development" | "test"').assert(process.env.NODE_ENV)
const envType = type({
API_URL: 'string',
WEB_URL: 'string',
DATABASE_URL: 'string',
ALERTS_EMAIL: 'string',
ENCRYPTION_SECRET: 'string',
BETTER_AUTH_SECRET: 'string',
STRIPE_SECRET_KEY: 'string',
STRIPE_WEBHOOK_SECRET: 'string',
STRIPE_MONTH_PRICE_ID: 'string',
STRIPE_ANNUAL_PRICE_ID: 'string',
REDIS_URL: 'string',
POSTHOG_API_KEY: 'string',
RESEND_API_KEY: 'string',
RESEND_FROM_EMAIL: 'string',
OPENAI_API_KEY: 'string',
ANTHROPIC_API_KEY: 'string',
GOOGLE_GENERATIVE_AI_API_KEY: 'string',
XAI_API_KEY: 'string',
GOOGLE_CLIENT_ID: 'string',
GOOGLE_CLIENT_SECRET: 'string',
GITHUB_CLIENT_ID: 'string',
GITHUB_CLIENT_SECRET: 'string',
BANNER_TEXT: 'string?',
EXA_API_KEY: 'string',
CONTEXT7_API_KEY: 'string',
GITHUB_TOKEN: 'string',
TODESKTOP_WEBHOOK_SECRET: 'string',
})
const devOptionalEnvs = [
'ALERTS_EMAIL',
'STRIPE_SECRET_KEY',
'STRIPE_WEBHOOK_SECRET',
'STRIPE_MONTH_PRICE_ID',
'STRIPE_ANNUAL_PRICE_ID',
'REDIS_URL',
'POSTHOG_API_KEY',
'RESEND_API_KEY',
'OPENAI_API_KEY',
'ANTHROPIC_API_KEY',
'GOOGLE_GENERATIVE_AI_API_KEY',
'XAI_API_KEY',
'GOOGLE_CLIENT_ID',
'GOOGLE_CLIENT_SECRET',
'GITHUB_CLIENT_ID',
'GITHUB_CLIENT_SECRET',
'EXA_API_KEY',
'CONTEXT7_API_KEY',
'GITHUB_TOKEN',
'TODESKTOP_WEBHOOK_SECRET',
] satisfies (keyof typeof envType.infer)[]
export const env = nodeEnv === 'production' || nodeEnv === 'test'
? envType.assert(process.env)
: envType
.merge(
devOptionalEnvs.reduce((acc, env) => {
acc[env] = 'string?'
if (!process.env[env]) {
consola.warn(`"${env}" is not set in env file`)
}
return acc
}, {} as { [K in typeof devOptionalEnvs[number]]: 'string?' }),
)
.assert(process.env)