@effect/opentelemetry 0.19.0 → 0.21.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 (37) hide show
  1. package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.dev.js +30 -12
  2. package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.mjs +2 -2
  3. package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.prod.js +30 -12
  4. package/NodeSdk/dist/effect-opentelemetry-NodeSdk.esm.js +21 -13
  5. package/Tracer/dist/effect-opentelemetry-Tracer.cjs.dev.js +51 -24
  6. package/Tracer/dist/effect-opentelemetry-Tracer.cjs.mjs +5 -2
  7. package/Tracer/dist/effect-opentelemetry-Tracer.cjs.prod.js +51 -24
  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 +26 -18
  32. package/package.json +28 -17
  33. package/src/NodeSdk.ts +60 -20
  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 +47 -37
@@ -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";
@@ -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.prod.js');
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');
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,42 @@
1
+ import { WebTracerProvider } from '@opentelemetry/sdk-trace-web';
2
+ import * as Effect from 'effect/Effect';
3
+ import * as Layer from 'effect/Layer';
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';
7
+
8
+ /**
9
+ * @since 1.0.0
10
+ */
11
+
12
+ /**
13
+ * @since 1.0.0
14
+ * @category model
15
+ */
16
+
17
+ /**
18
+ * @since 1.0.0
19
+ * @category layers
20
+ */
21
+ const layerTracerProvider = (processor, config) => Layer.scoped(TracerProvider, Effect.flatMap(Resource, resource => Effect.acquireRelease(Effect.sync(() => {
22
+ const provider = new WebTracerProvider({
23
+ ...(config ?? {}),
24
+ resource
25
+ });
26
+ provider.addSpanProcessor(processor);
27
+ return provider;
28
+ }), provider => Effect.promise(() => provider.shutdown()))));
29
+
30
+ /**
31
+ * @since 1.0.0
32
+ * @category layer
33
+ */
34
+ const layer = evaluate => Layer.unwrapEffect(Effect.sync(() => {
35
+ const config = evaluate();
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));
40
+ }));
41
+
42
+ export { layer, layerTracerProvider };
@@ -0,0 +1,4 @@
1
+ {
2
+ "main": "dist/effect-opentelemetry-WebSdk.cjs.js",
3
+ "module": "dist/effect-opentelemetry-WebSdk.esm.js"
4
+ }
@@ -1,23 +1,35 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import type { NodeSDKConfiguration } from "@opentelemetry/sdk-node";
4
+ import type { TracerProvider } from "@opentelemetry/api";
5
+ import type * as Resources from "@opentelemetry/resources";
6
+ import type { MetricReader } from "@opentelemetry/sdk-metrics";
7
+ import type { SpanProcessor, TracerConfig } from "@opentelemetry/sdk-trace-base";
5
8
  import type { LazyArg } from "effect/Function";
6
9
  import * as Layer from "effect/Layer";
7
- import { Resource } from "./Resource.js";
10
+ import * as Resource from "./Resource.js";
8
11
  /**
9
12
  * @since 1.0.0
10
13
  * @category model
11
14
  */
12
- export type Configuration = Partial<Omit<NodeSDKConfiguration, "resource" | "serviceName">>;
15
+ export interface Configuration {
16
+ readonly spanProcessor?: SpanProcessor;
17
+ readonly tracerConfig?: Omit<TracerConfig, "resource">;
18
+ readonly metricReader?: MetricReader;
19
+ readonly resource: {
20
+ readonly serviceName: string;
21
+ readonly serviceVersion?: string;
22
+ readonly attributes?: Resources.ResourceAttributes;
23
+ };
24
+ }
13
25
  /**
14
26
  * @since 1.0.0
15
- * @category constructor
27
+ * @category layers
16
28
  */
17
- export declare const config: (config: Configuration) => Configuration;
29
+ export declare const layerTracerProvider: (processor: SpanProcessor, config?: Omit<TracerConfig, "resource">) => Layer.Layer<Resource.Resource, never, TracerProvider>;
18
30
  /**
19
31
  * @since 1.0.0
20
32
  * @category layer
21
33
  */
22
- export declare const layer: (config: LazyArg<Configuration>) => Layer.Layer<Resource, never, never>;
34
+ export declare const layer: (evaluate: LazyArg<Configuration>) => Layer.Layer<never, never, Resource.Resource>;
23
35
  //# sourceMappingURL=NodeSdk.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeSdk.d.ts","sourceRoot":"../../../src","sources":["NodeSdk.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAGnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,QAAQ,EAAE,sBAAkB;AAErC;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,UAAU,GAAG,aAAa,CAAC,CAAC,CAAA;AAE3F;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,aAAiD,CAAA;AAEjG;;;GAGG;AACH,eAAO,MAAM,KAAK,WACR,QAAQ,aAAa,CAAC,KAC7B,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAYjC,CAAA"}
1
+ {"version":3,"file":"NodeSdk.d.ts","sourceRoot":"../../../src","sources":["NodeSdk.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,KAAK,SAAS,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAGhF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,QAAQ,sBAAkB;AAGtC;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAA;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;IACtD,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAA;IACpC,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;QAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;QAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,kBAAkB,CAAA;KACnD,CAAA;CACF;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,cACnB,aAAa,WACf,KAAK,YAAY,EAAE,UAAU,CAAC,KACtC,WAAW,CAAC,iBAAiB,EAAE,KAAK,EAAE,cAAc,CAkBpD,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,KAAK,aACN,QAAQ,aAAa,CAAC,KAC/B,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,iBAAiB,CAiB3C,CAAA"}
@@ -6,13 +6,13 @@ import type { Tag } from "effect/Context";
6
6
  import type { Effect } from "effect/Effect";
7
7
  import type { Layer } from "effect/Layer";
8
8
  import type * as Option from "effect/Option";
9
- import type { ExternalSpan, Tracer } from "effect/Tracer";
9
+ import type { ExternalSpan, Tracer as EffectTracer } from "effect/Tracer";
10
10
  import type { Resource } from "./Resource.js";
11
11
  /**
12
12
  * @since 1.0.0
13
13
  * @category constructors
14
14
  */
15
- export declare const make: Effect<Otel.Tracer, never, Tracer>;
15
+ export declare const make: Effect<Otel.Tracer, never, EffectTracer>;
16
16
  /**
17
17
  * @since 1.0.0
18
18
  * @category constructors
@@ -32,17 +32,32 @@ export declare const currentOtelSpan: Effect<never, never, Option.Option<Otel.Sp
32
32
  * @since 1.0.0
33
33
  * @category layers
34
34
  */
35
- export declare const layer: Layer<Resource, never, never>;
35
+ export declare const layer: Layer<Resource | Otel.TracerProvider, never, never>;
36
36
  /**
37
37
  * @since 1.0.0
38
38
  * @category layers
39
39
  */
40
- export declare const layerOtelTracer: Layer<Resource, never, Otel.Tracer>;
40
+ export declare const layerGlobal: Layer<Resource, never, never>;
41
+ /**
42
+ * @since 1.0.0
43
+ * @category layers
44
+ */
45
+ export declare const layerTracer: Layer<Resource | Otel.TracerProvider, never, Otel.Tracer>;
46
+ /**
47
+ * @since 1.0.0
48
+ * @category layers
49
+ */
50
+ export declare const layerGlobalTracer: Layer<Resource, never, Otel.Tracer>;
51
+ /**
52
+ * @since 1.0.0
53
+ * @category tags
54
+ */
55
+ export declare const TracerProvider: Tag<Otel.TracerProvider, Otel.TracerProvider>;
41
56
  /**
42
57
  * @since 1.0.0
43
58
  * @category tags
44
59
  */
45
- export declare const OtelTracer: Tag<Otel.Tracer, Otel.Tracer>;
60
+ export declare const Tracer: Tag<Otel.Tracer, Otel.Tracer>;
46
61
  /**
47
62
  * @since 1.0.0
48
63
  * @category tags
@@ -1 +1 @@
1
- {"version":3,"file":"Tracer.d.ts","sourceRoot":"../../../src","sources":["Tracer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,sBAAkB;AAE1C;;;GAGG;AACH,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAiB,CAAA;AAErE;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,CAC7B,OAAO,EAAE;IACP,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;CAC3D,KACE,YAAwC,CAAA;AAE7C;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAA4B,CAAA;AAEvG;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAkB,CAAA;AAElE;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAA4B,CAAA;AAE5F;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAuB,CAAA;AAE5E;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAA0B,CAAA;AAEvF;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAA0B,CAAA"}
1
+ {"version":3,"file":"Tracer.d.ts","sourceRoot":"../../../src","sources":["Tracer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,eAAe,CAAA;AAEzE,OAAO,KAAK,EAAE,QAAQ,EAAE,sBAAkB;AAE1C;;;GAGG;AACH,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAiB,CAAA;AAE3E;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,CAC7B,OAAO,EAAE;IACP,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;CAC3D,KACE,YAAwC,CAAA;AAE7C;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAA4B,CAAA;AAEvG;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,KAAK,CAAkB,CAAA;AAExF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAwB,CAAA;AAE9E;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAwB,CAAA;AAE1G;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAA8B,CAAA;AAEhG;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAA2B,CAAA;AAEpG;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAmB,CAAA;AAEpE;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAA0B,CAAA;AAEvF;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAA0B,CAAA"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import type { TracerProvider } from "@opentelemetry/api";
5
+ import type * as Resources from "@opentelemetry/resources";
6
+ import type { MetricReader } from "@opentelemetry/sdk-metrics";
7
+ import type { SpanProcessor, TracerConfig } from "@opentelemetry/sdk-trace-base";
8
+ import type { LazyArg } from "effect/Function";
9
+ import * as Layer from "effect/Layer";
10
+ import * as Resource from "./Resource.js";
11
+ /**
12
+ * @since 1.0.0
13
+ * @category model
14
+ */
15
+ export interface Configuration {
16
+ readonly spanProcessor?: SpanProcessor;
17
+ readonly tracerConfig?: Omit<TracerConfig, "resource">;
18
+ readonly metricReader?: MetricReader;
19
+ readonly resource: {
20
+ readonly serviceName: string;
21
+ readonly serviceVersion?: string;
22
+ readonly attributes?: Resources.ResourceAttributes;
23
+ };
24
+ }
25
+ /**
26
+ * @since 1.0.0
27
+ * @category layers
28
+ */
29
+ export declare const layerTracerProvider: (processor: SpanProcessor, config?: Omit<TracerConfig, "resource">) => Layer.Layer<Resource.Resource, never, TracerProvider>;
30
+ /**
31
+ * @since 1.0.0
32
+ * @category layer
33
+ */
34
+ export declare const layer: (evaluate: LazyArg<Configuration>) => Layer.Layer<never, never, Resource.Resource>;
35
+ //# sourceMappingURL=WebSdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebSdk.d.ts","sourceRoot":"../../../src","sources":["WebSdk.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,KAAK,SAAS,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAGhF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,QAAQ,sBAAkB;AAGtC;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAA;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;IACtD,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAA;IACpC,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;QAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;QAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,kBAAkB,CAAA;KACnD,CAAA;CACF;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,cACnB,aAAa,WACf,KAAK,YAAY,EAAE,UAAU,CAAC,KACtC,WAAW,CAAC,iBAAiB,EAAE,KAAK,EAAE,cAAc,CAkBpD,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,KAAK,aACN,QAAQ,aAAa,CAAC,KAC/B,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,iBAAiB,CAe3C,CAAA"}
@@ -14,4 +14,8 @@ export * as Resource from "./Resource.js";
14
14
  * @since 1.0.0
15
15
  */
16
16
  export * as Tracer from "./Tracer.js";
17
+ /**
18
+ * @since 1.0.0
19
+ */
20
+ export * as WebSdk from "./WebSdk.js";
17
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"../../../src","sources":["index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,OAAO,qBAAqC;AAExD;;GAEG;AACH,OAAO,KAAK,OAAO,qBAAqC;AAExD;;GAEG;AACH,OAAO,KAAK,QAAQ,sBAAsC;AAE1D;;GAEG;AACH,OAAO,KAAK,MAAM,oBAAoC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"../../../src","sources":["index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,OAAO,qBAAqC;AAExD;;GAEG;AACH,OAAO,KAAK,OAAO,qBAAqC;AAExD;;GAEG;AACH,OAAO,KAAK,QAAQ,sBAAsC;AAE1D;;GAEG;AACH,OAAO,KAAK,MAAM,oBAAoC;AAEtD;;GAEG;AACH,OAAO,KAAK,MAAM,oBAAoC"}
@@ -6,6 +6,7 @@ var Metrics = require('@effect/opentelemetry/Metrics');
6
6
  var NodeSdk = require('@effect/opentelemetry/NodeSdk');
7
7
  var Resource = require('@effect/opentelemetry/Resource');
8
8
  var Tracer = require('@effect/opentelemetry/Tracer');
9
+ var WebSdk = require('@effect/opentelemetry/WebSdk');
9
10
 
10
11
  function _interopNamespace(e) {
11
12
  if (e && e.__esModule) return e;
@@ -29,6 +30,7 @@ var Metrics__namespace = /*#__PURE__*/_interopNamespace(Metrics);
29
30
  var NodeSdk__namespace = /*#__PURE__*/_interopNamespace(NodeSdk);
30
31
  var Resource__namespace = /*#__PURE__*/_interopNamespace(Resource);
31
32
  var Tracer__namespace = /*#__PURE__*/_interopNamespace(Tracer);
33
+ var WebSdk__namespace = /*#__PURE__*/_interopNamespace(WebSdk);
32
34
 
33
35
 
34
36
 
@@ -36,3 +38,4 @@ exports.Metrics = Metrics__namespace;
36
38
  exports.NodeSdk = NodeSdk__namespace;
37
39
  exports.Resource = Resource__namespace;
38
40
  exports.Tracer = Tracer__namespace;
41
+ exports.WebSdk = WebSdk__namespace;
@@ -2,5 +2,6 @@ export {
2
2
  Metrics,
3
3
  NodeSdk,
4
4
  Resource,
5
- Tracer
5
+ Tracer,
6
+ WebSdk
6
7
  } from "./effect-opentelemetry.cjs.js";
@@ -6,6 +6,7 @@ var Metrics = require('@effect/opentelemetry/Metrics');
6
6
  var NodeSdk = require('@effect/opentelemetry/NodeSdk');
7
7
  var Resource = require('@effect/opentelemetry/Resource');
8
8
  var Tracer = require('@effect/opentelemetry/Tracer');
9
+ var WebSdk = require('@effect/opentelemetry/WebSdk');
9
10
 
10
11
  function _interopNamespace(e) {
11
12
  if (e && e.__esModule) return e;
@@ -29,6 +30,7 @@ var Metrics__namespace = /*#__PURE__*/_interopNamespace(Metrics);
29
30
  var NodeSdk__namespace = /*#__PURE__*/_interopNamespace(NodeSdk);
30
31
  var Resource__namespace = /*#__PURE__*/_interopNamespace(Resource);
31
32
  var Tracer__namespace = /*#__PURE__*/_interopNamespace(Tracer);
33
+ var WebSdk__namespace = /*#__PURE__*/_interopNamespace(WebSdk);
32
34
 
33
35
 
34
36
 
@@ -36,3 +38,4 @@ exports.Metrics = Metrics__namespace;
36
38
  exports.NodeSdk = NodeSdk__namespace;
37
39
  exports.Resource = Resource__namespace;
38
40
  exports.Tracer = Tracer__namespace;
41
+ exports.WebSdk = WebSdk__namespace;
@@ -6,3 +6,5 @@ import * as Resource from '@effect/opentelemetry/Resource';
6
6
  export { Resource };
7
7
  import * as Tracer from '@effect/opentelemetry/Tracer';
8
8
  export { Tracer };
9
+ import * as WebSdk from '@effect/opentelemetry/WebSdk';
10
+ export { WebSdk };
@@ -3,23 +3,20 @@ import * as Cause from 'effect/Cause';
3
3
  import * as Context from 'effect/Context';
4
4
  import * as Effect from 'effect/Effect';
5
5
  import * as FiberRef from 'effect/FiberRef';
6
- import * as FiberRefs from 'effect/FiberRefs';
7
6
  import * as Layer from 'effect/Layer';
8
- import * as List from 'effect/List';
9
7
  import * as Option from 'effect/Option';
10
- import * as Tracer from 'effect/Tracer';
8
+ import * as EffectTracer from 'effect/Tracer';
11
9
  import { Resource } from '../Resource/dist/effect-opentelemetry-Resource.esm.js';
12
10
 
13
11
  /** @internal */
14
12
  class OtelSpan {
15
13
  _tag = "Span";
16
14
  attributes = new Map();
17
- constructor(contextApi, tracer, name, parent, context, links, sampled, startTime) {
15
+ constructor(contextApi, tracer, name, parent, context, links, startTime) {
18
16
  this.name = name;
19
17
  this.parent = parent;
20
18
  this.context = context;
21
19
  this.links = links;
22
- this.sampled = sampled;
23
20
  const active = contextApi.active();
24
21
  this.span = tracer.startSpan(name, {
25
22
  startTime: nanosToHrTime(startTime),
@@ -35,6 +32,7 @@ class OtelSpan {
35
32
  _tag: "Started",
36
33
  startTime
37
34
  };
35
+ this.sampled = (spanContext.traceFlags & OtelApi.TraceFlags.SAMPLED) === OtelApi.TraceFlags.SAMPLED;
38
36
  }
39
37
  attribute(key, value) {
40
38
  this.span.setAttribute(key, unknownToAttributeValue(value));
@@ -74,24 +72,25 @@ class OtelSpan {
74
72
  }
75
73
 
76
74
  /** @internal */
77
- const OtelTracer = /*#__PURE__*/Context.Tag("@effect/opentelemetry/Tracer/OtelTracer");
75
+ const TracerProvider = /*#__PURE__*/Context.Tag("@effect/opentelemetry/Tracer/TracerProvider");
78
76
 
79
77
  /** @internal */
80
- const make = /*#__PURE__*/Effect.map(OtelTracer, tracer => Tracer.make({
81
- span(name, parent, context, links, sampled, startTime) {
82
- return new OtelSpan(OtelApi.context, tracer, name, parent, context, links, sampled, startTime);
78
+ const Tracer = /*#__PURE__*/Context.Tag("@effect/opentelemetry/Tracer/Tracer");
79
+
80
+ /** @internal */
81
+ const make = /*#__PURE__*/Effect.map(Tracer, tracer => EffectTracer.make({
82
+ span(name, parent, context, links, startTime) {
83
+ return new OtelSpan(OtelApi.context, tracer, name, parent, context, links, startTime);
83
84
  },
84
85
  context(execution, fiber) {
85
- const currentSpan = Option.flatMap(FiberRefs.get(fiber.getFiberRefs(), FiberRef.currentTracerSpan), List.head);
86
- if (currentSpan._tag === "None") {
86
+ const currentSpan = fiber.getFiberRef(FiberRef.currentContext).unsafeMap.get(EffectTracer.ParentSpan);
87
+ if (currentSpan === undefined) {
87
88
  return execution();
88
89
  }
89
- return OtelApi.context.with(populateContext(OtelApi.context.active(), currentSpan.value), execution);
90
+ return OtelApi.context.with(populateContext(OtelApi.context.active(), currentSpan), execution);
90
91
  }
91
92
  }));
92
93
 
93
- /** @internal */
94
-
95
94
  /** @internal */
96
95
  const traceFlagsTag = /*#__PURE__*/Context.Tag("@effect/opentelemetry/traceFlags");
97
96
 
@@ -116,7 +115,7 @@ const makeExternalSpan = options => {
116
115
  _tag: "ExternalSpan",
117
116
  traceId: options.traceId,
118
117
  spanId: options.spanId,
119
- sampled: options.traceFlags ? options.traceFlags === OtelApi.TraceFlags.SAMPLED : true,
118
+ sampled: options.traceFlags ? (options.traceFlags & OtelApi.TraceFlags.SAMPLED) === OtelApi.TraceFlags.SAMPLED : true,
120
119
  context
121
120
  };
122
121
  };
@@ -125,10 +124,19 @@ const makeExternalSpan = options => {
125
124
  const currentOtelSpan = /*#__PURE__*/Effect.map(Effect.currentSpan, span => Option.map(Option.filter(span, span => "span" in span), _ => _.span));
126
125
 
127
126
  /** @internal */
128
- const layerOtelTracer = /*#__PURE__*/Layer.effect(OtelTracer, /*#__PURE__*/Effect.flatMap(Resource, resource => Effect.sync(() => OtelApi.trace.getTracer(resource.attributes["service.name"], resource.attributes["service.version"]))));
127
+ const layerGlobalProvider = /*#__PURE__*/Layer.sync(TracerProvider, () => OtelApi.trace.getTracerProvider());
128
+
129
+ /** @internal */
130
+ const layerTracer = /*#__PURE__*/Layer.effect(Tracer, /*#__PURE__*/Effect.flatMap( /*#__PURE__*/Effect.zip(Resource, TracerProvider), ([resource, provider]) => Effect.sync(() => provider.getTracer(resource.attributes["service.name"], resource.attributes["service.version"]))));
131
+
132
+ /** @internal */
133
+ const layerGlobalTracer = /*#__PURE__*/layerTracer.pipe( /*#__PURE__*/Layer.use(layerGlobalProvider));
134
+
135
+ /** @internal */
136
+ const layerGlobal = /*#__PURE__*/Layer.unwrapEffect(Effect.map(make, Layer.setTracer)).pipe( /*#__PURE__*/Layer.use(layerGlobalTracer));
129
137
 
130
138
  /** @internal */
131
- const layer = /*#__PURE__*/Layer.provide(layerOtelTracer, /*#__PURE__*/Layer.unwrapEffect( /*#__PURE__*/Effect.map(make, Layer.setTracer)));
139
+ const layer = /*#__PURE__*/Layer.unwrapEffect(Effect.map(make, Layer.setTracer)).pipe( /*#__PURE__*/Layer.use(layerTracer));
132
140
 
133
141
  // -------------------------------------------------------------------------------------
134
142
  // utils
@@ -170,4 +178,4 @@ const objectToAttribute = value => {
170
178
  }
171
179
  };
172
180
 
173
- export { OtelSpan, OtelTracer, currentOtelSpan, layer, layerOtelTracer, make, makeExternalSpan, traceFlagsTag, traceStateTag };
181
+ export { OtelSpan, Tracer, TracerProvider, currentOtelSpan, layer, layerGlobal, layerGlobalProvider, layerGlobalTracer, layerTracer, make, makeExternalSpan, traceFlagsTag, traceStateTag };