-
Notifications
You must be signed in to change notification settings - Fork 1
/
env.ts
81 lines (67 loc) 路 1.91 KB
/
env.ts
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
73
74
75
76
77
78
79
80
81
import localeCulture from '@openkit/language-codes';
import * as z from 'zod';
const zodEnv = z.object({
/*
* SITE CONFIG
*/
SITE_URL: z.string().min(1),
SITE_NAME: z.string().min(1),
TWITTER_CREATOR: z.string().min(1),
/*
* NEXTAUTH
* src: See https://next-auth.js.org/deployment.
*/
GITHUB_ID: z.string(),
GITHUB_SECRET: z.string(),
NEXTAUTH_URL: z.string().url(),
SECRET: z.string(),
/*
* RESEND
* src: See https://resend.com/docs/send-with-nextjs.
*/
RESEND_API_KEY: z.string(),
RESEND_DOMAIN: z.string(),
/*
* SITE CONFIG - PUBLIC
*/
NEXT_PUBLIC_SITE_URL: z.string().url().min(1),
/*
* LANGUAGE CONFIG - PUBLIC
*/
NEXT_PUBLIC_DEFAULT_LANGUAGE_KEY: z.enum([localeCulture.EN.folderName, localeCulture.ES_MX.folderName]).optional(),
});
declare global {
namespace NodeJS {
interface ProcessEnv extends z.TypeOf<typeof zodEnv> {}
}
}
try {
zodEnv.parse(process.env);
} catch (err) {
if (err instanceof z.ZodError) {
const { fieldErrors } = err.flatten();
const errorMessage = Object.entries(fieldErrors)
.map(([field, errors]) => (errors ? `${field}: ${errors.join(', ')}` : field))
.join('\n ');
throw new Error(`X: Missing environment variables:\n ${errorMessage}`);
process.exit(1);
}
}
/**
* WIP
* use `import env from '~/env';`
*/
// const runtimeEnv = {
// SITE_URL: process.env.SITE_URL,
// SITE_NAME: process.env.SITE_NAME,
// TWITTER_CREATOR: process.env.TWITTER_CREATOR,
// NEXT_PUBLIC_SITE_URL: process.env.NEXT_PUBLIC_SITE_URL,
// GITHUB_ID: process.env.GITHUB_ID,
// GITHUB_SECRET: process.env.GITHUB_SECRET,
// NEXTAUTH_URL: process.env.NEXTAUTH_URL,
// SECRET: process.env.SECRET,
// RESEND_API_KEY: process.env.RESEND_API_KEY,
// RESEND_DOMAIN: process.env.RESEND_DOMAIN,
// NEXT_PUBLIC_DEFAULT_LANGUAGE_KEY: process.env.NEXT_PUBLIC_DEFAULT_LANGUAGE_KEY,
// };
//export default runtimeEnv;