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