1
1
/* eslint-disable @sentry-internal/sdk/no-optional-chaining */
2
- import type { Span } from '@sentry/core' ;
3
- import { captureException , getCurrentHub } from '@sentry/node' ;
2
+ import { trace } from '@sentry/core' ;
3
+ import { captureException } from '@sentry/node' ;
4
4
import {
5
5
addExceptionMechanism ,
6
6
baggageHeaderToDynamicSamplingContext ,
7
7
extractTraceparentData ,
8
- isThenable ,
9
8
objectify ,
10
9
} from '@sentry/utils' ;
11
10
import type { HttpError , ServerLoad } from '@sveltejs/kit' ;
@@ -45,10 +44,6 @@ function sendErrorToSentry(e: unknown): unknown {
45
44
return objectifiedErr ;
46
45
}
47
46
48
- function setSpan ( span : Span | undefined ) : void {
49
- getCurrentHub ( ) . getScope ( ) ?. setSpan ( span ) ;
50
- }
51
-
52
47
/**
53
48
* Wrap load function with Sentry
54
49
*
@@ -58,34 +53,15 @@ export function wrapLoadWithSentry(origLoad: ServerLoad): ServerLoad {
58
53
return new Proxy ( origLoad , {
59
54
apply : ( wrappingTarget , thisArg , args : Parameters < ServerLoad > ) => {
60
55
return domain . create ( ) . bind ( ( ) => {
61
- let maybePromiseResult ;
62
-
63
56
const [ event ] = args ;
64
- const hub = getCurrentHub ( ) ;
65
- const scope = hub . getScope ( ) ;
66
-
67
- const parentSpan = scope ?. getSpan ( ) ;
68
57
69
- let activeSpan : Span | undefined = undefined ;
70
-
71
- function finishActiveSpan ( ) : void {
72
- activeSpan ?. finish ( ) ;
73
- setSpan ( parentSpan ) ;
74
- }
75
-
76
- if ( parentSpan ) {
77
- activeSpan = parentSpan . startChild ( {
78
- op : 'function.sveltekit.load' ,
79
- description : event . route . id || 'load' ,
80
- status : 'ok' ,
81
- } ) ;
82
- } else {
83
- const sentryTraceHeader = event . request . headers . get ( 'sentry-trace' ) ;
84
- const baggageHeader = event . request . headers . get ( 'baggage' ) ;
85
- const traceparentData = sentryTraceHeader ? extractTraceparentData ( sentryTraceHeader ) : undefined ;
86
- const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext ( baggageHeader ) ;
58
+ const sentryTraceHeader = event . request . headers . get ( 'sentry-trace' ) ;
59
+ const baggageHeader = event . request . headers . get ( 'baggage' ) ;
60
+ const traceparentData = sentryTraceHeader ? extractTraceparentData ( sentryTraceHeader ) : undefined ;
61
+ const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext ( baggageHeader ) ;
87
62
88
- activeSpan = hub . startTransaction ( {
63
+ return trace (
64
+ {
89
65
op : 'function.sveltekit.load' ,
90
66
name : event . route . id || 'load' ,
91
67
status : 'ok' ,
@@ -94,36 +70,10 @@ export function wrapLoadWithSentry(origLoad: ServerLoad): ServerLoad {
94
70
source : 'route' ,
95
71
dynamicSamplingContext : traceparentData && ! dynamicSamplingContext ? { } : dynamicSamplingContext ,
96
72
} ,
97
- } ) ;
98
- }
99
-
100
- setSpan ( activeSpan ) ;
101
-
102
- try {
103
- maybePromiseResult = wrappingTarget . apply ( thisArg , args ) ;
104
- } catch ( e ) {
105
- activeSpan ?. setStatus ( 'internal_error' ) ;
106
- const sentryError = sendErrorToSentry ( e ) ;
107
- finishActiveSpan ( ) ;
108
- throw sentryError ;
109
- }
110
-
111
- if ( isThenable ( maybePromiseResult ) ) {
112
- Promise . resolve ( maybePromiseResult ) . then (
113
- ( ) => {
114
- finishActiveSpan ( ) ;
115
- } ,
116
- e => {
117
- activeSpan ?. setStatus ( 'internal_error' ) ;
118
- sendErrorToSentry ( e ) ;
119
- finishActiveSpan ( ) ;
120
- } ,
121
- ) ;
122
- } else {
123
- finishActiveSpan ( ) ;
124
- }
125
-
126
- return maybePromiseResult ;
73
+ } ,
74
+ ( ) => wrappingTarget . apply ( thisArg , args ) ,
75
+ sendErrorToSentry ,
76
+ ) ;
127
77
} ) ( ) ;
128
78
} ,
129
79
} ) ;
0 commit comments