@effect/opentelemetry 0.60.0 → 4.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/LICENSE +1 -1
  2. package/dist/{dts/Logger.d.ts → Logger.d.ts} +19 -13
  3. package/dist/Logger.d.ts.map +1 -0
  4. package/dist/Logger.js +76 -0
  5. package/dist/Logger.js.map +1 -0
  6. package/dist/Metrics.d.ts +76 -0
  7. package/dist/Metrics.d.ts.map +1 -0
  8. package/dist/Metrics.js +59 -0
  9. package/dist/Metrics.js.map +1 -0
  10. package/dist/{dts/NodeSdk.d.ts → NodeSdk.d.ts} +12 -9
  11. package/dist/NodeSdk.d.ts.map +1 -0
  12. package/dist/{esm/NodeSdk.js → NodeSdk.js} +23 -14
  13. package/dist/NodeSdk.js.map +1 -0
  14. package/dist/{dts/Resource.d.ts → Resource.d.ts} +10 -13
  15. package/dist/Resource.d.ts.map +1 -0
  16. package/dist/{esm/Resource.js → Resource.js} +12 -13
  17. package/dist/Resource.js.map +1 -0
  18. package/dist/Tracer.d.ts +129 -0
  19. package/dist/Tracer.d.ts.map +1 -0
  20. package/dist/Tracer.js +391 -0
  21. package/dist/Tracer.js.map +1 -0
  22. package/dist/{dts/WebSdk.d.ts → WebSdk.d.ts} +12 -9
  23. package/dist/WebSdk.d.ts.map +1 -0
  24. package/dist/WebSdk.js +41 -0
  25. package/dist/WebSdk.js.map +1 -0
  26. package/dist/index.d.ts +28 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/{esm/index.js → index.js} +4 -20
  29. package/dist/index.js.map +1 -0
  30. package/dist/internal/attributes.d.ts +2 -0
  31. package/dist/internal/attributes.d.ts.map +1 -0
  32. package/dist/internal/attributes.js +19 -0
  33. package/dist/internal/attributes.js.map +1 -0
  34. package/dist/{dts/internal → internal}/metrics.d.ts.map +1 -1
  35. package/dist/internal/metrics.js +406 -0
  36. package/dist/internal/metrics.js.map +1 -0
  37. package/dist/internal/utilities.d.ts +2 -0
  38. package/dist/internal/utilities.d.ts.map +1 -0
  39. package/dist/internal/utilities.js +3 -0
  40. package/dist/internal/utilities.js.map +1 -0
  41. package/package.json +70 -118
  42. package/src/Logger.ts +52 -55
  43. package/src/Metrics.ts +92 -18
  44. package/src/NodeSdk.ts +67 -64
  45. package/src/Resource.ts +16 -24
  46. package/src/Tracer.ts +469 -78
  47. package/src/WebSdk.ts +59 -51
  48. package/src/index.ts +7 -26
  49. package/src/internal/attributes.ts +21 -0
  50. package/src/internal/metrics.ts +381 -250
  51. package/src/internal/utilities.ts +5 -0
  52. package/Logger/package.json +0 -6
  53. package/Metrics/package.json +0 -6
  54. package/NodeSdk/package.json +0 -6
  55. package/Otlp/package.json +0 -6
  56. package/OtlpLogger/package.json +0 -6
  57. package/OtlpMetrics/package.json +0 -6
  58. package/OtlpResource/package.json +0 -6
  59. package/OtlpTracer/package.json +0 -6
  60. package/Resource/package.json +0 -6
  61. package/Tracer/package.json +0 -6
  62. package/WebSdk/package.json +0 -6
  63. package/dist/cjs/Logger.js +0 -85
  64. package/dist/cjs/Logger.js.map +0 -1
  65. package/dist/cjs/Metrics.js +0 -24
  66. package/dist/cjs/Metrics.js.map +0 -1
  67. package/dist/cjs/NodeSdk.js +0 -53
  68. package/dist/cjs/NodeSdk.js.map +0 -1
  69. package/dist/cjs/Otlp.js +0 -46
  70. package/dist/cjs/Otlp.js.map +0 -1
  71. package/dist/cjs/OtlpLogger.js +0 -158
  72. package/dist/cjs/OtlpLogger.js.map +0 -1
  73. package/dist/cjs/OtlpMetrics.js +0 -354
  74. package/dist/cjs/OtlpMetrics.js.map +0 -1
  75. package/dist/cjs/OtlpResource.js +0 -136
  76. package/dist/cjs/OtlpResource.js.map +0 -1
  77. package/dist/cjs/OtlpTracer.js +0 -229
  78. package/dist/cjs/OtlpTracer.js.map +0 -1
  79. package/dist/cjs/Resource.js +0 -75
  80. package/dist/cjs/Resource.js.map +0 -1
  81. package/dist/cjs/Tracer.js +0 -87
  82. package/dist/cjs/Tracer.js.map +0 -1
  83. package/dist/cjs/WebSdk.js +0 -42
  84. package/dist/cjs/WebSdk.js.map +0 -1
  85. package/dist/cjs/index.js +0 -30
  86. package/dist/cjs/index.js.map +0 -1
  87. package/dist/cjs/internal/metrics.js +0 -288
  88. package/dist/cjs/internal/metrics.js.map +0 -1
  89. package/dist/cjs/internal/otlpExporter.js +0 -81
  90. package/dist/cjs/internal/otlpExporter.js.map +0 -1
  91. package/dist/cjs/internal/tracer.js +0 -299
  92. package/dist/cjs/internal/tracer.js.map +0 -1
  93. package/dist/cjs/internal/utils.js +0 -34
  94. package/dist/cjs/internal/utils.js.map +0 -1
  95. package/dist/dts/Logger.d.ts.map +0 -1
  96. package/dist/dts/Metrics.d.ts +0 -29
  97. package/dist/dts/Metrics.d.ts.map +0 -1
  98. package/dist/dts/NodeSdk.d.ts.map +0 -1
  99. package/dist/dts/Otlp.d.ts +0 -31
  100. package/dist/dts/Otlp.d.ts.map +0 -1
  101. package/dist/dts/OtlpLogger.d.ts +0 -46
  102. package/dist/dts/OtlpLogger.d.ts.map +0 -1
  103. package/dist/dts/OtlpMetrics.d.ts +0 -40
  104. package/dist/dts/OtlpMetrics.d.ts.map +0 -1
  105. package/dist/dts/OtlpResource.d.ts +0 -104
  106. package/dist/dts/OtlpResource.d.ts.map +0 -1
  107. package/dist/dts/OtlpTracer.d.ts +0 -49
  108. package/dist/dts/OtlpTracer.d.ts.map +0 -1
  109. package/dist/dts/Resource.d.ts.map +0 -1
  110. package/dist/dts/Tracer.d.ts +0 -143
  111. package/dist/dts/Tracer.d.ts.map +0 -1
  112. package/dist/dts/WebSdk.d.ts.map +0 -1
  113. package/dist/dts/index.d.ts +0 -45
  114. package/dist/dts/index.d.ts.map +0 -1
  115. package/dist/dts/internal/otlpExporter.d.ts +0 -2
  116. package/dist/dts/internal/otlpExporter.d.ts.map +0 -1
  117. package/dist/dts/internal/tracer.d.ts +0 -2
  118. package/dist/dts/internal/tracer.d.ts.map +0 -1
  119. package/dist/dts/internal/utils.d.ts +0 -2
  120. package/dist/dts/internal/utils.d.ts.map +0 -1
  121. package/dist/esm/Logger.js +0 -75
  122. package/dist/esm/Logger.js.map +0 -1
  123. package/dist/esm/Metrics.js +0 -17
  124. package/dist/esm/Metrics.js.map +0 -1
  125. package/dist/esm/NodeSdk.js.map +0 -1
  126. package/dist/esm/Otlp.js +0 -38
  127. package/dist/esm/Otlp.js.map +0 -1
  128. package/dist/esm/OtlpLogger.js +0 -150
  129. package/dist/esm/OtlpLogger.js.map +0 -1
  130. package/dist/esm/OtlpMetrics.js +0 -346
  131. package/dist/esm/OtlpMetrics.js.map +0 -1
  132. package/dist/esm/OtlpResource.js +0 -124
  133. package/dist/esm/OtlpResource.js.map +0 -1
  134. package/dist/esm/OtlpTracer.js +0 -221
  135. package/dist/esm/OtlpTracer.js.map +0 -1
  136. package/dist/esm/Resource.js.map +0 -1
  137. package/dist/esm/Tracer.js +0 -80
  138. package/dist/esm/Tracer.js.map +0 -1
  139. package/dist/esm/WebSdk.js +0 -33
  140. package/dist/esm/WebSdk.js.map +0 -1
  141. package/dist/esm/index.js.map +0 -1
  142. package/dist/esm/internal/metrics.js +0 -278
  143. package/dist/esm/internal/metrics.js.map +0 -1
  144. package/dist/esm/internal/otlpExporter.js +0 -74
  145. package/dist/esm/internal/otlpExporter.js.map +0 -1
  146. package/dist/esm/internal/tracer.js +0 -290
  147. package/dist/esm/internal/tracer.js.map +0 -1
  148. package/dist/esm/internal/utils.js +0 -23
  149. package/dist/esm/internal/utils.js.map +0 -1
  150. package/dist/esm/package.json +0 -4
  151. package/index/package.json +0 -6
  152. package/src/Otlp.ts +0 -66
  153. package/src/OtlpLogger.ts +0 -258
  154. package/src/OtlpMetrics.ts +0 -571
  155. package/src/OtlpResource.ts +0 -232
  156. package/src/OtlpTracer.ts +0 -349
  157. package/src/internal/otlpExporter.ts +0 -124
  158. package/src/internal/tracer.ts +0 -437
  159. package/src/internal/utils.ts +0 -31
  160. /package/dist/{dts/internal → internal}/metrics.d.ts +0 -0
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2020-present The Contributors
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 { Resource } from "./Resource.js";
12
- declare const OtelLoggerProvider_base: Context.TagClass<OtelLoggerProvider, "@effect/opentelemetry/Logger/OtelLoggerProvider", Otel.LoggerProvider>;
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 tags
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 constructors
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 layers
26
+ * @category Layers
27
27
  */
28
- export declare const layerLoggerAdd: Layer.Layer<never, never, OtelLoggerProvider>;
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 layers
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":"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","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"}
@@ -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 OtelApi from "@opentelemetry/api";
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 Resource from "./Resource.js";
14
- import * as Tracer from "./Tracer.js";
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 model
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?: OtelApi.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 layers
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 layer
44
+ * @category Layers
42
45
  */
43
46
  export declare const layer: {
44
47
  /**
45
48
  * @since 1.0.0
46
- * @category layer
49
+ * @category Layers
47
50
  */
48
51
  (evaluate: LazyArg<Configuration>): Layer.Layer<Resource.Resource>;
49
52
  /**
50
53
  * @since 1.0.0
51
- * @category layer
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/utils.js";
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 layers
12
+ * @category Layers
13
13
  */
14
- export const layerTracerProvider = (processor, config) => Layer.scoped(Tracer.OtelTracerProvider, Effect.flatMap(Resource.Resource, resource => Effect.acquireRelease(Effect.sync(() => {
15
- const provider = new NodeTracerProvider({
16
- ...(config ?? undefined),
17
- resource,
18
- spanProcessors: Array.isArray(processor) ? processor : [processor]
19
- });
20
- return provider;
21
- }), provider => Effect.promise(() => provider.forceFlush().then(() => provider.shutdown())).pipe(Effect.ignoreLogged, Effect.interruptible, Effect.timeoutOption(config?.shutdownTimeout ?? 3000)))));
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 layer
27
+ * @category Layers
25
28
  */
26
- export const layer = evaluate => Layer.unwrapEffect(Effect.map(Effect.isEffect(evaluate) ? evaluate : Effect.sync(evaluate), config => {
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), config) : Layer.empty;
33
- const LoggerLive = isNonEmpty(config.logRecordProcessor) ? Layer.provide(Logger.layerLoggerAdd, Logger.layerLoggerProvider(config.logRecordProcessor, {
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":"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","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 identifier
11
+ * @category Services
10
12
  */
11
- export interface Resource {
12
- readonly _: unique symbol;
13
+ export declare class Resource extends Resource_base {
13
14
  }
14
15
  /**
15
16
  * @since 1.0.0
16
- * @category tag
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 config
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 layer
35
+ * @category Layers
40
36
  */
41
37
  export declare const layerFromEnv: (additionalAttributes?: OtelApi.Attributes | undefined) => Layer.Layer<Resource>;
42
38
  /**
43
- * @since 2.0.0
44
- * @category layer
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 tag
10
+ * @category Services
12
11
  */
13
- export const Resource = /*#__PURE__*/GenericTag("@effect/opentelemetry/Resource");
12
+ export class Resource extends /*#__PURE__*/ServiceMap.Service()("@effect/opentelemetry/Resource") {}
14
13
  /**
15
14
  * @since 1.0.0
16
- * @category layer
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 config
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 layer
36
+ * @category Layers
38
37
  */
39
38
  export const layerFromEnv = additionalAttributes => Layer.effect(Resource, Effect.gen(function* () {
40
- const serviceName = yield* pipe(Config.string("OTEL_SERVICE_NAME"), Config.option, Effect.orDie);
41
- const attributes = yield* pipe(Config.string("OTEL_RESOURCE_ATTRIBUTES"), Config.withDefault(""), Config.map(s => {
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
- }), Effect.orDie);
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 2.0.0
62
- * @category layer
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":[]}