@effect/opentelemetry 4.0.0-beta.1 → 4.0.0-beta.100

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 (52) hide show
  1. package/dist/NodeSdk.d.ts +89 -17
  2. package/dist/NodeSdk.d.ts.map +1 -1
  3. package/dist/NodeSdk.js +31 -8
  4. package/dist/NodeSdk.js.map +1 -1
  5. package/dist/OtelLogger.d.ts +99 -0
  6. package/dist/OtelLogger.d.ts.map +1 -0
  7. package/dist/OtelLogger.js +139 -0
  8. package/dist/OtelLogger.js.map +1 -0
  9. package/dist/{Metrics.d.ts → OtelMetrics.d.ts} +45 -21
  10. package/dist/OtelMetrics.d.ts.map +1 -0
  11. package/dist/{Metrics.js → OtelMetrics.js} +27 -12
  12. package/dist/OtelMetrics.js.map +1 -0
  13. package/dist/OtelTracer.d.ts +186 -0
  14. package/dist/OtelTracer.d.ts.map +1 -0
  15. package/dist/{Tracer.js → OtelTracer.js} +129 -72
  16. package/dist/OtelTracer.js.map +1 -0
  17. package/dist/Resource.d.ts +57 -13
  18. package/dist/Resource.d.ts.map +1 -1
  19. package/dist/Resource.js +48 -13
  20. package/dist/Resource.js.map +1 -1
  21. package/dist/WebSdk.d.ts +82 -13
  22. package/dist/WebSdk.d.ts.map +1 -1
  23. package/dist/WebSdk.js +28 -7
  24. package/dist/WebSdk.js.map +1 -1
  25. package/dist/index.d.ts +12 -12
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +12 -12
  28. package/dist/index.js.map +1 -1
  29. package/dist/internal/attributes.js +5 -0
  30. package/dist/internal/attributes.js.map +1 -1
  31. package/dist/internal/metrics.js +5 -5
  32. package/dist/internal/metrics.js.map +1 -1
  33. package/package.json +22 -18
  34. package/src/NodeSdk.ts +90 -18
  35. package/src/OtelLogger.ts +193 -0
  36. package/src/{Metrics.ts → OtelMetrics.ts} +45 -21
  37. package/src/{Tracer.ts → OtelTracer.ts} +161 -101
  38. package/src/Resource.ts +58 -14
  39. package/src/WebSdk.ts +83 -14
  40. package/src/index.ts +12 -12
  41. package/src/internal/attributes.ts +7 -0
  42. package/src/internal/metrics.ts +7 -7
  43. package/dist/Logger.d.ts +0 -48
  44. package/dist/Logger.d.ts.map +0 -1
  45. package/dist/Logger.js +0 -76
  46. package/dist/Logger.js.map +0 -1
  47. package/dist/Metrics.d.ts.map +0 -1
  48. package/dist/Metrics.js.map +0 -1
  49. package/dist/Tracer.d.ts +0 -129
  50. package/dist/Tracer.d.ts.map +0 -1
  51. package/dist/Tracer.js.map +0 -1
  52. package/src/Logger.ts +0 -124
package/src/WebSdk.ts CHANGED
@@ -1,5 +1,13 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * Browser OpenTelemetry setup for Effect applications.
3
+ *
4
+ * This module exports a `Configuration` type and layers for installing
5
+ * tracing, metrics, and logging in browser runtimes. The main `layer` builds
6
+ * the shared OpenTelemetry resource from explicit service metadata, then
7
+ * enables only the signal types that have processors or readers configured.
8
+ * `layerTracerProvider` creates a scoped `WebTracerProvider`.
9
+ *
10
+ * @since 4.0.0
3
11
  */
4
12
  import type * as Otel from "@opentelemetry/api"
5
13
  import type { LoggerProviderConfig, LogRecordProcessor } from "@opentelemetry/sdk-logs"
@@ -11,14 +19,16 @@ import * as Effect from "effect/Effect"
11
19
  import { constant, type LazyArg } from "effect/Function"
12
20
  import * as Layer from "effect/Layer"
13
21
  import { isNonEmpty } from "./internal/utilities.ts"
14
- import * as Logger from "./Logger.ts"
15
- import * as Metrics from "./Metrics.ts"
22
+ import * as Logger from "./OtelLogger.ts"
23
+ import * as Metrics from "./OtelMetrics.ts"
24
+ import * as Tracer from "./OtelTracer.ts"
16
25
  import * as Resource from "./Resource.ts"
17
- import * as Tracer from "./Tracer.ts"
18
26
 
19
27
  /**
20
- * @since 1.0.0
21
- * @category Models
28
+ * Configuration for the Web OpenTelemetry layer, including resource metadata and optional tracing, metrics, and logging settings.
29
+ *
30
+ * @category models
31
+ * @since 4.0.0
22
32
  */
23
33
  export interface Configuration {
24
34
  readonly spanProcessor?: SpanProcessor | ReadonlyArray<SpanProcessor> | undefined
@@ -36,8 +46,10 @@ export interface Configuration {
36
46
  }
37
47
 
38
48
  /**
39
- * @since 1.0.0
40
- * @category Layers
49
+ * Creates a scoped Web OpenTelemetry tracer provider from one or more span processors and shuts it down when the layer is released.
50
+ *
51
+ * @category layers
52
+ * @since 4.0.0
41
53
  */
42
54
  export const layerTracerProvider = (
43
55
  processor: SpanProcessor | NonEmptyReadonlyArray<SpanProcessor>,
@@ -65,18 +77,75 @@ export const layerTracerProvider = (
65
77
  )
66
78
 
67
79
  /**
68
- * @since 1.0.0
69
- * @category Layers
80
+ * Creates a Web OpenTelemetry layer from configuration, providing the resource and enabling tracing, metrics, and logging when configured.
81
+ *
82
+ * **When to use**
83
+ *
84
+ * Use to install browser OpenTelemetry support when service metadata is
85
+ * configured in code and telemetry processors or readers are supplied directly.
86
+ *
87
+ * **Details**
88
+ *
89
+ * The configuration can be provided lazily or effectfully. The layer always
90
+ * provides `Resource.Resource`; tracing, metrics, and logging are installed only
91
+ * when the corresponding processors or readers are non-empty.
92
+ *
93
+ * **Gotchas**
94
+ *
95
+ * Browser resource metadata is explicit; this layer does not read
96
+ * OpenTelemetry environment variables. Empty processor or reader arrays are
97
+ * treated as not configured.
98
+ *
99
+ * @category layers
100
+ * @since 4.0.0
70
101
  */
71
102
  export const layer: {
72
103
  /**
73
- * @since 1.0.0
74
- * @category Layers
104
+ * Creates a Web OpenTelemetry layer from configuration, providing the resource and enabling tracing, metrics, and logging when configured.
105
+ *
106
+ * **When to use**
107
+ *
108
+ * Use to install browser OpenTelemetry support when service metadata is
109
+ * configured in code and telemetry processors or readers are supplied directly.
110
+ *
111
+ * **Details**
112
+ *
113
+ * The configuration can be provided lazily or effectfully. The layer always
114
+ * provides `Resource.Resource`; tracing, metrics, and logging are installed only
115
+ * when the corresponding processors or readers are non-empty.
116
+ *
117
+ * **Gotchas**
118
+ *
119
+ * Browser resource metadata is explicit; this layer does not read
120
+ * OpenTelemetry environment variables. Empty processor or reader arrays are
121
+ * treated as not configured.
122
+ *
123
+ * @category layers
124
+ * @since 4.0.0
75
125
  */
76
126
  (evaluate: LazyArg<Configuration>): Layer.Layer<Resource.Resource>
77
127
  /**
78
- * @since 1.0.0
79
- * @category Layers
128
+ * Creates a Web OpenTelemetry layer from configuration, providing the resource and enabling tracing, metrics, and logging when configured.
129
+ *
130
+ * **When to use**
131
+ *
132
+ * Use to install browser OpenTelemetry support when service metadata is
133
+ * configured in code and telemetry processors or readers are supplied directly.
134
+ *
135
+ * **Details**
136
+ *
137
+ * The configuration can be provided lazily or effectfully. The layer always
138
+ * provides `Resource.Resource`; tracing, metrics, and logging are installed only
139
+ * when the corresponding processors or readers are non-empty.
140
+ *
141
+ * **Gotchas**
142
+ *
143
+ * Browser resource metadata is explicit; this layer does not read
144
+ * OpenTelemetry environment variables. Empty processor or reader arrays are
145
+ * treated as not configured.
146
+ *
147
+ * @category layers
148
+ * @since 4.0.0
80
149
  */
81
150
  <E, R>(evaluate: Effect.Effect<Configuration, E, R>): Layer.Layer<Resource.Resource, E, R>
82
151
  } = (
package/src/index.ts CHANGED
@@ -1,35 +1,35 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * @since 4.0.0
3
3
  */
4
4
 
5
5
  // @barrel: Auto-generated exports. Do not edit manually.
6
6
 
7
7
  /**
8
- * @since 1.0.0
8
+ * @since 4.0.0
9
9
  */
10
- export * as Logger from "./Logger.ts"
10
+ export * as NodeSdk from "./NodeSdk.ts"
11
11
 
12
12
  /**
13
- * @since 1.0.0
13
+ * @since 4.0.0
14
14
  */
15
- export * as Metrics from "./Metrics.ts"
15
+ export * as OtelLogger from "./OtelLogger.ts"
16
16
 
17
17
  /**
18
- * @since 1.0.0
18
+ * @since 4.0.0
19
19
  */
20
- export * as NodeSdk from "./NodeSdk.ts"
20
+ export * as OtelMetrics from "./OtelMetrics.ts"
21
21
 
22
22
  /**
23
- * @since 1.0.0
23
+ * @since 4.0.0
24
24
  */
25
- export * as Resource from "./Resource.ts"
25
+ export * as OtelTracer from "./OtelTracer.ts"
26
26
 
27
27
  /**
28
- * @since 1.0.0
28
+ * @since 4.0.0
29
29
  */
30
- export * as Tracer from "./Tracer.ts"
30
+ export * as Resource from "./Resource.ts"
31
31
 
32
32
  /**
33
- * @since 1.0.0
33
+ * @since 4.0.0
34
34
  */
35
35
  export * as WebSdk from "./WebSdk.ts"
@@ -1,6 +1,13 @@
1
1
  import type * as Otel from "@opentelemetry/api"
2
2
  import * as Inspectable from "effect/Inspectable"
3
3
 
4
+ const bigint1e9 = BigInt(1_000_000_000)
5
+
6
+ /** @internal */
7
+ export const nanosToHrTime = (timestamp: bigint): Otel.HrTime => {
8
+ return [Number(timestamp / bigint1e9), Number(timestamp % bigint1e9)]
9
+ }
10
+
4
11
  /** @internal */
5
12
  export const recordToAttributes = (record: Record<string, unknown>): Otel.Attributes => {
6
13
  const attributes: Otel.Attributes = {}
@@ -11,9 +11,9 @@ import type {
11
11
  import { AggregationTemporality, DataPointType, InstrumentType } from "@opentelemetry/sdk-metrics"
12
12
  import type { InstrumentDescriptor } from "@opentelemetry/sdk-metrics/build/src/InstrumentDescriptor.js"
13
13
  import * as Arr from "effect/Array"
14
+ import type * as Context from "effect/Context"
14
15
  import * as Metric from "effect/Metric"
15
- import type * as ServiceMap from "effect/ServiceMap"
16
- import type * as Metrics from "../Metrics.ts"
16
+ import type * as Metrics from "../OtelMetrics.ts"
17
17
 
18
18
  const sdkName = "@effect/opentelemetry/Metrics"
19
19
 
@@ -37,7 +37,7 @@ interface PreviousSummaryState {
37
37
  /** @internal */
38
38
  export class MetricProducerImpl implements MetricProducer {
39
39
  resource: Resources.Resource
40
- services: ServiceMap.ServiceMap<never>
40
+ context: Context.Context<never>
41
41
  temporality: Metrics.TemporalityPreference
42
42
  startTimes: Map<string, HrTime>
43
43
  startTimeNanos: HrTime
@@ -49,11 +49,11 @@ export class MetricProducerImpl implements MetricProducer {
49
49
 
50
50
  constructor(
51
51
  resource: Resources.Resource,
52
- services: ServiceMap.ServiceMap<never>,
52
+ context: Context.Context<never>,
53
53
  temporality: Metrics.TemporalityPreference = "cumulative"
54
54
  ) {
55
55
  this.resource = resource
56
- this.services = services
56
+ this.context = context
57
57
  this.temporality = temporality
58
58
  this.startTimes = new Map()
59
59
  this.startTimeNanos = currentHrTime()
@@ -73,7 +73,7 @@ export class MetricProducerImpl implements MetricProducer {
73
73
  }
74
74
 
75
75
  collect(_options?: MetricCollectOptions): Promise<CollectionResult> {
76
- const snapshot = Metric.snapshotUnsafe(this.services)
76
+ const snapshot = Metric.snapshotUnsafe(this.context)
77
77
  const hrTimeNow = currentHrTime()
78
78
  const metricData: Array<MetricData> = []
79
79
  const metricDataByName = new Map<string, MetricData>()
@@ -111,7 +111,7 @@ export class MetricProducerImpl implements MetricProducer {
111
111
  if (typeof currentCount === "bigint" && typeof previousCount === "bigint") {
112
112
  reportValue = currentCount - previousCount
113
113
  // Handle reset: if current < previous, report current value
114
- if (reportValue < 0n) {
114
+ if (reportValue < BigInt(0)) {
115
115
  reportValue = currentCount
116
116
  }
117
117
  } else {
package/dist/Logger.d.ts DELETED
@@ -1,48 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import * as Otel from "@opentelemetry/sdk-logs";
5
- import type { NonEmptyReadonlyArray } from "effect/Array";
6
- import type { DurationInput } from "effect/Duration";
7
- import * as Effect from "effect/Effect";
8
- import * as Layer from "effect/Layer";
9
- import * as Logger from "effect/Logger";
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
- /**
14
- * @since 1.0.0
15
- * @category Services
16
- */
17
- export declare class OtelLoggerProvider extends OtelLoggerProvider_base {
18
- }
19
- /**
20
- * @since 1.0.0
21
- * @category Constructors
22
- */
23
- export declare const make: Effect.Effect<Logger.Logger<unknown, void>, never, OtelLoggerProvider>;
24
- /**
25
- * @since 1.0.0
26
- * @category Layers
27
- */
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>;
40
- /**
41
- * @since 1.0.0
42
- * @category Layers
43
- */
44
- export declare const layerLoggerProvider: (processor: Otel.LogRecordProcessor | NonEmptyReadonlyArray<Otel.LogRecordProcessor>, config?: Omit<Otel.LoggerProviderConfig, "resource"> & {
45
- readonly shutdownTimeout?: DurationInput | undefined;
46
- }) => Layer.Layer<OtelLoggerProvider, never, Resource>;
47
- export {};
48
- //# sourceMappingURL=Logger.d.ts.map
@@ -1 +0,0 @@
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 DELETED
@@ -1,76 +0,0 @@
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
@@ -1 +0,0 @@
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 +0,0 @@
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"}
@@ -1 +0,0 @@
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":[]}
package/dist/Tracer.d.ts DELETED
@@ -1,129 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import * as Otel from "@opentelemetry/api";
5
- import * as Cause from "effect/Cause";
6
- import * as Effect from "effect/Effect";
7
- import * as Layer from "effect/Layer";
8
- import * as ServiceMap from "effect/ServiceMap";
9
- import * as Tracer from "effect/Tracer";
10
- import { Resource } from "./Resource.ts";
11
- declare const OtelTracer_base: ServiceMap.ServiceClass<OtelTracer, "@effect/opentelemetry/Tracer", Otel.Tracer>;
12
- /**
13
- * @since 1.0.0
14
- * @category Services
15
- */
16
- export declare class OtelTracer extends OtelTracer_base {
17
- }
18
- declare const OtelTracerProvider_base: ServiceMap.ServiceClass<OtelTracerProvider, "@effect/opentelemetry/Tracer/OtelTracerProvider", Otel.TracerProvider>;
19
- /**
20
- * @since 1.0.0
21
- * @category Services
22
- */
23
- export declare class OtelTracerProvider extends OtelTracerProvider_base {
24
- }
25
- declare const OtelTraceFlags_base: ServiceMap.ServiceClass<OtelTraceFlags, "@effect/opentelemetry/Tracer/OtelTraceFlags", Otel.TraceFlags>;
26
- /**
27
- * @since 1.0.0
28
- * @category Services
29
- */
30
- export declare class OtelTraceFlags extends OtelTraceFlags_base {
31
- }
32
- declare const OtelTraceState_base: ServiceMap.ServiceClass<OtelTraceState, "@effect/opentelemetry/Tracer/OtelTraceState", Otel.TraceState>;
33
- /**
34
- * @since 1.0.0
35
- * @category Services
36
- */
37
- export declare class OtelTraceState extends OtelTraceState_base {
38
- }
39
- /**
40
- * @since 1.0.0
41
- * @category Constructors
42
- */
43
- export declare const make: Effect.Effect<Tracer.Tracer, never, OtelTracer>;
44
- /**
45
- * @since 1.0.0
46
- * @category Constructors
47
- */
48
- export declare const makeExternalSpan: (options: {
49
- readonly traceId: string;
50
- readonly spanId: string;
51
- readonly traceFlags?: number | undefined;
52
- readonly traceState?: string | Otel.TraceState | undefined;
53
- }) => Tracer.ExternalSpan;
54
- /**
55
- * @since 1.0.0
56
- * @category Layers
57
- */
58
- export declare const layerGlobalProvider: Layer.Layer<OtelTracerProvider>;
59
- /**
60
- * @since 1.0.0
61
- * @category Layers
62
- */
63
- export declare const layerTracer: Layer.Layer<OtelTracer, never, OtelTracerProvider | Resource>;
64
- /**
65
- * @since 1.0.0
66
- * @category Layers
67
- */
68
- export declare const layerGlobalTracer: Layer.Layer<OtelTracer, never, Resource>;
69
- /**
70
- * @since 1.0.0
71
- * @category Layers
72
- */
73
- export declare const layerGlobal: Layer.Layer<OtelTracer, never, Resource>;
74
- /**
75
- * @since 1.0.0
76
- * @category Layers
77
- */
78
- export declare const layerWithoutOtelTracer: Layer.Layer<never, never, OtelTracer>;
79
- /**
80
- * @since 1.0.0
81
- * @category Layers
82
- */
83
- export declare const layer: Layer.Layer<OtelTracer, never, OtelTracerProvider | Resource>;
84
- /**
85
- * Get the current OpenTelemetry span.
86
- *
87
- * Works with both the official OpenTelemetry API (via `Tracer.layer`,
88
- * `NodeSdk.layer`, etc.) and the lightweight OTLP module (`OtlpTracer.layer`).
89
- *
90
- * When using OTLP, the returned span is a wrapper that conforms to the
91
- * OpenTelemetry `Span` interface.
92
- *
93
- * @since 1.0.0
94
- * @category accessors
95
- */
96
- export declare const currentOtelSpan: Effect.Effect<Otel.Span, Cause.NoSuchElementError>;
97
- /**
98
- * Set the effect's parent span from the given opentelemetry `SpanContext`.
99
- *
100
- * This is handy when you set up OpenTelemetry outside of Effect and want to
101
- * attach to a parent span.
102
- *
103
- * @since 1.0.0
104
- * @category Propagation
105
- */
106
- export declare const withSpanContext: {
107
- /**
108
- * Set the effect's parent span from the given opentelemetry `SpanContext`.
109
- *
110
- * This is handy when you set up OpenTelemetry outside of Effect and want to
111
- * attach to a parent span.
112
- *
113
- * @since 1.0.0
114
- * @category Propagation
115
- */
116
- (spanContext: Otel.SpanContext): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Tracer.ParentSpan>>;
117
- /**
118
- * Set the effect's parent span from the given opentelemetry `SpanContext`.
119
- *
120
- * This is handy when you set up OpenTelemetry outside of Effect and want to
121
- * attach to a parent span.
122
- *
123
- * @since 1.0.0
124
- * @category Propagation
125
- */
126
- <A, E, R>(self: Effect.Effect<A, E, R>, spanContext: Otel.SpanContext): Effect.Effect<A, E, Exclude<R, Tracer.ParentSpan>>;
127
- };
128
- export {};
129
- //# sourceMappingURL=Tracer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Tracer.d.ts","sourceRoot":"","sources":["../src/Tracer.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Tracer.js","names":["Otel","OtelSemConv","Cause","Effect","Exit","constTrue","dual","Layer","Predicate","ServiceMap","Tracer","recordToAttributes","unknownToAttributeValue","Resource","OtelTracer","Service","OtelTracerProvider","OtelTraceFlags","OtelTraceState","make","map","service","tracer","span","options","OtelSpan","context","trace","primitive","fiber","currentSpan","undefined","with","populateContext","active","makeExternalSpan","annotations","empty","traceFlags","add","traceState","createTraceState","_tag","traceId","spanId","sampled","isNotUndefined","isSampled","layerGlobalProvider","sync","getTracerProvider","layerTracer","effect","gen","resource","provider","getTracer","attributes","ATTR_SERVICE_NAME","ATTR_SERVICE_VERSION","layerGlobalTracer","pipe","provide","layerGlobal","provideMerge","layerWithoutOtelTracer","layer","bigint1e6","BigInt","bigint1e9","currentOtelSpan","clockWith","clock","OtelSpanTypeId","makeOtelSpan","spanContext","TraceFlags","SAMPLED","NONE","isRemote","exit","void","self","setAttribute","key","value","attribute","setAttributes","Object","entries","addEvent","name","startTime","arguments","length","event","convertOtelTimeInput","addLink","link","addLinks","links","setStatus","status","SpanStatusCode","ERROR","die","message","updateName","end","endTime","time","isRecording","recordException","exception","timeInput","cause","fail","error","prettyErrors","stack","input","currentTimeNanosUnsafe","Math","round","Date","getTime","seconds","nanos","withSpanContext","withParentSpan","kindMap","SpanKind","INTERNAL","CLIENT","SERVER","PRODUCER","CONSUMER","kind","Map","parent","constructor","contextApi","traceApi","root","getOtelParent","startSpan","nanosToHrTime","makeSpanContext","deleteSpan","set","push","hrTime","code","OK","hasInterruptsOnly","pretty","errors","timestamp","Number","getSpan","otelParent","externalSpan","makeTraceFlags","makeTraceState","extractTraceService","isUndefined","getOrUndefined","instance","setSpan","setSpanContext"],"sources":["../src/Tracer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}