@effect/opentelemetry 0.46.12 → 0.46.14

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 (70) hide show
  1. package/Logger/package.json +2 -2
  2. package/Metrics/package.json +2 -2
  3. package/NodeSdk/package.json +2 -2
  4. package/Otlp/package.json +2 -2
  5. package/OtlpLogger/package.json +2 -2
  6. package/OtlpMetrics/package.json +2 -2
  7. package/OtlpResource/package.json +2 -2
  8. package/OtlpTracer/package.json +2 -2
  9. package/Resource/package.json +2 -2
  10. package/Tracer/package.json +2 -2
  11. package/WebSdk/package.json +2 -2
  12. package/dist/cjs/Logger.js +1 -1
  13. package/dist/cjs/Logger.js.map +1 -1
  14. package/dist/cjs/Metrics.js.map +1 -1
  15. package/dist/cjs/NodeSdk.js +10 -4
  16. package/dist/cjs/NodeSdk.js.map +1 -1
  17. package/dist/cjs/Otlp.js +6 -3
  18. package/dist/cjs/Otlp.js.map +1 -1
  19. package/dist/cjs/OtlpLogger.js +2 -1
  20. package/dist/cjs/OtlpLogger.js.map +1 -1
  21. package/dist/cjs/OtlpMetrics.js +2 -1
  22. package/dist/cjs/OtlpMetrics.js.map +1 -1
  23. package/dist/cjs/OtlpTracer.js +2 -1
  24. package/dist/cjs/OtlpTracer.js.map +1 -1
  25. package/dist/cjs/internal/metrics.js +3 -3
  26. package/dist/cjs/internal/metrics.js.map +1 -1
  27. package/dist/cjs/internal/otlpExporter.js +1 -1
  28. package/dist/cjs/internal/otlpExporter.js.map +1 -1
  29. package/dist/dts/Logger.d.ts +4 -1
  30. package/dist/dts/Logger.d.ts.map +1 -1
  31. package/dist/dts/Metrics.d.ts +4 -1
  32. package/dist/dts/Metrics.d.ts.map +1 -1
  33. package/dist/dts/NodeSdk.d.ts +5 -1
  34. package/dist/dts/NodeSdk.d.ts.map +1 -1
  35. package/dist/dts/Otlp.d.ts +1 -0
  36. package/dist/dts/Otlp.d.ts.map +1 -1
  37. package/dist/dts/OtlpLogger.d.ts +2 -0
  38. package/dist/dts/OtlpLogger.d.ts.map +1 -1
  39. package/dist/dts/OtlpMetrics.d.ts +2 -0
  40. package/dist/dts/OtlpMetrics.d.ts.map +1 -1
  41. package/dist/dts/OtlpTracer.d.ts +2 -0
  42. package/dist/dts/OtlpTracer.d.ts.map +1 -1
  43. package/dist/esm/Logger.js +1 -1
  44. package/dist/esm/Logger.js.map +1 -1
  45. package/dist/esm/Metrics.js.map +1 -1
  46. package/dist/esm/NodeSdk.js +10 -4
  47. package/dist/esm/NodeSdk.js.map +1 -1
  48. package/dist/esm/Otlp.js +6 -3
  49. package/dist/esm/Otlp.js.map +1 -1
  50. package/dist/esm/OtlpLogger.js +2 -1
  51. package/dist/esm/OtlpLogger.js.map +1 -1
  52. package/dist/esm/OtlpMetrics.js +2 -1
  53. package/dist/esm/OtlpMetrics.js.map +1 -1
  54. package/dist/esm/OtlpTracer.js +2 -1
  55. package/dist/esm/OtlpTracer.js.map +1 -1
  56. package/dist/esm/internal/metrics.js +3 -3
  57. package/dist/esm/internal/metrics.js.map +1 -1
  58. package/dist/esm/internal/otlpExporter.js +1 -1
  59. package/dist/esm/internal/otlpExporter.js.map +1 -1
  60. package/index/package.json +6 -0
  61. package/package.json +12 -3
  62. package/src/Logger.ts +10 -3
  63. package/src/Metrics.ts +7 -1
  64. package/src/NodeSdk.ts +23 -5
  65. package/src/Otlp.ts +7 -3
  66. package/src/OtlpLogger.ts +4 -1
  67. package/src/OtlpMetrics.ts +4 -1
  68. package/src/OtlpTracer.ts +4 -1
  69. package/src/internal/metrics.ts +15 -5
  70. package/src/internal/otlpExporter.ts +9 -1
@@ -1 +1 @@
1
- {"version":3,"file":"otlpExporter.js","names":["Headers","HttpClient","HttpClientError","HttpClientRequest","Duration","Effect","FiberSet","Num","Option","Schedule","Scope","policy","forever","pipe","passthrough","addDelay","error","isHttpClientError","_tag","response","status","retryAfter","fromNullable","headers","flatMap","parse","getOrElse","seconds","make","fnUntraced","options","scope","exportInterval","decode","client","filterStatusOk","tapError","void","retryAfterSeconds","parseInt","sleep","retryTransient","schedule","unsafeFromRecord","label","merge","fromInput","request","post","url","buffer","runExport","suspend","items","maxBatchSize","length","execute","bodyUnsafeJson","body","asVoid","withTracerEnabled","addFinalizer","ignore","disabled","zipRight","catchAllCause","cause","logDebug","annotateLogs","package","module","forkIn","interruptible","runFork","makeRuntime","push","data"],"sources":["../../../src/internal/otlpExporter.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"otlpExporter.js","names":["Headers","HttpClient","HttpClientError","HttpClientRequest","Duration","Effect","FiberSet","Num","Option","Schedule","Scope","policy","forever","pipe","passthrough","addDelay","error","isHttpClientError","_tag","response","status","retryAfter","fromNullable","headers","flatMap","parse","getOrElse","seconds","make","fnUntraced","options","scope","exportInterval","decode","client","filterStatusOk","tapError","void","retryAfterSeconds","parseInt","sleep","retryTransient","schedule","unsafeFromRecord","label","merge","fromInput","request","post","url","buffer","runExport","suspend","items","maxBatchSize","length","execute","bodyUnsafeJson","body","asVoid","withTracerEnabled","addFinalizer","ignore","interruptible","timeoutOption","shutdownTimeout","disabled","zipRight","catchAllCause","cause","logDebug","annotateLogs","package","module","forkIn","runFork","makeRuntime","push","data"],"sources":["../../../src/internal/otlpExporter.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": [],
3
+ "main": "../dist/cjs/index.js",
4
+ "module": "../dist/esm/index.js",
5
+ "types": "../dist/dts/index.d.ts"
6
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/opentelemetry",
3
- "version": "0.46.12",
3
+ "version": "0.46.14",
4
4
  "description": "OpenTelemetry integration for Effect",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -9,6 +9,7 @@
9
9
  "directory": "packages/opentelemetry"
10
10
  },
11
11
  "sideEffects": [],
12
+ "homepage": "https://effect.website",
12
13
  "peerDependencies": {
13
14
  "@opentelemetry/api": "^1.9",
14
15
  "@opentelemetry/resources": "^2.0.0",
@@ -17,8 +18,8 @@
17
18
  "@opentelemetry/sdk-trace-node": "^2.0.0",
18
19
  "@opentelemetry/sdk-trace-web": "^2.0.0",
19
20
  "@opentelemetry/semantic-conventions": "^1.30.0",
20
- "@effect/platform": "^0.80.15",
21
- "effect": "^3.14.15"
21
+ "@effect/platform": "^0.80.17",
22
+ "effect": "^3.14.17"
22
23
  },
23
24
  "peerDependenciesMeta": {
24
25
  "@opentelemetry/api": {
@@ -110,6 +111,11 @@
110
111
  "types": "./dist/dts/WebSdk.d.ts",
111
112
  "import": "./dist/esm/WebSdk.js",
112
113
  "default": "./dist/cjs/WebSdk.js"
114
+ },
115
+ "./index": {
116
+ "types": "./dist/dts/index.d.ts",
117
+ "import": "./dist/esm/index.js",
118
+ "default": "./dist/cjs/index.js"
113
119
  }
114
120
  },
115
121
  "typesVersions": {
@@ -146,6 +152,9 @@
146
152
  ],
147
153
  "WebSdk": [
148
154
  "./dist/dts/WebSdk.d.ts"
155
+ ],
156
+ "index": [
157
+ "./dist/dts/index.d.ts"
149
158
  ]
150
159
  }
151
160
  }
package/src/Logger.ts CHANGED
@@ -5,6 +5,7 @@ import * as Otel from "@opentelemetry/sdk-logs"
5
5
  import type { NonEmptyReadonlyArray } from "effect/Array"
6
6
  import * as Arr from "effect/Array"
7
7
  import * as Context from "effect/Context"
8
+ import type { DurationInput } from "effect/Duration"
8
9
  import * as Effect from "effect/Effect"
9
10
  import * as FiberId from "effect/FiberId"
10
11
  import * as Layer from "effect/Layer"
@@ -85,7 +86,9 @@ export const layerLoggerReplace: Layer.Layer<
85
86
  */
86
87
  export const layerLoggerProvider = (
87
88
  processor: Otel.LogRecordProcessor | NonEmptyReadonlyArray<Otel.LogRecordProcessor>,
88
- config?: Omit<Otel.LoggerProviderConfig, "resource">
89
+ config?: Omit<Otel.LoggerProviderConfig, "resource"> & {
90
+ readonly shutdownTimeout?: DurationInput | undefined
91
+ }
89
92
  ): Layer.Layer<OtelLoggerProvider, never, Resource> =>
90
93
  Layer.scoped(
91
94
  OtelLoggerProvider,
@@ -104,8 +107,12 @@ export const layerLoggerProvider = (
104
107
  return provider
105
108
  }),
106
109
  (provider) =>
107
- Effect.ignoreLogged(Effect.promise(
110
+ Effect.promise(
108
111
  () => provider.forceFlush().then(() => provider.shutdown())
109
- ))
112
+ ).pipe(
113
+ Effect.ignoreLogged,
114
+ Effect.interruptible,
115
+ Effect.timeoutOption(config?.shutdownTimeout ?? 3000)
116
+ )
110
117
  ))
111
118
  )
package/src/Metrics.ts CHANGED
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import type { MetricProducer, MetricReader } from "@opentelemetry/sdk-metrics"
5
5
  import type { NonEmptyReadonlyArray } from "effect/Array"
6
+ import type { DurationInput } from "effect/Duration"
6
7
  import type * as Effect from "effect/Effect"
7
8
  import type { LazyArg } from "effect/Function"
8
9
  import type { Layer } from "effect/Layer"
@@ -30,5 +31,10 @@ export const registerProducer: (
30
31
  * @category layers
31
32
  */
32
33
  export const layer: (
33
- evaluate: LazyArg<MetricReader | NonEmptyReadonlyArray<MetricReader>>
34
+ evaluate: LazyArg<MetricReader | NonEmptyReadonlyArray<MetricReader>>,
35
+ options?: {
36
+ readonly shutdownTimeout?:
37
+ | DurationInput
38
+ | undefined
39
+ }
34
40
  ) => Layer<never, never, Resource> = internal.layer
package/src/NodeSdk.ts CHANGED
@@ -7,6 +7,7 @@ import type { MetricReader } from "@opentelemetry/sdk-metrics"
7
7
  import type { SpanProcessor, TracerConfig } from "@opentelemetry/sdk-trace-base"
8
8
  import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node"
9
9
  import type { NonEmptyReadonlyArray } from "effect/Array"
10
+ import type { DurationInput } from "effect/Duration"
10
11
  import * as Effect from "effect/Effect"
11
12
  import { constant, type LazyArg } from "effect/Function"
12
13
  import * as Layer from "effect/Layer"
@@ -31,6 +32,7 @@ export interface Configuration {
31
32
  readonly serviceVersion?: string
32
33
  readonly attributes?: OtelApi.Attributes
33
34
  } | undefined
35
+ readonly shutdownTimeout?: DurationInput | undefined
34
36
  }
35
37
 
36
38
  /**
@@ -39,7 +41,9 @@ export interface Configuration {
39
41
  */
40
42
  export const layerTracerProvider = (
41
43
  processor: SpanProcessor | NonEmptyReadonlyArray<SpanProcessor>,
42
- config?: Omit<TracerConfig, "resource">
44
+ config?: Omit<TracerConfig, "resource"> & {
45
+ readonly shutdownTimeout?: DurationInput | undefined
46
+ }
43
47
  ): Layer.Layer<Tracer.OtelTracerProvider, never, Resource.Resource> =>
44
48
  Layer.scoped(
45
49
  Tracer.OtelTracerProvider,
@@ -55,7 +59,12 @@ export const layerTracerProvider = (
55
59
  })
56
60
  return provider
57
61
  }),
58
- (provider) => Effect.ignoreLogged(Effect.promise(() => provider.forceFlush().then(() => provider.shutdown())))
62
+ (provider) =>
63
+ Effect.promise(() => provider.forceFlush().then(() => provider.shutdown())).pipe(
64
+ Effect.ignoreLogged,
65
+ Effect.interruptible,
66
+ Effect.timeoutOption(config?.shutdownTimeout ?? 3000)
67
+ )
59
68
  )
60
69
  )
61
70
  )
@@ -87,17 +96,26 @@ export const layer: {
87
96
  const ResourceLive = Resource.layerFromEnv(config.resource && Resource.configToAttributes(config.resource))
88
97
 
89
98
  const TracerLive = isNonEmpty(config.spanProcessor)
90
- ? Layer.provide(Tracer.layer, layerTracerProvider(config.spanProcessor, config.tracerConfig))
99
+ ? Layer.provide(
100
+ Tracer.layer,
101
+ layerTracerProvider(config.spanProcessor, {
102
+ ...config.tracerConfig,
103
+ shutdownTimeout: config.shutdownTimeout
104
+ })
105
+ )
91
106
  : Layer.empty
92
107
 
93
108
  const MetricsLive = isNonEmpty(config.metricReader)
94
- ? Metrics.layer(constant(config.metricReader))
109
+ ? Metrics.layer(constant(config.metricReader), config)
95
110
  : Layer.empty
96
111
 
97
112
  const LoggerLive = isNonEmpty(config.logRecordProcessor)
98
113
  ? Layer.provide(
99
114
  Logger.layerLoggerAdd,
100
- Logger.layerLoggerProvider(config.logRecordProcessor, config.loggerProviderConfig)
115
+ Logger.layerLoggerProvider(config.logRecordProcessor, {
116
+ ...config.loggerProviderConfig,
117
+ shutdownTimeout: config.shutdownTimeout
118
+ })
101
119
  )
102
120
  : Layer.empty
103
121
 
package/src/Otlp.ts CHANGED
@@ -29,6 +29,7 @@ export const layer = (options: {
29
29
  readonly loggerExportInterval?: Duration.DurationInput | undefined
30
30
  readonly metricsExportInterval?: Duration.DurationInput | undefined
31
31
  readonly tracerExportInterval?: Duration.DurationInput | undefined
32
+ readonly shutdownTimeout?: Duration.DurationInput | undefined
32
33
  }): Layer.Layer<never, never, HttpClient.HttpClient> =>
33
34
  Layer.mergeAll(
34
35
  OtlpLogger.layer({
@@ -37,13 +38,15 @@ export const layer = (options: {
37
38
  resource: options.resource,
38
39
  headers: options.headers,
39
40
  exportInterval: options.loggerExportInterval,
40
- maxBatchSize: options.maxBatchSize
41
+ maxBatchSize: options.maxBatchSize,
42
+ shutdownTimeout: options.shutdownTimeout
41
43
  }),
42
44
  OtlpMetrics.layer({
43
45
  url: `${options.baseUrl}/v1/metrics`,
44
46
  resource: options.resource,
45
47
  headers: options.headers,
46
- exportInterval: options.metricsExportInterval
48
+ exportInterval: options.metricsExportInterval,
49
+ shutdownTimeout: options.shutdownTimeout
47
50
  }),
48
51
  OtlpTracer.layer({
49
52
  url: `${options.baseUrl}/v1/traces`,
@@ -51,6 +54,7 @@ export const layer = (options: {
51
54
  headers: options.headers,
52
55
  exportInterval: options.tracerExportInterval,
53
56
  maxBatchSize: options.maxBatchSize,
54
- context: options.tracerContext
57
+ context: options.tracerContext,
58
+ shutdownTimeout: options.shutdownTimeout
55
59
  })
56
60
  )
package/src/OtlpLogger.ts CHANGED
@@ -33,6 +33,7 @@ export const make: (
33
33
  readonly headers?: Headers.Input | undefined
34
34
  readonly exportInterval?: Duration.DurationInput | undefined
35
35
  readonly maxBatchSize?: number | undefined
36
+ readonly shutdownTimeout?: Duration.DurationInput | undefined
36
37
  }
37
38
  ) => Effect.Effect<
38
39
  Logger.Logger<unknown, void>,
@@ -58,7 +59,8 @@ export const make: (
58
59
  logRecords: data
59
60
  }]
60
61
  }]
61
- })
62
+ }),
63
+ shutdownTimeout: options.shutdownTimeout ?? Duration.seconds(3)
62
64
  })
63
65
 
64
66
  return Logger.make((options) => {
@@ -81,6 +83,7 @@ export const layer = (options: {
81
83
  readonly headers?: Headers.Input | undefined
82
84
  readonly exportInterval?: Duration.DurationInput | undefined
83
85
  readonly maxBatchSize?: number | undefined
86
+ readonly shutdownTimeout?: Duration.DurationInput | undefined
84
87
  }): Layer.Layer<never, never, HttpClient.HttpClient> =>
85
88
  options.replaceLogger ? Logger.replaceScoped(options.replaceLogger, make(options)) : Logger.addScoped(make(options))
86
89
 
@@ -29,6 +29,7 @@ export const make: (options: {
29
29
  }
30
30
  readonly headers?: Headers.Input | undefined
31
31
  readonly exportInterval?: Duration.DurationInput | undefined
32
+ readonly shutdownTimeout?: Duration.DurationInput | undefined
32
33
  }) => Effect.Effect<
33
34
  void,
34
35
  never,
@@ -270,7 +271,8 @@ export const make: (options: {
270
271
  headers: options.headers,
271
272
  maxBatchSize: "disabled",
272
273
  exportInterval: options.exportInterval ?? Duration.seconds(10),
273
- body: snapshot
274
+ body: snapshot,
275
+ shutdownTimeout: options.shutdownTimeout ?? Duration.seconds(3)
274
276
  })
275
277
  })
276
278
 
@@ -287,6 +289,7 @@ export const layer = (options: {
287
289
  }
288
290
  readonly headers?: Headers.Input | undefined
289
291
  readonly exportInterval?: Duration.DurationInput | undefined
292
+ readonly shutdownTimeout?: Duration.DurationInput | undefined
290
293
  }): Layer.Layer<never, never, HttpClient.HttpClient> => Layer.scopedDiscard(make(options))
291
294
 
292
295
  // internal
package/src/OtlpTracer.ts CHANGED
@@ -34,6 +34,7 @@ export const make: (
34
34
  readonly exportInterval?: Duration.DurationInput | undefined
35
35
  readonly maxBatchSize?: number | undefined
36
36
  readonly context?: (<X>(f: () => X, span: Tracer.AnySpan) => X) | undefined
37
+ readonly shutdownTimeout?: Duration.DurationInput | undefined
37
38
  }
38
39
  ) => Effect.Effect<
39
40
  Tracer.Tracer,
@@ -62,7 +63,8 @@ export const make: (
62
63
  }]
63
64
  }
64
65
  return data
65
- }
66
+ },
67
+ shutdownTimeout: options.shutdownTimeout ?? Duration.seconds(3)
66
68
  })
67
69
 
68
70
  return Tracer.make({
@@ -110,6 +112,7 @@ export const layer = (options: {
110
112
  readonly exportInterval?: Duration.DurationInput | undefined
111
113
  readonly maxBatchSize?: number | undefined
112
114
  readonly context?: (<X>(f: () => X, span: Tracer.AnySpan) => X) | undefined
115
+ readonly shutdownTimeout?: Duration.DurationInput | undefined
113
116
  }): Layer.Layer<never, never, HttpClient.HttpClient> => Layer.unwrapScoped(Effect.map(make(options), Layer.setTracer))
114
117
 
115
118
  // internal
@@ -13,6 +13,7 @@ import type {
13
13
  import { AggregationTemporality, DataPointType, InstrumentType } from "@opentelemetry/sdk-metrics"
14
14
  import type { InstrumentDescriptor } from "@opentelemetry/sdk-metrics/build/src/InstrumentDescriptor.js"
15
15
  import * as Arr from "effect/Array"
16
+ import type { DurationInput } from "effect/Duration"
16
17
  import * as Effect from "effect/Effect"
17
18
  import type { LazyArg } from "effect/Function"
18
19
  import * as Layer from "effect/Layer"
@@ -297,7 +298,10 @@ export const makeProducer = Effect.map(
297
298
  /** @internal */
298
299
  export const registerProducer = (
299
300
  self: MetricProducer,
300
- metricReader: LazyArg<MetricReader | Arr.NonEmptyReadonlyArray<MetricReader>>
301
+ metricReader: LazyArg<MetricReader | Arr.NonEmptyReadonlyArray<MetricReader>>,
302
+ options?: {
303
+ readonly shutdownTimeout?: DurationInput | undefined
304
+ }
301
305
  ) =>
302
306
  Effect.acquireRelease(
303
307
  Effect.sync(() => {
@@ -307,16 +311,22 @@ export const registerProducer = (
307
311
  return readers
308
312
  }),
309
313
  (readers) =>
310
- Effect.ignoreLogged(Effect.promise(() =>
314
+ Effect.promise(() =>
311
315
  Promise.all(
312
316
  readers.map((reader) => reader.shutdown())
313
317
  )
314
- ))
318
+ ).pipe(
319
+ Effect.ignoreLogged,
320
+ Effect.interruptible,
321
+ Effect.timeoutOption(options?.shutdownTimeout ?? 3000)
322
+ )
315
323
  )
316
324
 
317
325
  /** @internal */
318
- export const layer = (evaluate: LazyArg<MetricReader | Arr.NonEmptyReadonlyArray<MetricReader>>) =>
326
+ export const layer = (evaluate: LazyArg<MetricReader | Arr.NonEmptyReadonlyArray<MetricReader>>, options?: {
327
+ readonly shutdownTimeout?: DurationInput | undefined
328
+ }) =>
319
329
  Layer.scopedDiscard(Effect.flatMap(
320
330
  makeProducer,
321
- (producer) => registerProducer(producer, evaluate)
331
+ (producer) => registerProducer(producer, evaluate, options)
322
332
  ))
@@ -37,6 +37,7 @@ export const make: (
37
37
  readonly exportInterval: Duration.DurationInput
38
38
  readonly maxBatchSize: number | "disabled"
39
39
  readonly body: (data: Array<any>) => unknown
40
+ readonly shutdownTimeout: Duration.DurationInput
40
41
  }
41
42
  ) => Effect.Effect<
42
43
  { readonly push: (data: unknown) => void },
@@ -83,7 +84,14 @@ export const make: (
83
84
  )
84
85
  })
85
86
 
86
- yield* Scope.addFinalizer(scope, Effect.ignore(runExport))
87
+ yield* Scope.addFinalizer(
88
+ scope,
89
+ runExport.pipe(
90
+ Effect.ignore,
91
+ Effect.interruptible,
92
+ Effect.timeoutOption(options.shutdownTimeout)
93
+ )
94
+ )
87
95
 
88
96
  let disabled = false
89
97