@effect/opentelemetry 0.20.0 → 0.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.dev.js +17 -13
  2. package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.mjs +2 -2
  3. package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.prod.js +17 -13
  4. package/NodeSdk/dist/effect-opentelemetry-NodeSdk.esm.js +16 -15
  5. package/Tracer/dist/effect-opentelemetry-Tracer.cjs.dev.js +44 -11
  6. package/Tracer/dist/effect-opentelemetry-Tracer.cjs.mjs +5 -2
  7. package/Tracer/dist/effect-opentelemetry-Tracer.cjs.prod.js +44 -11
  8. package/Tracer/dist/effect-opentelemetry-Tracer.esm.js +22 -4
  9. package/WebSdk/dist/effect-opentelemetry-WebSdk.cjs.d.mts +2 -0
  10. package/WebSdk/dist/effect-opentelemetry-WebSdk.cjs.d.mts.map +1 -0
  11. package/WebSdk/dist/effect-opentelemetry-WebSdk.cjs.d.ts +2 -0
  12. package/WebSdk/dist/effect-opentelemetry-WebSdk.cjs.d.ts.map +1 -0
  13. package/WebSdk/dist/effect-opentelemetry-WebSdk.cjs.dev.js +81 -0
  14. package/WebSdk/dist/effect-opentelemetry-WebSdk.cjs.js +7 -0
  15. package/WebSdk/dist/effect-opentelemetry-WebSdk.cjs.mjs +4 -0
  16. package/WebSdk/dist/effect-opentelemetry-WebSdk.cjs.prod.js +81 -0
  17. package/WebSdk/dist/effect-opentelemetry-WebSdk.esm.js +42 -0
  18. package/WebSdk/package.json +4 -0
  19. package/dist/declarations/src/NodeSdk.d.ts +18 -6
  20. package/dist/declarations/src/NodeSdk.d.ts.map +1 -1
  21. package/dist/declarations/src/Tracer.d.ts +20 -5
  22. package/dist/declarations/src/Tracer.d.ts.map +1 -1
  23. package/dist/declarations/src/WebSdk.d.ts +35 -0
  24. package/dist/declarations/src/WebSdk.d.ts.map +1 -0
  25. package/dist/declarations/src/index.d.ts +4 -0
  26. package/dist/declarations/src/index.d.ts.map +1 -1
  27. package/dist/effect-opentelemetry.cjs.dev.js +3 -0
  28. package/dist/effect-opentelemetry.cjs.mjs +2 -1
  29. package/dist/effect-opentelemetry.cjs.prod.js +3 -0
  30. package/dist/effect-opentelemetry.esm.js +2 -0
  31. package/internal/tracer.esm.js +19 -7
  32. package/package.json +25 -15
  33. package/src/NodeSdk.ts +53 -25
  34. package/src/Tracer.ts +23 -5
  35. package/src/WebSdk.ts +79 -0
  36. package/src/index.ts +5 -0
  37. package/src/internal/tracer.ts +40 -22
@@ -2,11 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var sdkNode = require('@opentelemetry/sdk-node');
5
+ var sdkTraceNode = require('@opentelemetry/sdk-trace-node');
6
6
  var Effect = require('effect/Effect');
7
7
  var Layer = require('effect/Layer');
8
8
  var Metrics_dist_effectOpentelemetryMetrics = require('../../Metrics/dist/effect-opentelemetry-Metrics.cjs.dev.js');
9
9
  var Resource_dist_effectOpentelemetryResource = require('../../Resource/dist/effect-opentelemetry-Resource.cjs.dev.js');
10
+ var Tracer_dist_effectOpentelemetryTracer = require('../../Tracer/dist/effect-opentelemetry-Tracer.cjs.dev.js');
10
11
  require('@opentelemetry/api');
11
12
  require('@opentelemetry/sdk-metrics');
12
13
  require('effect/HashSet');
@@ -17,6 +18,9 @@ require('effect/Option');
17
18
  require('@opentelemetry/resources');
18
19
  require('@opentelemetry/semantic-conventions');
19
20
  require('effect/Context');
21
+ require('effect/Cause');
22
+ require('effect/FiberRef');
23
+ require('effect/Tracer');
20
24
 
21
25
  function _interopNamespace(e) {
22
26
  if (e && e.__esModule) return e;
@@ -50,18 +54,16 @@ var Layer__namespace = /*#__PURE__*/_interopNamespace(Layer);
50
54
 
51
55
  /**
52
56
  * @since 1.0.0
53
- * @category constructor
57
+ * @category layers
54
58
  */
55
- const config = config => config;
56
- const make = config => Effect__namespace.flatMap(Resource_dist_effectOpentelemetryResource.Resource, resource => Effect__namespace.acquireRelease(Effect__namespace.sync(() => {
57
- const sdk = new sdkNode.NodeSDK({
58
- ...config,
59
- metricReader: undefined,
59
+ const layerTracerProvider = (processor, config) => Layer__namespace.scoped(Tracer_dist_effectOpentelemetryTracer.TracerProvider, Effect__namespace.flatMap(Resource_dist_effectOpentelemetryResource.Resource, resource => Effect__namespace.acquireRelease(Effect__namespace.sync(() => {
60
+ const provider = new sdkTraceNode.NodeTracerProvider({
61
+ ...(config ?? {}),
60
62
  resource
61
63
  });
62
- sdk.start();
63
- return sdk;
64
- }), sdk => Effect__namespace.promise(() => sdk.shutdown())));
64
+ provider.addSpanProcessor(processor);
65
+ return provider;
66
+ }), provider => Effect__namespace.promise(() => provider.shutdown()))));
65
67
 
66
68
  /**
67
69
  * @since 1.0.0
@@ -69,9 +71,11 @@ const make = config => Effect__namespace.flatMap(Resource_dist_effectOpentelemet
69
71
  */
70
72
  const layer = evaluate => Layer__namespace.unwrapEffect(Effect__namespace.sync(() => {
71
73
  const config = evaluate();
72
- const Tracing = Layer__namespace.scopedDiscard(make(config));
73
- return config.metricReader ? Layer__namespace.merge(Tracing, Metrics_dist_effectOpentelemetryMetrics.layer(() => config.metricReader)) : Tracing;
74
+ const ResourceLive = Resource_dist_effectOpentelemetryResource.layer(config.resource);
75
+ const TracerLive = config.spanProcessor ? Tracer_dist_effectOpentelemetryTracer.layer.pipe(Layer__namespace.use(layerTracerProvider(config.spanProcessor, config.tracerConfig))) : Layer__namespace.effectDiscard(Effect__namespace.unit);
76
+ const MetricsLive = config.metricReader ? Metrics_dist_effectOpentelemetryMetrics.layer(() => config.metricReader) : Layer__namespace.effectDiscard(Effect__namespace.unit);
77
+ return Layer__namespace.merge(TracerLive, MetricsLive).pipe(Layer__namespace.useMerge(ResourceLive));
74
78
  }));
75
79
 
76
- exports.config = config;
77
80
  exports.layer = layer;
81
+ exports.layerTracerProvider = layerTracerProvider;
@@ -1,4 +1,4 @@
1
1
  export {
2
- config,
3
- layer
2
+ layer,
3
+ layerTracerProvider
4
4
  } from "./effect-opentelemetry-NodeSdk.cjs.js";
@@ -2,11 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var sdkNode = require('@opentelemetry/sdk-node');
5
+ var sdkTraceNode = require('@opentelemetry/sdk-trace-node');
6
6
  var Effect = require('effect/Effect');
7
7
  var Layer = require('effect/Layer');
8
8
  var Metrics_dist_effectOpentelemetryMetrics = require('../../Metrics/dist/effect-opentelemetry-Metrics.cjs.prod.js');
9
9
  var Resource_dist_effectOpentelemetryResource = require('../../Resource/dist/effect-opentelemetry-Resource.cjs.prod.js');
10
+ var Tracer_dist_effectOpentelemetryTracer = require('../../Tracer/dist/effect-opentelemetry-Tracer.cjs.prod.js');
10
11
  require('@opentelemetry/api');
11
12
  require('@opentelemetry/sdk-metrics');
12
13
  require('effect/HashSet');
@@ -17,6 +18,9 @@ require('effect/Option');
17
18
  require('@opentelemetry/resources');
18
19
  require('@opentelemetry/semantic-conventions');
19
20
  require('effect/Context');
21
+ require('effect/Cause');
22
+ require('effect/FiberRef');
23
+ require('effect/Tracer');
20
24
 
21
25
  function _interopNamespace(e) {
22
26
  if (e && e.__esModule) return e;
@@ -50,18 +54,16 @@ var Layer__namespace = /*#__PURE__*/_interopNamespace(Layer);
50
54
 
51
55
  /**
52
56
  * @since 1.0.0
53
- * @category constructor
57
+ * @category layers
54
58
  */
55
- const config = config => config;
56
- const make = config => Effect__namespace.flatMap(Resource_dist_effectOpentelemetryResource.Resource, resource => Effect__namespace.acquireRelease(Effect__namespace.sync(() => {
57
- const sdk = new sdkNode.NodeSDK({
58
- ...config,
59
- metricReader: undefined,
59
+ const layerTracerProvider = (processor, config) => Layer__namespace.scoped(Tracer_dist_effectOpentelemetryTracer.TracerProvider, Effect__namespace.flatMap(Resource_dist_effectOpentelemetryResource.Resource, resource => Effect__namespace.acquireRelease(Effect__namespace.sync(() => {
60
+ const provider = new sdkTraceNode.NodeTracerProvider({
61
+ ...(config ?? {}),
60
62
  resource
61
63
  });
62
- sdk.start();
63
- return sdk;
64
- }), sdk => Effect__namespace.promise(() => sdk.shutdown())));
64
+ provider.addSpanProcessor(processor);
65
+ return provider;
66
+ }), provider => Effect__namespace.promise(() => provider.shutdown()))));
65
67
 
66
68
  /**
67
69
  * @since 1.0.0
@@ -69,9 +71,11 @@ const make = config => Effect__namespace.flatMap(Resource_dist_effectOpentelemet
69
71
  */
70
72
  const layer = evaluate => Layer__namespace.unwrapEffect(Effect__namespace.sync(() => {
71
73
  const config = evaluate();
72
- const Tracing = Layer__namespace.scopedDiscard(make(config));
73
- return config.metricReader ? Layer__namespace.merge(Tracing, Metrics_dist_effectOpentelemetryMetrics.layer(() => config.metricReader)) : Tracing;
74
+ const ResourceLive = Resource_dist_effectOpentelemetryResource.layer(config.resource);
75
+ const TracerLive = config.spanProcessor ? Tracer_dist_effectOpentelemetryTracer.layer.pipe(Layer__namespace.use(layerTracerProvider(config.spanProcessor, config.tracerConfig))) : Layer__namespace.effectDiscard(Effect__namespace.unit);
76
+ const MetricsLive = config.metricReader ? Metrics_dist_effectOpentelemetryMetrics.layer(() => config.metricReader) : Layer__namespace.effectDiscard(Effect__namespace.unit);
77
+ return Layer__namespace.merge(TracerLive, MetricsLive).pipe(Layer__namespace.useMerge(ResourceLive));
74
78
  }));
75
79
 
76
- exports.config = config;
77
80
  exports.layer = layer;
81
+ exports.layerTracerProvider = layerTracerProvider;
@@ -1,8 +1,9 @@
1
- import { NodeSDK } from '@opentelemetry/sdk-node';
1
+ import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
2
2
  import * as Effect from 'effect/Effect';
3
3
  import * as Layer from 'effect/Layer';
4
- import { layer as layer$1 } from '../../Metrics/dist/effect-opentelemetry-Metrics.esm.js';
5
- import { Resource } from '../../Resource/dist/effect-opentelemetry-Resource.esm.js';
4
+ import { layer as layer$3 } from '../../Metrics/dist/effect-opentelemetry-Metrics.esm.js';
5
+ import { Resource, layer as layer$1 } from '../../Resource/dist/effect-opentelemetry-Resource.esm.js';
6
+ import { TracerProvider, layer as layer$2 } from '../../Tracer/dist/effect-opentelemetry-Tracer.esm.js';
6
7
 
7
8
  /**
8
9
  * @since 1.0.0
@@ -15,18 +16,16 @@ import { Resource } from '../../Resource/dist/effect-opentelemetry-Resource.esm.
15
16
 
16
17
  /**
17
18
  * @since 1.0.0
18
- * @category constructor
19
+ * @category layers
19
20
  */
20
- const config = config => config;
21
- const make = config => Effect.flatMap(Resource, resource => Effect.acquireRelease(Effect.sync(() => {
22
- const sdk = new NodeSDK({
23
- ...config,
24
- metricReader: undefined,
21
+ const layerTracerProvider = (processor, config) => Layer.scoped(TracerProvider, Effect.flatMap(Resource, resource => Effect.acquireRelease(Effect.sync(() => {
22
+ const provider = new NodeTracerProvider({
23
+ ...(config ?? {}),
25
24
  resource
26
25
  });
27
- sdk.start();
28
- return sdk;
29
- }), sdk => Effect.promise(() => sdk.shutdown())));
26
+ provider.addSpanProcessor(processor);
27
+ return provider;
28
+ }), provider => Effect.promise(() => provider.shutdown()))));
30
29
 
31
30
  /**
32
31
  * @since 1.0.0
@@ -34,8 +33,10 @@ const make = config => Effect.flatMap(Resource, resource => Effect.acquireReleas
34
33
  */
35
34
  const layer = evaluate => Layer.unwrapEffect(Effect.sync(() => {
36
35
  const config = evaluate();
37
- const Tracing = Layer.scopedDiscard(make(config));
38
- return config.metricReader ? Layer.merge(Tracing, layer$1(() => config.metricReader)) : Tracing;
36
+ const ResourceLive = layer$1(config.resource);
37
+ const TracerLive = config.spanProcessor ? layer$2.pipe(Layer.use(layerTracerProvider(config.spanProcessor, config.tracerConfig))) : Layer.effectDiscard(Effect.unit);
38
+ const MetricsLive = config.metricReader ? layer$3(() => config.metricReader) : Layer.effectDiscard(Effect.unit);
39
+ return Layer.merge(TracerLive, MetricsLive).pipe(Layer.useMerge(ResourceLive));
39
40
  }));
40
41
 
41
- export { config, layer };
42
+ export { layer, layerTracerProvider };
@@ -9,7 +9,7 @@ var Effect = require('effect/Effect');
9
9
  var FiberRef = require('effect/FiberRef');
10
10
  var Layer = require('effect/Layer');
11
11
  var Option = require('effect/Option');
12
- var Tracer = require('effect/Tracer');
12
+ var EffectTracer = require('effect/Tracer');
13
13
  var Resource_dist_effectOpentelemetryResource = require('../../Resource/dist/effect-opentelemetry-Resource.cjs.dev.js');
14
14
  require('@opentelemetry/resources');
15
15
  require('@opentelemetry/semantic-conventions');
@@ -39,7 +39,7 @@ var Effect__namespace = /*#__PURE__*/_interopNamespace(Effect);
39
39
  var FiberRef__namespace = /*#__PURE__*/_interopNamespace(FiberRef);
40
40
  var Layer__namespace = /*#__PURE__*/_interopNamespace(Layer);
41
41
  var Option__namespace = /*#__PURE__*/_interopNamespace(Option);
42
- var Tracer__namespace = /*#__PURE__*/_interopNamespace(Tracer);
42
+ var EffectTracer__namespace = /*#__PURE__*/_interopNamespace(EffectTracer);
43
43
 
44
44
  /** @internal */
45
45
  class OtelSpan {
@@ -105,15 +105,18 @@ class OtelSpan {
105
105
  }
106
106
 
107
107
  /** @internal */
108
- const OtelTracer$1 = /*#__PURE__*/Context__namespace.Tag("@effect/opentelemetry/Tracer/OtelTracer");
108
+ const TracerProvider$1 = /*#__PURE__*/Context__namespace.Tag("@effect/opentelemetry/Tracer/TracerProvider");
109
109
 
110
110
  /** @internal */
111
- const make$1 = /*#__PURE__*/Effect__namespace.map(OtelTracer$1, tracer => Tracer__namespace.make({
111
+ const Tracer$1 = /*#__PURE__*/Context__namespace.Tag("@effect/opentelemetry/Tracer/Tracer");
112
+
113
+ /** @internal */
114
+ const make$1 = /*#__PURE__*/Effect__namespace.map(Tracer$1, tracer => EffectTracer__namespace.make({
112
115
  span(name, parent, context, links, startTime) {
113
116
  return new OtelSpan(OtelApi__namespace.context, tracer, name, parent, context, links, startTime);
114
117
  },
115
118
  context(execution, fiber) {
116
- const currentSpan = fiber.getFiberRef(FiberRef__namespace.currentContext).unsafeMap.get(Tracer__namespace.ParentSpan);
119
+ const currentSpan = fiber.getFiberRef(FiberRef__namespace.currentContext).unsafeMap.get(EffectTracer__namespace.ParentSpan);
117
120
  if (currentSpan === undefined) {
118
121
  return execution();
119
122
  }
@@ -154,10 +157,19 @@ const makeExternalSpan$1 = options => {
154
157
  const currentOtelSpan$1 = /*#__PURE__*/Effect__namespace.map(Effect__namespace.currentSpan, span => Option__namespace.map(Option__namespace.filter(span, span => "span" in span), _ => _.span));
155
158
 
156
159
  /** @internal */
157
- const layerOtelTracer$1 = /*#__PURE__*/Layer__namespace.effect(OtelTracer$1, /*#__PURE__*/Effect__namespace.flatMap(Resource_dist_effectOpentelemetryResource.Resource, resource => Effect__namespace.sync(() => OtelApi__namespace.trace.getTracer(resource.attributes["service.name"], resource.attributes["service.version"]))));
160
+ const layerGlobalProvider = /*#__PURE__*/Layer__namespace.sync(TracerProvider$1, () => OtelApi__namespace.trace.getTracerProvider());
161
+
162
+ /** @internal */
163
+ const layerTracer$1 = /*#__PURE__*/Layer__namespace.effect(Tracer$1, /*#__PURE__*/Effect__namespace.flatMap( /*#__PURE__*/Effect__namespace.zip(Resource_dist_effectOpentelemetryResource.Resource, TracerProvider$1), ([resource, provider]) => Effect__namespace.sync(() => provider.getTracer(resource.attributes["service.name"], resource.attributes["service.version"]))));
164
+
165
+ /** @internal */
166
+ const layerGlobalTracer$1 = /*#__PURE__*/layerTracer$1.pipe( /*#__PURE__*/Layer__namespace.use(layerGlobalProvider));
158
167
 
159
168
  /** @internal */
160
- const layer$1 = /*#__PURE__*/Layer__namespace.provide(layerOtelTracer$1, /*#__PURE__*/Layer__namespace.unwrapEffect( /*#__PURE__*/Effect__namespace.map(make$1, Layer__namespace.setTracer)));
169
+ const layerGlobal$1 = /*#__PURE__*/Layer__namespace.unwrapEffect(Effect__namespace.map(make$1, Layer__namespace.setTracer)).pipe( /*#__PURE__*/Layer__namespace.use(layerGlobalTracer$1));
170
+
171
+ /** @internal */
172
+ const layer$1 = /*#__PURE__*/Layer__namespace.unwrapEffect(Effect__namespace.map(make$1, Layer__namespace.setTracer)).pipe( /*#__PURE__*/Layer__namespace.use(layerTracer$1));
161
173
 
162
174
  // -------------------------------------------------------------------------------------
163
175
  // utils
@@ -230,13 +242,31 @@ const layer = layer$1;
230
242
  * @since 1.0.0
231
243
  * @category layers
232
244
  */
233
- const layerOtelTracer = layerOtelTracer$1;
245
+ const layerGlobal = layerGlobal$1;
246
+
247
+ /**
248
+ * @since 1.0.0
249
+ * @category layers
250
+ */
251
+ const layerTracer = layerTracer$1;
252
+
253
+ /**
254
+ * @since 1.0.0
255
+ * @category layers
256
+ */
257
+ const layerGlobalTracer = layerGlobalTracer$1;
258
+
259
+ /**
260
+ * @since 1.0.0
261
+ * @category tags
262
+ */
263
+ const TracerProvider = TracerProvider$1;
234
264
 
235
265
  /**
236
266
  * @since 1.0.0
237
267
  * @category tags
238
268
  */
239
- const OtelTracer = OtelTracer$1;
269
+ const Tracer = Tracer$1;
240
270
 
241
271
  /**
242
272
  * @since 1.0.0
@@ -250,11 +280,14 @@ const TraceFlags = traceFlagsTag;
250
280
  */
251
281
  const TraceState = traceStateTag;
252
282
 
253
- exports.OtelTracer = OtelTracer;
254
283
  exports.TraceFlags = TraceFlags;
255
284
  exports.TraceState = TraceState;
285
+ exports.Tracer = Tracer;
286
+ exports.TracerProvider = TracerProvider;
256
287
  exports.currentOtelSpan = currentOtelSpan;
257
288
  exports.layer = layer;
258
- exports.layerOtelTracer = layerOtelTracer;
289
+ exports.layerGlobal = layerGlobal;
290
+ exports.layerGlobalTracer = layerGlobalTracer;
291
+ exports.layerTracer = layerTracer;
259
292
  exports.make = make;
260
293
  exports.makeExternalSpan = makeExternalSpan;
@@ -1,10 +1,13 @@
1
1
  export {
2
- OtelTracer,
3
2
  TraceFlags,
4
3
  TraceState,
4
+ Tracer,
5
+ TracerProvider,
5
6
  currentOtelSpan,
6
7
  layer,
7
- layerOtelTracer,
8
+ layerGlobal,
9
+ layerGlobalTracer,
10
+ layerTracer,
8
11
  make,
9
12
  makeExternalSpan
10
13
  } from "./effect-opentelemetry-Tracer.cjs.js";
@@ -9,7 +9,7 @@ var Effect = require('effect/Effect');
9
9
  var FiberRef = require('effect/FiberRef');
10
10
  var Layer = require('effect/Layer');
11
11
  var Option = require('effect/Option');
12
- var Tracer = require('effect/Tracer');
12
+ var EffectTracer = require('effect/Tracer');
13
13
  var Resource_dist_effectOpentelemetryResource = require('../../Resource/dist/effect-opentelemetry-Resource.cjs.prod.js');
14
14
  require('@opentelemetry/resources');
15
15
  require('@opentelemetry/semantic-conventions');
@@ -39,7 +39,7 @@ var Effect__namespace = /*#__PURE__*/_interopNamespace(Effect);
39
39
  var FiberRef__namespace = /*#__PURE__*/_interopNamespace(FiberRef);
40
40
  var Layer__namespace = /*#__PURE__*/_interopNamespace(Layer);
41
41
  var Option__namespace = /*#__PURE__*/_interopNamespace(Option);
42
- var Tracer__namespace = /*#__PURE__*/_interopNamespace(Tracer);
42
+ var EffectTracer__namespace = /*#__PURE__*/_interopNamespace(EffectTracer);
43
43
 
44
44
  /** @internal */
45
45
  class OtelSpan {
@@ -105,15 +105,18 @@ class OtelSpan {
105
105
  }
106
106
 
107
107
  /** @internal */
108
- const OtelTracer$1 = /*#__PURE__*/Context__namespace.Tag("@effect/opentelemetry/Tracer/OtelTracer");
108
+ const TracerProvider$1 = /*#__PURE__*/Context__namespace.Tag("@effect/opentelemetry/Tracer/TracerProvider");
109
109
 
110
110
  /** @internal */
111
- const make$1 = /*#__PURE__*/Effect__namespace.map(OtelTracer$1, tracer => Tracer__namespace.make({
111
+ const Tracer$1 = /*#__PURE__*/Context__namespace.Tag("@effect/opentelemetry/Tracer/Tracer");
112
+
113
+ /** @internal */
114
+ const make$1 = /*#__PURE__*/Effect__namespace.map(Tracer$1, tracer => EffectTracer__namespace.make({
112
115
  span(name, parent, context, links, startTime) {
113
116
  return new OtelSpan(OtelApi__namespace.context, tracer, name, parent, context, links, startTime);
114
117
  },
115
118
  context(execution, fiber) {
116
- const currentSpan = fiber.getFiberRef(FiberRef__namespace.currentContext).unsafeMap.get(Tracer__namespace.ParentSpan);
119
+ const currentSpan = fiber.getFiberRef(FiberRef__namespace.currentContext).unsafeMap.get(EffectTracer__namespace.ParentSpan);
117
120
  if (currentSpan === undefined) {
118
121
  return execution();
119
122
  }
@@ -154,10 +157,19 @@ const makeExternalSpan$1 = options => {
154
157
  const currentOtelSpan$1 = /*#__PURE__*/Effect__namespace.map(Effect__namespace.currentSpan, span => Option__namespace.map(Option__namespace.filter(span, span => "span" in span), _ => _.span));
155
158
 
156
159
  /** @internal */
157
- const layerOtelTracer$1 = /*#__PURE__*/Layer__namespace.effect(OtelTracer$1, /*#__PURE__*/Effect__namespace.flatMap(Resource_dist_effectOpentelemetryResource.Resource, resource => Effect__namespace.sync(() => OtelApi__namespace.trace.getTracer(resource.attributes["service.name"], resource.attributes["service.version"]))));
160
+ const layerGlobalProvider = /*#__PURE__*/Layer__namespace.sync(TracerProvider$1, () => OtelApi__namespace.trace.getTracerProvider());
161
+
162
+ /** @internal */
163
+ const layerTracer$1 = /*#__PURE__*/Layer__namespace.effect(Tracer$1, /*#__PURE__*/Effect__namespace.flatMap( /*#__PURE__*/Effect__namespace.zip(Resource_dist_effectOpentelemetryResource.Resource, TracerProvider$1), ([resource, provider]) => Effect__namespace.sync(() => provider.getTracer(resource.attributes["service.name"], resource.attributes["service.version"]))));
164
+
165
+ /** @internal */
166
+ const layerGlobalTracer$1 = /*#__PURE__*/layerTracer$1.pipe( /*#__PURE__*/Layer__namespace.use(layerGlobalProvider));
158
167
 
159
168
  /** @internal */
160
- const layer$1 = /*#__PURE__*/Layer__namespace.provide(layerOtelTracer$1, /*#__PURE__*/Layer__namespace.unwrapEffect( /*#__PURE__*/Effect__namespace.map(make$1, Layer__namespace.setTracer)));
169
+ const layerGlobal$1 = /*#__PURE__*/Layer__namespace.unwrapEffect(Effect__namespace.map(make$1, Layer__namespace.setTracer)).pipe( /*#__PURE__*/Layer__namespace.use(layerGlobalTracer$1));
170
+
171
+ /** @internal */
172
+ const layer$1 = /*#__PURE__*/Layer__namespace.unwrapEffect(Effect__namespace.map(make$1, Layer__namespace.setTracer)).pipe( /*#__PURE__*/Layer__namespace.use(layerTracer$1));
161
173
 
162
174
  // -------------------------------------------------------------------------------------
163
175
  // utils
@@ -230,13 +242,31 @@ const layer = layer$1;
230
242
  * @since 1.0.0
231
243
  * @category layers
232
244
  */
233
- const layerOtelTracer = layerOtelTracer$1;
245
+ const layerGlobal = layerGlobal$1;
246
+
247
+ /**
248
+ * @since 1.0.0
249
+ * @category layers
250
+ */
251
+ const layerTracer = layerTracer$1;
252
+
253
+ /**
254
+ * @since 1.0.0
255
+ * @category layers
256
+ */
257
+ const layerGlobalTracer = layerGlobalTracer$1;
258
+
259
+ /**
260
+ * @since 1.0.0
261
+ * @category tags
262
+ */
263
+ const TracerProvider = TracerProvider$1;
234
264
 
235
265
  /**
236
266
  * @since 1.0.0
237
267
  * @category tags
238
268
  */
239
- const OtelTracer = OtelTracer$1;
269
+ const Tracer = Tracer$1;
240
270
 
241
271
  /**
242
272
  * @since 1.0.0
@@ -250,11 +280,14 @@ const TraceFlags = traceFlagsTag;
250
280
  */
251
281
  const TraceState = traceStateTag;
252
282
 
253
- exports.OtelTracer = OtelTracer;
254
283
  exports.TraceFlags = TraceFlags;
255
284
  exports.TraceState = TraceState;
285
+ exports.Tracer = Tracer;
286
+ exports.TracerProvider = TracerProvider;
256
287
  exports.currentOtelSpan = currentOtelSpan;
257
288
  exports.layer = layer;
258
- exports.layerOtelTracer = layerOtelTracer;
289
+ exports.layerGlobal = layerGlobal;
290
+ exports.layerGlobalTracer = layerGlobalTracer;
291
+ exports.layerTracer = layerTracer;
259
292
  exports.make = make;
260
293
  exports.makeExternalSpan = makeExternalSpan;
@@ -1,4 +1,4 @@
1
- import { make as make$1, makeExternalSpan as makeExternalSpan$1, currentOtelSpan as currentOtelSpan$1, layer as layer$1, layerOtelTracer as layerOtelTracer$1, OtelTracer as OtelTracer$1, traceFlagsTag, traceStateTag } from '../../internal/tracer.esm.js';
1
+ import { make as make$1, makeExternalSpan as makeExternalSpan$1, currentOtelSpan as currentOtelSpan$1, layer as layer$1, layerGlobal as layerGlobal$1, layerTracer as layerTracer$1, layerGlobalTracer as layerGlobalTracer$1, TracerProvider as TracerProvider$1, Tracer as Tracer$1, traceFlagsTag, traceStateTag } from '../../internal/tracer.esm.js';
2
2
 
3
3
  /**
4
4
  * @since 1.0.0
@@ -31,13 +31,31 @@ const layer = layer$1;
31
31
  * @since 1.0.0
32
32
  * @category layers
33
33
  */
34
- const layerOtelTracer = layerOtelTracer$1;
34
+ const layerGlobal = layerGlobal$1;
35
+
36
+ /**
37
+ * @since 1.0.0
38
+ * @category layers
39
+ */
40
+ const layerTracer = layerTracer$1;
41
+
42
+ /**
43
+ * @since 1.0.0
44
+ * @category layers
45
+ */
46
+ const layerGlobalTracer = layerGlobalTracer$1;
47
+
48
+ /**
49
+ * @since 1.0.0
50
+ * @category tags
51
+ */
52
+ const TracerProvider = TracerProvider$1;
35
53
 
36
54
  /**
37
55
  * @since 1.0.0
38
56
  * @category tags
39
57
  */
40
- const OtelTracer = OtelTracer$1;
58
+ const Tracer = Tracer$1;
41
59
 
42
60
  /**
43
61
  * @since 1.0.0
@@ -51,4 +69,4 @@ const TraceFlags = traceFlagsTag;
51
69
  */
52
70
  const TraceState = traceStateTag;
53
71
 
54
- export { OtelTracer, TraceFlags, TraceState, currentOtelSpan, layer, layerOtelTracer, make, makeExternalSpan };
72
+ export { TraceFlags, TraceState, Tracer, TracerProvider, currentOtelSpan, layer, layerGlobal, layerGlobalTracer, layerTracer, make, makeExternalSpan };
@@ -0,0 +1,2 @@
1
+ export * from "../../dist/declarations/src/WebSdk.js";
2
+ //# sourceMappingURL=effect-opentelemetry-WebSdk.cjs.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-opentelemetry-WebSdk.cjs.d.mts","sourceRoot":"","sources":["../../dist/declarations/src/WebSdk.d.ts"],"names":[],"mappings":"AAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "../../dist/declarations/src/WebSdk";
2
+ //# sourceMappingURL=effect-opentelemetry-WebSdk.cjs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-opentelemetry-WebSdk.cjs.d.ts","sourceRoot":"","sources":["../../dist/declarations/src/WebSdk.d.ts"],"names":[],"mappings":"AAAA"}
@@ -0,0 +1,81 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var sdkTraceWeb = require('@opentelemetry/sdk-trace-web');
6
+ var Effect = require('effect/Effect');
7
+ var Layer = require('effect/Layer');
8
+ var Metrics_dist_effectOpentelemetryMetrics = require('../../Metrics/dist/effect-opentelemetry-Metrics.cjs.dev.js');
9
+ var Resource_dist_effectOpentelemetryResource = require('../../Resource/dist/effect-opentelemetry-Resource.cjs.dev.js');
10
+ var Tracer_dist_effectOpentelemetryTracer = require('../../Tracer/dist/effect-opentelemetry-Tracer.cjs.dev.js');
11
+ require('@opentelemetry/api');
12
+ require('@opentelemetry/sdk-metrics');
13
+ require('effect/HashSet');
14
+ require('effect/Metric');
15
+ require('effect/MetricKeyType');
16
+ require('effect/MetricState');
17
+ require('effect/Option');
18
+ require('@opentelemetry/resources');
19
+ require('@opentelemetry/semantic-conventions');
20
+ require('effect/Context');
21
+ require('effect/Cause');
22
+ require('effect/FiberRef');
23
+ require('effect/Tracer');
24
+
25
+ function _interopNamespace(e) {
26
+ if (e && e.__esModule) return e;
27
+ var n = Object.create(null);
28
+ if (e) {
29
+ Object.keys(e).forEach(function (k) {
30
+ if (k !== 'default') {
31
+ var d = Object.getOwnPropertyDescriptor(e, k);
32
+ Object.defineProperty(n, k, d.get ? d : {
33
+ enumerable: true,
34
+ get: function () { return e[k]; }
35
+ });
36
+ }
37
+ });
38
+ }
39
+ n["default"] = e;
40
+ return Object.freeze(n);
41
+ }
42
+
43
+ var Effect__namespace = /*#__PURE__*/_interopNamespace(Effect);
44
+ var Layer__namespace = /*#__PURE__*/_interopNamespace(Layer);
45
+
46
+ /**
47
+ * @since 1.0.0
48
+ */
49
+
50
+ /**
51
+ * @since 1.0.0
52
+ * @category model
53
+ */
54
+
55
+ /**
56
+ * @since 1.0.0
57
+ * @category layers
58
+ */
59
+ const layerTracerProvider = (processor, config) => Layer__namespace.scoped(Tracer_dist_effectOpentelemetryTracer.TracerProvider, Effect__namespace.flatMap(Resource_dist_effectOpentelemetryResource.Resource, resource => Effect__namespace.acquireRelease(Effect__namespace.sync(() => {
60
+ const provider = new sdkTraceWeb.WebTracerProvider({
61
+ ...(config ?? {}),
62
+ resource
63
+ });
64
+ provider.addSpanProcessor(processor);
65
+ return provider;
66
+ }), provider => Effect__namespace.promise(() => provider.shutdown()))));
67
+
68
+ /**
69
+ * @since 1.0.0
70
+ * @category layer
71
+ */
72
+ const layer = evaluate => Layer__namespace.unwrapEffect(Effect__namespace.sync(() => {
73
+ const config = evaluate();
74
+ const ResourceLive = Resource_dist_effectOpentelemetryResource.layer(config.resource);
75
+ const TracerLive = config.spanProcessor ? Tracer_dist_effectOpentelemetryTracer.layer.pipe(Layer__namespace.use(layerTracerProvider(config.spanProcessor, config.tracerConfig))) : Layer__namespace.effectDiscard(Effect__namespace.unit);
76
+ const MetricsLive = config.metricReader ? Metrics_dist_effectOpentelemetryMetrics.layer(() => config.metricReader) : Layer__namespace.effectDiscard(Effect__namespace.unit);
77
+ return Layer__namespace.merge(TracerLive, MetricsLive).pipe(Layer__namespace.useMerge(ResourceLive));
78
+ }));
79
+
80
+ exports.layer = layer;
81
+ exports.layerTracerProvider = layerTracerProvider;
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ if (process.env.NODE_ENV === "production") {
4
+ module.exports = require("./effect-opentelemetry-WebSdk.cjs.prod.js");
5
+ } else {
6
+ module.exports = require("./effect-opentelemetry-WebSdk.cjs.dev.js");
7
+ }
@@ -0,0 +1,4 @@
1
+ export {
2
+ layer,
3
+ layerTracerProvider
4
+ } from "./effect-opentelemetry-WebSdk.cjs.js";