@@ -177,40 +177,7 @@ export const sentryAstro = (options: SentryOptions = {}): AstroIntegration => {
177
177
return ;
178
178
}
179
179
180
- /**
181
- * Astro lowercases the parametrized route. Joining segments manually is recommended to get the correct casing of the routes.
182
- * Recommendation in comment: https://github.com/withastro/astro/issues/13885#issuecomment-2934203029
183
- * Function Reference: https://github.com/joanrieu/astro-typed-links/blob/b3dc12c6fe8d672a2bc2ae2ccc57c8071bbd09fa/package/src/integration.ts#L16
184
- */
185
- const joinSegments = ( segments : RoutePart [ ] [ ] ) : string => {
186
- const parthArray = segments . map ( segment =>
187
- segment . map ( routePart => ( routePart . dynamic ? `[${ routePart . content } ]` : routePart . content ) ) . join ( '' ) ,
188
- ) ;
189
-
190
- return `/${ parthArray . join ( '/' ) } ` ;
191
- } ;
192
-
193
- try {
194
- const serverInitContent = readFileSync ( sentryServerInitPath , 'utf8' ) ;
195
-
196
- const updatedServerInitContent = `${ serverInitContent } \nglobalThis["__sentryRouteInfo"] = ${ JSON . stringify (
197
- routes . map ( route => {
198
- return {
199
- ...route ,
200
- patternCaseSensitive : joinSegments ( route . segments ) , // Store parametrized routes with correct casing on `globalThis` to be able to use them on the server during runtime
201
- patternRegex : route . patternRegex . source , // using `source` to be able to serialize the regex
202
- } ;
203
- } ) ,
204
- null ,
205
- 2 ,
206
- ) } ;`;
207
-
208
- writeFileSync ( sentryServerInitPath , updatedServerInitContent , 'utf8' ) ;
209
-
210
- debug . log ( 'Successfully added route pattern information to Sentry server file:' , sentryServerInitPath ) ;
211
- } catch ( error ) {
212
- debug . warn ( `Failed to write to sentry client init file at ${ sentryServerInitPath } :` , error ) ;
213
- }
180
+ includeRouteDataToConfigFile ( sentryServerInitPath , routes ) ;
214
181
} ,
215
182
} ,
216
183
} ;
@@ -318,3 +285,42 @@ export function getUpdatedSourceMapSettings(
318
285
319
286
return { previousUserSourceMapSetting, updatedSourceMapSetting } ;
320
287
}
288
+
289
+ /**
290
+ * Join Astro route segments into a case-sensitive single path string.
291
+ *
292
+ * Astro lowercases the parametrized route. Joining segments manually is recommended to get the correct casing of the routes.
293
+ * Recommendation in comment: https://github.com/withastro/astro/issues/13885#issuecomment-2934203029
294
+ * Function Reference: https://github.com/joanrieu/astro-typed-links/blob/b3dc12c6fe8d672a2bc2ae2ccc57c8071bbd09fa/package/src/integration.ts#L16
295
+ */
296
+ function joinRouteSegments ( segments : RoutePart [ ] [ ] ) : string {
297
+ const parthArray = segments . map ( segment =>
298
+ segment . map ( routePart => ( routePart . dynamic ? `[${ routePart . content } ]` : routePart . content ) ) . join ( '' ) ,
299
+ ) ;
300
+
301
+ return `/${ parthArray . join ( '/' ) } ` ;
302
+ }
303
+
304
+ function includeRouteDataToConfigFile ( sentryInitPath : string , routes : IntegrationResolvedRoute [ ] ) : void {
305
+ try {
306
+ const serverInitContent = readFileSync ( sentryInitPath , 'utf8' ) ;
307
+
308
+ const updatedServerInitContent = `${ serverInitContent } \nglobalThis["__sentryRouteInfo"] = ${ JSON . stringify (
309
+ routes . map ( route => {
310
+ return {
311
+ ...route ,
312
+ patternCaseSensitive : joinRouteSegments ( route . segments ) , // Store parametrized routes with correct casing on `globalThis` to be able to use them on the server during runtime
313
+ patternRegex : route . patternRegex . source , // using `source` to be able to serialize the regex
314
+ } ;
315
+ } ) ,
316
+ null ,
317
+ 2 ,
318
+ ) } ;`;
319
+
320
+ writeFileSync ( sentryInitPath , updatedServerInitContent , 'utf8' ) ;
321
+
322
+ debug . log ( 'Successfully added route pattern information to Sentry config file:' , sentryInitPath ) ;
323
+ } catch ( error ) {
324
+ debug . warn ( `Failed to write to Sentry config file at ${ sentryInitPath } :` , error ) ;
325
+ }
326
+ }
0 commit comments