@effect/opentelemetry 0.13.1 → 0.15.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.
- package/Metrics/dist/effect-opentelemetry-Metrics.cjs.d.mts +2 -0
- package/Metrics/dist/effect-opentelemetry-Metrics.cjs.d.mts.map +1 -0
- package/Metrics/dist/effect-opentelemetry-Metrics.cjs.d.ts +2 -0
- package/Metrics/dist/effect-opentelemetry-Metrics.cjs.d.ts.map +1 -0
- package/Metrics/dist/effect-opentelemetry-Metrics.cjs.dev.js +293 -0
- package/Metrics/dist/effect-opentelemetry-Metrics.cjs.js +7 -0
- package/Metrics/dist/effect-opentelemetry-Metrics.cjs.mjs +5 -0
- package/Metrics/dist/effect-opentelemetry-Metrics.cjs.prod.js +293 -0
- package/Metrics/dist/effect-opentelemetry-Metrics.esm.js +24 -0
- package/Metrics/package.json +4 -0
- package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.d.mts +2 -0
- package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.d.mts.map +1 -0
- package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.d.ts +2 -0
- package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.d.ts.map +1 -0
- package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.dev.js +63 -0
- package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.js +7 -0
- package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.mjs +4 -0
- package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.prod.js +63 -0
- package/NodeSdk/dist/effect-opentelemetry-NodeSdk.esm.js +34 -0
- package/NodeSdk/package.json +4 -0
- package/Resource/dist/effect-opentelemetry-Resource.cjs.d.mts +2 -0
- package/Resource/dist/effect-opentelemetry-Resource.cjs.d.mts.map +1 -0
- package/Resource/dist/effect-opentelemetry-Resource.cjs.d.ts +2 -0
- package/Resource/dist/effect-opentelemetry-Resource.cjs.d.ts.map +1 -0
- package/Resource/dist/effect-opentelemetry-Resource.cjs.dev.js +64 -0
- package/Resource/dist/effect-opentelemetry-Resource.cjs.js +7 -0
- package/Resource/dist/effect-opentelemetry-Resource.cjs.mjs +4 -0
- package/Resource/dist/effect-opentelemetry-Resource.cjs.prod.js +64 -0
- package/{mjs/Resource.mjs → Resource/dist/effect-opentelemetry-Resource.esm.js} +16 -7
- package/Resource/package.json +4 -0
- package/Tracer/dist/effect-opentelemetry-Tracer.cjs.d.mts +2 -0
- package/Tracer/dist/effect-opentelemetry-Tracer.cjs.d.mts.map +1 -0
- package/Tracer/dist/effect-opentelemetry-Tracer.cjs.d.ts +2 -0
- package/Tracer/dist/effect-opentelemetry-Tracer.cjs.d.ts.map +1 -0
- package/Tracer/dist/effect-opentelemetry-Tracer.cjs.dev.js +243 -0
- package/Tracer/dist/effect-opentelemetry-Tracer.cjs.js +7 -0
- package/Tracer/dist/effect-opentelemetry-Tracer.cjs.mjs +10 -0
- package/Tracer/dist/effect-opentelemetry-Tracer.cjs.prod.js +243 -0
- package/Tracer/dist/effect-opentelemetry-Tracer.esm.js +54 -0
- package/Tracer/package.json +4 -0
- package/{Metrics.d.ts → dist/declarations/src/Metrics.d.ts} +4 -1
- package/dist/declarations/src/Metrics.d.ts.map +1 -0
- package/{NodeSdk.d.ts → dist/declarations/src/NodeSdk.d.ts} +1 -1
- package/dist/declarations/src/NodeSdk.d.ts.map +1 -0
- package/dist/declarations/src/Resource.d.ts.map +1 -0
- package/{Tracer.d.ts → dist/declarations/src/Tracer.d.ts} +4 -1
- package/dist/declarations/src/Tracer.d.ts.map +1 -0
- package/dist/declarations/src/index.d.ts +17 -0
- package/dist/declarations/src/index.d.ts.map +1 -0
- package/dist/effect-opentelemetry.cjs.d.mts +2 -0
- package/dist/effect-opentelemetry.cjs.d.mts.map +1 -0
- package/dist/effect-opentelemetry.cjs.d.ts +2 -0
- package/dist/effect-opentelemetry.cjs.d.ts.map +1 -0
- package/dist/effect-opentelemetry.cjs.dev.js +38 -0
- package/dist/effect-opentelemetry.cjs.js +7 -0
- package/dist/effect-opentelemetry.cjs.mjs +6 -0
- package/dist/effect-opentelemetry.cjs.prod.js +38 -0
- package/dist/effect-opentelemetry.esm.js +8 -0
- package/{mjs/internal/metrics.mjs → internal/metrics.esm.js} +26 -20
- package/{mjs/internal/tracer.mjs → internal/tracer.esm.js} +37 -24
- package/package.json +130 -30
- package/src/Metrics.ts +2 -2
- package/src/NodeSdk.ts +1 -1
- package/src/Tracer.ts +2 -2
- package/src/internal/metrics.ts +6 -6
- package/src/internal/tracer.ts +1 -1
- package/Metrics.d.ts.map +0 -1
- package/Metrics.js +0 -29
- package/Metrics.js.map +0 -1
- package/NodeSdk.d.ts.map +0 -1
- package/NodeSdk.js +0 -36
- package/NodeSdk.js.map +0 -1
- package/Resource.d.ts.map +0 -1
- package/Resource.js +0 -39
- package/Resource.js.map +0 -1
- package/Tracer.d.ts.map +0 -1
- package/Tracer.js +0 -54
- package/Tracer.js.map +0 -1
- package/index.d.ts +0 -17
- package/index.d.ts.map +0 -1
- package/index.js +0 -17
- package/index.js.map +0 -1
- package/internal/metrics.d.ts +0 -2
- package/internal/metrics.d.ts.map +0 -1
- package/internal/metrics.js +0 -242
- package/internal/metrics.js.map +0 -1
- package/internal/tracer.d.ts +0 -2
- package/internal/tracer.d.ts.map +0 -1
- package/internal/tracer.js +0 -147
- package/internal/tracer.js.map +0 -1
- package/mjs/Metrics.mjs +0 -20
- package/mjs/Metrics.mjs.map +0 -1
- package/mjs/NodeSdk.mjs +0 -25
- package/mjs/NodeSdk.mjs.map +0 -1
- package/mjs/Resource.mjs.map +0 -1
- package/mjs/Tracer.mjs +0 -45
- package/mjs/Tracer.mjs.map +0 -1
- package/mjs/index.mjs +0 -9
- package/mjs/index.mjs.map +0 -1
- package/mjs/internal/metrics.mjs.map +0 -1
- package/mjs/internal/tracer.mjs.map +0 -1
- package/tsconfig.base.json +0 -55
- package/tsconfig.build.json +0 -10
- package/tsconfig.examples.json +0 -11
- package/tsconfig.json +0 -8
- package/tsconfig.madge.json +0 -12
- package/tsconfig.test.json +0 -10
- /package/{Resource.d.ts → dist/declarations/src/Resource.d.ts} +0 -0
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var OtelApi = require('@opentelemetry/api');
|
|
6
|
+
var Cause = require('effect/Cause');
|
|
7
|
+
var Context = require('effect/Context');
|
|
8
|
+
var Effect = require('effect/Effect');
|
|
9
|
+
var FiberRef = require('effect/FiberRef');
|
|
10
|
+
var FiberRefs = require('effect/FiberRefs');
|
|
11
|
+
var Layer = require('effect/Layer');
|
|
12
|
+
var List = require('effect/List');
|
|
13
|
+
var Option = require('effect/Option');
|
|
14
|
+
var Tracer = require('effect/Tracer');
|
|
15
|
+
var Resource_dist_effectOpentelemetryResource = require('../../Resource/dist/effect-opentelemetry-Resource.cjs.prod.js');
|
|
16
|
+
require('@opentelemetry/resources');
|
|
17
|
+
require('@opentelemetry/semantic-conventions');
|
|
18
|
+
|
|
19
|
+
function _interopNamespace(e) {
|
|
20
|
+
if (e && e.__esModule) return e;
|
|
21
|
+
var n = Object.create(null);
|
|
22
|
+
if (e) {
|
|
23
|
+
Object.keys(e).forEach(function (k) {
|
|
24
|
+
if (k !== 'default') {
|
|
25
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
26
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
get: function () { return e[k]; }
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
n["default"] = e;
|
|
34
|
+
return Object.freeze(n);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
var OtelApi__namespace = /*#__PURE__*/_interopNamespace(OtelApi);
|
|
38
|
+
var Cause__namespace = /*#__PURE__*/_interopNamespace(Cause);
|
|
39
|
+
var Context__namespace = /*#__PURE__*/_interopNamespace(Context);
|
|
40
|
+
var Effect__namespace = /*#__PURE__*/_interopNamespace(Effect);
|
|
41
|
+
var FiberRef__namespace = /*#__PURE__*/_interopNamespace(FiberRef);
|
|
42
|
+
var FiberRefs__namespace = /*#__PURE__*/_interopNamespace(FiberRefs);
|
|
43
|
+
var Layer__namespace = /*#__PURE__*/_interopNamespace(Layer);
|
|
44
|
+
var List__namespace = /*#__PURE__*/_interopNamespace(List);
|
|
45
|
+
var Option__namespace = /*#__PURE__*/_interopNamespace(Option);
|
|
46
|
+
var Tracer__namespace = /*#__PURE__*/_interopNamespace(Tracer);
|
|
47
|
+
|
|
48
|
+
/** @internal */
|
|
49
|
+
class OtelSpan {
|
|
50
|
+
_tag = "Span";
|
|
51
|
+
attributes = new Map();
|
|
52
|
+
constructor(contextApi, tracer, name, parent, context, links, startTime) {
|
|
53
|
+
this.name = name;
|
|
54
|
+
this.parent = parent;
|
|
55
|
+
this.context = context;
|
|
56
|
+
this.links = links;
|
|
57
|
+
const active = contextApi.active();
|
|
58
|
+
this.span = tracer.startSpan(name, {
|
|
59
|
+
startTime: nanosToHrTime(startTime),
|
|
60
|
+
links: links.length > 0 ? links.map(link => ({
|
|
61
|
+
context: makeSpanContext(link.span),
|
|
62
|
+
attributes: link.attributes
|
|
63
|
+
})) : undefined
|
|
64
|
+
}, parent._tag === "Some" ? populateContext(active, parent.value, context) : active);
|
|
65
|
+
const spanContext = this.span.spanContext();
|
|
66
|
+
this.spanId = spanContext.spanId;
|
|
67
|
+
this.traceId = spanContext.traceId;
|
|
68
|
+
this.status = {
|
|
69
|
+
_tag: "Started",
|
|
70
|
+
startTime
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
attribute(key, value) {
|
|
74
|
+
this.span.setAttribute(key, value);
|
|
75
|
+
this.attributes.set(key, value);
|
|
76
|
+
}
|
|
77
|
+
end(endTime, exit) {
|
|
78
|
+
this.status = {
|
|
79
|
+
_tag: "Ended",
|
|
80
|
+
endTime,
|
|
81
|
+
exit,
|
|
82
|
+
startTime: this.status.startTime
|
|
83
|
+
};
|
|
84
|
+
if (exit._tag === "Success") {
|
|
85
|
+
this.span.setStatus({
|
|
86
|
+
code: OtelApi__namespace.SpanStatusCode.OK
|
|
87
|
+
});
|
|
88
|
+
} else {
|
|
89
|
+
if (Cause__namespace.isInterruptedOnly(exit.cause)) {
|
|
90
|
+
this.span.setStatus({
|
|
91
|
+
code: OtelApi__namespace.SpanStatusCode.OK,
|
|
92
|
+
message: Cause__namespace.pretty(exit.cause)
|
|
93
|
+
});
|
|
94
|
+
this.span.setAttribute("span.label", "⚠︎ Interrupted");
|
|
95
|
+
this.span.setAttribute("status.interrupted", true);
|
|
96
|
+
} else {
|
|
97
|
+
this.span.setStatus({
|
|
98
|
+
code: OtelApi__namespace.SpanStatusCode.ERROR,
|
|
99
|
+
message: Cause__namespace.pretty(exit.cause)
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
this.span.end(nanosToHrTime(endTime));
|
|
104
|
+
}
|
|
105
|
+
event(name, startTime, attributes) {
|
|
106
|
+
this.span.addEvent(name, attributes, nanosToHrTime(startTime));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/** @internal */
|
|
111
|
+
const OtelTracer$1 = /*#__PURE__*/Context__namespace.Tag("@effect/opentelemetry/Tracer/OtelTracer");
|
|
112
|
+
|
|
113
|
+
/** @internal */
|
|
114
|
+
const make$1 = /*#__PURE__*/Effect__namespace.map(OtelTracer$1, tracer => Tracer__namespace.make({
|
|
115
|
+
span(name, parent, context, links, startTime) {
|
|
116
|
+
return new OtelSpan(OtelApi__namespace.context, tracer, name, parent, context, links, startTime);
|
|
117
|
+
},
|
|
118
|
+
context(execution, fiber) {
|
|
119
|
+
const currentSpan = Option__namespace.flatMap(FiberRefs__namespace.get(fiber.getFiberRefs(), FiberRef__namespace.currentTracerSpan), List__namespace.head);
|
|
120
|
+
if (currentSpan._tag === "None") {
|
|
121
|
+
return execution();
|
|
122
|
+
}
|
|
123
|
+
return OtelApi__namespace.context.with(populateContext(OtelApi__namespace.context.active(), currentSpan.value), execution);
|
|
124
|
+
}
|
|
125
|
+
}));
|
|
126
|
+
|
|
127
|
+
/** @internal */
|
|
128
|
+
|
|
129
|
+
/** @internal */
|
|
130
|
+
const traceFlagsTag = /*#__PURE__*/Context__namespace.Tag("@effect/opentelemetry/traceFlags");
|
|
131
|
+
|
|
132
|
+
/** @internal */
|
|
133
|
+
const traceStateTag = /*#__PURE__*/Context__namespace.Tag("@effect/opentelemetry/traceState");
|
|
134
|
+
|
|
135
|
+
/** @internal */
|
|
136
|
+
const makeExternalSpan$1 = options => {
|
|
137
|
+
let context = Context__namespace.empty();
|
|
138
|
+
if (options.traceFlags) {
|
|
139
|
+
context = Context__namespace.add(context, traceFlagsTag, options.traceFlags);
|
|
140
|
+
}
|
|
141
|
+
if (typeof options.traceState === "string") {
|
|
142
|
+
context = Option__namespace.match(createTraceState(options.traceState), {
|
|
143
|
+
onNone: () => context,
|
|
144
|
+
onSome: traceState => Context__namespace.add(context, traceStateTag, traceState)
|
|
145
|
+
});
|
|
146
|
+
} else if (options.traceState) {
|
|
147
|
+
context = Context__namespace.add(context, traceStateTag, options.traceState);
|
|
148
|
+
}
|
|
149
|
+
return {
|
|
150
|
+
_tag: "ExternalSpan",
|
|
151
|
+
traceId: options.traceId,
|
|
152
|
+
spanId: options.spanId,
|
|
153
|
+
context
|
|
154
|
+
};
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
/** @internal */
|
|
158
|
+
const currentOtelSpan$1 = /*#__PURE__*/Effect__namespace.map(Effect__namespace.currentSpan, span => Option__namespace.map(Option__namespace.filter(span, span => "span" in span), _ => _.span));
|
|
159
|
+
|
|
160
|
+
/** @internal */
|
|
161
|
+
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"]))));
|
|
162
|
+
|
|
163
|
+
/** @internal */
|
|
164
|
+
const layer$1 = /*#__PURE__*/Layer__namespace.provide(layerOtelTracer$1, /*#__PURE__*/Layer__namespace.unwrapEffect( /*#__PURE__*/Effect__namespace.map(make$1, Effect__namespace.setTracer)));
|
|
165
|
+
|
|
166
|
+
// -------------------------------------------------------------------------------------
|
|
167
|
+
// utils
|
|
168
|
+
// -------------------------------------------------------------------------------------
|
|
169
|
+
|
|
170
|
+
const bigint1e9 = 1_000_000_000n;
|
|
171
|
+
const nanosToHrTime = timestamp => {
|
|
172
|
+
return [Number(timestamp / bigint1e9), Number(timestamp % bigint1e9)];
|
|
173
|
+
};
|
|
174
|
+
const createTraceState = /*#__PURE__*/Option__namespace.liftThrowable(OtelApi__namespace.createTraceState);
|
|
175
|
+
const populateContext = (otelContext, span, context) => span instanceof OtelSpan ? OtelApi__namespace.trace.setSpan(otelContext, span.span) : OtelApi__namespace.trace.setSpanContext(otelContext, makeSpanContext(span, context));
|
|
176
|
+
const makeSpanContext = (span, context) => ({
|
|
177
|
+
spanId: span.spanId,
|
|
178
|
+
traceId: span.traceId,
|
|
179
|
+
isRemote: span._tag === "ExternalSpan",
|
|
180
|
+
traceFlags: Option__namespace.getOrElse(context ? extractTraceTag(span, context, traceFlagsTag) : Context__namespace.getOption(span.context, traceFlagsTag), () => OtelApi__namespace.TraceFlags.SAMPLED),
|
|
181
|
+
traceState: Option__namespace.getOrUndefined(context ? extractTraceTag(span, context, traceStateTag) : Context__namespace.getOption(span.context, traceStateTag))
|
|
182
|
+
});
|
|
183
|
+
const extractTraceTag = (parent, context, tag) => Option__namespace.orElse(Context__namespace.getOption(context, tag), () => Context__namespace.getOption(parent.context, tag));
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* @since 1.0.0
|
|
187
|
+
*/
|
|
188
|
+
/**
|
|
189
|
+
* @since 1.0.0
|
|
190
|
+
* @category constructors
|
|
191
|
+
*/
|
|
192
|
+
const make = make$1;
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* @since 1.0.0
|
|
196
|
+
* @category constructors
|
|
197
|
+
*/
|
|
198
|
+
const makeExternalSpan = makeExternalSpan$1;
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* @since 1.0.0
|
|
202
|
+
* @category accessors
|
|
203
|
+
*/
|
|
204
|
+
const currentOtelSpan = currentOtelSpan$1;
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* @since 1.0.0
|
|
208
|
+
* @category layers
|
|
209
|
+
*/
|
|
210
|
+
const layer = layer$1;
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* @since 1.0.0
|
|
214
|
+
* @category layers
|
|
215
|
+
*/
|
|
216
|
+
const layerOtelTracer = layerOtelTracer$1;
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* @since 1.0.0
|
|
220
|
+
* @category tags
|
|
221
|
+
*/
|
|
222
|
+
const OtelTracer = OtelTracer$1;
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* @since 1.0.0
|
|
226
|
+
* @category tags
|
|
227
|
+
*/
|
|
228
|
+
const TraceFlags = traceFlagsTag;
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* @since 1.0.0
|
|
232
|
+
* @category tags
|
|
233
|
+
*/
|
|
234
|
+
const TraceState = traceStateTag;
|
|
235
|
+
|
|
236
|
+
exports.OtelTracer = OtelTracer;
|
|
237
|
+
exports.TraceFlags = TraceFlags;
|
|
238
|
+
exports.TraceState = TraceState;
|
|
239
|
+
exports.currentOtelSpan = currentOtelSpan;
|
|
240
|
+
exports.layer = layer;
|
|
241
|
+
exports.layerOtelTracer = layerOtelTracer;
|
|
242
|
+
exports.make = make;
|
|
243
|
+
exports.makeExternalSpan = makeExternalSpan;
|
|
@@ -0,0 +1,54 @@
|
|
|
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';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @since 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* @since 1.0.0
|
|
8
|
+
* @category constructors
|
|
9
|
+
*/
|
|
10
|
+
const make = make$1;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @since 1.0.0
|
|
14
|
+
* @category constructors
|
|
15
|
+
*/
|
|
16
|
+
const makeExternalSpan = makeExternalSpan$1;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @since 1.0.0
|
|
20
|
+
* @category accessors
|
|
21
|
+
*/
|
|
22
|
+
const currentOtelSpan = currentOtelSpan$1;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @since 1.0.0
|
|
26
|
+
* @category layers
|
|
27
|
+
*/
|
|
28
|
+
const layer = layer$1;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @since 1.0.0
|
|
32
|
+
* @category layers
|
|
33
|
+
*/
|
|
34
|
+
const layerOtelTracer = layerOtelTracer$1;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @since 1.0.0
|
|
38
|
+
* @category tags
|
|
39
|
+
*/
|
|
40
|
+
const OtelTracer = OtelTracer$1;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* @since 1.0.0
|
|
44
|
+
* @category tags
|
|
45
|
+
*/
|
|
46
|
+
const TraceFlags = traceFlagsTag;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* @since 1.0.0
|
|
50
|
+
* @category tags
|
|
51
|
+
*/
|
|
52
|
+
const TraceState = traceStateTag;
|
|
53
|
+
|
|
54
|
+
export { OtelTracer, TraceFlags, TraceState, currentOtelSpan, layer, layerOtelTracer, make, makeExternalSpan };
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
2
4
|
import type { MetricReader } from "@opentelemetry/sdk-metrics";
|
|
3
5
|
import type { MetricProducer } from "@opentelemetry/sdk-metrics/build/src/export/MetricProducer";
|
|
4
6
|
import type * as Effect from "effect/Effect";
|
|
5
7
|
import type { LazyArg } from "effect/Function";
|
|
6
8
|
import type { Layer } from "effect/Layer";
|
|
7
9
|
import type * as Scope from "effect/Scope";
|
|
10
|
+
import type { Resource } from "./Resource.js";
|
|
8
11
|
/**
|
|
9
12
|
* @since 1.0.0
|
|
10
13
|
* @category producer
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Metrics.d.ts","sourceRoot":"../../../src","sources":["Metrics.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4DAA4D,CAAA;AAChG,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAE1C,OAAO,KAAK,EAAE,QAAQ,EAAE,sBAAkB;AAE1C;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAyB,CAAA;AAEjG;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,CAC7B,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,KAChC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,CAA6B,CAAA;AAEhF;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAkB,CAAA"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
|
-
import { Resource } from "@effect/opentelemetry/Resource";
|
|
5
4
|
import type { NodeSDKConfiguration } from "@opentelemetry/sdk-node";
|
|
6
5
|
import * as Effect from "effect/Effect";
|
|
7
6
|
import * as Layer from "effect/Layer";
|
|
7
|
+
import { Resource } from "./Resource.js";
|
|
8
8
|
/**
|
|
9
9
|
* @since 1.0.0
|
|
10
10
|
* @category model
|
|
@@ -0,0 +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;AAEnE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,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,6IAcd,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Resource.d.ts","sourceRoot":"../../../src","sources":["Resource.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACpC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,CAAC,EAAE,OAAO,MAAM,CAAA;CAC1B;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,mCAAsE,CAAA;AAE3F;;;GAGG;AACH,eAAO,MAAM,KAAK,WAAY;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,kBAAkB,CAAA;CACnD,wCAgBA,CAAA"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
2
4
|
import type * as Otel from "@opentelemetry/api";
|
|
3
5
|
import type { Tag } from "effect/Context";
|
|
4
6
|
import type { Effect } from "effect/Effect";
|
|
5
7
|
import type { Layer } from "effect/Layer";
|
|
6
8
|
import type * as Option from "effect/Option";
|
|
7
9
|
import type { ExternalSpan, Tracer } from "effect/Tracer";
|
|
10
|
+
import type { Resource } from "./Resource.js";
|
|
8
11
|
/**
|
|
9
12
|
* @since 1.0.0
|
|
10
13
|
* @category constructors
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
export * as Metrics from "./Metrics.js";
|
|
5
|
+
/**
|
|
6
|
+
* @since 1.0.0
|
|
7
|
+
*/
|
|
8
|
+
export * as NodeSdk from "./NodeSdk.js";
|
|
9
|
+
/**
|
|
10
|
+
* @since 1.0.0
|
|
11
|
+
*/
|
|
12
|
+
export * as Resource from "./Resource.js";
|
|
13
|
+
/**
|
|
14
|
+
* @since 1.0.0
|
|
15
|
+
*/
|
|
16
|
+
export * as Tracer from "./Tracer.js";
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-opentelemetry.cjs.d.mts","sourceRoot":"","sources":["./declarations/src/index.d.ts"],"names":[],"mappings":"AAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-opentelemetry.cjs.d.ts","sourceRoot":"","sources":["./declarations/src/index.d.ts"],"names":[],"mappings":"AAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var Metrics = require('@effect/opentelemetry/Metrics');
|
|
6
|
+
var NodeSdk = require('@effect/opentelemetry/NodeSdk');
|
|
7
|
+
var Resource = require('@effect/opentelemetry/Resource');
|
|
8
|
+
var Tracer = require('@effect/opentelemetry/Tracer');
|
|
9
|
+
|
|
10
|
+
function _interopNamespace(e) {
|
|
11
|
+
if (e && e.__esModule) return e;
|
|
12
|
+
var n = Object.create(null);
|
|
13
|
+
if (e) {
|
|
14
|
+
Object.keys(e).forEach(function (k) {
|
|
15
|
+
if (k !== 'default') {
|
|
16
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
17
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: function () { return e[k]; }
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
n["default"] = e;
|
|
25
|
+
return Object.freeze(n);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
var Metrics__namespace = /*#__PURE__*/_interopNamespace(Metrics);
|
|
29
|
+
var NodeSdk__namespace = /*#__PURE__*/_interopNamespace(NodeSdk);
|
|
30
|
+
var Resource__namespace = /*#__PURE__*/_interopNamespace(Resource);
|
|
31
|
+
var Tracer__namespace = /*#__PURE__*/_interopNamespace(Tracer);
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
exports.Metrics = Metrics__namespace;
|
|
36
|
+
exports.NodeSdk = NodeSdk__namespace;
|
|
37
|
+
exports.Resource = Resource__namespace;
|
|
38
|
+
exports.Tracer = Tracer__namespace;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var Metrics = require('@effect/opentelemetry/Metrics');
|
|
6
|
+
var NodeSdk = require('@effect/opentelemetry/NodeSdk');
|
|
7
|
+
var Resource = require('@effect/opentelemetry/Resource');
|
|
8
|
+
var Tracer = require('@effect/opentelemetry/Tracer');
|
|
9
|
+
|
|
10
|
+
function _interopNamespace(e) {
|
|
11
|
+
if (e && e.__esModule) return e;
|
|
12
|
+
var n = Object.create(null);
|
|
13
|
+
if (e) {
|
|
14
|
+
Object.keys(e).forEach(function (k) {
|
|
15
|
+
if (k !== 'default') {
|
|
16
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
17
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: function () { return e[k]; }
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
n["default"] = e;
|
|
25
|
+
return Object.freeze(n);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
var Metrics__namespace = /*#__PURE__*/_interopNamespace(Metrics);
|
|
29
|
+
var NodeSdk__namespace = /*#__PURE__*/_interopNamespace(NodeSdk);
|
|
30
|
+
var Resource__namespace = /*#__PURE__*/_interopNamespace(Resource);
|
|
31
|
+
var Tracer__namespace = /*#__PURE__*/_interopNamespace(Tracer);
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
exports.Metrics = Metrics__namespace;
|
|
36
|
+
exports.NodeSdk = NodeSdk__namespace;
|
|
37
|
+
exports.Resource = Resource__namespace;
|
|
38
|
+
exports.Tracer = Tracer__namespace;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as Metrics from '@effect/opentelemetry/Metrics';
|
|
2
|
+
export { Metrics };
|
|
3
|
+
import * as NodeSdk from '@effect/opentelemetry/NodeSdk';
|
|
4
|
+
export { NodeSdk };
|
|
5
|
+
import * as Resource from '@effect/opentelemetry/Resource';
|
|
6
|
+
export { Resource };
|
|
7
|
+
import * as Tracer from '@effect/opentelemetry/Tracer';
|
|
8
|
+
export { Tracer };
|
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import * as
|
|
5
|
-
import * as
|
|
6
|
-
import * as
|
|
7
|
-
import * as
|
|
8
|
-
import * as
|
|
9
|
-
import * as
|
|
10
|
-
import
|
|
1
|
+
import { ValueType } from '@opentelemetry/api';
|
|
2
|
+
import { DataPointType, InstrumentType, AggregationTemporality } from '@opentelemetry/sdk-metrics';
|
|
3
|
+
import * as Effect from 'effect/Effect';
|
|
4
|
+
import * as HashSet from 'effect/HashSet';
|
|
5
|
+
import * as Layer from 'effect/Layer';
|
|
6
|
+
import * as Metric from 'effect/Metric';
|
|
7
|
+
import * as MetricKeyType from 'effect/MetricKeyType';
|
|
8
|
+
import * as MetricState from 'effect/MetricState';
|
|
9
|
+
import * as Option from 'effect/Option';
|
|
10
|
+
import { Resource } from '../Resource/dist/effect-opentelemetry-Resource.esm.js';
|
|
11
|
+
|
|
11
12
|
const sdkName = "@effect/opentelemetry/Metrics";
|
|
13
|
+
|
|
12
14
|
/** @internal */
|
|
13
|
-
|
|
15
|
+
class MetricProducerImpl {
|
|
14
16
|
constructor(resource) {
|
|
15
17
|
this.resource = resource;
|
|
16
18
|
}
|
|
@@ -37,7 +39,7 @@ export class MetricProducerImpl {
|
|
|
37
39
|
startTime: hrTimeNow,
|
|
38
40
|
endTime: hrTimeNow,
|
|
39
41
|
attributes,
|
|
40
|
-
value: metricState.count
|
|
42
|
+
value: Number(metricState.count)
|
|
41
43
|
}]
|
|
42
44
|
});
|
|
43
45
|
} else if (MetricState.isGaugeState(metricState)) {
|
|
@@ -49,7 +51,7 @@ export class MetricProducerImpl {
|
|
|
49
51
|
startTime: hrTimeNow,
|
|
50
52
|
endTime: hrTimeNow,
|
|
51
53
|
attributes,
|
|
52
|
-
value: metricState.value
|
|
54
|
+
value: Number(metricState.value)
|
|
53
55
|
}]
|
|
54
56
|
});
|
|
55
57
|
} else if (MetricState.isHistogramState(metricState)) {
|
|
@@ -200,17 +202,17 @@ const descriptorFromKey = (metricKey, tags, suffix) => ({
|
|
|
200
202
|
...descriptorMeta(metricKey, suffix),
|
|
201
203
|
unit: tags.unit ?? tags.time_unit ?? "1",
|
|
202
204
|
type: instrumentTypeFromKey(metricKey),
|
|
203
|
-
valueType: ValueType.DOUBLE
|
|
205
|
+
valueType: "bigint" in metricKey.keyType && metricKey.keyType.bigint === true ? ValueType.INT : ValueType.DOUBLE
|
|
204
206
|
});
|
|
205
207
|
const instrumentTypeFromKey = key => {
|
|
206
208
|
if (MetricKeyType.isHistogramKey(key.keyType)) {
|
|
207
209
|
return InstrumentType.HISTOGRAM;
|
|
208
210
|
} else if (MetricKeyType.isGaugeKey(key.keyType)) {
|
|
209
211
|
return InstrumentType.OBSERVABLE_GAUGE;
|
|
210
|
-
} else if (MetricKeyType.isSummaryKey(key.keyType)) {
|
|
211
|
-
return InstrumentType.UP_DOWN_COUNTER;
|
|
212
212
|
} else if (MetricKeyType.isFrequencyKey(key.keyType)) {
|
|
213
213
|
return InstrumentType.COUNTER;
|
|
214
|
+
} else if (MetricKeyType.isCounterKey(key.keyType) && key.keyType.incremental) {
|
|
215
|
+
return InstrumentType.COUNTER;
|
|
214
216
|
}
|
|
215
217
|
return InstrumentType.UP_DOWN_COUNTER;
|
|
216
218
|
};
|
|
@@ -218,14 +220,18 @@ const currentHrTime = () => {
|
|
|
218
220
|
const now = Date.now();
|
|
219
221
|
return [Math.floor(now / 1000), now % 1000 * 1000000];
|
|
220
222
|
};
|
|
223
|
+
|
|
221
224
|
/** @internal */
|
|
222
|
-
|
|
225
|
+
const makeProducer = /*#__PURE__*/Effect.map(Resource, resource => new MetricProducerImpl(resource));
|
|
226
|
+
|
|
223
227
|
/** @internal */
|
|
224
|
-
|
|
228
|
+
const registerProducer = (self, metricReader) => Effect.acquireRelease(Effect.sync(() => {
|
|
225
229
|
const reader = metricReader();
|
|
226
230
|
reader.setMetricProducer(self);
|
|
227
231
|
return reader;
|
|
228
232
|
}), reader => Effect.promise(() => reader.shutdown()));
|
|
233
|
+
|
|
229
234
|
/** @internal */
|
|
230
|
-
|
|
231
|
-
|
|
235
|
+
const layer = evaluate => Layer.scopedDiscard(Effect.flatMap(makeProducer, producer => registerProducer(producer, evaluate)));
|
|
236
|
+
|
|
237
|
+
export { MetricProducerImpl, layer, makeProducer, registerProducer };
|