11/* 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' ;
44import {
55 addExceptionMechanism ,
66 baggageHeaderToDynamicSamplingContext ,
77 extractTraceparentData ,
8- isThenable ,
98 objectify ,
109} from '@sentry/utils' ;
1110import type { HttpError , ServerLoad } from '@sveltejs/kit' ;
@@ -45,10 +44,6 @@ function sendErrorToSentry(e: unknown): unknown {
4544 return objectifiedErr ;
4645}
4746
48- function setSpan ( span : Span | undefined ) : void {
49- getCurrentHub ( ) . getScope ( ) ?. setSpan ( span ) ;
50- }
51-
5247/**
5348 * Wrap load function with Sentry
5449 *
@@ -58,34 +53,15 @@ export function wrapLoadWithSentry(origLoad: ServerLoad): ServerLoad {
5853 return new Proxy ( origLoad , {
5954 apply : ( wrappingTarget , thisArg , args : Parameters < ServerLoad > ) => {
6055 return domain . create ( ) . bind ( ( ) => {
61- let maybePromiseResult ;
62-
6356 const [ event ] = args ;
64- const hub = getCurrentHub ( ) ;
65- const scope = hub . getScope ( ) ;
66-
67- const parentSpan = scope ?. getSpan ( ) ;
6857
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 ) ;
8762
88- activeSpan = hub . startTransaction ( {
63+ return trace (
64+ {
8965 op : 'function.sveltekit.load' ,
9066 name : event . route . id || 'load' ,
9167 status : 'ok' ,
@@ -94,36 +70,10 @@ export function wrapLoadWithSentry(origLoad: ServerLoad): ServerLoad {
9470 source : 'route' ,
9571 dynamicSamplingContext : traceparentData && ! dynamicSamplingContext ? { } : dynamicSamplingContext ,
9672 } ,
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+ ) ;
12777 } ) ( ) ;
12878 } ,
12979 } ) ;
0 commit comments