@@ -64,32 +64,40 @@ export const transformPageChunk: NonNullable<ResolveOptions['transformPageChunk'
64
64
* // export const handle = sequence(sentryHandle, yourCustomHandle);
65
65
* ```
66
66
*/
67
- export const sentryHandle : Handle = ( { event, resolve } ) => {
67
+ export const sentryHandle : Handle = input => {
68
+ // @ts -ignore domain.active exists if there is an active domain, TS just doesn't know
69
+ if ( domain . active ) {
70
+ return handleInDomain ( input ) ;
71
+ }
68
72
return domain . create ( ) . bind ( ( ) => {
69
- const sentryTraceHeader = event . request . headers . get ( 'sentry-trace' ) ;
70
- const baggageHeader = event . request . headers . get ( 'baggage' ) ;
71
- const traceparentData = sentryTraceHeader ? extractTraceparentData ( sentryTraceHeader ) : undefined ;
72
- const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext ( baggageHeader ) ;
73
-
74
- return trace (
75
- {
76
- op : 'http.server' ,
77
- name : `${ event . request . method } ${ event . route . id } ` ,
78
- status : 'ok' ,
79
- ...traceparentData ,
80
- metadata : {
81
- source : 'route' ,
82
- dynamicSamplingContext : traceparentData && ! dynamicSamplingContext ? { } : dynamicSamplingContext ,
83
- } ,
84
- } ,
85
- async ( span ?: Span ) => {
86
- const res = await resolve ( event , { transformPageChunk } ) ;
87
- if ( span ) {
88
- span . setHttpStatus ( res . status ) ;
89
- }
90
- return res ;
91
- } ,
92
- sendErrorToSentry ,
93
- ) ;
73
+ return handleInDomain ( input ) ;
94
74
} ) ( ) ;
95
75
} ;
76
+
77
+ function handleInDomain ( { event, resolve } : Parameters < Handle > [ 0 ] ) : ReturnType < Handle > {
78
+ const sentryTraceHeader = event . request . headers . get ( 'sentry-trace' ) ;
79
+ const baggageHeader = event . request . headers . get ( 'baggage' ) ;
80
+ const traceparentData = sentryTraceHeader ? extractTraceparentData ( sentryTraceHeader ) : undefined ;
81
+ const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext ( baggageHeader ) ;
82
+
83
+ return trace (
84
+ {
85
+ op : 'http.server' ,
86
+ name : `${ event . request . method } ${ event . route . id } ` ,
87
+ status : 'ok' ,
88
+ ...traceparentData ,
89
+ metadata : {
90
+ source : 'route' ,
91
+ dynamicSamplingContext : traceparentData && ! dynamicSamplingContext ? { } : dynamicSamplingContext ,
92
+ } ,
93
+ } ,
94
+ async ( span ?: Span ) => {
95
+ const res = await resolve ( event , { transformPageChunk } ) ;
96
+ if ( span ) {
97
+ span . setHttpStatus ( res . status ) ;
98
+ }
99
+ return res ;
100
+ } ,
101
+ sendErrorToSentry ,
102
+ ) ;
103
+ }
0 commit comments