@@ -96,7 +96,7 @@ function setUpTunnelRewriteRules(userNextConfig: NextConfigObject, tunnelPath: s
9696 // This function doesn't take any arguments at the time of writing but we future-proof
9797 // here in case Next.js ever decides to pass some
9898 userNextConfig . rewrites = async ( ...args : unknown [ ] ) => {
99- const injectedRewrite = {
99+ const tunnelRouteRewrite = {
100100 // Matched rewrite routes will look like the following: `[tunnelPath]?o=[orgid]&p=[projectid]`
101101 // Nextjs will automatically convert `source` into a regex for us
102102 source : `${ tunnelPath } (/?)` ,
@@ -115,19 +115,43 @@ function setUpTunnelRewriteRules(userNextConfig: NextConfigObject, tunnelPath: s
115115 destination : 'https://o:orgid.ingest.sentry.io/api/:projectid/envelope/?hsts=0' ,
116116 } ;
117117
118+ const tunnelRouteRewriteWithRegion = {
119+ // Matched rewrite routes will look like the following: `[tunnelPath]?o=[orgid]&p=[projectid]?r=[region]`
120+ // Nextjs will automatically convert `source` into a regex for us
121+ source : `${ tunnelPath } (/?)` ,
122+ has : [
123+ {
124+ type : 'query' ,
125+ key : 'o' , // short for orgId - we keep it short so matching is harder for ad-blockers
126+ value : '(?<orgid>\\d*)' ,
127+ } ,
128+ {
129+ type : 'query' ,
130+ key : 'p' , // short for projectId - we keep it short so matching is harder for ad-blockers
131+ value : '(?<projectid>\\d*)' ,
132+ } ,
133+ {
134+ type : 'query' ,
135+ key : 'r' , // short for region - we keep it short so matching is harder for ad-blockers
136+ value : '(?<region>\\[a-z\\]{2})' ,
137+ } ,
138+ ] ,
139+ destination : 'https://o:orgid.ingest.:region.sentry.io/api/:projectid/envelope/?hsts=0' ,
140+ } ;
141+
118142 if ( typeof originalRewrites !== 'function' ) {
119- return [ injectedRewrite ] ;
143+ return [ tunnelRouteRewriteWithRegion , tunnelRouteRewrite ] ;
120144 }
121145
122146 // @ts -expect-error Expected 0 arguments but got 1 - this is from the future-proofing mentioned above, so we don't care about it
123147 const originalRewritesResult = await originalRewrites ( ...args ) ;
124148
125149 if ( Array . isArray ( originalRewritesResult ) ) {
126- return [ injectedRewrite , ...originalRewritesResult ] ;
150+ return [ tunnelRouteRewriteWithRegion , tunnelRouteRewrite , ...originalRewritesResult ] ;
127151 } else {
128152 return {
129153 ...originalRewritesResult ,
130- beforeFiles : [ injectedRewrite , ...( originalRewritesResult . beforeFiles || [ ] ) ] ,
154+ beforeFiles : [ tunnelRouteRewriteWithRegion , tunnelRouteRewrite , ...( originalRewritesResult . beforeFiles || [ ] ) ] ,
131155 } ;
132156 }
133157 } ;
0 commit comments