33import { createEnv } from '@t3-oss/env-nextjs' ;
44import { z } from 'zod' ;
55
6- const zNodeEnv = ( ) =>
7- z . enum ( [ 'development' , 'test' , 'production' ] ) . default ( 'development' ) ;
8-
96export const env = createEnv ( {
107 /**
118 * Specify your server-side environment variables schema here. This way you can ensure the app
@@ -15,6 +12,15 @@ export const env = createEnv({
1512 DATABASE_URL : z . string ( ) . url ( ) ,
1613 NODE_ENV : zNodeEnv ( ) ,
1714
15+ GITHUB_CLIENT_ID : zOptionalWithReplaceMe ( ) ,
16+ GITHUB_CLIENT_SECRET : zOptionalWithReplaceMe ( ) ,
17+
18+ GOOGLE_CLIENT_ID : zOptionalWithReplaceMe ( ) ,
19+ GOOGLE_CLIENT_SECRET : zOptionalWithReplaceMe ( ) ,
20+
21+ DISCORD_CLIENT_ID : zOptionalWithReplaceMe ( ) ,
22+ DISCORD_CLIENT_SECRET : zOptionalWithReplaceMe ( ) ,
23+
1824 EMAIL_SERVER : z . string ( ) . url ( ) ,
1925 EMAIL_FROM : z . string ( ) ,
2026 LOGGER_LEVEL : z
@@ -77,6 +83,15 @@ export const env = createEnv({
7783 LOGGER_LEVEL : process . env . LOGGER_LEVEL ,
7884 LOGGER_PRETTY : process . env . LOGGER_PRETTY ,
7985
86+ GITHUB_CLIENT_ID : process . env . GITHUB_CLIENT_ID ,
87+ GITHUB_CLIENT_SECRET : process . env . GITHUB_CLIENT_SECRET ,
88+
89+ GOOGLE_CLIENT_ID : process . env . GOOGLE_CLIENT_ID ,
90+ GOOGLE_CLIENT_SECRET : process . env . GOOGLE_CLIENT_SECRET ,
91+
92+ DISCORD_CLIENT_ID : process . env . DISCORD_CLIENT_ID ,
93+ DISCORD_CLIENT_SECRET : process . env . DISCORD_CLIENT_SECRET ,
94+
8095 NEXT_PUBLIC_BASE_URL : process . env . NEXT_PUBLIC_VERCEL_URL
8196 ? `https://${ process . env . NEXT_PUBLIC_VERCEL_URL } `
8297 : process . env . NEXT_PUBLIC_BASE_URL ,
@@ -92,3 +107,22 @@ export const env = createEnv({
92107 */
93108 skipValidation : ! ! process . env . SKIP_ENV_VALIDATION ,
94109} ) ;
110+
111+ function zNodeEnv ( ) {
112+ return z . enum ( [ 'development' , 'test' , 'production' ] ) . default ( 'development' ) ;
113+ }
114+
115+ function zOptionalWithReplaceMe ( ) {
116+ return z
117+ . string ( )
118+ . optional ( )
119+ . refine (
120+ ( value ) =>
121+ // Check in prodution if the value is not REPLACE ME
122+ process . env . NODE_ENV !== 'production' || value !== 'REPLACE ME' ,
123+ {
124+ message : 'Update the value "REPLACE ME" or remove the variable' ,
125+ }
126+ )
127+ . transform ( ( value ) => ( value === 'REPLACE ME' ? undefined : value ) ) ;
128+ }
0 commit comments