@@ -96,7 +96,7 @@ function setUpTunnelRewriteRules(userNextConfig: NextConfigObject, tunnelPath: s
96
96
// This function doesn't take any arguments at the time of writing but we future-proof
97
97
// here in case Next.js ever decides to pass some
98
98
userNextConfig . rewrites = async ( ...args : unknown [ ] ) => {
99
- const injectedRewrite = {
99
+ const tunnelRouteRewrite = {
100
100
// Matched rewrite routes will look like the following: `[tunnelPath]?o=[orgid]&p=[projectid]`
101
101
// Nextjs will automatically convert `source` into a regex for us
102
102
source : `${ tunnelPath } (/?)` ,
@@ -115,19 +115,43 @@ function setUpTunnelRewriteRules(userNextConfig: NextConfigObject, tunnelPath: s
115
115
destination : 'https://o:orgid.ingest.sentry.io/api/:projectid/envelope/?hsts=0' ,
116
116
} ;
117
117
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
+
118
142
if ( typeof originalRewrites !== 'function' ) {
119
- return [ injectedRewrite ] ;
143
+ return [ tunnelRouteRewriteWithRegion , tunnelRouteRewrite ] ;
120
144
}
121
145
122
146
// @ts -expect-error Expected 0 arguments but got 1 - this is from the future-proofing mentioned above, so we don't care about it
123
147
const originalRewritesResult = await originalRewrites ( ...args ) ;
124
148
125
149
if ( Array . isArray ( originalRewritesResult ) ) {
126
- return [ injectedRewrite , ...originalRewritesResult ] ;
150
+ return [ tunnelRouteRewriteWithRegion , tunnelRouteRewrite , ...originalRewritesResult ] ;
127
151
} else {
128
152
return {
129
153
...originalRewritesResult ,
130
- beforeFiles : [ injectedRewrite , ...( originalRewritesResult . beforeFiles || [ ] ) ] ,
154
+ beforeFiles : [ tunnelRouteRewriteWithRegion , tunnelRouteRewrite , ...( originalRewritesResult . beforeFiles || [ ] ) ] ,
131
155
} ;
132
156
}
133
157
} ;
0 commit comments