@effect/opentelemetry 0.61.0 → 4.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/LICENSE +1 -1
  2. package/dist/{dts/Logger.d.ts → Logger.d.ts} +19 -13
  3. package/dist/Logger.d.ts.map +1 -0
  4. package/dist/Logger.js +76 -0
  5. package/dist/Logger.js.map +1 -0
  6. package/dist/Metrics.d.ts +76 -0
  7. package/dist/Metrics.d.ts.map +1 -0
  8. package/dist/Metrics.js +59 -0
  9. package/dist/Metrics.js.map +1 -0
  10. package/dist/{dts/NodeSdk.d.ts → NodeSdk.d.ts} +12 -9
  11. package/dist/NodeSdk.d.ts.map +1 -0
  12. package/dist/{esm/NodeSdk.js → NodeSdk.js} +23 -14
  13. package/dist/NodeSdk.js.map +1 -0
  14. package/dist/{dts/Resource.d.ts → Resource.d.ts} +10 -13
  15. package/dist/Resource.d.ts.map +1 -0
  16. package/dist/{esm/Resource.js → Resource.js} +12 -13
  17. package/dist/Resource.js.map +1 -0
  18. package/dist/Tracer.d.ts +129 -0
  19. package/dist/Tracer.d.ts.map +1 -0
  20. package/dist/Tracer.js +391 -0
  21. package/dist/Tracer.js.map +1 -0
  22. package/dist/{dts/WebSdk.d.ts → WebSdk.d.ts} +12 -9
  23. package/dist/WebSdk.d.ts.map +1 -0
  24. package/dist/WebSdk.js +41 -0
  25. package/dist/WebSdk.js.map +1 -0
  26. package/dist/index.d.ts +28 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +29 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/internal/attributes.d.ts +2 -0
  31. package/dist/internal/attributes.d.ts.map +1 -0
  32. package/dist/internal/attributes.js +19 -0
  33. package/dist/internal/attributes.js.map +1 -0
  34. package/dist/{dts/internal → internal}/metrics.d.ts.map +1 -1
  35. package/dist/internal/metrics.js +406 -0
  36. package/dist/internal/metrics.js.map +1 -0
  37. package/dist/internal/utilities.d.ts +2 -0
  38. package/dist/internal/utilities.d.ts.map +1 -0
  39. package/dist/internal/utilities.js +3 -0
  40. package/dist/internal/utilities.js.map +1 -0
  41. package/package.json +86 -119
  42. package/src/Logger.ts +52 -55
  43. package/src/Metrics.ts +92 -18
  44. package/src/NodeSdk.ts +67 -64
  45. package/src/Resource.ts +16 -24
  46. package/src/Tracer.ts +469 -78
  47. package/src/WebSdk.ts +59 -51
  48. package/src/index.ts +7 -36
  49. package/src/internal/attributes.ts +21 -0
  50. package/src/internal/metrics.ts +381 -250
  51. package/src/internal/utilities.ts +5 -0
  52. package/Logger/package.json +0 -6
  53. package/Metrics/package.json +0 -6
  54. package/NodeSdk/package.json +0 -6
  55. package/Otlp/package.json +0 -6
  56. package/OtlpLogger/package.json +0 -6
  57. package/OtlpMetrics/package.json +0 -6
  58. package/OtlpResource/package.json +0 -6
  59. package/OtlpSerialization/package.json +0 -6
  60. package/OtlpTracer/package.json +0 -6
  61. package/Resource/package.json +0 -6
  62. package/Tracer/package.json +0 -6
  63. package/WebSdk/package.json +0 -6
  64. package/dist/cjs/Logger.js +0 -85
  65. package/dist/cjs/Logger.js.map +0 -1
  66. package/dist/cjs/Metrics.js +0 -24
  67. package/dist/cjs/Metrics.js.map +0 -1
  68. package/dist/cjs/NodeSdk.js +0 -53
  69. package/dist/cjs/NodeSdk.js.map +0 -1
  70. package/dist/cjs/Otlp.js +0 -64
  71. package/dist/cjs/Otlp.js.map +0 -1
  72. package/dist/cjs/OtlpLogger.js +0 -163
  73. package/dist/cjs/OtlpLogger.js.map +0 -1
  74. package/dist/cjs/OtlpMetrics.js +0 -357
  75. package/dist/cjs/OtlpMetrics.js.map +0 -1
  76. package/dist/cjs/OtlpResource.js +0 -136
  77. package/dist/cjs/OtlpResource.js.map +0 -1
  78. package/dist/cjs/OtlpSerialization.js +0 -55
  79. package/dist/cjs/OtlpSerialization.js.map +0 -1
  80. package/dist/cjs/OtlpTracer.js +0 -231
  81. package/dist/cjs/OtlpTracer.js.map +0 -1
  82. package/dist/cjs/Resource.js +0 -75
  83. package/dist/cjs/Resource.js.map +0 -1
  84. package/dist/cjs/Tracer.js +0 -87
  85. package/dist/cjs/Tracer.js.map +0 -1
  86. package/dist/cjs/WebSdk.js +0 -42
  87. package/dist/cjs/WebSdk.js.map +0 -1
  88. package/dist/cjs/index.js +0 -32
  89. package/dist/cjs/index.js.map +0 -1
  90. package/dist/cjs/internal/metrics.js +0 -288
  91. package/dist/cjs/internal/metrics.js.map +0 -1
  92. package/dist/cjs/internal/otlpExporter.js +0 -83
  93. package/dist/cjs/internal/otlpExporter.js.map +0 -1
  94. package/dist/cjs/internal/otlpProtobuf.js +0 -430
  95. package/dist/cjs/internal/otlpProtobuf.js.map +0 -1
  96. package/dist/cjs/internal/protobuf.js +0 -183
  97. package/dist/cjs/internal/protobuf.js.map +0 -1
  98. package/dist/cjs/internal/tracer.js +0 -306
  99. package/dist/cjs/internal/tracer.js.map +0 -1
  100. package/dist/cjs/internal/utils.js +0 -34
  101. package/dist/cjs/internal/utils.js.map +0 -1
  102. package/dist/dts/Logger.d.ts.map +0 -1
  103. package/dist/dts/Metrics.d.ts +0 -29
  104. package/dist/dts/Metrics.d.ts.map +0 -1
  105. package/dist/dts/NodeSdk.d.ts.map +0 -1
  106. package/dist/dts/Otlp.d.ts +0 -80
  107. package/dist/dts/Otlp.d.ts.map +0 -1
  108. package/dist/dts/OtlpLogger.d.ts +0 -47
  109. package/dist/dts/OtlpLogger.d.ts.map +0 -1
  110. package/dist/dts/OtlpMetrics.d.ts +0 -41
  111. package/dist/dts/OtlpMetrics.d.ts.map +0 -1
  112. package/dist/dts/OtlpResource.d.ts +0 -104
  113. package/dist/dts/OtlpResource.d.ts.map +0 -1
  114. package/dist/dts/OtlpSerialization.d.ts +0 -53
  115. package/dist/dts/OtlpSerialization.d.ts.map +0 -1
  116. package/dist/dts/OtlpTracer.d.ts +0 -50
  117. package/dist/dts/OtlpTracer.d.ts.map +0 -1
  118. package/dist/dts/Resource.d.ts.map +0 -1
  119. package/dist/dts/Tracer.d.ts +0 -143
  120. package/dist/dts/Tracer.d.ts.map +0 -1
  121. package/dist/dts/WebSdk.d.ts.map +0 -1
  122. package/dist/dts/index.d.ts +0 -54
  123. package/dist/dts/index.d.ts.map +0 -1
  124. package/dist/dts/internal/otlpExporter.d.ts +0 -2
  125. package/dist/dts/internal/otlpExporter.d.ts.map +0 -1
  126. package/dist/dts/internal/otlpProtobuf.d.ts +0 -501
  127. package/dist/dts/internal/otlpProtobuf.d.ts.map +0 -1
  128. package/dist/dts/internal/protobuf.d.ts +0 -100
  129. package/dist/dts/internal/protobuf.d.ts.map +0 -1
  130. package/dist/dts/internal/tracer.d.ts +0 -2
  131. package/dist/dts/internal/tracer.d.ts.map +0 -1
  132. package/dist/dts/internal/utils.d.ts +0 -2
  133. package/dist/dts/internal/utils.d.ts.map +0 -1
  134. package/dist/esm/Logger.js +0 -75
  135. package/dist/esm/Logger.js.map +0 -1
  136. package/dist/esm/Metrics.js +0 -17
  137. package/dist/esm/Metrics.js.map +0 -1
  138. package/dist/esm/NodeSdk.js.map +0 -1
  139. package/dist/esm/Otlp.js +0 -56
  140. package/dist/esm/Otlp.js.map +0 -1
  141. package/dist/esm/OtlpLogger.js +0 -155
  142. package/dist/esm/OtlpLogger.js.map +0 -1
  143. package/dist/esm/OtlpMetrics.js +0 -349
  144. package/dist/esm/OtlpMetrics.js.map +0 -1
  145. package/dist/esm/OtlpResource.js +0 -124
  146. package/dist/esm/OtlpResource.js.map +0 -1
  147. package/dist/esm/OtlpSerialization.js +0 -46
  148. package/dist/esm/OtlpSerialization.js.map +0 -1
  149. package/dist/esm/OtlpTracer.js +0 -223
  150. package/dist/esm/OtlpTracer.js.map +0 -1
  151. package/dist/esm/Resource.js.map +0 -1
  152. package/dist/esm/Tracer.js +0 -80
  153. package/dist/esm/Tracer.js.map +0 -1
  154. package/dist/esm/WebSdk.js +0 -33
  155. package/dist/esm/WebSdk.js.map +0 -1
  156. package/dist/esm/index.js +0 -54
  157. package/dist/esm/index.js.map +0 -1
  158. package/dist/esm/internal/metrics.js +0 -278
  159. package/dist/esm/internal/metrics.js.map +0 -1
  160. package/dist/esm/internal/otlpExporter.js +0 -76
  161. package/dist/esm/internal/otlpExporter.js.map +0 -1
  162. package/dist/esm/internal/otlpProtobuf.js +0 -396
  163. package/dist/esm/internal/otlpProtobuf.js.map +0 -1
  164. package/dist/esm/internal/protobuf.js +0 -155
  165. package/dist/esm/internal/protobuf.js.map +0 -1
  166. package/dist/esm/internal/tracer.js +0 -297
  167. package/dist/esm/internal/tracer.js.map +0 -1
  168. package/dist/esm/internal/utils.js +0 -23
  169. package/dist/esm/internal/utils.js.map +0 -1
  170. package/dist/esm/package.json +0 -4
  171. package/index/package.json +0 -6
  172. package/src/Otlp.ts +0 -118
  173. package/src/OtlpLogger.ts +0 -263
  174. package/src/OtlpMetrics.ts +0 -575
  175. package/src/OtlpResource.ts +0 -232
  176. package/src/OtlpSerialization.ts +0 -64
  177. package/src/OtlpTracer.ts +0 -352
  178. package/src/internal/otlpExporter.ts +0 -126
  179. package/src/internal/otlpProtobuf.ts +0 -729
  180. package/src/internal/protobuf.ts +0 -219
  181. package/src/internal/tracer.ts +0 -448
  182. package/src/internal/utils.ts +0 -31
  183. /package/dist/{dts/internal → internal}/metrics.d.ts +0 -0
package/src/WebSdk.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import type * as OtelApi from "@opentelemetry/api"
4
+ import type * as Otel from "@opentelemetry/api"
5
5
  import type { LoggerProviderConfig, LogRecordProcessor } from "@opentelemetry/sdk-logs"
6
6
  import type { MetricReader } from "@opentelemetry/sdk-metrics"
7
7
  import type { SpanProcessor, TracerConfig } from "@opentelemetry/sdk-trace-base"
@@ -10,100 +10,108 @@ import type { NonEmptyReadonlyArray } from "effect/Array"
10
10
  import * as Effect from "effect/Effect"
11
11
  import { constant, type LazyArg } from "effect/Function"
12
12
  import * as Layer from "effect/Layer"
13
- import { isNonEmpty } from "./internal/utils.js"
14
- import * as Logger from "./Logger.js"
15
- import * as Metrics from "./Metrics.js"
16
- import * as Resource from "./Resource.js"
17
- import * as Tracer from "./Tracer.js"
13
+ import { isNonEmpty } from "./internal/utilities.ts"
14
+ import * as Logger from "./Logger.ts"
15
+ import * as Metrics from "./Metrics.ts"
16
+ import * as Resource from "./Resource.ts"
17
+ import * as Tracer from "./Tracer.ts"
18
18
 
19
19
  /**
20
20
  * @since 1.0.0
21
- * @category model
21
+ * @category Models
22
22
  */
23
23
  export interface Configuration {
24
24
  readonly spanProcessor?: SpanProcessor | ReadonlyArray<SpanProcessor> | undefined
25
25
  readonly tracerConfig?: Omit<TracerConfig, "resource">
26
26
  readonly metricReader?: MetricReader | ReadonlyArray<MetricReader> | undefined
27
+ readonly metricTemporality?: Metrics.TemporalityPreference | undefined
27
28
  readonly logRecordProcessor?: LogRecordProcessor | ReadonlyArray<LogRecordProcessor> | undefined
28
29
  readonly loggerProviderConfig?: Omit<LoggerProviderConfig, "resource"> | undefined
30
+ readonly loggerMergeWithExisting?: boolean | undefined
29
31
  readonly resource: {
30
32
  readonly serviceName: string
31
33
  readonly serviceVersion?: string
32
- readonly attributes?: OtelApi.Attributes
34
+ readonly attributes?: Otel.Attributes
33
35
  }
34
36
  }
35
37
 
36
38
  /**
37
39
  * @since 1.0.0
38
- * @category layers
40
+ * @category Layers
39
41
  */
40
42
  export const layerTracerProvider = (
41
43
  processor: SpanProcessor | NonEmptyReadonlyArray<SpanProcessor>,
42
44
  config?: Omit<TracerConfig, "resource">
43
45
  ): Layer.Layer<Tracer.OtelTracerProvider, never, Resource.Resource> =>
44
- Layer.scoped(
46
+ Layer.effect(
45
47
  Tracer.OtelTracerProvider,
46
- Effect.flatMap(
47
- Resource.Resource,
48
- (resource) =>
49
- Effect.acquireRelease(
50
- Effect.sync(() => {
51
- const provider = new WebTracerProvider({
52
- ...(config ?? undefined),
53
- resource,
54
- spanProcessors: Array.isArray(processor) ? (processor as any) : [processor]
55
- })
56
- return provider
57
- }),
58
- (provider) => Effect.ignoreLogged(Effect.promise(() => provider.forceFlush().then(() => provider.shutdown())))
59
- )
60
- )
48
+ Effect.gen(function*() {
49
+ const resource = yield* Resource.Resource
50
+ return yield* Effect.acquireRelease(
51
+ Effect.sync(() => {
52
+ const provider = new WebTracerProvider({
53
+ ...(config ?? undefined),
54
+ resource,
55
+ spanProcessors: Array.isArray(processor) ? (processor as any) : [processor]
56
+ })
57
+ return provider
58
+ }),
59
+ (provider) =>
60
+ Effect.ignore(
61
+ Effect.promise(() => provider.forceFlush().then(() => provider.shutdown()))
62
+ )
63
+ )
64
+ })
61
65
  )
62
66
 
63
67
  /**
64
68
  * @since 1.0.0
65
- * @category layer
69
+ * @category Layers
66
70
  */
67
71
  export const layer: {
68
72
  /**
69
73
  * @since 1.0.0
70
- * @category layer
74
+ * @category Layers
71
75
  */
72
76
  (evaluate: LazyArg<Configuration>): Layer.Layer<Resource.Resource>
73
77
  /**
74
78
  * @since 1.0.0
75
- * @category layer
79
+ * @category Layers
76
80
  */
77
81
  <E, R>(evaluate: Effect.Effect<Configuration, E, R>): Layer.Layer<Resource.Resource, E, R>
78
82
  } = (
79
83
  evaluate: LazyArg<Configuration> | Effect.Effect<Configuration, any, any>
80
84
  ): Layer.Layer<Resource.Resource> =>
81
- Layer.unwrapEffect(
82
- Effect.map(
83
- Effect.isEffect(evaluate)
85
+ Layer.unwrap(
86
+ Effect.gen(function*() {
87
+ const config = yield* Effect.isEffect(evaluate)
84
88
  ? evaluate as Effect.Effect<Configuration>
85
- : Effect.sync(evaluate),
86
- (config) => {
87
- const ResourceLive = Resource.layer(config.resource)
89
+ : Effect.sync(evaluate)
88
90
 
89
- const TracerLive = isNonEmpty(config.spanProcessor)
90
- ? Layer.provide(Tracer.layer, layerTracerProvider(config.spanProcessor, config.tracerConfig))
91
- : Layer.empty
92
-
93
- const LoggerLive = isNonEmpty(config.logRecordProcessor)
94
- ? Layer.provide(
95
- Logger.layerLoggerAdd,
96
- Logger.layerLoggerProvider(config.logRecordProcessor, config.loggerProviderConfig)
97
- )
98
- : Layer.empty
91
+ const ResourceLive = Resource.layer(config.resource)
99
92
 
100
- const MetricsLive = isNonEmpty(config.metricReader)
101
- ? Metrics.layer(constant(config.metricReader))
102
- : Layer.empty
93
+ const TracerLive = isNonEmpty(config.spanProcessor)
94
+ ? Layer.provide(
95
+ Tracer.layer,
96
+ layerTracerProvider(config.spanProcessor, config.tracerConfig)
97
+ )
98
+ : Layer.empty
103
99
 
104
- return Layer.mergeAll(TracerLive, MetricsLive, LoggerLive).pipe(
105
- Layer.provideMerge(ResourceLive)
100
+ const LoggerLive = isNonEmpty(config.logRecordProcessor)
101
+ ? Layer.provide(
102
+ Logger.layer({ mergeWithExisting: config.loggerMergeWithExisting }),
103
+ Logger.layerLoggerProvider(config.logRecordProcessor, config.loggerProviderConfig)
106
104
  )
107
- }
108
- )
105
+ : Layer.empty
106
+
107
+ const MetricsLive = isNonEmpty(config.metricReader)
108
+ ? Metrics.layer(constant(config.metricReader), {
109
+ temporality: config.metricTemporality
110
+ })
111
+ : Layer.empty
112
+
113
+ return Layer.mergeAll(TracerLive, MetricsLive, LoggerLive).pipe(
114
+ Layer.provideMerge(ResourceLive)
115
+ )
116
+ })
109
117
  )
package/src/index.ts CHANGED
@@ -1,64 +1,35 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- export * as Logger from "./Logger.js"
5
4
 
6
- /**
7
- * @since 1.0.0
8
- */
9
- export * as Metrics from "./Metrics.js"
10
-
11
- /**
12
- * @since 1.0.0
13
- */
14
- export * as NodeSdk from "./NodeSdk.js"
15
-
16
- /**
17
- * @since 1.0.0
18
- */
19
- export * as Otlp from "./Otlp.js"
20
-
21
- /**
22
- * @since 1.0.0
23
- */
24
- export * as OtlpLogger from "./OtlpLogger.js"
25
-
26
- /**
27
- * @since 1.0.0
28
- */
29
- export * as OtlpMetrics from "./OtlpMetrics.js"
5
+ // @barrel: Auto-generated exports. Do not edit manually.
30
6
 
31
7
  /**
32
8
  * @since 1.0.0
33
9
  */
34
- export * as OtlpResource from "./OtlpResource.js"
10
+ export * as Logger from "./Logger.ts"
35
11
 
36
12
  /**
37
- * OtlpSerialization service for tree-shakable protobuf support.
38
- *
39
- * This module provides the `OtlpSerialization` service that abstracts the
40
- * encoding of OTLP telemetry data to HttpBody.
41
- *
42
13
  * @since 1.0.0
43
14
  */
44
- export * as OtlpSerialization from "./OtlpSerialization.js"
15
+ export * as Metrics from "./Metrics.ts"
45
16
 
46
17
  /**
47
18
  * @since 1.0.0
48
19
  */
49
- export * as OtlpTracer from "./OtlpTracer.js"
20
+ export * as NodeSdk from "./NodeSdk.ts"
50
21
 
51
22
  /**
52
23
  * @since 1.0.0
53
24
  */
54
- export * as Resource from "./Resource.js"
25
+ export * as Resource from "./Resource.ts"
55
26
 
56
27
  /**
57
28
  * @since 1.0.0
58
29
  */
59
- export * as Tracer from "./Tracer.js"
30
+ export * as Tracer from "./Tracer.ts"
60
31
 
61
32
  /**
62
33
  * @since 1.0.0
63
34
  */
64
- export * as WebSdk from "./WebSdk.js"
35
+ export * as WebSdk from "./WebSdk.ts"
@@ -0,0 +1,21 @@
1
+ import type * as Otel from "@opentelemetry/api"
2
+ import * as Inspectable from "effect/Inspectable"
3
+
4
+ /** @internal */
5
+ export const recordToAttributes = (record: Record<string, unknown>): Otel.Attributes => {
6
+ const attributes: Otel.Attributes = {}
7
+ for (const [key, value] of Object.entries(record)) {
8
+ attributes[key] = unknownToAttributeValue(value)
9
+ }
10
+ return attributes
11
+ }
12
+
13
+ /** @internal */
14
+ export const unknownToAttributeValue = (value: unknown): Otel.AttributeValue => {
15
+ if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
16
+ return value
17
+ } else if (typeof value === "bigint") {
18
+ return value.toString()
19
+ }
20
+ return Inspectable.toStringUnknown(value)
21
+ }