@effect/opentelemetry 0.61.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.
- 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
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
3
|
+
Copyright (c) 2023 Effectful Technologies Inc
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -3,37 +3,43 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import * as Otel from "@opentelemetry/sdk-logs";
|
|
5
5
|
import type { NonEmptyReadonlyArray } from "effect/Array";
|
|
6
|
-
import * as Context from "effect/Context";
|
|
7
6
|
import type { DurationInput } from "effect/Duration";
|
|
8
7
|
import * as Effect from "effect/Effect";
|
|
9
8
|
import * as Layer from "effect/Layer";
|
|
10
9
|
import * as Logger from "effect/Logger";
|
|
11
|
-
import
|
|
12
|
-
|
|
10
|
+
import * as ServiceMap from "effect/ServiceMap";
|
|
11
|
+
import { Resource } from "./Resource.ts";
|
|
12
|
+
declare const OtelLoggerProvider_base: ServiceMap.ServiceClass<OtelLoggerProvider, "@effect/opentelemetry/Logger/OtelLoggerProvider", Otel.LoggerProvider>;
|
|
13
13
|
/**
|
|
14
14
|
* @since 1.0.0
|
|
15
|
-
* @category
|
|
15
|
+
* @category Services
|
|
16
16
|
*/
|
|
17
17
|
export declare class OtelLoggerProvider extends OtelLoggerProvider_base {
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
20
|
* @since 1.0.0
|
|
21
|
-
* @category
|
|
21
|
+
* @category Constructors
|
|
22
22
|
*/
|
|
23
23
|
export declare const make: Effect.Effect<Logger.Logger<unknown, void>, never, OtelLoggerProvider>;
|
|
24
24
|
/**
|
|
25
25
|
* @since 1.0.0
|
|
26
|
-
* @category
|
|
26
|
+
* @category Layers
|
|
27
27
|
*/
|
|
28
|
-
export declare const
|
|
28
|
+
export declare const layer: (options: {
|
|
29
|
+
/**
|
|
30
|
+
* If set to `true`, the OpenTelemetry logger will be merged with existing
|
|
31
|
+
* loggers in the application.
|
|
32
|
+
*
|
|
33
|
+
* If set to `false`, the OpenTelemetry logger will replace all existing
|
|
34
|
+
* loggers in the application.
|
|
35
|
+
*
|
|
36
|
+
* Defaults to `true`.
|
|
37
|
+
*/
|
|
38
|
+
readonly mergeWithExisting?: boolean | undefined;
|
|
39
|
+
}) => Layer.Layer<never, never, OtelLoggerProvider>;
|
|
29
40
|
/**
|
|
30
41
|
* @since 1.0.0
|
|
31
|
-
* @category
|
|
32
|
-
*/
|
|
33
|
-
export declare const layerLoggerReplace: Layer.Layer<never, never, OtelLoggerProvider>;
|
|
34
|
-
/**
|
|
35
|
-
* @since 1.0.0
|
|
36
|
-
* @category layers
|
|
42
|
+
* @category Layers
|
|
37
43
|
*/
|
|
38
44
|
export declare const layerLoggerProvider: (processor: Otel.LogRecordProcessor | NonEmptyReadonlyArray<Otel.LogRecordProcessor>, config?: Omit<Otel.LoggerProviderConfig, "resource"> & {
|
|
39
45
|
readonly shutdownTimeout?: DurationInput | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,IAAI,MAAM,yBAAyB,CAAA;AAC/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAGzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAG/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;;AAExC;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,uBAGc;CAAG;AAEzD;;;GAGG;AACH,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,CAC9B,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,EAC5B,KAAK,EACL,kBAAkB,CAqClB,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,KAAK,GAAI,SAAS;IAC7B;;;;;;;;OAQG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CACjD,KAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,kBAAkB,CAG5C,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC9B,WAAW,IAAI,CAAC,kBAAkB,GAAG,qBAAqB,CAAC,IAAI,CAAC,kBAAkB,CAAC,EACnF,SAAS,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC,GAAG;IACrD,QAAQ,CAAC,eAAe,CAAC,EAAE,aAAa,GAAG,SAAS,CAAA;CACrD,KACA,KAAK,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,EAAE,QAAQ,CAqB/C,CAAA"}
|
package/dist/Logger.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Otel from "@opentelemetry/sdk-logs";
|
|
5
|
+
import * as Arr from "effect/Array";
|
|
6
|
+
import * as Clock from "effect/Clock";
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import * as Layer from "effect/Layer";
|
|
9
|
+
import * as Logger from "effect/Logger";
|
|
10
|
+
import * as LogLevel from "effect/LogLevel";
|
|
11
|
+
import * as Predicate from "effect/Predicate";
|
|
12
|
+
import * as ServiceMap from "effect/ServiceMap";
|
|
13
|
+
import * as Tracer from "effect/Tracer";
|
|
14
|
+
import { unknownToAttributeValue } from "./internal/attributes.js";
|
|
15
|
+
import { Resource } from "./Resource.js";
|
|
16
|
+
/**
|
|
17
|
+
* @since 1.0.0
|
|
18
|
+
* @category Services
|
|
19
|
+
*/
|
|
20
|
+
export class OtelLoggerProvider extends /*#__PURE__*/ServiceMap.Service()("@effect/opentelemetry/Logger/OtelLoggerProvider") {}
|
|
21
|
+
/**
|
|
22
|
+
* @since 1.0.0
|
|
23
|
+
* @category Constructors
|
|
24
|
+
*/
|
|
25
|
+
export const make = /*#__PURE__*/Effect.gen(function* () {
|
|
26
|
+
const loggerProvider = yield* OtelLoggerProvider;
|
|
27
|
+
const clock = yield* Clock.Clock;
|
|
28
|
+
const otelLogger = loggerProvider.getLogger("@effect/opentelemetry");
|
|
29
|
+
return Logger.make(options => {
|
|
30
|
+
const attributes = {
|
|
31
|
+
fiberId: options.fiber.id
|
|
32
|
+
};
|
|
33
|
+
const span = ServiceMap.getOrUndefined(options.fiber.services, Tracer.ParentSpan);
|
|
34
|
+
if (Predicate.isNotUndefined(span)) {
|
|
35
|
+
attributes.spanId = span.spanId;
|
|
36
|
+
attributes.traceId = span.traceId;
|
|
37
|
+
}
|
|
38
|
+
// TODO: add back after log spans / annotations
|
|
39
|
+
// for (const [key, value] of options.annotations) {
|
|
40
|
+
// attributes[key] = unknownToAttributeValue(value)
|
|
41
|
+
// }
|
|
42
|
+
// const now = options.date.getTime()
|
|
43
|
+
// for (const span of options.spans) {
|
|
44
|
+
// attributes[`logSpan.${span.label}`] = `${now - span.startTime}ms`
|
|
45
|
+
// }
|
|
46
|
+
const message = Arr.ensure(options.message).map(unknownToAttributeValue);
|
|
47
|
+
otelLogger.emit({
|
|
48
|
+
body: message.length === 1 ? message[0] : message,
|
|
49
|
+
severityText: options.logLevel,
|
|
50
|
+
severityNumber: LogLevel.getOrdinal(options.logLevel),
|
|
51
|
+
timestamp: options.date,
|
|
52
|
+
observedTimestamp: clock.currentTimeMillisUnsafe(),
|
|
53
|
+
attributes
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
/**
|
|
58
|
+
* @since 1.0.0
|
|
59
|
+
* @category Layers
|
|
60
|
+
*/
|
|
61
|
+
export const layer = options => Logger.layer([make], {
|
|
62
|
+
mergeWithExisting: options.mergeWithExisting ?? true
|
|
63
|
+
});
|
|
64
|
+
/**
|
|
65
|
+
* @since 1.0.0
|
|
66
|
+
* @category Layers
|
|
67
|
+
*/
|
|
68
|
+
export const layerLoggerProvider = (processor, config) => Layer.effect(OtelLoggerProvider, Effect.gen(function* () {
|
|
69
|
+
const resource = yield* Resource;
|
|
70
|
+
return yield* Effect.acquireRelease(Effect.sync(() => new Otel.LoggerProvider({
|
|
71
|
+
...(config ?? undefined),
|
|
72
|
+
processors: Arr.ensure(processor),
|
|
73
|
+
resource
|
|
74
|
+
})), provider => Effect.promise(() => provider.forceFlush().then(() => provider.shutdown())).pipe(Effect.ignore, Effect.interruptible, Effect.timeoutOption(config?.shutdownTimeout ?? 3000)));
|
|
75
|
+
}));
|
|
76
|
+
//# sourceMappingURL=Logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger.js","names":["Otel","Arr","Clock","Effect","Layer","Logger","LogLevel","Predicate","ServiceMap","Tracer","unknownToAttributeValue","Resource","OtelLoggerProvider","Service","make","gen","loggerProvider","clock","otelLogger","getLogger","options","attributes","fiberId","fiber","id","span","getOrUndefined","services","ParentSpan","isNotUndefined","spanId","traceId","message","ensure","map","emit","body","length","severityText","logLevel","severityNumber","getOrdinal","timestamp","date","observedTimestamp","currentTimeMillisUnsafe","layer","mergeWithExisting","layerLoggerProvider","processor","config","effect","resource","acquireRelease","sync","LoggerProvider","undefined","processors","provider","promise","forceFlush","then","shutdown","pipe","ignore","interruptible","timeoutOption","shutdownTimeout"],"sources":["../src/Logger.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,IAAI,MAAM,yBAAyB;AAE/C,OAAO,KAAKC,GAAG,MAAM,cAAc;AACnC,OAAO,KAAKC,KAAK,MAAM,cAAc;AAErC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,SAAS,MAAM,kBAAkB;AAC7C,OAAO,KAAKC,UAAU,MAAM,mBAAmB;AAC/C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,uBAAuB,QAAQ,0BAA0B;AAClE,SAASC,QAAQ,QAAQ,eAAe;AAExC;;;;AAIA,OAAM,MAAOC,kBAAmB,sBAAQJ,UAAU,CAACK,OAAO,EAGvD,CAAC,iDAAiD,CAAC;AAEtD;;;;AAIA,OAAO,MAAMC,IAAI,gBAIbX,MAAM,CAACY,GAAG,CAAC,aAAS;EACtB,MAAMC,cAAc,GAAG,OAAOJ,kBAAkB;EAChD,MAAMK,KAAK,GAAG,OAAOf,KAAK,CAACA,KAAK;EAChC,MAAMgB,UAAU,GAAGF,cAAc,CAACG,SAAS,CAAC,uBAAuB,CAAC;EAEpE,OAAOd,MAAM,CAACS,IAAI,CAAEM,OAAO,IAAI;IAC7B,MAAMC,UAAU,GAAwB;MACtCC,OAAO,EAAEF,OAAO,CAACG,KAAK,CAACC;KACxB;IAED,MAAMC,IAAI,GAAGjB,UAAU,CAACkB,cAAc,CAACN,OAAO,CAACG,KAAK,CAACI,QAAQ,EAAElB,MAAM,CAACmB,UAAU,CAAC;IAEjF,IAAIrB,SAAS,CAACsB,cAAc,CAACJ,IAAI,CAAC,EAAE;MAClCJ,UAAU,CAACS,MAAM,GAAGL,IAAI,CAACK,MAAM;MAC/BT,UAAU,CAACU,OAAO,GAAGN,IAAI,CAACM,OAAO;IACnC;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA,MAAMC,OAAO,GAAG/B,GAAG,CAACgC,MAAM,CAACb,OAAO,CAACY,OAAO,CAAC,CAACE,GAAG,CAACxB,uBAAuB,CAAC;IACxEQ,UAAU,CAACiB,IAAI,CAAC;MACdC,IAAI,EAAEJ,OAAO,CAACK,MAAM,KAAK,CAAC,GAAGL,OAAO,CAAC,CAAC,CAAC,GAAGA,OAAO;MACjDM,YAAY,EAAElB,OAAO,CAACmB,QAAQ;MAC9BC,cAAc,EAAElC,QAAQ,CAACmC,UAAU,CAACrB,OAAO,CAACmB,QAAQ,CAAC;MACrDG,SAAS,EAAEtB,OAAO,CAACuB,IAAI;MACvBC,iBAAiB,EAAE3B,KAAK,CAAC4B,uBAAuB,EAAE;MAClDxB;KACD,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF;;;;AAIA,OAAO,MAAMyB,KAAK,GAAI1B,OAWrB,IACCf,MAAM,CAACyC,KAAK,CAAC,CAAChC,IAAI,CAAC,EAAE;EACnBiC,iBAAiB,EAAE3B,OAAO,CAAC2B,iBAAiB,IAAI;CACjD,CAAC;AAEJ;;;;AAIA,OAAO,MAAMC,mBAAmB,GAAGA,CACjCC,SAAmF,EACnFC,MAEC,KAED9C,KAAK,CAAC+C,MAAM,CACVvC,kBAAkB,EAClBT,MAAM,CAACY,GAAG,CAAC,aAAS;EAClB,MAAMqC,QAAQ,GAAG,OAAOzC,QAAQ;EAChC,OAAO,OAAOR,MAAM,CAACkD,cAAc,CACjClD,MAAM,CAACmD,IAAI,CAAC,MACV,IAAItD,IAAI,CAACuD,cAAc,CAAC;IACtB,IAAIL,MAAM,IAAIM,SAAS,CAAC;IACxBC,UAAU,EAAExD,GAAG,CAACgC,MAAM,CAACgB,SAAS,CAAC;IACjCG;GACD,CAAC,CACH,EACAM,QAAQ,IACPvD,MAAM,CAACwD,OAAO,CAAC,MAAMD,QAAQ,CAACE,UAAU,EAAE,CAACC,IAAI,CAAC,MAAMH,QAAQ,CAACI,QAAQ,EAAE,CAAC,CAAC,CAACC,IAAI,CAC9E5D,MAAM,CAAC6D,MAAM,EACb7D,MAAM,CAAC8D,aAAa,EACpB9D,MAAM,CAAC+D,aAAa,CAAChB,MAAM,EAAEiB,eAAe,IAAI,IAAI,CAAC,CACtD,CACJ;AACH,CAAC,CAAC,CACH","ignoreList":[]}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import type { MetricProducer, MetricReader } from "@opentelemetry/sdk-metrics";
|
|
5
|
+
import type * as Arr from "effect/Array";
|
|
6
|
+
import type { DurationInput } from "effect/Duration";
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import type { LazyArg } from "effect/Function";
|
|
9
|
+
import * as Layer from "effect/Layer";
|
|
10
|
+
import type * as Scope from "effect/Scope";
|
|
11
|
+
import { Resource } from "./Resource.ts";
|
|
12
|
+
/**
|
|
13
|
+
* Determines how metric values relate to the time interval over which they
|
|
14
|
+
* are aggregated.
|
|
15
|
+
*
|
|
16
|
+
* - `cumulative`: Reports total since a fixed start time. Each data point
|
|
17
|
+
* depends on all previous measurements. This is the default behavior.
|
|
18
|
+
*
|
|
19
|
+
* - `delta`: Reports changes since the last export. Each interval is
|
|
20
|
+
* independent with no dependency on previous measurements.
|
|
21
|
+
*
|
|
22
|
+
* @since 1.0.0
|
|
23
|
+
* @category Models
|
|
24
|
+
*/
|
|
25
|
+
export type TemporalityPreference = "cumulative" | "delta";
|
|
26
|
+
/**
|
|
27
|
+
* Creates an OpenTelemetry metric producer from Effect metrics.
|
|
28
|
+
*
|
|
29
|
+
* @since 1.0.0
|
|
30
|
+
* @category Constructors
|
|
31
|
+
*/
|
|
32
|
+
export declare const makeProducer: (temporality?: TemporalityPreference) => Effect.Effect<MetricProducer, never, Resource>;
|
|
33
|
+
/**
|
|
34
|
+
* Registers a metric producer with one or more metric readers.
|
|
35
|
+
*
|
|
36
|
+
* @since 1.0.0
|
|
37
|
+
* @category Constructors
|
|
38
|
+
*/
|
|
39
|
+
export declare const registerProducer: (self: MetricProducer, metricReader: LazyArg<MetricReader | Arr.NonEmptyReadonlyArray<MetricReader>>, options?: {
|
|
40
|
+
readonly shutdownTimeout?: DurationInput | undefined;
|
|
41
|
+
}) => Effect.Effect<Array<any>, never, Scope.Scope>;
|
|
42
|
+
/**
|
|
43
|
+
* Creates a Layer that registers a metric producer with metric readers.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* import { Metrics } from "@effect/opentelemetry"
|
|
48
|
+
* import { PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics"
|
|
49
|
+
* import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http"
|
|
50
|
+
*
|
|
51
|
+
* const metricExporter = new OTLPMetricExporter({ url: "<your-otel-url>" })
|
|
52
|
+
*
|
|
53
|
+
* // Use delta temporality for backends like Datadog or Dynatrace
|
|
54
|
+
* const metricsLayer = Metrics.layer(
|
|
55
|
+
* () => new PeriodicExportingMetricReader({
|
|
56
|
+
* exporter: metricExporter,
|
|
57
|
+
* exportIntervalMillis: 10000
|
|
58
|
+
* }),
|
|
59
|
+
* { temporality: "delta" }
|
|
60
|
+
* )
|
|
61
|
+
*
|
|
62
|
+
* // Use cumulative temporality for backends like Prometheus (default)
|
|
63
|
+
* const cumulativeLayer = Metrics.layer(
|
|
64
|
+
* () => new PeriodicExportingMetricReader({ exporter: metricExporter }),
|
|
65
|
+
* { temporality: "cumulative" }
|
|
66
|
+
* )
|
|
67
|
+
* ```
|
|
68
|
+
*
|
|
69
|
+
* @since 1.0.0
|
|
70
|
+
* @category Layers
|
|
71
|
+
*/
|
|
72
|
+
export declare const layer: (evaluate: LazyArg<MetricReader | Arr.NonEmptyReadonlyArray<MetricReader>>, options?: {
|
|
73
|
+
readonly shutdownTimeout?: DurationInput | undefined;
|
|
74
|
+
readonly temporality?: TemporalityPreference | undefined;
|
|
75
|
+
}) => Layer.Layer<never, never, Resource>;
|
|
76
|
+
//# sourceMappingURL=Metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Metrics.d.ts","sourceRoot":"","sources":["../src/Metrics.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9E,OAAO,KAAK,KAAK,GAAG,MAAM,cAAc,CAAA;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,qBAAqB,GAAG,YAAY,GAAG,OAAO,CAAA;AAE1D;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAI,cAAc,qBAAqB,KAAG,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,CAK5G,CAAA;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,cAAc,EACpB,cAAc,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,EAC7E,UAAU;IACR,QAAQ,CAAC,eAAe,CAAC,EAAE,aAAa,GAAG,SAAS,CAAA;CACrD,KACA,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAkB5C,CAAA;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,KAAK,GAChB,UAAU,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,EACzE,UAAU;IACR,QAAQ,CAAC,eAAe,CAAC,EAAE,aAAa,GAAG,SAAS,CAAA;IACpD,QAAQ,CAAC,WAAW,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAA;CACzD,KACA,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAIjC,CAAA"}
|
package/dist/Metrics.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Layer from "effect/Layer";
|
|
3
|
+
import { MetricProducerImpl } from "./internal/metrics.js";
|
|
4
|
+
import { Resource } from "./Resource.js";
|
|
5
|
+
/**
|
|
6
|
+
* Creates an OpenTelemetry metric producer from Effect metrics.
|
|
7
|
+
*
|
|
8
|
+
* @since 1.0.0
|
|
9
|
+
* @category Constructors
|
|
10
|
+
*/
|
|
11
|
+
export const makeProducer = temporality => Effect.gen(function* () {
|
|
12
|
+
const resource = yield* Resource;
|
|
13
|
+
const services = yield* Effect.services();
|
|
14
|
+
return new MetricProducerImpl(resource, services, temporality);
|
|
15
|
+
});
|
|
16
|
+
/**
|
|
17
|
+
* Registers a metric producer with one or more metric readers.
|
|
18
|
+
*
|
|
19
|
+
* @since 1.0.0
|
|
20
|
+
* @category Constructors
|
|
21
|
+
*/
|
|
22
|
+
export const registerProducer = (self, metricReader, options) => Effect.acquireRelease(Effect.sync(() => {
|
|
23
|
+
const reader = metricReader();
|
|
24
|
+
const readers = Array.isArray(reader) ? reader : [reader];
|
|
25
|
+
readers.forEach(reader => reader.setMetricProducer(self));
|
|
26
|
+
return readers;
|
|
27
|
+
}), readers => Effect.promise(() => Promise.all(readers.map(reader => reader.shutdown()))).pipe(Effect.ignore, Effect.interruptible, Effect.timeoutOption(options?.shutdownTimeout ?? 3000)));
|
|
28
|
+
/**
|
|
29
|
+
* Creates a Layer that registers a metric producer with metric readers.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* import { Metrics } from "@effect/opentelemetry"
|
|
34
|
+
* import { PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics"
|
|
35
|
+
* import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http"
|
|
36
|
+
*
|
|
37
|
+
* const metricExporter = new OTLPMetricExporter({ url: "<your-otel-url>" })
|
|
38
|
+
*
|
|
39
|
+
* // Use delta temporality for backends like Datadog or Dynatrace
|
|
40
|
+
* const metricsLayer = Metrics.layer(
|
|
41
|
+
* () => new PeriodicExportingMetricReader({
|
|
42
|
+
* exporter: metricExporter,
|
|
43
|
+
* exportIntervalMillis: 10000
|
|
44
|
+
* }),
|
|
45
|
+
* { temporality: "delta" }
|
|
46
|
+
* )
|
|
47
|
+
*
|
|
48
|
+
* // Use cumulative temporality for backends like Prometheus (default)
|
|
49
|
+
* const cumulativeLayer = Metrics.layer(
|
|
50
|
+
* () => new PeriodicExportingMetricReader({ exporter: metricExporter }),
|
|
51
|
+
* { temporality: "cumulative" }
|
|
52
|
+
* )
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* @since 1.0.0
|
|
56
|
+
* @category Layers
|
|
57
|
+
*/
|
|
58
|
+
export const layer = (evaluate, options) => Layer.effectDiscard(Effect.flatMap(makeProducer(options?.temporality), producer => registerProducer(producer, evaluate, options)));
|
|
59
|
+
//# sourceMappingURL=Metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Metrics.js","names":["Effect","Layer","MetricProducerImpl","Resource","makeProducer","temporality","gen","resource","services","registerProducer","self","metricReader","options","acquireRelease","sync","reader","readers","Array","isArray","forEach","setMetricProducer","promise","Promise","all","map","shutdown","pipe","ignore","interruptible","timeoutOption","shutdownTimeout","layer","evaluate","effectDiscard","flatMap","producer"],"sources":["../src/Metrics.ts"],"sourcesContent":[null],"mappings":"AAMA,OAAO,KAAKA,MAAM,MAAM,eAAe;AAEvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AAErC,SAASC,kBAAkB,QAAQ,uBAAuB;AAC1D,SAASC,QAAQ,QAAQ,eAAe;AAiBxC;;;;;;AAMA,OAAO,MAAMC,YAAY,GAAIC,WAAmC,IAC9DL,MAAM,CAACM,GAAG,CAAC,aAAS;EAClB,MAAMC,QAAQ,GAAG,OAAOJ,QAAQ;EAChC,MAAMK,QAAQ,GAAG,OAAOR,MAAM,CAACQ,QAAQ,EAAS;EAChD,OAAO,IAAIN,kBAAkB,CAACK,QAAQ,EAAEC,QAAQ,EAAEH,WAAW,CAAC;AAChE,CAAC,CAAC;AAEJ;;;;;;AAMA,OAAO,MAAMI,gBAAgB,GAAGA,CAC9BC,IAAoB,EACpBC,YAA6E,EAC7EC,OAEC,KAEDZ,MAAM,CAACa,cAAc,CACnBb,MAAM,CAACc,IAAI,CAAC,MAAK;EACf,MAAMC,MAAM,GAAGJ,YAAY,EAAE;EAC7B,MAAMK,OAAO,GAAwBC,KAAK,CAACC,OAAO,CAACH,MAAM,CAAC,GAAGA,MAAM,GAAG,CAACA,MAAM,CAAQ;EACrFC,OAAO,CAACG,OAAO,CAAEJ,MAAM,IAAKA,MAAM,CAACK,iBAAiB,CAACV,IAAI,CAAC,CAAC;EAC3D,OAAOM,OAAO;AAChB,CAAC,CAAC,EACDA,OAAO,IACNhB,MAAM,CAACqB,OAAO,CAAC,MACbC,OAAO,CAACC,GAAG,CACTP,OAAO,CAACQ,GAAG,CAAET,MAAM,IAAKA,MAAM,CAACU,QAAQ,EAAE,CAAC,CAC3C,CACF,CAACC,IAAI,CACJ1B,MAAM,CAAC2B,MAAM,EACb3B,MAAM,CAAC4B,aAAa,EACpB5B,MAAM,CAAC6B,aAAa,CAACjB,OAAO,EAAEkB,eAAe,IAAI,IAAI,CAAC,CACvD,CACJ;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,OAAO,MAAMC,KAAK,GAAGA,CACnBC,QAAyE,EACzEpB,OAGC,KAEDX,KAAK,CAACgC,aAAa,CAACjC,MAAM,CAACkC,OAAO,CAChC9B,YAAY,CAACQ,OAAO,EAAEP,WAAW,CAAC,EACjC8B,QAAQ,IAAK1B,gBAAgB,CAAC0B,QAAQ,EAAEH,QAAQ,EAAEpB,OAAO,CAAC,CAC5D,CAAC","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
|
-
import type * as
|
|
4
|
+
import type * as Otel from "@opentelemetry/api";
|
|
5
5
|
import type { LoggerProviderConfig, LogRecordProcessor } from "@opentelemetry/sdk-logs";
|
|
6
6
|
import type { MetricReader } from "@opentelemetry/sdk-metrics";
|
|
7
7
|
import type { SpanProcessor, TracerConfig } from "@opentelemetry/sdk-trace-base";
|
|
@@ -10,45 +10,48 @@ import type { DurationInput } from "effect/Duration";
|
|
|
10
10
|
import * as Effect from "effect/Effect";
|
|
11
11
|
import { type LazyArg } from "effect/Function";
|
|
12
12
|
import * as Layer from "effect/Layer";
|
|
13
|
-
import * as
|
|
14
|
-
import * as
|
|
13
|
+
import * as Metrics from "./Metrics.ts";
|
|
14
|
+
import * as Resource from "./Resource.ts";
|
|
15
|
+
import * as Tracer from "./Tracer.ts";
|
|
15
16
|
/**
|
|
16
17
|
* @since 1.0.0
|
|
17
|
-
* @category
|
|
18
|
+
* @category Models
|
|
18
19
|
*/
|
|
19
20
|
export interface Configuration {
|
|
20
21
|
readonly spanProcessor?: SpanProcessor | ReadonlyArray<SpanProcessor> | undefined;
|
|
21
22
|
readonly tracerConfig?: Omit<TracerConfig, "resource"> | undefined;
|
|
22
23
|
readonly metricReader?: MetricReader | ReadonlyArray<MetricReader> | undefined;
|
|
24
|
+
readonly metricTemporality?: Metrics.TemporalityPreference | undefined;
|
|
23
25
|
readonly logRecordProcessor?: LogRecordProcessor | ReadonlyArray<LogRecordProcessor> | undefined;
|
|
24
26
|
readonly loggerProviderConfig?: Omit<LoggerProviderConfig, "resource"> | undefined;
|
|
27
|
+
readonly loggerMergeWithExisting?: boolean | undefined;
|
|
25
28
|
readonly resource?: {
|
|
26
29
|
readonly serviceName: string;
|
|
27
30
|
readonly serviceVersion?: string;
|
|
28
|
-
readonly attributes?:
|
|
31
|
+
readonly attributes?: Otel.Attributes;
|
|
29
32
|
} | undefined;
|
|
30
33
|
readonly shutdownTimeout?: DurationInput | undefined;
|
|
31
34
|
}
|
|
32
35
|
/**
|
|
33
36
|
* @since 1.0.0
|
|
34
|
-
* @category
|
|
37
|
+
* @category Layers
|
|
35
38
|
*/
|
|
36
39
|
export declare const layerTracerProvider: (processor: SpanProcessor | NonEmptyReadonlyArray<SpanProcessor>, config?: Omit<TracerConfig, "resource"> & {
|
|
37
40
|
readonly shutdownTimeout?: DurationInput | undefined;
|
|
38
41
|
}) => Layer.Layer<Tracer.OtelTracerProvider, never, Resource.Resource>;
|
|
39
42
|
/**
|
|
40
43
|
* @since 1.0.0
|
|
41
|
-
* @category
|
|
44
|
+
* @category Layers
|
|
42
45
|
*/
|
|
43
46
|
export declare const layer: {
|
|
44
47
|
/**
|
|
45
48
|
* @since 1.0.0
|
|
46
|
-
* @category
|
|
49
|
+
* @category Layers
|
|
47
50
|
*/
|
|
48
51
|
(evaluate: LazyArg<Configuration>): Layer.Layer<Resource.Resource>;
|
|
49
52
|
/**
|
|
50
53
|
* @since 1.0.0
|
|
51
|
-
* @category
|
|
54
|
+
* @category Layers
|
|
52
55
|
*/
|
|
53
56
|
<R, E>(evaluate: Effect.Effect<Configuration, E, R>): Layer.Layer<Resource.Resource, E, R>;
|
|
54
57
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeSdk.d.ts","sourceRoot":"","sources":["../src/NodeSdk.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAEhF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAGrC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,SAAS,CAAA;IACjF,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,SAAS,CAAA;IAClE,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC,GAAG,SAAS,CAAA;IAC9E,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAA;IACtE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,GAAG,aAAa,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAAA;IAChG,QAAQ,CAAC,oBAAoB,CAAC,EAAE,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC,GAAG,SAAS,CAAA;IAClF,QAAQ,CAAC,uBAAuB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACtD,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAClB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;QAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;QAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,CAAA;KACtC,GAAG,SAAS,CAAA;IACb,QAAQ,CAAC,eAAe,CAAC,EAAE,aAAa,GAAG,SAAS,CAAA;CACrD;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC9B,WAAW,aAAa,GAAG,qBAAqB,CAAC,aAAa,CAAC,EAC/D,SAAS,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG;IACxC,QAAQ,CAAC,eAAe,CAAC,EAAE,aAAa,GAAG,SAAS,CAAA;CACrD,KACA,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAsB/D,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE;IAClB;;;OAGG;IACH,CAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAClE;;;OAGG;IACH,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;CA2CzF,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAuB,CAAA"}
|
|
@@ -2,35 +2,44 @@ import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
|
|
|
2
2
|
import * as Effect from "effect/Effect";
|
|
3
3
|
import { constant } from "effect/Function";
|
|
4
4
|
import * as Layer from "effect/Layer";
|
|
5
|
-
import { isNonEmpty } from "./internal/
|
|
5
|
+
import { isNonEmpty } from "./internal/utilities.js";
|
|
6
6
|
import * as Logger from "./Logger.js";
|
|
7
7
|
import * as Metrics from "./Metrics.js";
|
|
8
8
|
import * as Resource from "./Resource.js";
|
|
9
9
|
import * as Tracer from "./Tracer.js";
|
|
10
10
|
/**
|
|
11
11
|
* @since 1.0.0
|
|
12
|
-
* @category
|
|
12
|
+
* @category Layers
|
|
13
13
|
*/
|
|
14
|
-
export const layerTracerProvider = (processor, config) => Layer.
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
})
|
|
14
|
+
export const layerTracerProvider = (processor, config) => Layer.effect(Tracer.OtelTracerProvider, Effect.gen(function* () {
|
|
15
|
+
const resource = yield* Resource.Resource;
|
|
16
|
+
return yield* Effect.acquireRelease(Effect.sync(() => {
|
|
17
|
+
const provider = new NodeTracerProvider({
|
|
18
|
+
...(config ?? undefined),
|
|
19
|
+
resource,
|
|
20
|
+
spanProcessors: Array.isArray(processor) ? processor : [processor]
|
|
21
|
+
});
|
|
22
|
+
return provider;
|
|
23
|
+
}), provider => Effect.promise(() => provider.forceFlush().then(() => provider.shutdown())).pipe(Effect.ignore, Effect.interruptible, Effect.timeoutOption(config?.shutdownTimeout ?? 3000)));
|
|
24
|
+
}));
|
|
22
25
|
/**
|
|
23
26
|
* @since 1.0.0
|
|
24
|
-
* @category
|
|
27
|
+
* @category Layers
|
|
25
28
|
*/
|
|
26
|
-
export const layer = evaluate => Layer.
|
|
29
|
+
export const layer = evaluate => Layer.unwrap(Effect.gen(function* () {
|
|
30
|
+
const config = yield* Effect.isEffect(evaluate) ? evaluate : Effect.sync(evaluate);
|
|
27
31
|
const ResourceLive = Resource.layerFromEnv(config.resource && Resource.configToAttributes(config.resource));
|
|
28
32
|
const TracerLive = isNonEmpty(config.spanProcessor) ? Layer.provide(Tracer.layer, layerTracerProvider(config.spanProcessor, {
|
|
29
33
|
...config.tracerConfig,
|
|
30
34
|
shutdownTimeout: config.shutdownTimeout
|
|
31
35
|
})) : Layer.empty;
|
|
32
|
-
const MetricsLive = isNonEmpty(config.metricReader) ? Metrics.layer(constant(config.metricReader),
|
|
33
|
-
|
|
36
|
+
const MetricsLive = isNonEmpty(config.metricReader) ? Metrics.layer(constant(config.metricReader), {
|
|
37
|
+
shutdownTimeout: config.shutdownTimeout,
|
|
38
|
+
temporality: config.metricTemporality
|
|
39
|
+
}) : Layer.empty;
|
|
40
|
+
const LoggerLive = isNonEmpty(config.logRecordProcessor) ? Layer.provide(Logger.layer({
|
|
41
|
+
mergeWithExisting: config.loggerMergeWithExisting
|
|
42
|
+
}), Logger.layerLoggerProvider(config.logRecordProcessor, {
|
|
34
43
|
...config.loggerProviderConfig,
|
|
35
44
|
shutdownTimeout: config.shutdownTimeout
|
|
36
45
|
})) : Layer.empty;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeSdk.js","names":["NodeTracerProvider","Effect","constant","Layer","isNonEmpty","Logger","Metrics","Resource","Tracer","layerTracerProvider","processor","config","effect","OtelTracerProvider","gen","resource","acquireRelease","sync","provider","undefined","spanProcessors","Array","isArray","promise","forceFlush","then","shutdown","pipe","ignore","interruptible","timeoutOption","shutdownTimeout","layer","evaluate","unwrap","isEffect","ResourceLive","layerFromEnv","configToAttributes","TracerLive","spanProcessor","provide","tracerConfig","empty","MetricsLive","metricReader","temporality","metricTemporality","LoggerLive","logRecordProcessor","mergeWithExisting","loggerMergeWithExisting","layerLoggerProvider","loggerProviderConfig","mergeAll","provideMerge","layerEmpty"],"sources":["../src/NodeSdk.ts"],"sourcesContent":[null],"mappings":"AAOA,SAASA,kBAAkB,QAAQ,+BAA+B;AAGlE,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,QAAQ,QAAsB,iBAAiB;AACxD,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,SAASC,UAAU,QAAQ,yBAAyB;AACpD,OAAO,KAAKC,MAAM,MAAM,aAAa;AACrC,OAAO,KAAKC,OAAO,MAAM,cAAc;AACvC,OAAO,KAAKC,QAAQ,MAAM,eAAe;AACzC,OAAO,KAAKC,MAAM,MAAM,aAAa;AAsBrC;;;;AAIA,OAAO,MAAMC,mBAAmB,GAAGA,CACjCC,SAA+D,EAC/DC,MAEC,KAEDR,KAAK,CAACS,MAAM,CACVJ,MAAM,CAACK,kBAAkB,EACzBZ,MAAM,CAACa,GAAG,CAAC,aAAS;EAClB,MAAMC,QAAQ,GAAG,OAAOR,QAAQ,CAACA,QAAQ;EACzC,OAAO,OAAON,MAAM,CAACe,cAAc,CACjCf,MAAM,CAACgB,IAAI,CAAC,MAAK;IACf,MAAMC,QAAQ,GAAG,IAAIlB,kBAAkB,CAAC;MACtC,IAAIW,MAAM,IAAIQ,SAAS,CAAC;MACxBJ,QAAQ;MACRK,cAAc,EAAEC,KAAK,CAACC,OAAO,CAACZ,SAAS,CAAC,GAAIA,SAAiB,GAAG,CAACA,SAAS;KAC3E,CAAC;IACF,OAAOQ,QAAQ;EACjB,CAAC,CAAC,EACDA,QAAQ,IACPjB,MAAM,CAACsB,OAAO,CAAC,MAAML,QAAQ,CAACM,UAAU,EAAE,CAACC,IAAI,CAAC,MAAMP,QAAQ,CAACQ,QAAQ,EAAE,CAAC,CAAC,CAACC,IAAI,CAC9E1B,MAAM,CAAC2B,MAAM,EACb3B,MAAM,CAAC4B,aAAa,EACpB5B,MAAM,CAAC6B,aAAa,CAACnB,MAAM,EAAEoB,eAAe,IAAI,IAAI,CAAC,CACtD,CACJ;AACH,CAAC,CAAC,CACH;AAEH;;;;AAIA,OAAO,MAAMC,KAAK,GAYhBC,QAAyE,IAEzE9B,KAAK,CAAC+B,MAAM,CACVjC,MAAM,CAACa,GAAG,CAAC,aAAS;EAClB,MAAMH,MAAM,GAAG,OAAOV,MAAM,CAACkC,QAAQ,CAACF,QAAQ,CAAC,GAC3CA,QAAwC,GACxChC,MAAM,CAACgB,IAAI,CAACgB,QAAQ,CAAC;EAEzB,MAAMG,YAAY,GAAG7B,QAAQ,CAAC8B,YAAY,CAAC1B,MAAM,CAACI,QAAQ,IAAIR,QAAQ,CAAC+B,kBAAkB,CAAC3B,MAAM,CAACI,QAAQ,CAAC,CAAC;EAE3G,MAAMwB,UAAU,GAAGnC,UAAU,CAACO,MAAM,CAAC6B,aAAa,CAAC,GAC/CrC,KAAK,CAACsC,OAAO,CACbjC,MAAM,CAACwB,KAAK,EACZvB,mBAAmB,CAACE,MAAM,CAAC6B,aAAa,EAAE;IACxC,GAAG7B,MAAM,CAAC+B,YAAY;IACtBX,eAAe,EAAEpB,MAAM,CAACoB;GACzB,CAAC,CACH,GACC5B,KAAK,CAACwC,KAAK;EAEf,MAAMC,WAAW,GAAGxC,UAAU,CAACO,MAAM,CAACkC,YAAY,CAAC,GAC/CvC,OAAO,CAAC0B,KAAK,CAAC9B,QAAQ,CAACS,MAAM,CAACkC,YAAY,CAAC,EAAE;IAC7Cd,eAAe,EAAEpB,MAAM,CAACoB,eAAe;IACvCe,WAAW,EAAEnC,MAAM,CAACoC;GACrB,CAAC,GACA5C,KAAK,CAACwC,KAAK;EAEf,MAAMK,UAAU,GAAG5C,UAAU,CAACO,MAAM,CAACsC,kBAAkB,CAAC,GACpD9C,KAAK,CAACsC,OAAO,CACbpC,MAAM,CAAC2B,KAAK,CAAC;IAAEkB,iBAAiB,EAAEvC,MAAM,CAACwC;EAAuB,CAAE,CAAC,EACnE9C,MAAM,CAAC+C,mBAAmB,CAACzC,MAAM,CAACsC,kBAAkB,EAAE;IACpD,GAAGtC,MAAM,CAAC0C,oBAAoB;IAC9BtB,eAAe,EAAEpB,MAAM,CAACoB;GACzB,CAAC,CACH,GACC5B,KAAK,CAACwC,KAAK;EAEf,OAAOxC,KAAK,CAACmD,QAAQ,CAACf,UAAU,EAAEK,WAAW,EAAEI,UAAU,CAAC,CAACrB,IAAI,CAC7DxB,KAAK,CAACoD,YAAY,CAACnB,YAAY,CAAC,CACjC;AACH,CAAC,CAAC,CACH;AAEH;;;;AAIA,OAAO,MAAMoB,UAAU,GAAmCjD,QAAQ,CAACiD,UAAU","ignoreList":[]}
|
|
@@ -4,21 +4,17 @@
|
|
|
4
4
|
import type * as OtelApi from "@opentelemetry/api";
|
|
5
5
|
import * as Resources from "@opentelemetry/resources";
|
|
6
6
|
import * as Layer from "effect/Layer";
|
|
7
|
+
import * as ServiceMap from "effect/ServiceMap";
|
|
8
|
+
declare const Resource_base: ServiceMap.ServiceClass<Resource, "@effect/opentelemetry/Resource", Resources.Resource>;
|
|
7
9
|
/**
|
|
8
10
|
* @since 1.0.0
|
|
9
|
-
* @category
|
|
11
|
+
* @category Services
|
|
10
12
|
*/
|
|
11
|
-
export
|
|
12
|
-
readonly _: unique symbol;
|
|
13
|
+
export declare class Resource extends Resource_base {
|
|
13
14
|
}
|
|
14
15
|
/**
|
|
15
16
|
* @since 1.0.0
|
|
16
|
-
* @category
|
|
17
|
-
*/
|
|
18
|
-
export declare const Resource: import("effect/Context").Tag<Resource, Resources.Resource>;
|
|
19
|
-
/**
|
|
20
|
-
* @since 1.0.0
|
|
21
|
-
* @category layer
|
|
17
|
+
* @category Layers
|
|
22
18
|
*/
|
|
23
19
|
export declare const layer: (config: {
|
|
24
20
|
readonly serviceName: string;
|
|
@@ -27,7 +23,7 @@ export declare const layer: (config: {
|
|
|
27
23
|
}) => Layer.Layer<Resource, never, never>;
|
|
28
24
|
/**
|
|
29
25
|
* @since 1.0.0
|
|
30
|
-
* @category
|
|
26
|
+
* @category Configuration
|
|
31
27
|
*/
|
|
32
28
|
export declare const configToAttributes: (options: {
|
|
33
29
|
readonly serviceName: string;
|
|
@@ -36,12 +32,13 @@ export declare const configToAttributes: (options: {
|
|
|
36
32
|
}) => Record<string, string>;
|
|
37
33
|
/**
|
|
38
34
|
* @since 1.0.0
|
|
39
|
-
* @category
|
|
35
|
+
* @category Layers
|
|
40
36
|
*/
|
|
41
37
|
export declare const layerFromEnv: (additionalAttributes?: OtelApi.Attributes | undefined) => Layer.Layer<Resource>;
|
|
42
38
|
/**
|
|
43
|
-
* @since
|
|
44
|
-
* @category
|
|
39
|
+
* @since 1.0.0
|
|
40
|
+
* @category Layers
|
|
45
41
|
*/
|
|
46
42
|
export declare const layerEmpty: Layer.Layer<Resource, never, never>;
|
|
43
|
+
export {};
|
|
47
44
|
//# sourceMappingURL=Resource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Resource.d.ts","sourceRoot":"","sources":["../src/Resource.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,SAAS,MAAM,0BAA0B,CAAA;AAKrD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;;AAE/C;;;GAGG;AACH,qBAAa,QAAS,SAAQ,aAGO;CAAG;AAExC;;;GAGG;AACH,eAAO,MAAM,KAAK,GAAI,QAAQ;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAA;CACzC,wCAIE,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,SAAS;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAA;CACzC,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAaxB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,GACvB,uBACI,OAAO,CAAC,UAAU,GAClB,SAAS,KACZ,KAAK,CAAC,KAAK,CAAC,QAAQ,CA2BpB,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,UAAU,qCAGtB,CAAA"}
|
|
@@ -2,23 +2,22 @@ import * as Resources from "@opentelemetry/resources";
|
|
|
2
2
|
import * as OtelSemConv from "@opentelemetry/semantic-conventions";
|
|
3
3
|
import * as Arr from "effect/Array";
|
|
4
4
|
import * as Config from "effect/Config";
|
|
5
|
-
import { GenericTag } from "effect/Context";
|
|
6
5
|
import * as Effect from "effect/Effect";
|
|
7
|
-
import { pipe } from "effect/Function";
|
|
8
6
|
import * as Layer from "effect/Layer";
|
|
7
|
+
import * as ServiceMap from "effect/ServiceMap";
|
|
9
8
|
/**
|
|
10
9
|
* @since 1.0.0
|
|
11
|
-
* @category
|
|
10
|
+
* @category Services
|
|
12
11
|
*/
|
|
13
|
-
export
|
|
12
|
+
export class Resource extends /*#__PURE__*/ServiceMap.Service()("@effect/opentelemetry/Resource") {}
|
|
14
13
|
/**
|
|
15
14
|
* @since 1.0.0
|
|
16
|
-
* @category
|
|
15
|
+
* @category Layers
|
|
17
16
|
*/
|
|
18
17
|
export const layer = config => Layer.succeed(Resource, Resources.resourceFromAttributes(configToAttributes(config)));
|
|
19
18
|
/**
|
|
20
19
|
* @since 1.0.0
|
|
21
|
-
* @category
|
|
20
|
+
* @category Configuration
|
|
22
21
|
*/
|
|
23
22
|
export const configToAttributes = options => {
|
|
24
23
|
const attributes = {
|
|
@@ -34,11 +33,11 @@ export const configToAttributes = options => {
|
|
|
34
33
|
};
|
|
35
34
|
/**
|
|
36
35
|
* @since 1.0.0
|
|
37
|
-
* @category
|
|
36
|
+
* @category Layers
|
|
38
37
|
*/
|
|
39
38
|
export const layerFromEnv = additionalAttributes => Layer.effect(Resource, Effect.gen(function* () {
|
|
40
|
-
const serviceName = yield*
|
|
41
|
-
const attributes = yield*
|
|
39
|
+
const serviceName = yield* Config.option(Config.string("OTEL_SERVICE_NAME"));
|
|
40
|
+
const attributes = yield* Config.string("OTEL_RESOURCE_ATTRIBUTES").pipe(Config.withDefault(() => ""), Config.map(s => {
|
|
42
41
|
const attrs = s.split(",");
|
|
43
42
|
return Arr.reduce(attrs, {}, (acc, attr) => {
|
|
44
43
|
const parts = attr.split("=");
|
|
@@ -48,7 +47,7 @@ export const layerFromEnv = additionalAttributes => Layer.effect(Resource, Effec
|
|
|
48
47
|
acc[parts[0].trim()] = parts[1].trim();
|
|
49
48
|
return acc;
|
|
50
49
|
});
|
|
51
|
-
})
|
|
50
|
+
}));
|
|
52
51
|
if (serviceName._tag === "Some") {
|
|
53
52
|
attributes[OtelSemConv.ATTR_SERVICE_NAME] = serviceName.value;
|
|
54
53
|
}
|
|
@@ -56,10 +55,10 @@ export const layerFromEnv = additionalAttributes => Layer.effect(Resource, Effec
|
|
|
56
55
|
Object.assign(attributes, additionalAttributes);
|
|
57
56
|
}
|
|
58
57
|
return Resources.resourceFromAttributes(attributes);
|
|
59
|
-
}));
|
|
58
|
+
}).pipe(Effect.orDie));
|
|
60
59
|
/**
|
|
61
|
-
* @since
|
|
62
|
-
* @category
|
|
60
|
+
* @since 1.0.0
|
|
61
|
+
* @category Layers
|
|
63
62
|
*/
|
|
64
63
|
export const layerEmpty = /*#__PURE__*/Layer.succeed(Resource, /*#__PURE__*/Resources.emptyResource());
|
|
65
64
|
//# sourceMappingURL=Resource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Resource.js","names":["Resources","OtelSemConv","Arr","Config","Effect","Layer","ServiceMap","Resource","Service","layer","config","succeed","resourceFromAttributes","configToAttributes","options","attributes","undefined","ATTR_SERVICE_NAME","serviceName","ATTR_TELEMETRY_SDK_NAME","ATTR_TELEMETRY_SDK_LANGUAGE","globalThis","document","TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS","TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS","serviceVersion","ATTR_SERVICE_VERSION","layerFromEnv","additionalAttributes","effect","gen","option","string","pipe","withDefault","map","s","attrs","split","reduce","acc","attr","parts","length","trim","_tag","value","Object","assign","orDie","layerEmpty","emptyResource"],"sources":["../src/Resource.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|