@effect/opentelemetry 4.0.0-beta.1 → 4.0.0-beta.100

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 (52) hide show
  1. package/dist/NodeSdk.d.ts +89 -17
  2. package/dist/NodeSdk.d.ts.map +1 -1
  3. package/dist/NodeSdk.js +31 -8
  4. package/dist/NodeSdk.js.map +1 -1
  5. package/dist/OtelLogger.d.ts +99 -0
  6. package/dist/OtelLogger.d.ts.map +1 -0
  7. package/dist/OtelLogger.js +139 -0
  8. package/dist/OtelLogger.js.map +1 -0
  9. package/dist/{Metrics.d.ts → OtelMetrics.d.ts} +45 -21
  10. package/dist/OtelMetrics.d.ts.map +1 -0
  11. package/dist/{Metrics.js → OtelMetrics.js} +27 -12
  12. package/dist/OtelMetrics.js.map +1 -0
  13. package/dist/OtelTracer.d.ts +186 -0
  14. package/dist/OtelTracer.d.ts.map +1 -0
  15. package/dist/{Tracer.js → OtelTracer.js} +129 -72
  16. package/dist/OtelTracer.js.map +1 -0
  17. package/dist/Resource.d.ts +57 -13
  18. package/dist/Resource.d.ts.map +1 -1
  19. package/dist/Resource.js +48 -13
  20. package/dist/Resource.js.map +1 -1
  21. package/dist/WebSdk.d.ts +82 -13
  22. package/dist/WebSdk.d.ts.map +1 -1
  23. package/dist/WebSdk.js +28 -7
  24. package/dist/WebSdk.js.map +1 -1
  25. package/dist/index.d.ts +12 -12
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +12 -12
  28. package/dist/index.js.map +1 -1
  29. package/dist/internal/attributes.js +5 -0
  30. package/dist/internal/attributes.js.map +1 -1
  31. package/dist/internal/metrics.js +5 -5
  32. package/dist/internal/metrics.js.map +1 -1
  33. package/package.json +22 -18
  34. package/src/NodeSdk.ts +90 -18
  35. package/src/OtelLogger.ts +193 -0
  36. package/src/{Metrics.ts → OtelMetrics.ts} +45 -21
  37. package/src/{Tracer.ts → OtelTracer.ts} +161 -101
  38. package/src/Resource.ts +58 -14
  39. package/src/WebSdk.ts +83 -14
  40. package/src/index.ts +12 -12
  41. package/src/internal/attributes.ts +7 -0
  42. package/src/internal/metrics.ts +7 -7
  43. package/dist/Logger.d.ts +0 -48
  44. package/dist/Logger.d.ts.map +0 -1
  45. package/dist/Logger.js +0 -76
  46. package/dist/Logger.js.map +0 -1
  47. package/dist/Metrics.d.ts.map +0 -1
  48. package/dist/Metrics.js.map +0 -1
  49. package/dist/Tracer.d.ts +0 -129
  50. package/dist/Tracer.d.ts.map +0 -1
  51. package/dist/Tracer.js.map +0 -1
  52. package/src/Logger.ts +0 -124
package/src/Logger.ts DELETED
@@ -1,124 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import * as Otel from "@opentelemetry/sdk-logs"
5
- import type { NonEmptyReadonlyArray } from "effect/Array"
6
- import * as Arr from "effect/Array"
7
- import * as Clock from "effect/Clock"
8
- import type { DurationInput } from "effect/Duration"
9
- import * as Effect from "effect/Effect"
10
- import * as Layer from "effect/Layer"
11
- import * as Logger from "effect/Logger"
12
- import * as LogLevel from "effect/LogLevel"
13
- import * as Predicate from "effect/Predicate"
14
- import * as ServiceMap from "effect/ServiceMap"
15
- import * as Tracer from "effect/Tracer"
16
- import { unknownToAttributeValue } from "./internal/attributes.ts"
17
- import { Resource } from "./Resource.ts"
18
-
19
- /**
20
- * @since 1.0.0
21
- * @category Services
22
- */
23
- export class OtelLoggerProvider extends ServiceMap.Service<
24
- OtelLoggerProvider,
25
- Otel.LoggerProvider
26
- >()("@effect/opentelemetry/Logger/OtelLoggerProvider") {}
27
-
28
- /**
29
- * @since 1.0.0
30
- * @category Constructors
31
- */
32
- export const make: Effect.Effect<
33
- Logger.Logger<unknown, void>,
34
- never,
35
- OtelLoggerProvider
36
- > = Effect.gen(function*() {
37
- const loggerProvider = yield* OtelLoggerProvider
38
- const clock = yield* Clock.Clock
39
- const otelLogger = loggerProvider.getLogger("@effect/opentelemetry")
40
-
41
- return Logger.make((options) => {
42
- const attributes: Record<string, any> = {
43
- fiberId: options.fiber.id
44
- }
45
-
46
- const span = ServiceMap.getOrUndefined(options.fiber.services, Tracer.ParentSpan)
47
-
48
- if (Predicate.isNotUndefined(span)) {
49
- attributes.spanId = span.spanId
50
- attributes.traceId = span.traceId
51
- }
52
-
53
- // TODO: add back after log spans / annotations
54
- // for (const [key, value] of options.annotations) {
55
- // attributes[key] = unknownToAttributeValue(value)
56
- // }
57
- // const now = options.date.getTime()
58
- // for (const span of options.spans) {
59
- // attributes[`logSpan.${span.label}`] = `${now - span.startTime}ms`
60
- // }
61
-
62
- const message = Arr.ensure(options.message).map(unknownToAttributeValue)
63
- otelLogger.emit({
64
- body: message.length === 1 ? message[0] : message,
65
- severityText: options.logLevel,
66
- severityNumber: LogLevel.getOrdinal(options.logLevel),
67
- timestamp: options.date,
68
- observedTimestamp: clock.currentTimeMillisUnsafe(),
69
- attributes
70
- })
71
- })
72
- })
73
-
74
- /**
75
- * @since 1.0.0
76
- * @category Layers
77
- */
78
- export const layer = (options: {
79
- /**
80
- * If set to `true`, the OpenTelemetry logger will be merged with existing
81
- * loggers in the application.
82
- *
83
- * If set to `false`, the OpenTelemetry logger will replace all existing
84
- * loggers in the application.
85
- *
86
- * Defaults to `true`.
87
- */
88
- readonly mergeWithExisting?: boolean | undefined
89
- }): Layer.Layer<never, never, OtelLoggerProvider> =>
90
- Logger.layer([make], {
91
- mergeWithExisting: options.mergeWithExisting ?? true
92
- })
93
-
94
- /**
95
- * @since 1.0.0
96
- * @category Layers
97
- */
98
- export const layerLoggerProvider = (
99
- processor: Otel.LogRecordProcessor | NonEmptyReadonlyArray<Otel.LogRecordProcessor>,
100
- config?: Omit<Otel.LoggerProviderConfig, "resource"> & {
101
- readonly shutdownTimeout?: DurationInput | undefined
102
- }
103
- ): Layer.Layer<OtelLoggerProvider, never, Resource> =>
104
- Layer.effect(
105
- OtelLoggerProvider,
106
- Effect.gen(function*() {
107
- const resource = yield* Resource
108
- return yield* Effect.acquireRelease(
109
- Effect.sync(() =>
110
- new Otel.LoggerProvider({
111
- ...(config ?? undefined),
112
- processors: Arr.ensure(processor),
113
- resource
114
- })
115
- ),
116
- (provider) =>
117
- Effect.promise(() => provider.forceFlush().then(() => provider.shutdown())).pipe(
118
- Effect.ignore,
119
- Effect.interruptible,
120
- Effect.timeoutOption(config?.shutdownTimeout ?? 3000)
121
- )
122
- )
123
- })
124
- )