1
+ import { get_tracer } from '../../runtime/telemetry/get_tracer.js' ;
2
+ import { record_span } from '../../runtime/telemetry/record_span.js' ;
3
+
1
4
/**
2
5
* A helper function for sequencing multiple `handle` calls in a middleware-like manner.
3
6
* The behavior for the `handle` options is as follows:
@@ -73,7 +76,8 @@ export function sequence(...handlers) {
73
76
const length = handlers . length ;
74
77
if ( ! length ) return ( { event, resolve } ) => resolve ( event ) ;
75
78
76
- return ( { event, resolve } ) => {
79
+ return async ( { event, resolve } ) => {
80
+ const tracer = await get_tracer ( ) ;
77
81
return apply_handle ( 0 , event , { } ) ;
78
82
79
83
/**
@@ -85,38 +89,46 @@ export function sequence(...handlers) {
85
89
function apply_handle ( i , event , parent_options ) {
86
90
const handle = handlers [ i ] ;
87
91
88
- return handle ( {
89
- event,
90
- resolve : ( event , options ) => {
91
- /** @type {import('@sveltejs/kit').ResolveOptions['transformPageChunk'] } */
92
- const transformPageChunk = async ( { html, done } ) => {
93
- if ( options ?. transformPageChunk ) {
94
- html = ( await options . transformPageChunk ( { html, done } ) ) ?? '' ;
95
- }
92
+ return record_span ( {
93
+ name : 'sveltekit.handle.child' ,
94
+ tracer,
95
+ attributes : {
96
+ 'sveltekit.handle.child.index' : i
97
+ } ,
98
+ fn : async ( span ) =>
99
+ handle ( {
100
+ event : { ...event , span } ,
101
+ resolve : ( event , options ) => {
102
+ /** @type {import('@sveltejs/kit').ResolveOptions['transformPageChunk'] } */
103
+ const transformPageChunk = async ( { html, done } ) => {
104
+ if ( options ?. transformPageChunk ) {
105
+ html = ( await options . transformPageChunk ( { html, done } ) ) ?? '' ;
106
+ }
96
107
97
- if ( parent_options ?. transformPageChunk ) {
98
- html = ( await parent_options . transformPageChunk ( { html, done } ) ) ?? '' ;
99
- }
108
+ if ( parent_options ?. transformPageChunk ) {
109
+ html = ( await parent_options . transformPageChunk ( { html, done } ) ) ?? '' ;
110
+ }
100
111
101
- return html ;
102
- } ;
112
+ return html ;
113
+ } ;
103
114
104
- /** @type {import('@sveltejs/kit').ResolveOptions['filterSerializedResponseHeaders'] } */
105
- const filterSerializedResponseHeaders =
106
- parent_options ?. filterSerializedResponseHeaders ??
107
- options ?. filterSerializedResponseHeaders ;
115
+ /** @type {import('@sveltejs/kit').ResolveOptions['filterSerializedResponseHeaders'] } */
116
+ const filterSerializedResponseHeaders =
117
+ parent_options ?. filterSerializedResponseHeaders ??
118
+ options ?. filterSerializedResponseHeaders ;
108
119
109
- /** @type {import('@sveltejs/kit').ResolveOptions['preload'] } */
110
- const preload = parent_options ?. preload ?? options ?. preload ;
120
+ /** @type {import('@sveltejs/kit').ResolveOptions['preload'] } */
121
+ const preload = parent_options ?. preload ?? options ?. preload ;
111
122
112
- return i < length - 1
113
- ? apply_handle ( i + 1 , event , {
114
- transformPageChunk,
115
- filterSerializedResponseHeaders,
116
- preload
117
- } )
118
- : resolve ( event , { transformPageChunk, filterSerializedResponseHeaders, preload } ) ;
119
- }
123
+ return i < length - 1
124
+ ? apply_handle ( i + 1 , event , {
125
+ transformPageChunk,
126
+ filterSerializedResponseHeaders,
127
+ preload
128
+ } )
129
+ : resolve ( event , { transformPageChunk, filterSerializedResponseHeaders, preload } ) ;
130
+ }
131
+ } )
120
132
} ) ;
121
133
}
122
134
} ;
0 commit comments