@@ -7,14 +7,6 @@ const globalWithInjectedManifest = GLOBAL_OBJ as typeof GLOBAL_OBJ & {
77 _sentryRemixRouteManifest : string | undefined ;
88} ;
99
10- /**
11- * Helper to simulate the Vite plugin's double-stringify behavior for XSS prevention.
12- * The Vite plugin stringifies the manifest once, then stringifies again when injecting into JS.
13- */
14- function doubleStringify ( manifest : RouteManifest ) : string {
15- return JSON . stringify ( JSON . stringify ( manifest ) ) ;
16- }
17-
1810describe ( 'maybeParameterizeRemixRoute' , ( ) => {
1911 const originalManifest = globalWithInjectedManifest . _sentryRemixRouteManifest ;
2012
@@ -38,7 +30,7 @@ describe('maybeParameterizeRemixRoute', () => {
3830 staticRoutes : [ { path : '/' } , { path : '/about' } , { path : '/contact' } , { path : '/blog/posts' } ] ,
3931 dynamicRoutes : [ ] ,
4032 } ;
41- globalWithInjectedManifest . _sentryRemixRouteManifest = doubleStringify ( manifest ) ;
33+ globalWithInjectedManifest . _sentryRemixRouteManifest = JSON . stringify ( manifest ) ;
4234
4335 expect ( maybeParameterizeRemixRoute ( '/' ) ) . toBeUndefined ( ) ;
4436 expect ( maybeParameterizeRemixRoute ( '/about' ) ) . toBeUndefined ( ) ;
@@ -69,7 +61,7 @@ describe('maybeParameterizeRemixRoute', () => {
6961 } ,
7062 ] ,
7163 } ;
72- globalWithInjectedManifest . _sentryRemixRouteManifest = doubleStringify ( manifest ) ;
64+ globalWithInjectedManifest . _sentryRemixRouteManifest = JSON . stringify ( manifest ) ;
7365
7466 expect ( maybeParameterizeRemixRoute ( '/users/123' ) ) . toBe ( '/users/:id' ) ;
7567 expect ( maybeParameterizeRemixRoute ( '/users/john-doe' ) ) . toBe ( '/users/:id' ) ;
@@ -90,7 +82,7 @@ describe('maybeParameterizeRemixRoute', () => {
9082 } ,
9183 ] ,
9284 } ;
93- globalWithInjectedManifest . _sentryRemixRouteManifest = doubleStringify ( manifest ) ;
85+ globalWithInjectedManifest . _sentryRemixRouteManifest = JSON . stringify ( manifest ) ;
9486
9587 expect ( maybeParameterizeRemixRoute ( '/' ) ) . toBeUndefined ( ) ;
9688 expect ( maybeParameterizeRemixRoute ( '/about' ) ) . toBeUndefined ( ) ;
@@ -112,7 +104,7 @@ describe('maybeParameterizeRemixRoute', () => {
112104 } ,
113105 ] ,
114106 } ;
115- globalWithInjectedManifest . _sentryRemixRouteManifest = doubleStringify ( manifest ) ;
107+ globalWithInjectedManifest . _sentryRemixRouteManifest = JSON . stringify ( manifest ) ;
116108
117109 expect ( maybeParameterizeRemixRoute ( '/docs/intro' ) ) . toBe ( '/docs/:*' ) ;
118110 expect ( maybeParameterizeRemixRoute ( '/docs/guide/getting-started' ) ) . toBe ( '/docs/:*' ) ;
@@ -130,7 +122,7 @@ describe('maybeParameterizeRemixRoute', () => {
130122 } ,
131123 ] ,
132124 } ;
133- globalWithInjectedManifest . _sentryRemixRouteManifest = doubleStringify ( manifest ) ;
125+ globalWithInjectedManifest . _sentryRemixRouteManifest = JSON . stringify ( manifest ) ;
134126
135127 expect ( maybeParameterizeRemixRoute ( '/users/user-with-dashes/settings' ) ) . toBe ( '/users/:id/settings' ) ;
136128 expect ( maybeParameterizeRemixRoute ( '/users/user_with_underscores/settings' ) ) . toBe ( '/users/:id/settings' ) ;
@@ -153,7 +145,7 @@ describe('maybeParameterizeRemixRoute', () => {
153145 } ,
154146 ] ,
155147 } ;
156- globalWithInjectedManifest . _sentryRemixRouteManifest = doubleStringify ( manifest ) ;
148+ globalWithInjectedManifest . _sentryRemixRouteManifest = JSON . stringify ( manifest ) ;
157149
158150 // Should prefer more specific route over catch-all
159151 expect ( maybeParameterizeRemixRoute ( '/users/123' ) ) . toBe ( '/users/:id' ) ;
@@ -170,7 +162,7 @@ describe('maybeParameterizeRemixRoute', () => {
170162 } ,
171163 ] ,
172164 } ;
173- globalWithInjectedManifest . _sentryRemixRouteManifest = doubleStringify ( manifest ) ;
165+ globalWithInjectedManifest . _sentryRemixRouteManifest = JSON . stringify ( manifest ) ;
174166
175167 expect ( maybeParameterizeRemixRoute ( '/users/123' ) ) . toBeUndefined ( ) ;
176168 } ) ;
@@ -186,7 +178,7 @@ describe('maybeParameterizeRemixRoute', () => {
186178 } ,
187179 ] ,
188180 } ;
189- globalWithInjectedManifest . _sentryRemixRouteManifest = doubleStringify ( manifest ) ;
181+ globalWithInjectedManifest . _sentryRemixRouteManifest = JSON . stringify ( manifest ) ;
190182
191183 expect ( maybeParameterizeRemixRoute ( '/users/123' ) ) . toBeUndefined ( ) ;
192184 } ) ;
@@ -204,7 +196,7 @@ describe('maybeParameterizeRemixRoute', () => {
204196 } ,
205197 ] ,
206198 } ;
207- globalWithInjectedManifest . _sentryRemixRouteManifest = doubleStringify ( manifest ) ;
199+ globalWithInjectedManifest . _sentryRemixRouteManifest = JSON . stringify ( manifest ) ;
208200
209201 expect ( maybeParameterizeRemixRoute ( '/unknown' ) ) . toBeUndefined ( ) ;
210202 expect ( maybeParameterizeRemixRoute ( '/posts/123' ) ) . toBeUndefined ( ) ;
@@ -218,7 +210,7 @@ describe('maybeParameterizeRemixRoute', () => {
218210 staticRoutes : [ ] ,
219211 dynamicRoutes : [ ] ,
220212 } ;
221- globalWithInjectedManifest . _sentryRemixRouteManifest = doubleStringify ( manifest ) ;
213+ globalWithInjectedManifest . _sentryRemixRouteManifest = JSON . stringify ( manifest ) ;
222214
223215 expect ( maybeParameterizeRemixRoute ( '' ) ) . toBeUndefined ( ) ;
224216 } ) ;
@@ -228,7 +220,7 @@ describe('maybeParameterizeRemixRoute', () => {
228220 staticRoutes : [ { path : '/' } ] ,
229221 dynamicRoutes : [ ] ,
230222 } ;
231- globalWithInjectedManifest . _sentryRemixRouteManifest = doubleStringify ( manifest ) ;
223+ globalWithInjectedManifest . _sentryRemixRouteManifest = JSON . stringify ( manifest ) ;
232224
233225 expect ( maybeParameterizeRemixRoute ( '/' ) ) . toBeUndefined ( ) ;
234226 } ) ;
@@ -244,7 +236,7 @@ describe('maybeParameterizeRemixRoute', () => {
244236 } ,
245237 ] ,
246238 } ;
247- globalWithInjectedManifest . _sentryRemixRouteManifest = doubleStringify ( manifest ) ;
239+ globalWithInjectedManifest . _sentryRemixRouteManifest = JSON . stringify ( manifest ) ;
248240
249241 expect ( maybeParameterizeRemixRoute ( '/api/v1/users/123/posts/456/comments/789' ) ) . toBe (
250242 '/api/v1/users/:id/posts/:postId/comments/:commentId' ,
@@ -297,7 +289,7 @@ describe('maybeParameterizeRemixRoute', () => {
297289 } ,
298290 ] ,
299291 } ;
300- globalWithInjectedManifest . _sentryRemixRouteManifest = doubleStringify ( manifest ) ;
292+ globalWithInjectedManifest . _sentryRemixRouteManifest = JSON . stringify ( manifest ) ;
301293
302294 if ( expectedRoute === undefined ) {
303295 expect ( maybeParameterizeRemixRoute ( inputRoute ) ) . toBeUndefined ( ) ;
@@ -324,7 +316,7 @@ describe('maybeParameterizeRemixRoute', () => {
324316 } ,
325317 ] ,
326318 } ;
327- globalWithInjectedManifest . _sentryRemixRouteManifest = doubleStringify ( manifest ) ;
319+ globalWithInjectedManifest . _sentryRemixRouteManifest = JSON . stringify ( manifest ) ;
328320
329321 // Single segment should match the specific route, not the catch-all
330322 expect ( maybeParameterizeRemixRoute ( '/123' ) ) . toBe ( '/:parameter' ) ;
@@ -355,7 +347,7 @@ describe('maybeParameterizeRemixRoute', () => {
355347 } ,
356348 ] ,
357349 } ;
358- globalWithInjectedManifest . _sentryRemixRouteManifest = doubleStringify ( manifest ) ;
350+ globalWithInjectedManifest . _sentryRemixRouteManifest = JSON . stringify ( manifest ) ;
359351
360352 // More specific route with static segments should win
361353 expect ( maybeParameterizeRemixRoute ( '/api/users/123' ) ) . toBe ( '/api/users/:id' ) ;
@@ -380,7 +372,7 @@ describe('maybeParameterizeRemixRoute', () => {
380372 } ,
381373 ] ,
382374 } ;
383- globalWithInjectedManifest . _sentryRemixRouteManifest = doubleStringify ( manifest ) ;
375+ globalWithInjectedManifest . _sentryRemixRouteManifest = JSON . stringify ( manifest ) ;
384376
385377 const result1 = maybeParameterizeRemixRoute ( '/users/123' ) ;
386378 const result2 = maybeParameterizeRemixRoute ( '/users/123' ) ;
@@ -400,7 +392,7 @@ describe('maybeParameterizeRemixRoute', () => {
400392 } ,
401393 ] ,
402394 } ;
403- globalWithInjectedManifest . _sentryRemixRouteManifest = doubleStringify ( manifest1 ) ;
395+ globalWithInjectedManifest . _sentryRemixRouteManifest = JSON . stringify ( manifest1 ) ;
404396
405397 expect ( maybeParameterizeRemixRoute ( '/users/123' ) ) . toBe ( '/users/:id' ) ;
406398
@@ -415,7 +407,7 @@ describe('maybeParameterizeRemixRoute', () => {
415407 } ,
416408 ] ,
417409 } ;
418- globalWithInjectedManifest . _sentryRemixRouteManifest = doubleStringify ( manifest2 ) ;
410+ globalWithInjectedManifest . _sentryRemixRouteManifest = JSON . stringify ( manifest2 ) ;
419411
420412 expect ( maybeParameterizeRemixRoute ( '/users/123' ) ) . toBeUndefined ( ) ;
421413 expect ( maybeParameterizeRemixRoute ( '/members/123' ) ) . toBe ( '/members/:id' ) ;
0 commit comments