import { withRelayClientTracing } from "@t3tools/shared/relayTracing"; import * as Effect from "effect/Effect"; import * as Option from "effect/Option"; import { HttpServerRequest, HttpTraceContext } from "effect/unstable/http"; export const traceRelayRequest = ( effect: Effect.Effect, ): Effect.Effect => effect.pipe(withRelayClientTracing); export const traceAuthenticatedRelayRequest = ( effect: Effect.Effect, ): Effect.Effect => HttpServerRequest.HttpServerRequest.pipe( Effect.flatMap((request) => Option.match(HttpTraceContext.fromHeaders(request.headers), { onNone: () => effect, onSome: (parent) => effect.pipe(Effect.withParentSpan(parent)), }), ), withRelayClientTracing, );