@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.
- package/LICENSE +1 -1
- package/dist/{dts/Logger.d.ts → Logger.d.ts} +19 -13
- package/dist/Logger.d.ts.map +1 -0
- package/dist/Logger.js +76 -0
- package/dist/Logger.js.map +1 -0
- package/dist/Metrics.d.ts +76 -0
- package/dist/Metrics.d.ts.map +1 -0
- package/dist/Metrics.js +59 -0
- package/dist/Metrics.js.map +1 -0
- package/dist/{dts/NodeSdk.d.ts → NodeSdk.d.ts} +12 -9
- package/dist/NodeSdk.d.ts.map +1 -0
- package/dist/{esm/NodeSdk.js → NodeSdk.js} +23 -14
- package/dist/NodeSdk.js.map +1 -0
- package/dist/{dts/Resource.d.ts → Resource.d.ts} +10 -13
- package/dist/Resource.d.ts.map +1 -0
- package/dist/{esm/Resource.js → Resource.js} +12 -13
- package/dist/Resource.js.map +1 -0
- package/dist/Tracer.d.ts +129 -0
- package/dist/Tracer.d.ts.map +1 -0
- package/dist/Tracer.js +391 -0
- package/dist/Tracer.js.map +1 -0
- package/dist/{dts/WebSdk.d.ts → WebSdk.d.ts} +12 -9
- package/dist/WebSdk.d.ts.map +1 -0
- package/dist/WebSdk.js +41 -0
- package/dist/WebSdk.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/attributes.d.ts +2 -0
- package/dist/internal/attributes.d.ts.map +1 -0
- package/dist/internal/attributes.js +19 -0
- package/dist/internal/attributes.js.map +1 -0
- package/dist/{dts/internal → internal}/metrics.d.ts.map +1 -1
- package/dist/internal/metrics.js +406 -0
- package/dist/internal/metrics.js.map +1 -0
- package/dist/internal/utilities.d.ts +2 -0
- package/dist/internal/utilities.d.ts.map +1 -0
- package/dist/internal/utilities.js +3 -0
- package/dist/internal/utilities.js.map +1 -0
- package/package.json +86 -119
- package/src/Logger.ts +52 -55
- package/src/Metrics.ts +92 -18
- package/src/NodeSdk.ts +67 -64
- package/src/Resource.ts +16 -24
- package/src/Tracer.ts +469 -78
- package/src/WebSdk.ts +59 -51
- package/src/index.ts +7 -36
- package/src/internal/attributes.ts +21 -0
- package/src/internal/metrics.ts +381 -250
- package/src/internal/utilities.ts +5 -0
- package/Logger/package.json +0 -6
- package/Metrics/package.json +0 -6
- package/NodeSdk/package.json +0 -6
- package/Otlp/package.json +0 -6
- package/OtlpLogger/package.json +0 -6
- package/OtlpMetrics/package.json +0 -6
- package/OtlpResource/package.json +0 -6
- package/OtlpSerialization/package.json +0 -6
- package/OtlpTracer/package.json +0 -6
- package/Resource/package.json +0 -6
- package/Tracer/package.json +0 -6
- package/WebSdk/package.json +0 -6
- package/dist/cjs/Logger.js +0 -85
- package/dist/cjs/Logger.js.map +0 -1
- package/dist/cjs/Metrics.js +0 -24
- package/dist/cjs/Metrics.js.map +0 -1
- package/dist/cjs/NodeSdk.js +0 -53
- package/dist/cjs/NodeSdk.js.map +0 -1
- package/dist/cjs/Otlp.js +0 -64
- package/dist/cjs/Otlp.js.map +0 -1
- package/dist/cjs/OtlpLogger.js +0 -163
- package/dist/cjs/OtlpLogger.js.map +0 -1
- package/dist/cjs/OtlpMetrics.js +0 -357
- package/dist/cjs/OtlpMetrics.js.map +0 -1
- package/dist/cjs/OtlpResource.js +0 -136
- package/dist/cjs/OtlpResource.js.map +0 -1
- package/dist/cjs/OtlpSerialization.js +0 -55
- package/dist/cjs/OtlpSerialization.js.map +0 -1
- package/dist/cjs/OtlpTracer.js +0 -231
- package/dist/cjs/OtlpTracer.js.map +0 -1
- package/dist/cjs/Resource.js +0 -75
- package/dist/cjs/Resource.js.map +0 -1
- package/dist/cjs/Tracer.js +0 -87
- package/dist/cjs/Tracer.js.map +0 -1
- package/dist/cjs/WebSdk.js +0 -42
- package/dist/cjs/WebSdk.js.map +0 -1
- package/dist/cjs/index.js +0 -32
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/internal/metrics.js +0 -288
- package/dist/cjs/internal/metrics.js.map +0 -1
- package/dist/cjs/internal/otlpExporter.js +0 -83
- package/dist/cjs/internal/otlpExporter.js.map +0 -1
- package/dist/cjs/internal/otlpProtobuf.js +0 -430
- package/dist/cjs/internal/otlpProtobuf.js.map +0 -1
- package/dist/cjs/internal/protobuf.js +0 -183
- package/dist/cjs/internal/protobuf.js.map +0 -1
- package/dist/cjs/internal/tracer.js +0 -306
- package/dist/cjs/internal/tracer.js.map +0 -1
- package/dist/cjs/internal/utils.js +0 -34
- package/dist/cjs/internal/utils.js.map +0 -1
- package/dist/dts/Logger.d.ts.map +0 -1
- package/dist/dts/Metrics.d.ts +0 -29
- package/dist/dts/Metrics.d.ts.map +0 -1
- package/dist/dts/NodeSdk.d.ts.map +0 -1
- package/dist/dts/Otlp.d.ts +0 -80
- package/dist/dts/Otlp.d.ts.map +0 -1
- package/dist/dts/OtlpLogger.d.ts +0 -47
- package/dist/dts/OtlpLogger.d.ts.map +0 -1
- package/dist/dts/OtlpMetrics.d.ts +0 -41
- package/dist/dts/OtlpMetrics.d.ts.map +0 -1
- package/dist/dts/OtlpResource.d.ts +0 -104
- package/dist/dts/OtlpResource.d.ts.map +0 -1
- package/dist/dts/OtlpSerialization.d.ts +0 -53
- package/dist/dts/OtlpSerialization.d.ts.map +0 -1
- package/dist/dts/OtlpTracer.d.ts +0 -50
- package/dist/dts/OtlpTracer.d.ts.map +0 -1
- package/dist/dts/Resource.d.ts.map +0 -1
- package/dist/dts/Tracer.d.ts +0 -143
- package/dist/dts/Tracer.d.ts.map +0 -1
- package/dist/dts/WebSdk.d.ts.map +0 -1
- package/dist/dts/index.d.ts +0 -54
- package/dist/dts/index.d.ts.map +0 -1
- package/dist/dts/internal/otlpExporter.d.ts +0 -2
- package/dist/dts/internal/otlpExporter.d.ts.map +0 -1
- package/dist/dts/internal/otlpProtobuf.d.ts +0 -501
- package/dist/dts/internal/otlpProtobuf.d.ts.map +0 -1
- package/dist/dts/internal/protobuf.d.ts +0 -100
- package/dist/dts/internal/protobuf.d.ts.map +0 -1
- package/dist/dts/internal/tracer.d.ts +0 -2
- package/dist/dts/internal/tracer.d.ts.map +0 -1
- package/dist/dts/internal/utils.d.ts +0 -2
- package/dist/dts/internal/utils.d.ts.map +0 -1
- package/dist/esm/Logger.js +0 -75
- package/dist/esm/Logger.js.map +0 -1
- package/dist/esm/Metrics.js +0 -17
- package/dist/esm/Metrics.js.map +0 -1
- package/dist/esm/NodeSdk.js.map +0 -1
- package/dist/esm/Otlp.js +0 -56
- package/dist/esm/Otlp.js.map +0 -1
- package/dist/esm/OtlpLogger.js +0 -155
- package/dist/esm/OtlpLogger.js.map +0 -1
- package/dist/esm/OtlpMetrics.js +0 -349
- package/dist/esm/OtlpMetrics.js.map +0 -1
- package/dist/esm/OtlpResource.js +0 -124
- package/dist/esm/OtlpResource.js.map +0 -1
- package/dist/esm/OtlpSerialization.js +0 -46
- package/dist/esm/OtlpSerialization.js.map +0 -1
- package/dist/esm/OtlpTracer.js +0 -223
- package/dist/esm/OtlpTracer.js.map +0 -1
- package/dist/esm/Resource.js.map +0 -1
- package/dist/esm/Tracer.js +0 -80
- package/dist/esm/Tracer.js.map +0 -1
- package/dist/esm/WebSdk.js +0 -33
- package/dist/esm/WebSdk.js.map +0 -1
- package/dist/esm/index.js +0 -54
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/internal/metrics.js +0 -278
- package/dist/esm/internal/metrics.js.map +0 -1
- package/dist/esm/internal/otlpExporter.js +0 -76
- package/dist/esm/internal/otlpExporter.js.map +0 -1
- package/dist/esm/internal/otlpProtobuf.js +0 -396
- package/dist/esm/internal/otlpProtobuf.js.map +0 -1
- package/dist/esm/internal/protobuf.js +0 -155
- package/dist/esm/internal/protobuf.js.map +0 -1
- package/dist/esm/internal/tracer.js +0 -297
- package/dist/esm/internal/tracer.js.map +0 -1
- package/dist/esm/internal/utils.js +0 -23
- package/dist/esm/internal/utils.js.map +0 -1
- package/dist/esm/package.json +0 -4
- package/index/package.json +0 -6
- package/src/Otlp.ts +0 -118
- package/src/OtlpLogger.ts +0 -263
- package/src/OtlpMetrics.ts +0 -575
- package/src/OtlpResource.ts +0 -232
- package/src/OtlpSerialization.ts +0 -64
- package/src/OtlpTracer.ts +0 -352
- package/src/internal/otlpExporter.ts +0 -126
- package/src/internal/otlpProtobuf.ts +0 -729
- package/src/internal/protobuf.ts +0 -219
- package/src/internal/tracer.ts +0 -448
- package/src/internal/utils.ts +0 -31
- /package/dist/{dts/internal → internal}/metrics.d.ts +0 -0
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import * as Headers from "@effect/platform/Headers"
|
|
2
|
-
import type * as HttpBody from "@effect/platform/HttpBody"
|
|
3
|
-
import * as HttpClient from "@effect/platform/HttpClient"
|
|
4
|
-
import * as HttpClientError from "@effect/platform/HttpClientError"
|
|
5
|
-
import * as HttpClientRequest from "@effect/platform/HttpClientRequest"
|
|
6
|
-
import * as Duration from "effect/Duration"
|
|
7
|
-
import * as Effect from "effect/Effect"
|
|
8
|
-
import * as FiberSet from "effect/FiberSet"
|
|
9
|
-
import * as Num from "effect/Number"
|
|
10
|
-
import * as Option from "effect/Option"
|
|
11
|
-
import * as Schedule from "effect/Schedule"
|
|
12
|
-
import * as Scope from "effect/Scope"
|
|
13
|
-
|
|
14
|
-
const policy = Schedule.forever.pipe(
|
|
15
|
-
Schedule.passthrough,
|
|
16
|
-
Schedule.addDelay((error) => {
|
|
17
|
-
if (
|
|
18
|
-
HttpClientError.isHttpClientError(error)
|
|
19
|
-
&& error._tag === "ResponseError"
|
|
20
|
-
&& error.response.status === 429
|
|
21
|
-
) {
|
|
22
|
-
const retryAfter = Option.fromNullable(error.response.headers["retry-after"]).pipe(
|
|
23
|
-
Option.flatMap(Num.parse),
|
|
24
|
-
Option.getOrElse(() => 5)
|
|
25
|
-
)
|
|
26
|
-
return Duration.seconds(retryAfter)
|
|
27
|
-
}
|
|
28
|
-
return Duration.seconds(1)
|
|
29
|
-
})
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
/** @internal */
|
|
33
|
-
export const make: (
|
|
34
|
-
options: {
|
|
35
|
-
readonly url: string
|
|
36
|
-
readonly headers: Headers.Input | undefined
|
|
37
|
-
readonly label: string
|
|
38
|
-
readonly exportInterval: Duration.DurationInput
|
|
39
|
-
readonly maxBatchSize: number | "disabled"
|
|
40
|
-
readonly body: (data: Array<any>) => HttpBody.HttpBody
|
|
41
|
-
readonly shutdownTimeout: Duration.DurationInput
|
|
42
|
-
}
|
|
43
|
-
) => Effect.Effect<
|
|
44
|
-
{ readonly push: (data: unknown) => void },
|
|
45
|
-
never,
|
|
46
|
-
HttpClient.HttpClient | Scope.Scope
|
|
47
|
-
> = Effect.fnUntraced(function*(options) {
|
|
48
|
-
const clock = yield* Effect.clock
|
|
49
|
-
const scope = yield* Effect.scope
|
|
50
|
-
const exportInterval = Duration.decode(options.exportInterval)
|
|
51
|
-
let disabledUntil: number | undefined = undefined
|
|
52
|
-
|
|
53
|
-
const client = HttpClient.filterStatusOk(yield* HttpClient.HttpClient).pipe(
|
|
54
|
-
HttpClient.retryTransient({ schedule: policy, times: 3 })
|
|
55
|
-
)
|
|
56
|
-
|
|
57
|
-
let headers = Headers.unsafeFromRecord({
|
|
58
|
-
"user-agent": `effect-opentelemetry-${options.label}/0.0.0`
|
|
59
|
-
})
|
|
60
|
-
if (options.headers) {
|
|
61
|
-
headers = Headers.merge(Headers.fromInput(options.headers), headers)
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
const request = HttpClientRequest.post(options.url, { headers })
|
|
65
|
-
let buffer: Array<any> = []
|
|
66
|
-
const runExport = Effect.suspend(() => {
|
|
67
|
-
if (disabledUntil !== undefined && clock.unsafeCurrentTimeMillis() < disabledUntil) {
|
|
68
|
-
return Effect.void
|
|
69
|
-
} else if (disabledUntil !== undefined) {
|
|
70
|
-
disabledUntil = undefined
|
|
71
|
-
}
|
|
72
|
-
const items = buffer
|
|
73
|
-
if (options.maxBatchSize !== "disabled") {
|
|
74
|
-
if (buffer.length === 0) {
|
|
75
|
-
return Effect.void
|
|
76
|
-
}
|
|
77
|
-
buffer = []
|
|
78
|
-
}
|
|
79
|
-
const body = options.body(items)
|
|
80
|
-
const requestWithBody = HttpClientRequest.setBody(request, body)
|
|
81
|
-
|
|
82
|
-
return client.execute(requestWithBody).pipe(
|
|
83
|
-
Effect.asVoid,
|
|
84
|
-
Effect.withTracerEnabled(false)
|
|
85
|
-
)
|
|
86
|
-
}).pipe(
|
|
87
|
-
Effect.catchAllCause((cause) => {
|
|
88
|
-
if (disabledUntil !== undefined) return Effect.void
|
|
89
|
-
disabledUntil = clock.unsafeCurrentTimeMillis() + Duration.toMillis("1 minute")
|
|
90
|
-
return Effect.logDebug(`Disabling ${options.label} for 60 seconds`, cause)
|
|
91
|
-
})
|
|
92
|
-
)
|
|
93
|
-
|
|
94
|
-
yield* Scope.addFinalizer(
|
|
95
|
-
scope,
|
|
96
|
-
runExport.pipe(
|
|
97
|
-
Effect.ignore,
|
|
98
|
-
Effect.interruptible,
|
|
99
|
-
Effect.timeoutOption(options.shutdownTimeout)
|
|
100
|
-
)
|
|
101
|
-
)
|
|
102
|
-
|
|
103
|
-
yield* Effect.sleep(exportInterval).pipe(
|
|
104
|
-
Effect.zipRight(runExport),
|
|
105
|
-
Effect.forever,
|
|
106
|
-
Effect.annotateLogs({
|
|
107
|
-
package: "@effect/opentelemetry",
|
|
108
|
-
module: options.label
|
|
109
|
-
}),
|
|
110
|
-
Effect.forkIn(scope),
|
|
111
|
-
Effect.interruptible
|
|
112
|
-
)
|
|
113
|
-
|
|
114
|
-
const runFork = yield* FiberSet.makeRuntime().pipe(
|
|
115
|
-
Effect.interruptible
|
|
116
|
-
)
|
|
117
|
-
return {
|
|
118
|
-
push(data) {
|
|
119
|
-
if (disabledUntil !== undefined) return
|
|
120
|
-
buffer.push(data)
|
|
121
|
-
if (options.maxBatchSize !== "disabled" && buffer.length >= options.maxBatchSize) {
|
|
122
|
-
runFork(runExport)
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
})
|