@effect/opentelemetry 4.0.0-beta.9 → 4.0.0-beta.91

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/dist/Logger.d.ts CHANGED
@@ -1,32 +1,81 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * Connects Effect logging to the OpenTelemetry Logs SDK.
3
+ *
4
+ * This module turns Effect log events into OpenTelemetry log records. It maps
5
+ * Effect log levels to OpenTelemetry severity numbers, provides the
6
+ * `OtelLoggerProvider` service, creates an Effect `Logger` with `make`, and
7
+ * offers layers for installing that logger or creating a scoped SDK
8
+ * `LoggerProvider` from one or more `LogRecordProcessor`s.
9
+ *
10
+ * @since 4.0.0
3
11
  */
12
+ import { SeverityNumber } from "@opentelemetry/api-logs";
4
13
  import * as Otel from "@opentelemetry/sdk-logs";
5
14
  import type { NonEmptyReadonlyArray } from "effect/Array";
15
+ import * as Context from "effect/Context";
6
16
  import type * as Duration from "effect/Duration";
7
17
  import * as Effect from "effect/Effect";
8
18
  import * as Layer from "effect/Layer";
9
19
  import * as Logger from "effect/Logger";
10
- import * as ServiceMap from "effect/ServiceMap";
20
+ import type * as LogLevel from "effect/LogLevel";
11
21
  import { Resource } from "./Resource.ts";
12
- declare const OtelLoggerProvider_base: ServiceMap.ServiceClass<OtelLoggerProvider, "@effect/opentelemetry/Logger/OtelLoggerProvider", Otel.LoggerProvider>;
22
+ declare const OtelLoggerProvider_base: Context.ServiceClass<OtelLoggerProvider, "@effect/opentelemetry/Logger/OtelLoggerProvider", Otel.LoggerProvider>;
13
23
  /**
14
- * @since 1.0.0
15
- * @category Services
24
+ * Context service containing the OpenTelemetry `LoggerProvider` used to emit Effect log records.
25
+ *
26
+ * @category services
27
+ * @since 4.0.0
16
28
  */
17
29
  export declare class OtelLoggerProvider extends OtelLoggerProvider_base {
18
30
  }
19
31
  /**
20
- * @since 1.0.0
21
- * @category Constructors
32
+ * Maps an Effect `LogLevel` to the corresponding OpenTelemetry `SeverityNumber`.
33
+ *
34
+ * **Details**
35
+ *
36
+ * OpenTelemetry log severity numbers are in the range `1` through `24`. This
37
+ * function maps from Effect's log levels instead of using
38
+ * `LogLevel.getOrdinal`, whose internal sort ordinals, such as the `Info`
39
+ * ordinal `20000`, fall outside the OpenTelemetry logs data model and can be
40
+ * treated as `UNSPECIFIED` by validating backends.
41
+ *
42
+ * @category converting
43
+ * @since 4.0.0
44
+ */
45
+ export declare const logLevelToSeverityNumber: (level: LogLevel.LogLevel) => SeverityNumber;
46
+ /**
47
+ * Creates an Effect logger that emits log records through the configured OpenTelemetry logger provider.
48
+ *
49
+ * @category constructors
50
+ * @since 4.0.0
22
51
  */
23
52
  export declare const make: Effect.Effect<Logger.Logger<unknown, void>, never, OtelLoggerProvider>;
24
53
  /**
25
- * @since 1.0.0
26
- * @category Layers
54
+ * Creates a layer that installs the OpenTelemetry-backed Effect logger, merging with existing loggers by default.
55
+ *
56
+ * **When to use**
57
+ *
58
+ * Use to install the OpenTelemetry-backed Effect logger in an application that
59
+ * has an `OtelLoggerProvider`, so standard Effect logging emits OpenTelemetry
60
+ * log records.
61
+ *
62
+ * **Details**
63
+ *
64
+ * The layer installs the logger created by `make`. `mergeWithExisting` defaults
65
+ * to `true`; set it to `false` to replace the current logger set.
66
+ *
67
+ * @see {@link make} for constructing the logger directly
68
+ * @see {@link layerLoggerProvider} for creating the required logger provider
69
+ *
70
+ * @category layers
71
+ * @since 4.0.0
27
72
  */
28
73
  export declare const layer: (options: {
29
74
  /**
75
+ * Whether to merge the OpenTelemetry logger with existing loggers.
76
+ *
77
+ * **Details**
78
+ *
30
79
  * If set to `true`, the OpenTelemetry logger will be merged with existing
31
80
  * loggers in the application.
32
81
  *
@@ -38,8 +87,10 @@ export declare const layer: (options: {
38
87
  readonly mergeWithExisting?: boolean | undefined;
39
88
  }) => Layer.Layer<never, never, OtelLoggerProvider>;
40
89
  /**
41
- * @since 1.0.0
42
- * @category Layers
90
+ * Creates a scoped OpenTelemetry logger provider from one or more log record processors, using the current `Resource` and flushing and shutting down the provider when the layer is released.
91
+ *
92
+ * @category layers
93
+ * @since 4.0.0
43
94
  */
44
95
  export declare const layerLoggerProvider: (processor: Otel.LogRecordProcessor | NonEmptyReadonlyArray<Otel.LogRecordProcessor>, config?: Omit<Otel.LoggerProviderConfig, "resource"> & {
45
96
  readonly shutdownTimeout?: Duration.Input | undefined;
@@ -1 +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,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAChD,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,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAA;CACtD,KACA,KAAK,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,EAAE,QAAQ,CAqB/C,CAAA"}
1
+ {"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,IAAI,MAAM,yBAAyB,CAAA;AAC/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAGzD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAKhD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;;AAExC;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,uBAGc;CAAG;AAEzD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wBAAwB,GAAI,OAAO,QAAQ,CAAC,QAAQ,KAAG,cAiBnE,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,CAC9B,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,EAC5B,KAAK,EACL,kBAAkB,CAqClB,CAAA;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,KAAK,GAAI,SAAS;IAC7B;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CACjD,KAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,kBAAkB,CAG5C,CAAA;AAEJ;;;;;GAKG;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,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAA;CACtD,KACA,KAAK,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,EAAE,QAAQ,CAqB/C,CAAA"}
package/dist/Logger.js CHANGED
@@ -1,26 +1,71 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * Connects Effect logging to the OpenTelemetry Logs SDK.
3
+ *
4
+ * This module turns Effect log events into OpenTelemetry log records. It maps
5
+ * Effect log levels to OpenTelemetry severity numbers, provides the
6
+ * `OtelLoggerProvider` service, creates an Effect `Logger` with `make`, and
7
+ * offers layers for installing that logger or creating a scoped SDK
8
+ * `LoggerProvider` from one or more `LogRecordProcessor`s.
9
+ *
10
+ * @since 4.0.0
3
11
  */
12
+ import { SeverityNumber } from "@opentelemetry/api-logs";
4
13
  import * as Otel from "@opentelemetry/sdk-logs";
5
14
  import * as Arr from "effect/Array";
6
15
  import * as Clock from "effect/Clock";
16
+ import * as Context from "effect/Context";
7
17
  import * as Effect from "effect/Effect";
8
18
  import * as Layer from "effect/Layer";
9
19
  import * as Logger from "effect/Logger";
10
- import * as LogLevel from "effect/LogLevel";
11
20
  import * as Predicate from "effect/Predicate";
12
- import * as ServiceMap from "effect/ServiceMap";
21
+ import * as References from "effect/References";
13
22
  import * as Tracer from "effect/Tracer";
14
- import { unknownToAttributeValue } from "./internal/attributes.js";
23
+ import { nanosToHrTime, unknownToAttributeValue } from "./internal/attributes.js";
15
24
  import { Resource } from "./Resource.js";
16
25
  /**
17
- * @since 1.0.0
18
- * @category Services
26
+ * Context service containing the OpenTelemetry `LoggerProvider` used to emit Effect log records.
27
+ *
28
+ * @category services
29
+ * @since 4.0.0
19
30
  */
20
- export class OtelLoggerProvider extends /*#__PURE__*/ServiceMap.Service()("@effect/opentelemetry/Logger/OtelLoggerProvider") {}
31
+ export class OtelLoggerProvider extends /*#__PURE__*/Context.Service()("@effect/opentelemetry/Logger/OtelLoggerProvider") {}
21
32
  /**
22
- * @since 1.0.0
23
- * @category Constructors
33
+ * Maps an Effect `LogLevel` to the corresponding OpenTelemetry `SeverityNumber`.
34
+ *
35
+ * **Details**
36
+ *
37
+ * OpenTelemetry log severity numbers are in the range `1` through `24`. This
38
+ * function maps from Effect's log levels instead of using
39
+ * `LogLevel.getOrdinal`, whose internal sort ordinals, such as the `Info`
40
+ * ordinal `20000`, fall outside the OpenTelemetry logs data model and can be
41
+ * treated as `UNSPECIFIED` by validating backends.
42
+ *
43
+ * @category converting
44
+ * @since 4.0.0
45
+ */
46
+ export const logLevelToSeverityNumber = level => {
47
+ switch (level) {
48
+ case "Trace":
49
+ return SeverityNumber.TRACE;
50
+ case "Debug":
51
+ return SeverityNumber.DEBUG;
52
+ case "Info":
53
+ return SeverityNumber.INFO;
54
+ case "Warn":
55
+ return SeverityNumber.WARN;
56
+ case "Error":
57
+ return SeverityNumber.ERROR;
58
+ case "Fatal":
59
+ return SeverityNumber.FATAL;
60
+ default:
61
+ return SeverityNumber.UNSPECIFIED;
62
+ }
63
+ };
64
+ /**
65
+ * Creates an Effect logger that emits log records through the configured OpenTelemetry logger provider.
66
+ *
67
+ * @category constructors
68
+ * @since 4.0.0
24
69
  */
25
70
  export const make = /*#__PURE__*/Effect.gen(function* () {
26
71
  const loggerProvider = yield* OtelLoggerProvider;
@@ -30,40 +75,58 @@ export const make = /*#__PURE__*/Effect.gen(function* () {
30
75
  const attributes = {
31
76
  fiberId: options.fiber.id
32
77
  };
33
- const span = ServiceMap.getOrUndefined(options.fiber.services, Tracer.ParentSpan);
78
+ const span = Context.getOrUndefined(options.fiber.context, Tracer.ParentSpan);
34
79
  if (Predicate.isNotUndefined(span)) {
35
80
  attributes.spanId = span.spanId;
36
81
  attributes.traceId = span.traceId;
37
82
  }
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
- // }
83
+ for (const [key, value] of Object.entries(options.fiber.getRef(References.CurrentLogAnnotations))) {
84
+ attributes[key] = unknownToAttributeValue(value);
85
+ }
86
+ const now = options.date.getTime();
87
+ for (const [label, startTime] of options.fiber.getRef(References.CurrentLogSpans)) {
88
+ attributes[`logSpan.${label}`] = `${now - startTime}ms`;
89
+ }
46
90
  const message = Arr.ensure(options.message).map(unknownToAttributeValue);
91
+ const hrTime = nanosToHrTime(clock.currentTimeNanosUnsafe());
47
92
  otelLogger.emit({
48
93
  body: message.length === 1 ? message[0] : message,
49
94
  severityText: options.logLevel,
50
- severityNumber: LogLevel.getOrdinal(options.logLevel),
51
- timestamp: options.date,
52
- observedTimestamp: clock.currentTimeMillisUnsafe(),
95
+ severityNumber: logLevelToSeverityNumber(options.logLevel),
96
+ timestamp: hrTime,
97
+ observedTimestamp: hrTime,
53
98
  attributes
54
99
  });
55
100
  });
56
101
  });
57
102
  /**
58
- * @since 1.0.0
59
- * @category Layers
103
+ * Creates a layer that installs the OpenTelemetry-backed Effect logger, merging with existing loggers by default.
104
+ *
105
+ * **When to use**
106
+ *
107
+ * Use to install the OpenTelemetry-backed Effect logger in an application that
108
+ * has an `OtelLoggerProvider`, so standard Effect logging emits OpenTelemetry
109
+ * log records.
110
+ *
111
+ * **Details**
112
+ *
113
+ * The layer installs the logger created by `make`. `mergeWithExisting` defaults
114
+ * to `true`; set it to `false` to replace the current logger set.
115
+ *
116
+ * @see {@link make} for constructing the logger directly
117
+ * @see {@link layerLoggerProvider} for creating the required logger provider
118
+ *
119
+ * @category layers
120
+ * @since 4.0.0
60
121
  */
61
122
  export const layer = options => Logger.layer([make], {
62
123
  mergeWithExisting: options.mergeWithExisting ?? true
63
124
  });
64
125
  /**
65
- * @since 1.0.0
66
- * @category Layers
126
+ * Creates a scoped OpenTelemetry logger provider from one or more log record processors, using the current `Resource` and flushing and shutting down the provider when the layer is released.
127
+ *
128
+ * @category layers
129
+ * @since 4.0.0
67
130
  */
68
131
  export const layerLoggerProvider = (processor, config) => Layer.effect(OtelLoggerProvider, Effect.gen(function* () {
69
132
  const resource = yield* Resource;
@@ -1 +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":"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","ignoreList":[]}
1
+ {"version":3,"file":"Logger.js","names":["SeverityNumber","Otel","Arr","Clock","Context","Effect","Layer","Logger","Predicate","References","Tracer","nanosToHrTime","unknownToAttributeValue","Resource","OtelLoggerProvider","Service","logLevelToSeverityNumber","level","TRACE","DEBUG","INFO","WARN","ERROR","FATAL","UNSPECIFIED","make","gen","loggerProvider","clock","otelLogger","getLogger","options","attributes","fiberId","fiber","id","span","getOrUndefined","context","ParentSpan","isNotUndefined","spanId","traceId","key","value","Object","entries","getRef","CurrentLogAnnotations","now","date","getTime","label","startTime","CurrentLogSpans","message","ensure","map","hrTime","currentTimeNanosUnsafe","emit","body","length","severityText","logLevel","severityNumber","timestamp","observedTimestamp","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":"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","ignoreList":[]}
package/dist/Metrics.d.ts CHANGED
@@ -1,5 +1,13 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * OpenTelemetry support for Effect metrics.
3
+ *
4
+ * This module exposes Effect metrics as an OpenTelemetry `MetricProducer`.
5
+ * `makeProducer` creates the producer, `registerProducer` attaches it to one
6
+ * or more SDK `MetricReader`s, and `layer` manages that setup in a scoped
7
+ * layer. The `TemporalityPreference` type lets callers choose cumulative or
8
+ * delta metric values.
9
+ *
10
+ * @since 4.0.0
3
11
  */
4
12
  import type { MetricProducer, MetricReader } from "@opentelemetry/sdk-metrics";
5
13
  import type * as Arr from "effect/Array";
@@ -13,28 +21,43 @@ import { Resource } from "./Resource.ts";
13
21
  * Determines how metric values relate to the time interval over which they
14
22
  * are aggregated.
15
23
  *
16
- * - `cumulative`: Reports total since a fixed start time. Each data point
17
- * depends on all previous measurements. This is the default behavior.
24
+ * **Details**
18
25
  *
19
- * - `delta`: Reports changes since the last export. Each interval is
20
- * independent with no dependency on previous measurements.
26
+ * `cumulative` reports total since a fixed start time. Each data point depends
27
+ * on all previous measurements. This is the default behavior. `delta` reports
28
+ * changes since the last export. Each interval is independent with no
29
+ * dependency on previous measurements.
21
30
  *
22
- * @since 1.0.0
23
- * @category Models
31
+ * @category models
32
+ * @since 4.0.0
24
33
  */
25
34
  export type TemporalityPreference = "cumulative" | "delta";
26
35
  /**
27
36
  * Creates an OpenTelemetry metric producer from Effect metrics.
28
37
  *
29
- * @since 1.0.0
30
- * @category Constructors
38
+ * **When to use**
39
+ *
40
+ * Use when you need a `MetricProducer` for manually wiring Effect metrics into
41
+ * OpenTelemetry instead of using the scoped `layer` helper.
42
+ *
43
+ * **Details**
44
+ *
45
+ * Requires the current OpenTelemetry `Resource`, captures the current Effect
46
+ * context, and uses cumulative temporality by default. Pass `"delta"` for
47
+ * interval-based values.
48
+ *
49
+ * @see {@link registerProducer} for attaching a producer to metric readers
50
+ * @see {@link layer} for creating and registering a producer in a scoped layer
51
+ *
52
+ * @category constructors
53
+ * @since 4.0.0
31
54
  */
32
55
  export declare const makeProducer: (temporality?: TemporalityPreference) => Effect.Effect<MetricProducer, never, Resource>;
33
56
  /**
34
57
  * Registers a metric producer with one or more metric readers.
35
58
  *
36
- * @since 1.0.0
37
- * @category Constructors
59
+ * @category constructors
60
+ * @since 4.0.0
38
61
  */
39
62
  export declare const registerProducer: (self: MetricProducer, metricReader: LazyArg<MetricReader | Arr.NonEmptyReadonlyArray<MetricReader>>, options?: {
40
63
  readonly shutdownTimeout?: Duration.Input | undefined;
@@ -42,7 +65,8 @@ export declare const registerProducer: (self: MetricProducer, metricReader: Lazy
42
65
  /**
43
66
  * Creates a Layer that registers a metric producer with metric readers.
44
67
  *
45
- * @example
68
+ * **Example** (Creating a metrics layer with temporality)
69
+ *
46
70
  * ```ts
47
71
  * import { Metrics } from "@effect/opentelemetry"
48
72
  * import { PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics"
@@ -66,8 +90,8 @@ export declare const registerProducer: (self: MetricProducer, metricReader: Lazy
66
90
  * )
67
91
  * ```
68
92
  *
69
- * @since 1.0.0
70
- * @category Layers
93
+ * @category layers
94
+ * @since 4.0.0
71
95
  */
72
96
  export declare const layer: (evaluate: LazyArg<MetricReader | Arr.NonEmptyReadonlyArray<MetricReader>>, options?: {
73
97
  readonly shutdownTimeout?: Duration.Input | undefined;
@@ -1 +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,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAChD,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,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAA;CACtD,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,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAA;IACrD,QAAQ,CAAC,WAAW,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAA;CACzD,KACA,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAIjC,CAAA"}
1
+ {"version":3,"file":"Metrics.d.ts","sourceRoot":"","sources":["../src/Metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9E,OAAO,KAAK,KAAK,GAAG,MAAM,cAAc,CAAA;AACxC,OAAO,KAAK,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAChD,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;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,qBAAqB,GAAG,YAAY,GAAG,OAAO,CAAA;AAE1D;;;;;;;;;;;;;;;;;;;GAmBG;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,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAA;CACtD,KACA,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAkB5C,CAAA;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;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,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAA;IACrD,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 CHANGED
@@ -5,19 +5,33 @@ import { Resource } from "./Resource.js";
5
5
  /**
6
6
  * Creates an OpenTelemetry metric producer from Effect metrics.
7
7
  *
8
- * @since 1.0.0
9
- * @category Constructors
8
+ * **When to use**
9
+ *
10
+ * Use when you need a `MetricProducer` for manually wiring Effect metrics into
11
+ * OpenTelemetry instead of using the scoped `layer` helper.
12
+ *
13
+ * **Details**
14
+ *
15
+ * Requires the current OpenTelemetry `Resource`, captures the current Effect
16
+ * context, and uses cumulative temporality by default. Pass `"delta"` for
17
+ * interval-based values.
18
+ *
19
+ * @see {@link registerProducer} for attaching a producer to metric readers
20
+ * @see {@link layer} for creating and registering a producer in a scoped layer
21
+ *
22
+ * @category constructors
23
+ * @since 4.0.0
10
24
  */
11
25
  export const makeProducer = temporality => Effect.gen(function* () {
12
26
  const resource = yield* Resource;
13
- const services = yield* Effect.services();
27
+ const services = yield* Effect.context();
14
28
  return new MetricProducerImpl(resource, services, temporality);
15
29
  });
16
30
  /**
17
31
  * Registers a metric producer with one or more metric readers.
18
32
  *
19
- * @since 1.0.0
20
- * @category Constructors
33
+ * @category constructors
34
+ * @since 4.0.0
21
35
  */
22
36
  export const registerProducer = (self, metricReader, options) => Effect.acquireRelease(Effect.sync(() => {
23
37
  const reader = metricReader();
@@ -28,7 +42,8 @@ export const registerProducer = (self, metricReader, options) => Effect.acquireR
28
42
  /**
29
43
  * Creates a Layer that registers a metric producer with metric readers.
30
44
  *
31
- * @example
45
+ * **Example** (Creating a metrics layer with temporality)
46
+ *
32
47
  * ```ts
33
48
  * import { Metrics } from "@effect/opentelemetry"
34
49
  * import { PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics"
@@ -52,8 +67,8 @@ export const registerProducer = (self, metricReader, options) => Effect.acquireR
52
67
  * )
53
68
  * ```
54
69
  *
55
- * @since 1.0.0
56
- * @category Layers
70
+ * @category layers
71
+ * @since 4.0.0
57
72
  */
58
73
  export const layer = (evaluate, options) => Layer.effectDiscard(Effect.flatMap(makeProducer(options?.temporality), producer => registerProducer(producer, evaluate, options)));
59
74
  //# sourceMappingURL=Metrics.js.map
@@ -1 +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
+ {"version":3,"file":"Metrics.js","names":["Effect","Layer","MetricProducerImpl","Resource","makeProducer","temporality","gen","resource","services","context","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":"AAcA,OAAO,KAAKA,MAAM,MAAM,eAAe;AAEvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AAErC,SAASC,kBAAkB,QAAQ,uBAAuB;AAC1D,SAASC,QAAQ,QAAQ,eAAe;AAkBxC;;;;;;;;;;;;;;;;;;;;AAoBA,OAAO,MAAMC,YAAY,GAAIC,WAAmC,IAC9DL,MAAM,CAACM,GAAG,CAAC,aAAS;EAClB,MAAMC,QAAQ,GAAG,OAAOJ,QAAQ;EAChC,MAAMK,QAAQ,GAAG,OAAOR,MAAM,CAACS,OAAO,EAAS;EAC/C,OAAO,IAAIP,kBAAkB,CAACK,QAAQ,EAAEC,QAAQ,EAAEH,WAAW,CAAC;AAChE,CAAC,CAAC;AAEJ;;;;;;AAMA,OAAO,MAAMK,gBAAgB,GAAGA,CAC9BC,IAAoB,EACpBC,YAA6E,EAC7EC,OAEC,KAEDb,MAAM,CAACc,cAAc,CACnBd,MAAM,CAACe,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,IACNjB,MAAM,CAACsB,OAAO,CAAC,MACbC,OAAO,CAACC,GAAG,CACTP,OAAO,CAACQ,GAAG,CAAET,MAAM,IAAKA,MAAM,CAACU,QAAQ,EAAE,CAAC,CAC3C,CACF,CAACC,IAAI,CACJ3B,MAAM,CAAC4B,MAAM,EACb5B,MAAM,CAAC6B,aAAa,EACpB7B,MAAM,CAAC8B,aAAa,CAACjB,OAAO,EAAEkB,eAAe,IAAI,IAAI,CAAC,CACvD,CACJ;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,OAAO,MAAMC,KAAK,GAAGA,CACnBC,QAAyE,EACzEpB,OAGC,KAEDZ,KAAK,CAACiC,aAAa,CAAClC,MAAM,CAACmC,OAAO,CAChC/B,YAAY,CAACS,OAAO,EAAER,WAAW,CAAC,EACjC+B,QAAQ,IAAK1B,gBAAgB,CAAC0B,QAAQ,EAAEH,QAAQ,EAAEpB,OAAO,CAAC,CAC5D,CAAC","ignoreList":[]}
package/dist/NodeSdk.d.ts CHANGED
@@ -1,5 +1,14 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * Node.js OpenTelemetry setup for Effect applications.
3
+ *
4
+ * This module exports a `Configuration` type and layers for installing
5
+ * tracing, metrics, and logging in Node.js. The main `layer` builds the shared
6
+ * OpenTelemetry resource from environment variables and optional service
7
+ * metadata, then enables only the signal types that have processors or readers
8
+ * configured. `layerTracerProvider` creates a scoped Node tracer provider, and
9
+ * `layerEmpty` provides an empty resource.
10
+ *
11
+ * @since 4.0.0
3
12
  */
4
13
  import type * as Otel from "@opentelemetry/api";
5
14
  import type { LoggerProviderConfig, LogRecordProcessor } from "@opentelemetry/sdk-logs";
@@ -14,8 +23,10 @@ import * as Metrics from "./Metrics.ts";
14
23
  import * as Resource from "./Resource.ts";
15
24
  import * as Tracer from "./Tracer.ts";
16
25
  /**
17
- * @since 1.0.0
18
- * @category Models
26
+ * Configuration for the Node OpenTelemetry layer, including optional tracing, metrics, logging, resource, and shutdown settings.
27
+ *
28
+ * @category models
29
+ * @since 4.0.0
19
30
  */
20
31
  export interface Configuration {
21
32
  readonly spanProcessor?: SpanProcessor | ReadonlyArray<SpanProcessor> | undefined;
@@ -33,31 +44,92 @@ export interface Configuration {
33
44
  readonly shutdownTimeout?: Duration.Input | undefined;
34
45
  }
35
46
  /**
36
- * @since 1.0.0
37
- * @category Layers
47
+ * Creates a scoped Node OpenTelemetry tracer provider from one or more span processors and shuts it down when the layer is released.
48
+ *
49
+ * @category layers
50
+ * @since 4.0.0
38
51
  */
39
52
  export declare const layerTracerProvider: (processor: SpanProcessor | NonEmptyReadonlyArray<SpanProcessor>, config?: Omit<TracerConfig, "resource"> & {
40
53
  readonly shutdownTimeout?: Duration.Input | undefined;
41
54
  }) => Layer.Layer<Tracer.OtelTracerProvider, never, Resource.Resource>;
42
55
  /**
43
- * @since 1.0.0
44
- * @category Layers
56
+ * Creates a Node OpenTelemetry layer from configuration, enabling tracing, metrics, and logging only when their processors or readers are supplied.
57
+ *
58
+ * **When to use**
59
+ *
60
+ * Use to install OpenTelemetry support for a Node.js Effect application from
61
+ * one configuration object, enabling tracing, metrics, logging, or any
62
+ * combination of those signals based on the processors and readers supplied.
63
+ *
64
+ * **Details**
65
+ *
66
+ * The configuration can be provided lazily or effectfully. The layer always
67
+ * provides `Resource.Resource`, building it from environment variables and any
68
+ * explicit resource metadata in the configuration.
69
+ *
70
+ * **Gotchas**
71
+ *
72
+ * Register Node auto-instrumentations before importing modules that should be
73
+ * patched, because many Node instrumentations hook module loading.
74
+ *
75
+ * @category layers
76
+ * @since 4.0.0
45
77
  */
46
78
  export declare const layer: {
47
79
  /**
48
- * @since 1.0.0
49
- * @category Layers
80
+ * Creates a Node OpenTelemetry layer from configuration, enabling tracing, metrics, and logging only when their processors or readers are supplied.
81
+ *
82
+ * **When to use**
83
+ *
84
+ * Use to install OpenTelemetry support for a Node.js Effect application from
85
+ * one configuration object, enabling tracing, metrics, logging, or any
86
+ * combination of those signals based on the processors and readers supplied.
87
+ *
88
+ * **Details**
89
+ *
90
+ * The configuration can be provided lazily or effectfully. The layer always
91
+ * provides `Resource.Resource`, building it from environment variables and any
92
+ * explicit resource metadata in the configuration.
93
+ *
94
+ * **Gotchas**
95
+ *
96
+ * Register Node auto-instrumentations before importing modules that should be
97
+ * patched, because many Node instrumentations hook module loading.
98
+ *
99
+ * @category layers
100
+ * @since 4.0.0
50
101
  */
51
102
  (evaluate: LazyArg<Configuration>): Layer.Layer<Resource.Resource>;
52
103
  /**
53
- * @since 1.0.0
54
- * @category Layers
104
+ * Creates a Node OpenTelemetry layer from configuration, enabling tracing, metrics, and logging only when their processors or readers are supplied.
105
+ *
106
+ * **When to use**
107
+ *
108
+ * Use to install OpenTelemetry support for a Node.js Effect application from
109
+ * one configuration object, enabling tracing, metrics, logging, or any
110
+ * combination of those signals based on the processors and readers supplied.
111
+ *
112
+ * **Details**
113
+ *
114
+ * The configuration can be provided lazily or effectfully. The layer always
115
+ * provides `Resource.Resource`, building it from environment variables and any
116
+ * explicit resource metadata in the configuration.
117
+ *
118
+ * **Gotchas**
119
+ *
120
+ * Register Node auto-instrumentations before importing modules that should be
121
+ * patched, because many Node instrumentations hook module loading.
122
+ *
123
+ * @category layers
124
+ * @since 4.0.0
55
125
  */
56
126
  <R, E>(evaluate: Effect.Effect<Configuration, E, R>): Layer.Layer<Resource.Resource, E, R>;
57
127
  };
58
128
  /**
129
+ * Layer that provides an empty OpenTelemetry `Resource`.
130
+ *
131
+ * @category layers
59
132
  * @since 2.0.0
60
- * @category layer
61
133
  */
62
134
  export declare const layerEmpty: Layer.Layer<Resource.Resource>;
63
135
  //# sourceMappingURL=NodeSdk.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeSdk.d.ts","sourceRoot":"","sources":["../src/NodeSdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NodeSdk.d.ts","sourceRoot":"","sources":["../src/NodeSdk.ts"],"names":[],"mappings":"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"}