@effect/opentelemetry 0.60.0 → 4.0.0-beta.0

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 (160) 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/{esm/index.js → index.js} +4 -20
  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 +70 -118
  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 -26
  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/OtlpTracer/package.json +0 -6
  60. package/Resource/package.json +0 -6
  61. package/Tracer/package.json +0 -6
  62. package/WebSdk/package.json +0 -6
  63. package/dist/cjs/Logger.js +0 -85
  64. package/dist/cjs/Logger.js.map +0 -1
  65. package/dist/cjs/Metrics.js +0 -24
  66. package/dist/cjs/Metrics.js.map +0 -1
  67. package/dist/cjs/NodeSdk.js +0 -53
  68. package/dist/cjs/NodeSdk.js.map +0 -1
  69. package/dist/cjs/Otlp.js +0 -46
  70. package/dist/cjs/Otlp.js.map +0 -1
  71. package/dist/cjs/OtlpLogger.js +0 -158
  72. package/dist/cjs/OtlpLogger.js.map +0 -1
  73. package/dist/cjs/OtlpMetrics.js +0 -354
  74. package/dist/cjs/OtlpMetrics.js.map +0 -1
  75. package/dist/cjs/OtlpResource.js +0 -136
  76. package/dist/cjs/OtlpResource.js.map +0 -1
  77. package/dist/cjs/OtlpTracer.js +0 -229
  78. package/dist/cjs/OtlpTracer.js.map +0 -1
  79. package/dist/cjs/Resource.js +0 -75
  80. package/dist/cjs/Resource.js.map +0 -1
  81. package/dist/cjs/Tracer.js +0 -87
  82. package/dist/cjs/Tracer.js.map +0 -1
  83. package/dist/cjs/WebSdk.js +0 -42
  84. package/dist/cjs/WebSdk.js.map +0 -1
  85. package/dist/cjs/index.js +0 -30
  86. package/dist/cjs/index.js.map +0 -1
  87. package/dist/cjs/internal/metrics.js +0 -288
  88. package/dist/cjs/internal/metrics.js.map +0 -1
  89. package/dist/cjs/internal/otlpExporter.js +0 -81
  90. package/dist/cjs/internal/otlpExporter.js.map +0 -1
  91. package/dist/cjs/internal/tracer.js +0 -299
  92. package/dist/cjs/internal/tracer.js.map +0 -1
  93. package/dist/cjs/internal/utils.js +0 -34
  94. package/dist/cjs/internal/utils.js.map +0 -1
  95. package/dist/dts/Logger.d.ts.map +0 -1
  96. package/dist/dts/Metrics.d.ts +0 -29
  97. package/dist/dts/Metrics.d.ts.map +0 -1
  98. package/dist/dts/NodeSdk.d.ts.map +0 -1
  99. package/dist/dts/Otlp.d.ts +0 -31
  100. package/dist/dts/Otlp.d.ts.map +0 -1
  101. package/dist/dts/OtlpLogger.d.ts +0 -46
  102. package/dist/dts/OtlpLogger.d.ts.map +0 -1
  103. package/dist/dts/OtlpMetrics.d.ts +0 -40
  104. package/dist/dts/OtlpMetrics.d.ts.map +0 -1
  105. package/dist/dts/OtlpResource.d.ts +0 -104
  106. package/dist/dts/OtlpResource.d.ts.map +0 -1
  107. package/dist/dts/OtlpTracer.d.ts +0 -49
  108. package/dist/dts/OtlpTracer.d.ts.map +0 -1
  109. package/dist/dts/Resource.d.ts.map +0 -1
  110. package/dist/dts/Tracer.d.ts +0 -143
  111. package/dist/dts/Tracer.d.ts.map +0 -1
  112. package/dist/dts/WebSdk.d.ts.map +0 -1
  113. package/dist/dts/index.d.ts +0 -45
  114. package/dist/dts/index.d.ts.map +0 -1
  115. package/dist/dts/internal/otlpExporter.d.ts +0 -2
  116. package/dist/dts/internal/otlpExporter.d.ts.map +0 -1
  117. package/dist/dts/internal/tracer.d.ts +0 -2
  118. package/dist/dts/internal/tracer.d.ts.map +0 -1
  119. package/dist/dts/internal/utils.d.ts +0 -2
  120. package/dist/dts/internal/utils.d.ts.map +0 -1
  121. package/dist/esm/Logger.js +0 -75
  122. package/dist/esm/Logger.js.map +0 -1
  123. package/dist/esm/Metrics.js +0 -17
  124. package/dist/esm/Metrics.js.map +0 -1
  125. package/dist/esm/NodeSdk.js.map +0 -1
  126. package/dist/esm/Otlp.js +0 -38
  127. package/dist/esm/Otlp.js.map +0 -1
  128. package/dist/esm/OtlpLogger.js +0 -150
  129. package/dist/esm/OtlpLogger.js.map +0 -1
  130. package/dist/esm/OtlpMetrics.js +0 -346
  131. package/dist/esm/OtlpMetrics.js.map +0 -1
  132. package/dist/esm/OtlpResource.js +0 -124
  133. package/dist/esm/OtlpResource.js.map +0 -1
  134. package/dist/esm/OtlpTracer.js +0 -221
  135. package/dist/esm/OtlpTracer.js.map +0 -1
  136. package/dist/esm/Resource.js.map +0 -1
  137. package/dist/esm/Tracer.js +0 -80
  138. package/dist/esm/Tracer.js.map +0 -1
  139. package/dist/esm/WebSdk.js +0 -33
  140. package/dist/esm/WebSdk.js.map +0 -1
  141. package/dist/esm/index.js.map +0 -1
  142. package/dist/esm/internal/metrics.js +0 -278
  143. package/dist/esm/internal/metrics.js.map +0 -1
  144. package/dist/esm/internal/otlpExporter.js +0 -74
  145. package/dist/esm/internal/otlpExporter.js.map +0 -1
  146. package/dist/esm/internal/tracer.js +0 -290
  147. package/dist/esm/internal/tracer.js.map +0 -1
  148. package/dist/esm/internal/utils.js +0 -23
  149. package/dist/esm/internal/utils.js.map +0 -1
  150. package/dist/esm/package.json +0 -4
  151. package/index/package.json +0 -6
  152. package/src/Otlp.ts +0 -66
  153. package/src/OtlpLogger.ts +0 -258
  154. package/src/OtlpMetrics.ts +0 -571
  155. package/src/OtlpResource.ts +0 -232
  156. package/src/OtlpTracer.ts +0 -349
  157. package/src/internal/otlpExporter.ts +0 -124
  158. package/src/internal/tracer.ts +0 -437
  159. package/src/internal/utils.ts +0 -31
  160. /package/dist/{dts/internal → internal}/metrics.d.ts +0 -0
package/src/OtlpLogger.ts DELETED
@@ -1,258 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import type * as Headers from "@effect/platform/Headers"
5
- import type * as HttpClient from "@effect/platform/HttpClient"
6
- import * as Arr from "effect/Array"
7
- import * as Cause from "effect/Cause"
8
- import * as Context from "effect/Context"
9
- import * as Duration from "effect/Duration"
10
- import * as Effect from "effect/Effect"
11
- import * as FiberId from "effect/FiberId"
12
- import * as FiberRef from "effect/FiberRef"
13
- import * as FiberRefs from "effect/FiberRefs"
14
- import type * as Layer from "effect/Layer"
15
- import * as Logger from "effect/Logger"
16
- import type * as LogLevel from "effect/LogLevel"
17
- import * as Option from "effect/Option"
18
- import type * as Scope from "effect/Scope"
19
- import * as Tracer from "effect/Tracer"
20
- import * as Exporter from "./internal/otlpExporter.js"
21
- import type { AnyValue, Fixed64, KeyValue, Resource } from "./OtlpResource.js"
22
- import * as OtlpResource from "./OtlpResource.js"
23
-
24
- /**
25
- * @since 1.0.0
26
- * @category Constructors
27
- */
28
- export const make: (
29
- options: {
30
- readonly url: string
31
- readonly resource?: {
32
- readonly serviceName?: string | undefined
33
- readonly serviceVersion?: string | undefined
34
- readonly attributes?: Record<string, unknown>
35
- } | undefined
36
- readonly headers?: Headers.Input | undefined
37
- readonly exportInterval?: Duration.DurationInput | undefined
38
- readonly maxBatchSize?: number | undefined
39
- readonly shutdownTimeout?: Duration.DurationInput | undefined
40
- readonly excludeLogSpans?: boolean | undefined
41
- }
42
- ) => Effect.Effect<
43
- Logger.Logger<unknown, void>,
44
- never,
45
- HttpClient.HttpClient | Scope.Scope
46
- > = Effect.fnUntraced(function*(options) {
47
- const otelResource = yield* OtlpResource.fromConfig(options.resource)
48
- const scope: IInstrumentationScope = {
49
- name: OtlpResource.unsafeServiceName(otelResource)
50
- }
51
-
52
- const exporter = yield* Exporter.make({
53
- label: "OtlpLogger",
54
- url: options.url,
55
- headers: options.headers,
56
- maxBatchSize: options.maxBatchSize ?? 1000,
57
- exportInterval: options.exportInterval ?? Duration.seconds(1),
58
- body: (data): IExportLogsServiceRequest => ({
59
- resourceLogs: [{
60
- resource: otelResource,
61
- scopeLogs: [{
62
- scope,
63
- logRecords: data
64
- }]
65
- }]
66
- }),
67
- shutdownTimeout: options.shutdownTimeout ?? Duration.seconds(3)
68
- })
69
-
70
- const opts = {
71
- excludeLogSpans: options.excludeLogSpans ?? false
72
- }
73
- return Logger.make((options) => {
74
- exporter.push(makeLogRecord(options, opts))
75
- })
76
- })
77
-
78
- /**
79
- * @since 1.0.0
80
- * @category Layers
81
- */
82
- export const layer = (options: {
83
- readonly url: string
84
- readonly resource?: {
85
- readonly serviceName?: string | undefined
86
- readonly serviceVersion?: string | undefined
87
- readonly attributes?: Record<string, unknown>
88
- } | undefined
89
- readonly replaceLogger?: Logger.Logger<any, any> | undefined
90
- readonly headers?: Headers.Input | undefined
91
- readonly exportInterval?: Duration.DurationInput | undefined
92
- readonly maxBatchSize?: number | undefined
93
- readonly shutdownTimeout?: Duration.DurationInput | undefined
94
- readonly excludeLogSpans?: boolean | undefined
95
- }): Layer.Layer<never, never, HttpClient.HttpClient> =>
96
- options.replaceLogger ? Logger.replaceScoped(options.replaceLogger, make(options)) : Logger.addScoped(make(options))
97
-
98
- // internal
99
-
100
- const makeLogRecord = (options: Logger.Logger.Options<unknown>, opts: {
101
- readonly excludeLogSpans: boolean
102
- }): ILogRecord => {
103
- const now = options.date.getTime()
104
- const nanosString = `${now}000000`
105
-
106
- const attributes = OtlpResource.entriesToAttributes(options.annotations)
107
- attributes.push({
108
- key: "fiberId",
109
- value: { stringValue: FiberId.threadName(options.fiberId) }
110
- })
111
- if (!opts.excludeLogSpans) {
112
- for (const span of options.spans) {
113
- attributes.push({
114
- key: `logSpan.${span.label}`,
115
- value: { stringValue: `${now - span.startTime}ms` }
116
- })
117
- }
118
- }
119
- if (!Cause.isEmpty(options.cause)) {
120
- attributes.push({
121
- key: "log.error",
122
- value: { stringValue: Cause.pretty(options.cause, { renderErrorCause: true }) }
123
- })
124
- }
125
-
126
- const message = Arr.ensure(options.message)
127
- const maybeSpan = Context.getOption(
128
- FiberRefs.getOrDefault(options.context, FiberRef.currentContext),
129
- Tracer.ParentSpan
130
- )
131
-
132
- const logRecord: ILogRecord = {
133
- severityNumber: logLevelToSeverityNumber(options.logLevel),
134
- severityText: options.logLevel.label,
135
- timeUnixNano: nanosString,
136
- observedTimeUnixNano: nanosString,
137
- attributes,
138
- body: OtlpResource.unknownToAttributeValue(message.length === 1 ? message[0] : message),
139
- droppedAttributesCount: 0
140
- }
141
-
142
- if (Option.isSome(maybeSpan)) {
143
- logRecord.traceId = maybeSpan.value.traceId
144
- logRecord.spanId = maybeSpan.value.spanId
145
- }
146
-
147
- return logRecord
148
- }
149
-
150
- /** Properties of an ExportLogsServiceRequest. */
151
- interface IExportLogsServiceRequest {
152
- /** ExportLogsServiceRequest resourceLogs */
153
- resourceLogs?: Array<IResourceLogs>
154
- }
155
-
156
- /** Properties of an InstrumentationScope. */
157
- interface IInstrumentationScope {
158
- /** InstrumentationScope name */
159
- name: string
160
- /** InstrumentationScope version */
161
- version?: string
162
- /** InstrumentationScope attributes */
163
- attributes?: Array<KeyValue>
164
- /** InstrumentationScope droppedAttributesCount */
165
- droppedAttributesCount?: number
166
- }
167
- /** Properties of a ResourceLogs. */
168
- interface IResourceLogs {
169
- /** ResourceLogs resource */
170
- resource?: Resource
171
- /** ResourceLogs scopeLogs */
172
- scopeLogs: Array<IScopeLogs>
173
- /** ResourceLogs schemaUrl */
174
- schemaUrl?: string
175
- }
176
- /** Properties of an ScopeLogs. */
177
- interface IScopeLogs {
178
- /** IScopeLogs scope */
179
- scope?: IInstrumentationScope
180
- /** IScopeLogs logRecords */
181
- logRecords?: Array<ILogRecord>
182
- /** IScopeLogs schemaUrl */
183
- schemaUrl?: string | null
184
- }
185
- /** Properties of a LogRecord. */
186
- interface ILogRecord {
187
- /** LogRecord timeUnixNano */
188
- timeUnixNano: Fixed64
189
- /** LogRecord observedTimeUnixNano */
190
- observedTimeUnixNano: Fixed64
191
- /** LogRecord severityNumber */
192
- severityNumber?: ESeverityNumber
193
- /** LogRecord severityText */
194
- severityText?: string
195
- /** LogRecord body */
196
- body?: AnyValue
197
- /** LogRecord attributes */
198
- attributes: Array<KeyValue>
199
- /** LogRecord droppedAttributesCount */
200
- droppedAttributesCount: number
201
- /** LogRecord flags */
202
- flags?: number
203
- /** LogRecord traceId */
204
- traceId?: string | Uint8Array
205
- /** LogRecord spanId */
206
- spanId?: string | Uint8Array
207
- }
208
-
209
- const logLevelToSeverityNumber = (logLevel: LogLevel.LogLevel): ESeverityNumber => {
210
- switch (logLevel._tag) {
211
- case "Trace":
212
- return ESeverityNumber.SEVERITY_NUMBER_TRACE
213
- case "Debug":
214
- return ESeverityNumber.SEVERITY_NUMBER_DEBUG
215
- case "Info":
216
- return ESeverityNumber.SEVERITY_NUMBER_INFO
217
- case "Warning":
218
- return ESeverityNumber.SEVERITY_NUMBER_WARN
219
- case "Error":
220
- return ESeverityNumber.SEVERITY_NUMBER_ERROR
221
- case "Fatal":
222
- return ESeverityNumber.SEVERITY_NUMBER_FATAL
223
- default:
224
- return ESeverityNumber.SEVERITY_NUMBER_UNSPECIFIED
225
- }
226
- }
227
-
228
- /**
229
- * Numerical value of the severity, normalized to values described in Log Data Model.
230
- */
231
- const enum ESeverityNumber {
232
- /** Unspecified. Do NOT use as default */
233
- SEVERITY_NUMBER_UNSPECIFIED = 0,
234
- SEVERITY_NUMBER_TRACE = 1,
235
- SEVERITY_NUMBER_TRACE2 = 2,
236
- SEVERITY_NUMBER_TRACE3 = 3,
237
- SEVERITY_NUMBER_TRACE4 = 4,
238
- SEVERITY_NUMBER_DEBUG = 5,
239
- SEVERITY_NUMBER_DEBUG2 = 6,
240
- SEVERITY_NUMBER_DEBUG3 = 7,
241
- SEVERITY_NUMBER_DEBUG4 = 8,
242
- SEVERITY_NUMBER_INFO = 9,
243
- SEVERITY_NUMBER_INFO2 = 10,
244
- SEVERITY_NUMBER_INFO3 = 11,
245
- SEVERITY_NUMBER_INFO4 = 12,
246
- SEVERITY_NUMBER_WARN = 13,
247
- SEVERITY_NUMBER_WARN2 = 14,
248
- SEVERITY_NUMBER_WARN3 = 15,
249
- SEVERITY_NUMBER_WARN4 = 16,
250
- SEVERITY_NUMBER_ERROR = 17,
251
- SEVERITY_NUMBER_ERROR2 = 18,
252
- SEVERITY_NUMBER_ERROR3 = 19,
253
- SEVERITY_NUMBER_ERROR4 = 20,
254
- SEVERITY_NUMBER_FATAL = 21,
255
- SEVERITY_NUMBER_FATAL2 = 22,
256
- SEVERITY_NUMBER_FATAL3 = 23,
257
- SEVERITY_NUMBER_FATAL4 = 24
258
- }