MCPcopy Index your code
hub / github.com/Effect-TS/effect / layer

Function layer

packages/opentelemetry/src/NodeSdk.ts:79–119  ·  view source on GitHub ↗
(
  evaluate: LazyArg<Configuration> | Effect.Effect<Configuration, any, any>
)

Source from the content-addressed store, hash-verified

77 (evaluate: LazyArg<Configuration>): Layer.Layer<Resource.Resource>
78 <R, E>(evaluate: Effect.Effect<Configuration, E, R>): Layer.Layer<Resource.Resource, E, R>
79} = (
80 evaluate: LazyArg<Configuration> | Effect.Effect<Configuration, any, any>
81): Layer.Layer<Resource.Resource> =>
82 Layer.unwrapEffect(
83 Effect.map(
84 Effect.isEffect(evaluate)
85 ? evaluate as Effect.Effect<Configuration>
86 : Effect.sync(evaluate),
87 (config) => {
88 const ResourceLive = Resource.layerFromEnv(config.resource && Resource.configToAttributes(config.resource))
89
90 const TracerLive = isNonEmpty(config.spanProcessor)
91 ? Layer.provide(
92 Tracer.layer,
93 layerTracerProvider(config.spanProcessor, {
94 ...config.tracerConfig,
95 shutdownTimeout: config.shutdownTimeout
96 })
97 )
98 : Layer.empty
99
100 const MetricsLive = isNonEmpty(config.metricReader)
101 ? Metrics.layer(constant(config.metricReader), config)
102 : Layer.empty
103
104 const LoggerLive = isNonEmpty(config.logRecordProcessor)
105 ? Layer.provide(
106 Logger.layerLoggerAdd,
107 Logger.layerLoggerProvider(config.logRecordProcessor, {
108 ...config.loggerProviderConfig,
109 shutdownTimeout: config.shutdownTimeout
110 })
111 )
112 : Layer.empty
113
114 return Layer.mergeAll(TracerLive, MetricsLive, LoggerLive).pipe(
115 Layer.provideMerge(ResourceLive)
116 )
117 }
118 )
119 )
120
121/**
122 * @since 2.0.0

Callers

nothing calls this directly

Calls 7

constantFunction · 0.85
syncMethod · 0.80
layerTracerProviderFunction · 0.70
mapMethod · 0.65
provideMethod · 0.65
pipeMethod · 0.65
isNonEmptyFunction · 0.50

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…