@@ -65,34 +65,37 @@ pub fn defines(define_env: &FxIndexMap<RcStr, Option<RcStr>>) -> CompileTimeDefi
6565/// Emits warnings or errors when inlining frequently changing Vercel system env vars
6666pub fn free_var_references_with_vercel_system_env_warnings (
6767 defines : CompileTimeDefines ,
68- has_next_support : bool ,
6968) -> FreeVarReferences {
70- // constant :
71- // VERCEL
69+ // List of system env vars :
70+ // not available as NEXT_PUBLIC_* anyway:
7271 // CI
73- // VERCEL_PROJECT_PRODUCTION_URL
74- // VERCEL_REGION
72+ // VERCEL
7573 // VERCEL_SKEW_PROTECTION_ENABLED
7674 // VERCEL_AUTOMATION_BYPASS_SECRET
77- // VERCEL_PROJECT_ID
7875 // VERCEL_GIT_PROVIDER
7976 // VERCEL_GIT_REPO_SLUG
8077 // VERCEL_GIT_REPO_OWNER
8178 // VERCEL_GIT_REPO_ID
82-
83- // suboptimal (changes production main branch VS preview branches):
79+ // VERCEL_OIDC_TOKEN
80+ //
81+ // constant:
82+ // VERCEL_PROJECT_PRODUCTION_URL
83+ // VERCEL_REGION
84+ // VERCEL_PROJECT_ID
85+ //
86+ // suboptimal (changes production main branch VS preview branches):
8487 // VERCEL_ENV
8588 // VERCEL_TARGET_ENV
86-
87- // bad (changes per branch):
89+ //
90+ // bad (changes per branch):
8891 // VERCEL_BRANCH_URL
8992 // VERCEL_GIT_COMMIT_REF
9093 // VERCEL_GIT_PULL_REQUEST_ID
91-
92- // catastrophic (changes per commit):
94+ //
95+ // catastrophic (changes per commit):
96+ // NEXT_DEPLOYMENT_ID
9397 // VERCEL_URL
9498 // VERCEL_DEPLOYMENT_ID
95- // VERCEL_OIDC_TOKEN
9699 // VERCEL_GIT_COMMIT_SHA
97100 // VERCEL_GIT_COMMIT_MESSAGE
98101 // VERCEL_GIT_COMMIT_AUTHOR_LOGIN
@@ -104,97 +107,87 @@ pub fn free_var_references_with_vercel_system_env_warnings(
104107 . into_iter ( )
105108 . map ( |( k, value) | ( k, FreeVarReference :: Value ( value) ) ) ;
106109
107- let entries = if has_next_support {
108- let should_error = std:: env:: var ( "NEXT_TURBOPACK_SYSTEM_ENV_ERROR" )
109- . ok ( )
110- . is_some_and ( |v| !v. is_empty ( ) ) ;
111-
112- fn wrap_report_next_public_usage (
113- public_env_var : & str ,
114- inner : Option < Box < FreeVarReference > > ,
115- should_error : bool ,
116- ) -> FreeVarReference {
117- let message = match public_env_var {
118- "NEXT_DEPLOYMENT_ID" | "VERCEL_DEPLOYMENT_ID" => {
119- rcstr ! (
120- "The deployment id is being inlined. Use process.env.NEXT_DEPLOYMENT_ID \
121- instead to access the same value without inlining, for faster deploy \
122- times and better browser client-side caching."
123- )
124- }
125- _ => format ! (
126- "A system environment variable is being inlined. This variable changes on \
127- every deployment, causing slower deploy times and worse browser client-side \
128- caching. For server-side code, replace with process.env.{} and for browser \
129- code, try to remove it.",
130- public_env_var. strip_prefix( "NEXT_PUBLIC_" ) . unwrap( ) ,
110+ let should_error = std:: env:: var ( "NEXT_TURBOPACK_SYSTEM_ENV_ERROR" )
111+ . ok ( )
112+ . is_some_and ( |v| !v. is_empty ( ) ) ;
113+
114+ fn wrap_report_next_public_usage (
115+ public_env_var : & str ,
116+ inner : Option < Box < FreeVarReference > > ,
117+ should_error : bool ,
118+ ) -> FreeVarReference {
119+ let message = match public_env_var {
120+ "NEXT_PUBLIC_NEXT_DEPLOYMENT_ID" | "NEXT_PUBLIC_VERCEL_DEPLOYMENT_ID" => {
121+ rcstr ! (
122+ "The deployment id is being inlined. Use process.env.NEXT_DEPLOYMENT_ID \
123+ instead to access the same value without inlining, for faster deploy times \
124+ and better browser client-side caching."
131125 )
132- . into ( ) ,
133- } ;
134- FreeVarReference :: ReportUsage {
135- message,
136- severity : if should_error {
137- IssueSeverity :: Error
138- } else {
139- IssueSeverity :: Warning
140- } ,
141- inner,
142126 }
127+ _ => format ! (
128+ "A system environment variable is being inlined. This variable changes on every \
129+ deployment, causing slower deploy times and worse browser client-side caching. \
130+ For server-side code, replace with process.env.{} and for browser code, try to \
131+ remove it.",
132+ public_env_var. strip_prefix( "NEXT_PUBLIC_" ) . unwrap( ) ,
133+ )
134+ . into ( ) ,
135+ } ;
136+ FreeVarReference :: ReportUsage {
137+ message,
138+ severity : if should_error {
139+ IssueSeverity :: Error
140+ } else {
141+ IssueSeverity :: Warning
142+ } ,
143+ inner,
143144 }
145+ }
144146
145- let mut list = fxindexset ! (
146- "NEXT_PUBLIC_NEXT_DEPLOYMENT_ID" ,
147- "NEXT_PUBLIC_VERCEL_BRANCH_URL" ,
148- "NEXT_PUBLIC_VERCEL_DEPLOYMENT_ID" ,
149- "NEXT_PUBLIC_VERCEL_GIT_COMMIT_AUTHOR_LOGIN" ,
150- "NEXT_PUBLIC_VERCEL_GIT_COMMIT_AUTHOR_NAME" ,
151- "NEXT_PUBLIC_VERCEL_GIT_COMMIT_MESSAGE" ,
152- "NEXT_PUBLIC_VERCEL_GIT_COMMIT_REF" ,
153- "NEXT_PUBLIC_VERCEL_GIT_COMMIT_SHA" ,
154- "NEXT_PUBLIC_VERCEL_GIT_PREVIOUS_SHA" ,
155- "NEXT_PUBLIC_VERCEL_GIT_PULL_REQUEST_ID" ,
156- "NEXT_PUBLIC_VERCEL_OIDC_TOKEN" ,
157- "NEXT_PUBLIC_VERCEL_URL" ,
158- ) ;
147+ let mut list = fxindexset ! (
148+ "NEXT_PUBLIC_NEXT_DEPLOYMENT_ID" ,
149+ "NEXT_PUBLIC_VERCEL_BRANCH_URL" ,
150+ "NEXT_PUBLIC_VERCEL_DEPLOYMENT_ID" ,
151+ "NEXT_PUBLIC_VERCEL_GIT_COMMIT_AUTHOR_LOGIN" ,
152+ "NEXT_PUBLIC_VERCEL_GIT_COMMIT_AUTHOR_NAME" ,
153+ "NEXT_PUBLIC_VERCEL_GIT_COMMIT_MESSAGE" ,
154+ "NEXT_PUBLIC_VERCEL_GIT_COMMIT_REF" ,
155+ "NEXT_PUBLIC_VERCEL_GIT_COMMIT_SHA" ,
156+ "NEXT_PUBLIC_VERCEL_GIT_PREVIOUS_SHA" ,
157+ "NEXT_PUBLIC_VERCEL_GIT_PULL_REQUEST_ID" ,
158+ "NEXT_PUBLIC_VERCEL_URL" ,
159+ ) ;
159160
160- let mut entries: FxIndexMap < _ , _ > = entries
161- . map ( |( k, value) | {
162- let value = if let & [
163- DefinableNameSegment :: Name ( a) ,
164- DefinableNameSegment :: Name ( b) ,
165- DefinableNameSegment :: Name ( public_env_var) ,
166- ] = & & * k
167- && a == "process"
168- && b == "env"
169- && list. swap_remove ( & * * public_env_var)
170- {
171- wrap_report_next_public_usage (
172- public_env_var,
173- Some ( Box :: new ( value) ) ,
174- should_error,
175- )
176- } else {
177- value
178- } ;
179- ( k, value)
180- } )
181- . collect ( ) ;
182-
183- // For the remaining ones, still add a warning, but without replacement
184- for public_env_var in list {
185- entries. insert (
186- vec ! [
187- rcstr!( "process" ) . into( ) ,
188- rcstr!( "env" ) . into( ) ,
189- DefinableNameSegment :: Name ( public_env_var. into( ) ) ,
190- ] ,
191- wrap_report_next_public_usage ( public_env_var, None , should_error) ,
192- ) ;
193- }
194- entries
195- } else {
196- entries. collect ( )
197- } ;
161+ let mut entries: FxIndexMap < _ , _ > = entries
162+ . map ( |( k, value) | {
163+ let value = if let & [
164+ DefinableNameSegment :: Name ( a) ,
165+ DefinableNameSegment :: Name ( b) ,
166+ DefinableNameSegment :: Name ( public_env_var) ,
167+ ] = & & * k
168+ && a == "process"
169+ && b == "env"
170+ && list. swap_remove ( & * * public_env_var)
171+ {
172+ wrap_report_next_public_usage ( public_env_var, Some ( Box :: new ( value) ) , should_error)
173+ } else {
174+ value
175+ } ;
176+ ( k, value)
177+ } )
178+ . collect ( ) ;
179+
180+ // For the remaining ones, still add a warning, but without replacement
181+ for public_env_var in list {
182+ entries. insert (
183+ vec ! [
184+ rcstr!( "process" ) . into( ) ,
185+ rcstr!( "env" ) . into( ) ,
186+ DefinableNameSegment :: Name ( public_env_var. into( ) ) ,
187+ ] ,
188+ wrap_report_next_public_usage ( public_env_var, None , should_error) ,
189+ ) ;
190+ }
198191
199192 FreeVarReferences ( entries)
200193}
0 commit comments