@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.
- package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.dev.js +17 -13
- package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.mjs +2 -2
- package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.prod.js +17 -13
- package/NodeSdk/dist/effect-opentelemetry-NodeSdk.esm.js +16 -15
- package/Tracer/dist/effect-opentelemetry-Tracer.cjs.dev.js +44 -11
- package/Tracer/dist/effect-opentelemetry-Tracer.cjs.mjs +5 -2
- package/Tracer/dist/effect-opentelemetry-Tracer.cjs.prod.js +44 -11
- package/Tracer/dist/effect-opentelemetry-Tracer.esm.js +22 -4
- package/WebSdk/dist/effect-opentelemetry-WebSdk.cjs.d.mts +2 -0
- package/WebSdk/dist/effect-opentelemetry-WebSdk.cjs.d.mts.map +1 -0
- package/WebSdk/dist/effect-opentelemetry-WebSdk.cjs.d.ts +2 -0
- package/WebSdk/dist/effect-opentelemetry-WebSdk.cjs.d.ts.map +1 -0
- package/WebSdk/dist/effect-opentelemetry-WebSdk.cjs.dev.js +81 -0
- package/WebSdk/dist/effect-opentelemetry-WebSdk.cjs.js +7 -0
- package/WebSdk/dist/effect-opentelemetry-WebSdk.cjs.mjs +4 -0
- package/WebSdk/dist/effect-opentelemetry-WebSdk.cjs.prod.js +81 -0
- package/WebSdk/dist/effect-opentelemetry-WebSdk.esm.js +42 -0
- package/WebSdk/package.json +4 -0
- package/dist/declarations/src/NodeSdk.d.ts +18 -6
- package/dist/declarations/src/NodeSdk.d.ts.map +1 -1
- package/dist/declarations/src/Tracer.d.ts +20 -5
- package/dist/declarations/src/Tracer.d.ts.map +1 -1
- package/dist/declarations/src/WebSdk.d.ts +35 -0
- package/dist/declarations/src/WebSdk.d.ts.map +1 -0
- package/dist/declarations/src/index.d.ts +4 -0
- package/dist/declarations/src/index.d.ts.map +1 -1
- package/dist/effect-opentelemetry.cjs.dev.js +3 -0
- package/dist/effect-opentelemetry.cjs.mjs +2 -1
- package/dist/effect-opentelemetry.cjs.prod.js +3 -0
- package/dist/effect-opentelemetry.esm.js +2 -0
- package/internal/tracer.esm.js +19 -7
- package/package.json +25 -15
- package/src/NodeSdk.ts +53 -25
- package/src/Tracer.ts +23 -5
- package/src/WebSdk.ts +79 -0
- package/src/index.ts +5 -0
- package/src/internal/tracer.ts +40 -22
|
@@ -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 };
|
|
@@ -1,23 +1,35 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
|
-
import type {
|
|
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
|
|
10
|
+
import * as Resource from "./Resource.js";
|
|
8
11
|
/**
|
|
9
12
|
* @since 1.0.0
|
|
10
13
|
* @category model
|
|
11
14
|
*/
|
|
12
|
-
export
|
|
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
|
|
27
|
+
* @category layers
|
|
16
28
|
*/
|
|
17
|
-
export declare const
|
|
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: (evaluate: LazyArg<Configuration>) => Layer.Layer<
|
|
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,
|
|
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,
|
|
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
|
|
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
|
|
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;
|
|
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"}
|
|
@@ -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;
|
|
@@ -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;
|
package/internal/tracer.esm.js
CHANGED
|
@@ -5,7 +5,7 @@ import * as Effect from 'effect/Effect';
|
|
|
5
5
|
import * as FiberRef from 'effect/FiberRef';
|
|
6
6
|
import * as Layer from 'effect/Layer';
|
|
7
7
|
import * as Option from 'effect/Option';
|
|
8
|
-
import * as
|
|
8
|
+
import * as EffectTracer from 'effect/Tracer';
|
|
9
9
|
import { Resource } from '../Resource/dist/effect-opentelemetry-Resource.esm.js';
|
|
10
10
|
|
|
11
11
|
/** @internal */
|
|
@@ -72,15 +72,18 @@ class OtelSpan {
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
/** @internal */
|
|
75
|
-
const
|
|
75
|
+
const TracerProvider = /*#__PURE__*/Context.Tag("@effect/opentelemetry/Tracer/TracerProvider");
|
|
76
76
|
|
|
77
77
|
/** @internal */
|
|
78
|
-
const
|
|
78
|
+
const Tracer = /*#__PURE__*/Context.Tag("@effect/opentelemetry/Tracer/Tracer");
|
|
79
|
+
|
|
80
|
+
/** @internal */
|
|
81
|
+
const make = /*#__PURE__*/Effect.map(Tracer, tracer => EffectTracer.make({
|
|
79
82
|
span(name, parent, context, links, startTime) {
|
|
80
83
|
return new OtelSpan(OtelApi.context, tracer, name, parent, context, links, startTime);
|
|
81
84
|
},
|
|
82
85
|
context(execution, fiber) {
|
|
83
|
-
const currentSpan = fiber.getFiberRef(FiberRef.currentContext).unsafeMap.get(
|
|
86
|
+
const currentSpan = fiber.getFiberRef(FiberRef.currentContext).unsafeMap.get(EffectTracer.ParentSpan);
|
|
84
87
|
if (currentSpan === undefined) {
|
|
85
88
|
return execution();
|
|
86
89
|
}
|
|
@@ -121,10 +124,19 @@ const makeExternalSpan = options => {
|
|
|
121
124
|
const currentOtelSpan = /*#__PURE__*/Effect.map(Effect.currentSpan, span => Option.map(Option.filter(span, span => "span" in span), _ => _.span));
|
|
122
125
|
|
|
123
126
|
/** @internal */
|
|
124
|
-
const
|
|
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));
|
|
125
137
|
|
|
126
138
|
/** @internal */
|
|
127
|
-
const layer = /*#__PURE__*/Layer.
|
|
139
|
+
const layer = /*#__PURE__*/Layer.unwrapEffect(Effect.map(make, Layer.setTracer)).pipe( /*#__PURE__*/Layer.use(layerTracer));
|
|
128
140
|
|
|
129
141
|
// -------------------------------------------------------------------------------------
|
|
130
142
|
// utils
|
|
@@ -166,4 +178,4 @@ const objectToAttribute = value => {
|
|
|
166
178
|
}
|
|
167
179
|
};
|
|
168
180
|
|
|
169
|
-
export { OtelSpan,
|
|
181
|
+
export { OtelSpan, Tracer, TracerProvider, currentOtelSpan, layer, layerGlobal, layerGlobalProvider, layerGlobalTracer, layerTracer, make, makeExternalSpan, traceFlagsTag, traceStateTag };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect/opentelemetry",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.1",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -44,12 +44,14 @@
|
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@opentelemetry/resources": "^1.17.1",
|
|
46
46
|
"@opentelemetry/sdk-metrics": "^1.17.1",
|
|
47
|
-
"@opentelemetry/sdk-
|
|
47
|
+
"@opentelemetry/sdk-trace-base": "^1.17.1",
|
|
48
|
+
"@opentelemetry/sdk-trace-node": "^1.17.1",
|
|
49
|
+
"@opentelemetry/sdk-trace-web": "^1.17.1",
|
|
48
50
|
"@opentelemetry/semantic-conventions": "^1.17.1"
|
|
49
51
|
},
|
|
50
52
|
"peerDependencies": {
|
|
51
53
|
"@opentelemetry/api": "^1.4",
|
|
52
|
-
"effect": "2.0.0-next.
|
|
54
|
+
"effect": "2.0.0-next.52"
|
|
53
55
|
},
|
|
54
56
|
"devDependencies": {
|
|
55
57
|
"@babel/core": "^7.23.2",
|
|
@@ -62,26 +64,27 @@
|
|
|
62
64
|
"@effect/eslint-plugin": "^0.1.2",
|
|
63
65
|
"@effect/language-service": "^0.0.21",
|
|
64
66
|
"@opentelemetry/api": "^1.6.0",
|
|
65
|
-
"@opentelemetry/
|
|
66
|
-
"@opentelemetry/exporter-
|
|
67
|
-
"@opentelemetry/exporter-
|
|
68
|
-
"@opentelemetry/
|
|
67
|
+
"@opentelemetry/context-async-hooks": "^1.17.1",
|
|
68
|
+
"@opentelemetry/exporter-metrics-otlp-http": "0.43.0",
|
|
69
|
+
"@opentelemetry/exporter-prometheus": "0.43.0",
|
|
70
|
+
"@opentelemetry/exporter-trace-otlp-http": "0.43.0",
|
|
71
|
+
"@opentelemetry/otlp-exporter-base": "0.43.0",
|
|
69
72
|
"@preconstruct/cli": "^2.8.1",
|
|
70
73
|
"@types/chai": "^4.3.9",
|
|
71
|
-
"@types/node": "^20.8.
|
|
72
|
-
"@typescript-eslint/eslint-plugin": "^6.
|
|
73
|
-
"@typescript-eslint/parser": "^6.
|
|
74
|
+
"@types/node": "^20.8.9",
|
|
75
|
+
"@typescript-eslint/eslint-plugin": "^6.9.0",
|
|
76
|
+
"@typescript-eslint/parser": "^6.9.0",
|
|
74
77
|
"@vitejs/plugin-react": "^4.1.0",
|
|
75
78
|
"@vitest/coverage-v8": "^0.34.6",
|
|
76
79
|
"@vitest/expect": "^0.34.6",
|
|
77
80
|
"babel-plugin-annotate-pure-calls": "^0.4.0",
|
|
78
|
-
"concurrently": "^8.2.
|
|
79
|
-
"effect": "2.0.0-next.
|
|
80
|
-
"eslint": "^8.
|
|
81
|
+
"concurrently": "^8.2.2",
|
|
82
|
+
"effect": "2.0.0-next.52",
|
|
83
|
+
"eslint": "^8.52.0",
|
|
81
84
|
"eslint-import-resolver-typescript": "^3.6.1",
|
|
82
85
|
"eslint-plugin-codegen": "0.17.0",
|
|
83
86
|
"eslint-plugin-deprecation": "^2.0.0",
|
|
84
|
-
"eslint-plugin-import": "^2.
|
|
87
|
+
"eslint-plugin-import": "^2.29.0",
|
|
85
88
|
"eslint-plugin-simple-import-sort": "^10.0.0",
|
|
86
89
|
"eslint-plugin-sort-destructure-keys": "^1.5.0",
|
|
87
90
|
"madge": "^6.1.0",
|
|
@@ -121,6 +124,12 @@
|
|
|
121
124
|
"module": "./Tracer/dist/effect-opentelemetry-Tracer.esm.js",
|
|
122
125
|
"import": "./Tracer/dist/effect-opentelemetry-Tracer.cjs.mjs",
|
|
123
126
|
"default": "./Tracer/dist/effect-opentelemetry-Tracer.cjs.js"
|
|
127
|
+
},
|
|
128
|
+
"./WebSdk": {
|
|
129
|
+
"types": "./dist/declarations/src/WebSdk.d.ts",
|
|
130
|
+
"module": "./WebSdk/dist/effect-opentelemetry-WebSdk.esm.js",
|
|
131
|
+
"import": "./WebSdk/dist/effect-opentelemetry-WebSdk.cjs.mjs",
|
|
132
|
+
"default": "./WebSdk/dist/effect-opentelemetry-WebSdk.cjs.js"
|
|
124
133
|
}
|
|
125
134
|
},
|
|
126
135
|
"files": [
|
|
@@ -130,7 +139,8 @@
|
|
|
130
139
|
"Metrics",
|
|
131
140
|
"NodeSdk",
|
|
132
141
|
"Resource",
|
|
133
|
-
"Tracer"
|
|
142
|
+
"Tracer",
|
|
143
|
+
"WebSdk"
|
|
134
144
|
],
|
|
135
145
|
"scripts": {
|
|
136
146
|
"example": "node -r ts-node/register",
|
package/src/NodeSdk.ts
CHANGED
|
@@ -1,36 +1,59 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
|
-
import type {
|
|
5
|
-
import
|
|
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 { NodeTracerProvider } from "@opentelemetry/sdk-trace-node"
|
|
6
9
|
import * as Effect from "effect/Effect"
|
|
7
10
|
import type { LazyArg } from "effect/Function"
|
|
8
11
|
import * as Layer from "effect/Layer"
|
|
9
12
|
import * as Metrics from "./Metrics"
|
|
10
|
-
import
|
|
13
|
+
import * as Resource from "./Resource"
|
|
14
|
+
import * as Tracer from "./Tracer"
|
|
11
15
|
|
|
12
16
|
/**
|
|
13
17
|
* @since 1.0.0
|
|
14
18
|
* @category model
|
|
15
19
|
*/
|
|
16
|
-
export
|
|
20
|
+
export interface Configuration {
|
|
21
|
+
readonly spanProcessor?: SpanProcessor
|
|
22
|
+
readonly tracerConfig?: Omit<TracerConfig, "resource">
|
|
23
|
+
readonly metricReader?: MetricReader
|
|
24
|
+
readonly resource: {
|
|
25
|
+
readonly serviceName: string
|
|
26
|
+
readonly serviceVersion?: string
|
|
27
|
+
readonly attributes?: Resources.ResourceAttributes
|
|
28
|
+
}
|
|
29
|
+
}
|
|
17
30
|
|
|
18
31
|
/**
|
|
19
32
|
* @since 1.0.0
|
|
20
|
-
* @category
|
|
33
|
+
* @category layers
|
|
21
34
|
*/
|
|
22
|
-
export const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
35
|
+
export const layerTracerProvider = (
|
|
36
|
+
processor: SpanProcessor,
|
|
37
|
+
config?: Omit<TracerConfig, "resource">
|
|
38
|
+
): Layer.Layer<Resource.Resource, never, TracerProvider> =>
|
|
39
|
+
Layer.scoped(
|
|
40
|
+
Tracer.TracerProvider,
|
|
41
|
+
Effect.flatMap(
|
|
42
|
+
Resource.Resource,
|
|
43
|
+
(resource) =>
|
|
44
|
+
Effect.acquireRelease(
|
|
45
|
+
Effect.sync(() => {
|
|
46
|
+
const provider = new NodeTracerProvider({
|
|
47
|
+
...(config ?? {}),
|
|
48
|
+
resource
|
|
49
|
+
})
|
|
50
|
+
provider.addSpanProcessor(processor)
|
|
51
|
+
return provider
|
|
52
|
+
}),
|
|
53
|
+
(provider) => Effect.promise(() => provider.shutdown())
|
|
54
|
+
)
|
|
55
|
+
)
|
|
56
|
+
)
|
|
34
57
|
|
|
35
58
|
/**
|
|
36
59
|
* @since 1.0.0
|
|
@@ -38,16 +61,21 @@ const make = (config: Configuration) =>
|
|
|
38
61
|
*/
|
|
39
62
|
export const layer = (
|
|
40
63
|
evaluate: LazyArg<Configuration>
|
|
41
|
-
): Layer.Layer<
|
|
64
|
+
): Layer.Layer<never, never, Resource.Resource> =>
|
|
42
65
|
Layer.unwrapEffect(
|
|
43
66
|
Effect.sync(() => {
|
|
44
67
|
const config = evaluate()
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
)
|
|
51
|
-
|
|
68
|
+
const ResourceLive = Resource.layer(config.resource)
|
|
69
|
+
const TracerLive = config.spanProcessor ?
|
|
70
|
+
Tracer.layer.pipe(
|
|
71
|
+
Layer.use(layerTracerProvider(config.spanProcessor, config.tracerConfig))
|
|
72
|
+
)
|
|
73
|
+
: Layer.effectDiscard(Effect.unit)
|
|
74
|
+
const MetricsLive = config.metricReader
|
|
75
|
+
? Metrics.layer(() => config.metricReader!)
|
|
76
|
+
: Layer.effectDiscard(Effect.unit)
|
|
77
|
+
return Layer.merge(TracerLive, MetricsLive).pipe(
|
|
78
|
+
Layer.useMerge(ResourceLive)
|
|
79
|
+
)
|
|
52
80
|
})
|
|
53
81
|
)
|