@moostjs/otel 0.6.9 → 0.6.10
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/dist/index.cjs +33 -62
- package/dist/index.mjs +13 -20
- package/package.json +4 -4
package/dist/index.cjs
CHANGED
|
@@ -1,30 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __copyProps = (to, from, except, desc) => {
|
|
9
|
-
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key$1; i < n; i++) {
|
|
10
|
-
key$1 = keys[i];
|
|
11
|
-
if (!__hasOwnProp.call(to, key$1) && key$1 !== except) __defProp(to, key$1, {
|
|
12
|
-
get: ((k) => from[k]).bind(null, key$1),
|
|
13
|
-
enumerable: !(desc = __getOwnPropDesc(from, key$1)) || desc.enumerable
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
19
|
-
value: mod,
|
|
20
|
-
enumerable: true
|
|
21
|
-
}) : target, mod));
|
|
22
|
-
|
|
23
|
-
//#endregion
|
|
24
|
-
const __opentelemetry_api = __toESM(require("@opentelemetry/api"));
|
|
25
|
-
const moost = __toESM(require("moost"));
|
|
26
|
-
const __moostjs_event_http = __toESM(require("@moostjs/event-http"));
|
|
27
|
-
const __opentelemetry_sdk_trace_base = __toESM(require("@opentelemetry/sdk-trace-base"));
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
let _opentelemetry_api = require("@opentelemetry/api");
|
|
3
|
+
let moost = require("moost");
|
|
4
|
+
let _moostjs_event_http = require("@moostjs/event-http");
|
|
5
|
+
let _opentelemetry_sdk_trace_base = require("@opentelemetry/sdk-trace-base");
|
|
28
6
|
|
|
29
7
|
//#region packages/otel/src/context.ts
|
|
30
8
|
/** Event context key storing the root OpenTelemetry span. */ const otelSpanKey = (0, moost.key)("otel.span");
|
|
@@ -64,7 +42,7 @@ const spanStack = [];
|
|
|
64
42
|
return {};
|
|
65
43
|
};
|
|
66
44
|
const pushSpan = (span) => {
|
|
67
|
-
const activeSpan =
|
|
45
|
+
const activeSpan = _opentelemetry_api.trace.getActiveSpan();
|
|
68
46
|
if (activeSpan) {
|
|
69
47
|
const origEnd = activeSpan.end;
|
|
70
48
|
Object.assign(activeSpan, { end: (t) => {
|
|
@@ -75,18 +53,17 @@ const spanStack = [];
|
|
|
75
53
|
} });
|
|
76
54
|
spanStack.push(activeSpan);
|
|
77
55
|
}
|
|
78
|
-
|
|
56
|
+
_opentelemetry_api.trace.setSpan(_opentelemetry_api.context.active(), span);
|
|
79
57
|
};
|
|
80
58
|
const popSpan = () => {
|
|
81
59
|
const span = spanStack.pop();
|
|
82
|
-
if (span)
|
|
60
|
+
if (span) _opentelemetry_api.trace.setSpan(_opentelemetry_api.context.active(), span);
|
|
83
61
|
};
|
|
84
62
|
return {
|
|
85
|
-
trace:
|
|
63
|
+
trace: _opentelemetry_api.trace,
|
|
86
64
|
withChildSpan: (name, cb, opts) => {
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
return () => __opentelemetry_api.context.with(__opentelemetry_api.trace.setSpan(__opentelemetry_api.context.active(), span), cb);
|
|
65
|
+
const span = _opentelemetry_api.trace.getTracer("moost-tracer").startSpan(name, opts);
|
|
66
|
+
return () => _opentelemetry_api.context.with(_opentelemetry_api.trace.setSpan(_opentelemetry_api.context.active(), span), cb);
|
|
90
67
|
},
|
|
91
68
|
getSpan,
|
|
92
69
|
getSpanContext,
|
|
@@ -98,7 +75,7 @@ const spanStack = [];
|
|
|
98
75
|
};
|
|
99
76
|
}
|
|
100
77
|
/** Returns the OpenTelemetry `trace` API for creating tracers and spans. */ function useTrace() {
|
|
101
|
-
return
|
|
78
|
+
return _opentelemetry_api.trace;
|
|
102
79
|
}
|
|
103
80
|
/** Returns the root span for the current event, or `undefined` if no span is active. */ function useSpan() {
|
|
104
81
|
return useOtelContext().getSpan();
|
|
@@ -119,13 +96,10 @@ const spanStack = [];
|
|
|
119
96
|
//#region packages/otel/src/metrics.ts
|
|
120
97
|
let moostMetrics;
|
|
121
98
|
function getMoostMetrics() {
|
|
122
|
-
if (!moostMetrics) {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
unit: "ms"
|
|
127
|
-
}) };
|
|
128
|
-
}
|
|
99
|
+
if (!moostMetrics) moostMetrics = { moostEventDuration: _opentelemetry_api.metrics.getMeter("moost-meter").createHistogram("moost.event.duration", {
|
|
100
|
+
description: "Moost Event Duration Histogram",
|
|
101
|
+
unit: "ms"
|
|
102
|
+
}) };
|
|
129
103
|
return moostMetrics;
|
|
130
104
|
}
|
|
131
105
|
|
|
@@ -143,20 +117,20 @@ function getMoostMetrics() {
|
|
|
143
117
|
* @returns {T} The result of the callback function.
|
|
144
118
|
* @throws {Error} Will throw an error if the callback function throws.
|
|
145
119
|
*/ function withSpan(span, cb, postProcess) {
|
|
146
|
-
const _span = typeof span.name === "string" && !span.spanContext ?
|
|
120
|
+
const _span = typeof span.name === "string" && !span.spanContext ? _opentelemetry_api.trace.getTracer("default").startSpan(span.name, span.options) : span;
|
|
147
121
|
let result = void 0;
|
|
148
122
|
const finalizeSpan = (e, r) => {
|
|
149
123
|
if (e) {
|
|
150
124
|
_span.recordException(e);
|
|
151
125
|
_span.setStatus({
|
|
152
|
-
code:
|
|
126
|
+
code: _opentelemetry_api.SpanStatusCode.ERROR,
|
|
153
127
|
message: e.message || "Unknown Error"
|
|
154
128
|
});
|
|
155
129
|
}
|
|
156
130
|
if (postProcess) postProcess(_span, e, r);
|
|
157
131
|
else _span.end();
|
|
158
132
|
};
|
|
159
|
-
|
|
133
|
+
_opentelemetry_api.context.with(_opentelemetry_api.trace.setSpan(_opentelemetry_api.context.active(), _span), () => {
|
|
160
134
|
try {
|
|
161
135
|
result = cb();
|
|
162
136
|
} catch (error) {
|
|
@@ -176,17 +150,17 @@ function getMoostMetrics() {
|
|
|
176
150
|
|
|
177
151
|
//#endregion
|
|
178
152
|
//#region packages/otel/src/span-injector.ts
|
|
179
|
-
function _define_property(obj, key
|
|
180
|
-
if (key
|
|
153
|
+
function _define_property(obj, key, value) {
|
|
154
|
+
if (key in obj) Object.defineProperty(obj, key, {
|
|
181
155
|
value,
|
|
182
156
|
enumerable: true,
|
|
183
157
|
configurable: true,
|
|
184
158
|
writable: true
|
|
185
159
|
});
|
|
186
|
-
else obj[key
|
|
160
|
+
else obj[key] = value;
|
|
187
161
|
return obj;
|
|
188
162
|
}
|
|
189
|
-
const tracer =
|
|
163
|
+
const tracer = _opentelemetry_api.trace.getTracer("moost-tracer");
|
|
190
164
|
/** Context injector that wraps Moost lifecycle hooks with OpenTelemetry spans and records metrics. */ var SpanInjector = class extends moost.ContextInjector {
|
|
191
165
|
with(name, attributes, cb) {
|
|
192
166
|
const fn = typeof attributes === "function" ? attributes : cb;
|
|
@@ -195,7 +169,7 @@ const tracer = __opentelemetry_api.trace.getTracer("moost-tracer");
|
|
|
195
169
|
else if (name !== "Event:start") {
|
|
196
170
|
if (this.getIgnoreSpan()) return fn();
|
|
197
171
|
const span = tracer.startSpan(name, {
|
|
198
|
-
kind:
|
|
172
|
+
kind: _opentelemetry_api.SpanKind.INTERNAL,
|
|
199
173
|
attributes: attrs
|
|
200
174
|
});
|
|
201
175
|
return this.withSpan(span, fn, {
|
|
@@ -224,7 +198,7 @@ const tracer = __opentelemetry_api.trace.getTracer("moost-tracer");
|
|
|
224
198
|
startEvent(eventType, cb) {
|
|
225
199
|
if (eventType === "init") return cb();
|
|
226
200
|
const { registerSpan } = useOtelContext();
|
|
227
|
-
let span =
|
|
201
|
+
let span = _opentelemetry_api.trace.getActiveSpan();
|
|
228
202
|
if (eventType === "HTTP") this.patchRsponse();
|
|
229
203
|
else span = tracer.startSpan(`${eventType} Event`);
|
|
230
204
|
if (span) {
|
|
@@ -276,8 +250,7 @@ const tracer = __opentelemetry_api.trace.getTracer("moost-tracer");
|
|
|
276
250
|
const chm = this.getControllerHandlerMeta();
|
|
277
251
|
const span = getSpan();
|
|
278
252
|
if (span) {
|
|
279
|
-
|
|
280
|
-
if (eventType === "HTTP") {
|
|
253
|
+
if (this.getEventType() === "HTTP") {
|
|
281
254
|
const req = this.getRequest();
|
|
282
255
|
span.updateName(`${req?.method || ""} ${req?.url}`);
|
|
283
256
|
}
|
|
@@ -319,9 +292,8 @@ const tracer = __opentelemetry_api.trace.getTracer("moost-tracer");
|
|
|
319
292
|
const route = ctx.has(otelRouteKey) ? ctx.get(otelRouteKey) : void 0;
|
|
320
293
|
const startTime = ctx.has(otelStartTimeKey) ? ctx.get(otelStartTimeKey) : void 0;
|
|
321
294
|
const duration = Date.now() - (startTime || Date.now() - 1);
|
|
322
|
-
const customAttrs = ctx.has(customMetricAttrsKey) ? ctx.get(customMetricAttrsKey) : {};
|
|
323
295
|
const attrs = {
|
|
324
|
-
...
|
|
296
|
+
...ctx.has(customMetricAttrsKey) ? ctx.get(customMetricAttrsKey) : {},
|
|
325
297
|
route,
|
|
326
298
|
"moost.event_type": a["moost.event_type"],
|
|
327
299
|
"moost.is_error": error ? 1 : 0
|
|
@@ -335,17 +307,16 @@ const tracer = __opentelemetry_api.trace.getTracer("moost-tracer");
|
|
|
335
307
|
}
|
|
336
308
|
getRequest() {
|
|
337
309
|
try {
|
|
338
|
-
return (0, moost.current)().get(
|
|
310
|
+
return (0, moost.current)().get(_moostjs_event_http.httpKind.keys.req);
|
|
339
311
|
} catch {
|
|
340
|
-
return
|
|
312
|
+
return;
|
|
341
313
|
}
|
|
342
314
|
}
|
|
343
315
|
getResponse() {
|
|
344
316
|
try {
|
|
345
|
-
|
|
346
|
-
return response?.getRawRes(true);
|
|
317
|
+
return (0, moost.current)().get(_moostjs_event_http.httpKind.keys.response)?.getRawRes(true);
|
|
347
318
|
} catch {
|
|
348
|
-
return
|
|
319
|
+
return;
|
|
349
320
|
}
|
|
350
321
|
}
|
|
351
322
|
constructor(...args) {
|
|
@@ -393,7 +364,7 @@ const mate = getOtelMate();
|
|
|
393
364
|
/**
|
|
394
365
|
* Batch span processor that filters out spans marked with `@OtelIgnoreSpan()`.
|
|
395
366
|
* Drop-in replacement for `BatchSpanProcessor` from `@opentelemetry/sdk-trace-base`.
|
|
396
|
-
*/ var MoostBatchSpanProcessor = class extends
|
|
367
|
+
*/ var MoostBatchSpanProcessor = class extends _opentelemetry_sdk_trace_base.BatchSpanProcessor {
|
|
397
368
|
onEnd(span) {
|
|
398
369
|
if (shouldSpanBeIgnored(span)) return;
|
|
399
370
|
super.onEnd(span);
|
|
@@ -405,7 +376,7 @@ const mate = getOtelMate();
|
|
|
405
376
|
/**
|
|
406
377
|
* Simple span processor that filters out spans marked with `@OtelIgnoreSpan()`.
|
|
407
378
|
* Drop-in replacement for `SimpleSpanProcessor` from `@opentelemetry/sdk-trace-base`.
|
|
408
|
-
*/ var MoostSimpleSpanProcessor = class extends
|
|
379
|
+
*/ var MoostSimpleSpanProcessor = class extends _opentelemetry_sdk_trace_base.SimpleSpanProcessor {
|
|
409
380
|
onEnd(span) {
|
|
410
381
|
if (shouldSpanBeIgnored(span)) return;
|
|
411
382
|
super.onEnd(span);
|
package/dist/index.mjs
CHANGED
|
@@ -61,8 +61,7 @@ const spanStack = [];
|
|
|
61
61
|
return {
|
|
62
62
|
trace,
|
|
63
63
|
withChildSpan: (name, cb, opts) => {
|
|
64
|
-
const
|
|
65
|
-
const span = tracer$1.startSpan(name, opts);
|
|
64
|
+
const span = trace.getTracer("moost-tracer").startSpan(name, opts);
|
|
66
65
|
return () => context.with(trace.setSpan(context.active(), span), cb);
|
|
67
66
|
},
|
|
68
67
|
getSpan,
|
|
@@ -96,13 +95,10 @@ const spanStack = [];
|
|
|
96
95
|
//#region packages/otel/src/metrics.ts
|
|
97
96
|
let moostMetrics;
|
|
98
97
|
function getMoostMetrics() {
|
|
99
|
-
if (!moostMetrics) {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
unit: "ms"
|
|
104
|
-
}) };
|
|
105
|
-
}
|
|
98
|
+
if (!moostMetrics) moostMetrics = { moostEventDuration: metrics.getMeter("moost-meter").createHistogram("moost.event.duration", {
|
|
99
|
+
description: "Moost Event Duration Histogram",
|
|
100
|
+
unit: "ms"
|
|
101
|
+
}) };
|
|
106
102
|
return moostMetrics;
|
|
107
103
|
}
|
|
108
104
|
|
|
@@ -153,14 +149,14 @@ function getMoostMetrics() {
|
|
|
153
149
|
|
|
154
150
|
//#endregion
|
|
155
151
|
//#region packages/otel/src/span-injector.ts
|
|
156
|
-
function _define_property(obj, key
|
|
157
|
-
if (key
|
|
152
|
+
function _define_property(obj, key, value) {
|
|
153
|
+
if (key in obj) Object.defineProperty(obj, key, {
|
|
158
154
|
value,
|
|
159
155
|
enumerable: true,
|
|
160
156
|
configurable: true,
|
|
161
157
|
writable: true
|
|
162
158
|
});
|
|
163
|
-
else obj[key
|
|
159
|
+
else obj[key] = value;
|
|
164
160
|
return obj;
|
|
165
161
|
}
|
|
166
162
|
const tracer = trace.getTracer("moost-tracer");
|
|
@@ -253,8 +249,7 @@ const tracer = trace.getTracer("moost-tracer");
|
|
|
253
249
|
const chm = this.getControllerHandlerMeta();
|
|
254
250
|
const span = getSpan();
|
|
255
251
|
if (span) {
|
|
256
|
-
|
|
257
|
-
if (eventType === "HTTP") {
|
|
252
|
+
if (this.getEventType() === "HTTP") {
|
|
258
253
|
const req = this.getRequest();
|
|
259
254
|
span.updateName(`${req?.method || ""} ${req?.url}`);
|
|
260
255
|
}
|
|
@@ -296,9 +291,8 @@ const tracer = trace.getTracer("moost-tracer");
|
|
|
296
291
|
const route = ctx.has(otelRouteKey) ? ctx.get(otelRouteKey) : void 0;
|
|
297
292
|
const startTime = ctx.has(otelStartTimeKey) ? ctx.get(otelStartTimeKey) : void 0;
|
|
298
293
|
const duration = Date.now() - (startTime || Date.now() - 1);
|
|
299
|
-
const customAttrs = ctx.has(customMetricAttrsKey) ? ctx.get(customMetricAttrsKey) : {};
|
|
300
294
|
const attrs = {
|
|
301
|
-
...
|
|
295
|
+
...ctx.has(customMetricAttrsKey) ? ctx.get(customMetricAttrsKey) : {},
|
|
302
296
|
route,
|
|
303
297
|
"moost.event_type": a["moost.event_type"],
|
|
304
298
|
"moost.is_error": error ? 1 : 0
|
|
@@ -314,15 +308,14 @@ const tracer = trace.getTracer("moost-tracer");
|
|
|
314
308
|
try {
|
|
315
309
|
return current().get(httpKind.keys.req);
|
|
316
310
|
} catch {
|
|
317
|
-
return
|
|
311
|
+
return;
|
|
318
312
|
}
|
|
319
313
|
}
|
|
320
314
|
getResponse() {
|
|
321
315
|
try {
|
|
322
|
-
|
|
323
|
-
return response?.getRawRes(true);
|
|
316
|
+
return current().get(httpKind.keys.response)?.getRawRes(true);
|
|
324
317
|
} catch {
|
|
325
|
-
return
|
|
318
|
+
return;
|
|
326
319
|
}
|
|
327
320
|
}
|
|
328
321
|
constructor(...args) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@moostjs/otel",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.10",
|
|
4
4
|
"description": "@moostjs/otel",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"composables",
|
|
@@ -45,9 +45,9 @@
|
|
|
45
45
|
"vitest": "3.2.4"
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
|
-
"@wooksjs/event-core": "^0.7.
|
|
49
|
-
"@moostjs/event-http": "^0.6.
|
|
50
|
-
"moost": "^0.6.
|
|
48
|
+
"@wooksjs/event-core": "^0.7.12",
|
|
49
|
+
"@moostjs/event-http": "^0.6.10",
|
|
50
|
+
"moost": "^0.6.10"
|
|
51
51
|
},
|
|
52
52
|
"scripts": {
|
|
53
53
|
"pub": "pnpm publish --access public",
|