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