arvo-event-handler 1.1.11 → 1.1.14
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/AbstractArvoEventHandler/types.d.ts +1 -1
- package/dist/AbstractArvoEventHandler/utils.d.ts +42 -0
- package/dist/AbstractArvoEventHandler/utils.js +41 -0
- package/dist/ArvoEventHandler/index.d.ts +1 -1
- package/dist/ArvoEventHandler/index.js +20 -32
- package/dist/ArvoEventRouter/index.d.ts +2 -2
- package/dist/ArvoEventRouter/index.js +28 -38
- package/dist/MultiArvoEventHandler/index.js +19 -31
- package/dist/OpenTelemetry/index.d.ts +2 -2
- package/dist/OpenTelemetry/index.js +7 -4
- package/dist/OpenTelemetry/utils.d.ts +1 -1
- package/dist/OpenTelemetry/utils.js +3 -3
- package/package.json +2 -2
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { SpanKind } from "@opentelemetry/api";
|
|
2
|
+
import { ArvoEvent, ArvoExecutionSpanKind, OpenInferenceSpanKind } from "arvo-core";
|
|
3
|
+
import { ExecutionOpenTelemetryConfiguration } from "./types";
|
|
4
|
+
/**
|
|
5
|
+
* Interface defining the required parameters for creating a handler execution span.
|
|
6
|
+
*
|
|
7
|
+
* @interface ICreateHandlerExecutionSpan
|
|
8
|
+
* @property {string} spanName - The name to be assigned to the created span
|
|
9
|
+
* @property {Object} spanKinds - Object containing different span kind classifications
|
|
10
|
+
* @property {SpanKind} spanKinds.kind - OpenTelemetry span kind
|
|
11
|
+
* @property {OpenInferenceSpanKind} spanKinds.openInference - OpenInference-specific span classification
|
|
12
|
+
* @property {ArvoExecutionSpanKind} spanKinds.arvoExecution - Arvo execution-specific span classification
|
|
13
|
+
* @property {ArvoEvent} event - The Arvo event associated with this span
|
|
14
|
+
* @property {ExecutionOpenTelemetryConfiguration} opentelemetryConfig - Configuration for OpenTelemetry behavior
|
|
15
|
+
*/
|
|
16
|
+
interface ICreateHandlerExecutionSpan {
|
|
17
|
+
spanName: string;
|
|
18
|
+
spanKinds: {
|
|
19
|
+
kind: SpanKind;
|
|
20
|
+
openInference: OpenInferenceSpanKind;
|
|
21
|
+
arvoExecution: ArvoExecutionSpanKind;
|
|
22
|
+
};
|
|
23
|
+
event: ArvoEvent;
|
|
24
|
+
opentelemetryConfig?: ExecutionOpenTelemetryConfiguration;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Creates an OpenTelemetry span for tracking handler execution.
|
|
28
|
+
*
|
|
29
|
+
* This function creates a span either from an existing event or as a new span,
|
|
30
|
+
* depending on the configuration. It includes attributes for both OpenInference
|
|
31
|
+
* and Arvo execution span kinds.
|
|
32
|
+
*
|
|
33
|
+
* @param params - Parameters for creating the handler execution span
|
|
34
|
+
* @param params.spanName - Name of the span to be created
|
|
35
|
+
* @param params.spanKinds - Object containing different span kind classifications
|
|
36
|
+
* @param params.event - The Arvo event associated with this span
|
|
37
|
+
* @param params.opentelemetryConfig - OpenTelemetry configuration
|
|
38
|
+
*
|
|
39
|
+
* @returns A new OpenTelemetry span configured according to the parameters
|
|
40
|
+
*/
|
|
41
|
+
export declare const createHandlerExecutionSpan: ({ spanName, spanKinds, event, opentelemetryConfig, }: ICreateHandlerExecutionSpan) => import("@opentelemetry/api").Span;
|
|
42
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createHandlerExecutionSpan = void 0;
|
|
4
|
+
var utils_1 = require("../OpenTelemetry/utils");
|
|
5
|
+
var arvo_core_1 = require("arvo-core");
|
|
6
|
+
var OpenTelemetry_1 = require("../OpenTelemetry");
|
|
7
|
+
/**
|
|
8
|
+
* Creates an OpenTelemetry span for tracking handler execution.
|
|
9
|
+
*
|
|
10
|
+
* This function creates a span either from an existing event or as a new span,
|
|
11
|
+
* depending on the configuration. It includes attributes for both OpenInference
|
|
12
|
+
* and Arvo execution span kinds.
|
|
13
|
+
*
|
|
14
|
+
* @param params - Parameters for creating the handler execution span
|
|
15
|
+
* @param params.spanName - Name of the span to be created
|
|
16
|
+
* @param params.spanKinds - Object containing different span kind classifications
|
|
17
|
+
* @param params.event - The Arvo event associated with this span
|
|
18
|
+
* @param params.opentelemetryConfig - OpenTelemetry configuration
|
|
19
|
+
*
|
|
20
|
+
* @returns A new OpenTelemetry span configured according to the parameters
|
|
21
|
+
*/
|
|
22
|
+
var createHandlerExecutionSpan = function (_a) {
|
|
23
|
+
var _b;
|
|
24
|
+
var _c;
|
|
25
|
+
var spanName = _a.spanName, spanKinds = _a.spanKinds, event = _a.event, _d = _a.opentelemetryConfig, opentelemetryConfig = _d === void 0 ? {
|
|
26
|
+
inheritFrom: 'event',
|
|
27
|
+
tracer: null
|
|
28
|
+
} : _d;
|
|
29
|
+
var spanOptions = {
|
|
30
|
+
kind: spanKinds.kind,
|
|
31
|
+
attributes: (_b = {},
|
|
32
|
+
_b[arvo_core_1.OpenInference.ATTR_SPAN_KIND] = spanKinds.openInference,
|
|
33
|
+
_b[arvo_core_1.ArvoExecution.ATTR_SPAN_KIND] = spanKinds.arvoExecution,
|
|
34
|
+
_b),
|
|
35
|
+
};
|
|
36
|
+
var tracer = (_c = opentelemetryConfig.tracer) !== null && _c !== void 0 ? _c : (0, OpenTelemetry_1.fetchOpenTelemetryTracer)();
|
|
37
|
+
return opentelemetryConfig.inheritFrom === "event" ?
|
|
38
|
+
(0, utils_1.createSpanFromEvent)(spanName, event, spanKinds, tracer) :
|
|
39
|
+
tracer.startSpan(spanName, spanOptions);
|
|
40
|
+
};
|
|
41
|
+
exports.createHandlerExecutionSpan = createHandlerExecutionSpan;
|
|
@@ -47,7 +47,7 @@ export default class ArvoEventHandler<TContract extends ArvoContract> extends Ab
|
|
|
47
47
|
*
|
|
48
48
|
* @param event - The event to handle.
|
|
49
49
|
* @param opentelemetry - Configuration for OpenTelemetry integration, including tracing options
|
|
50
|
-
* and context inheritance settings.
|
|
50
|
+
* and context inheritance settings. Default is inherit from event and internal tracer
|
|
51
51
|
* @returns A promise that resolves to an array of resulting ArvoEvents.
|
|
52
52
|
*
|
|
53
53
|
* @remarks
|
|
@@ -58,9 +58,9 @@ var arvo_core_1 = require("arvo-core");
|
|
|
58
58
|
var schema_1 = require("arvo-core/dist/ArvoEvent/schema");
|
|
59
59
|
var api_1 = require("@opentelemetry/api");
|
|
60
60
|
var utils_1 = require("../utils");
|
|
61
|
-
var utils_2 = require("../OpenTelemetry/utils");
|
|
62
61
|
var AbstractArvoEventHandler_1 = __importDefault(require("../AbstractArvoEventHandler"));
|
|
63
62
|
var OpenTelemetry_1 = require("../OpenTelemetry");
|
|
63
|
+
var utils_2 = require("../AbstractArvoEventHandler/utils");
|
|
64
64
|
/**
|
|
65
65
|
* Represents an event handler for Arvo contracts.
|
|
66
66
|
*
|
|
@@ -115,7 +115,7 @@ var ArvoEventHandler = /** @class */ (function (_super) {
|
|
|
115
115
|
*
|
|
116
116
|
* @param event - The event to handle.
|
|
117
117
|
* @param opentelemetry - Configuration for OpenTelemetry integration, including tracing options
|
|
118
|
-
* and context inheritance settings.
|
|
118
|
+
* and context inheritance settings. Default is inherit from event and internal tracer
|
|
119
119
|
* @returns A promise that resolves to an array of resulting ArvoEvents.
|
|
120
120
|
*
|
|
121
121
|
* @remarks
|
|
@@ -159,35 +159,23 @@ var ArvoEventHandler = /** @class */ (function (_super) {
|
|
|
159
159
|
* - Propagates trace context to output events
|
|
160
160
|
* - Handles error cases and sets appropriate span status
|
|
161
161
|
*/
|
|
162
|
-
ArvoEventHandler.prototype.execute = function (
|
|
163
|
-
return __awaiter(this,
|
|
164
|
-
var
|
|
165
|
-
var _a;
|
|
162
|
+
ArvoEventHandler.prototype.execute = function (event, opentelemetry) {
|
|
163
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
164
|
+
var span, eventFactory;
|
|
166
165
|
var _this = this;
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
inheritFrom: 'event',
|
|
170
|
-
tracer: OpenTelemetry_1.ArvoEventHandlerTracer,
|
|
171
|
-
}; }
|
|
172
|
-
return __generator(this, function (_c) {
|
|
173
|
-
switch (_c.label) {
|
|
166
|
+
return __generator(this, function (_a) {
|
|
167
|
+
switch (_a.label) {
|
|
174
168
|
case 0:
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
_a[arvo_core_1.ArvoExecution.ATTR_SPAN_KIND] = spanKinds.arvoExecution,
|
|
186
|
-
_a),
|
|
187
|
-
};
|
|
188
|
-
span = opentelemetry.inheritFrom === 'event'
|
|
189
|
-
? (0, utils_2.createSpanFromEvent)(spanName, event, spanKinds, opentelemetry.tracer)
|
|
190
|
-
: ((_b = opentelemetry.tracer) !== null && _b !== void 0 ? _b : OpenTelemetry_1.ArvoEventHandlerTracer).startSpan(spanName, spanOptions);
|
|
169
|
+
span = (0, utils_2.createHandlerExecutionSpan)({
|
|
170
|
+
spanName: "ArvoEventHandler<".concat(this.contract.uri, ">.execute<").concat(event.type, ">"),
|
|
171
|
+
spanKinds: {
|
|
172
|
+
kind: this.openTelemetrySpanKind,
|
|
173
|
+
openInference: this.openInferenceSpanKind,
|
|
174
|
+
arvoExecution: this.arvoExecutionSpanKind,
|
|
175
|
+
},
|
|
176
|
+
event: event,
|
|
177
|
+
opentelemetryConfig: opentelemetry
|
|
178
|
+
});
|
|
191
179
|
eventFactory = (0, arvo_core_1.createArvoEventFactory)(this.contract);
|
|
192
180
|
return [4 /*yield*/, api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), function () { return __awaiter(_this, void 0, void 0, function () {
|
|
193
181
|
var otelSpanHeaders, inputEventValidation, _handleOutput, outputs, error_1, result;
|
|
@@ -226,7 +214,7 @@ var ArvoEventHandler = /** @class */ (function (_super) {
|
|
|
226
214
|
return [2 /*return*/, (0, utils_1.eventHandlerOutputEventCreator)(outputs, otelSpanHeaders, this.source, event, this.executionunits, function (param, extension) {
|
|
227
215
|
var _a;
|
|
228
216
|
return eventFactory.emits(param, extension, {
|
|
229
|
-
tracer: (_a = opentelemetry.tracer) !== null && _a !== void 0 ? _a : OpenTelemetry_1.
|
|
217
|
+
tracer: (_a = opentelemetry === null || opentelemetry === void 0 ? void 0 : opentelemetry.tracer) !== null && _a !== void 0 ? _a : (0, OpenTelemetry_1.fetchOpenTelemetryTracer)(),
|
|
230
218
|
});
|
|
231
219
|
})];
|
|
232
220
|
case 3:
|
|
@@ -247,7 +235,7 @@ var ArvoEventHandler = /** @class */ (function (_super) {
|
|
|
247
235
|
traceparent: (_a = otelSpanHeaders.traceparent) !== null && _a !== void 0 ? _a : undefined,
|
|
248
236
|
tracestate: (_b = otelSpanHeaders.tracestate) !== null && _b !== void 0 ? _b : undefined,
|
|
249
237
|
accesscontrol: (_c = event.accesscontrol) !== null && _c !== void 0 ? _c : undefined,
|
|
250
|
-
}, {}, { tracer: (_d = opentelemetry.tracer) !== null && _d !== void 0 ? _d : OpenTelemetry_1.
|
|
238
|
+
}, {}, { tracer: (_d = opentelemetry === null || opentelemetry === void 0 ? void 0 : opentelemetry.tracer) !== null && _d !== void 0 ? _d : (0, OpenTelemetry_1.fetchOpenTelemetryTracer)() });
|
|
251
239
|
Object.entries(result.otelAttributes).forEach(function (_a) {
|
|
252
240
|
var key = _a[0], value = _a[1];
|
|
253
241
|
return span.setAttribute("to_emit.0.".concat(key), value);
|
|
@@ -260,7 +248,7 @@ var ArvoEventHandler = /** @class */ (function (_super) {
|
|
|
260
248
|
}
|
|
261
249
|
});
|
|
262
250
|
}); })];
|
|
263
|
-
case 1: return [2 /*return*/,
|
|
251
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
264
252
|
}
|
|
265
253
|
});
|
|
266
254
|
});
|
|
@@ -8,7 +8,7 @@ import { ExecutionOpenTelemetryConfiguration } from '../AbstractArvoEventHandler
|
|
|
8
8
|
* ArvoEventRouter class handles routing of ArvoEvents to appropriate event handlers.
|
|
9
9
|
*/
|
|
10
10
|
export declare class ArvoEventRouter extends AbstractArvoEventHandler {
|
|
11
|
-
private _handlerDefaultSource;
|
|
11
|
+
private readonly _handlerDefaultSource;
|
|
12
12
|
private readonly _source;
|
|
13
13
|
/**
|
|
14
14
|
* The source name of the router.
|
|
@@ -50,7 +50,7 @@ export declare class ArvoEventRouter extends AbstractArvoEventHandler {
|
|
|
50
50
|
*
|
|
51
51
|
* @param event - The ArvoEvent to be processed and routed.
|
|
52
52
|
* @param opentelemetry - Configuration for OpenTelemetry integration, including tracing options
|
|
53
|
-
* and context inheritance settings.
|
|
53
|
+
* and context inheritance settings. Default is inherit from event and internal tracer
|
|
54
54
|
* @returns A Promise that resolves to an array of ArvoEvents.
|
|
55
55
|
*
|
|
56
56
|
* @remarks
|
|
@@ -59,9 +59,9 @@ var arvo_core_1 = require("arvo-core");
|
|
|
59
59
|
var utils_1 = require("../utils");
|
|
60
60
|
var api_1 = require("@opentelemetry/api");
|
|
61
61
|
var utils_2 = require("./utils");
|
|
62
|
-
var utils_3 = require("../OpenTelemetry/utils");
|
|
63
62
|
var AbstractArvoEventHandler_1 = __importDefault(require("../AbstractArvoEventHandler"));
|
|
64
63
|
var OpenTelemetry_1 = require("../OpenTelemetry");
|
|
64
|
+
var utils_3 = require("../AbstractArvoEventHandler/utils");
|
|
65
65
|
/**
|
|
66
66
|
* ArvoEventRouter class handles routing of ArvoEvents to appropriate event handlers.
|
|
67
67
|
*/
|
|
@@ -124,7 +124,7 @@ var ArvoEventRouter = /** @class */ (function (_super) {
|
|
|
124
124
|
*
|
|
125
125
|
* @param event - The ArvoEvent to be processed and routed.
|
|
126
126
|
* @param opentelemetry - Configuration for OpenTelemetry integration, including tracing options
|
|
127
|
-
* and context inheritance settings.
|
|
127
|
+
* and context inheritance settings. Default is inherit from event and internal tracer
|
|
128
128
|
* @returns A Promise that resolves to an array of ArvoEvents.
|
|
129
129
|
*
|
|
130
130
|
* @remarks
|
|
@@ -166,46 +166,36 @@ var ArvoEventRouter = /** @class */ (function (_super) {
|
|
|
166
166
|
* - Execution units are tracked for both successful executions and errors.
|
|
167
167
|
* - The router's default execution units are used for error events.
|
|
168
168
|
*/
|
|
169
|
-
ArvoEventRouter.prototype.execute = function (
|
|
170
|
-
return __awaiter(this,
|
|
171
|
-
var
|
|
172
|
-
var _a;
|
|
169
|
+
ArvoEventRouter.prototype.execute = function (event, opentelemetry) {
|
|
170
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
171
|
+
var span;
|
|
173
172
|
var _this = this;
|
|
174
|
-
var
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
tracer: OpenTelemetry_1.ArvoEventHandlerTracer,
|
|
178
|
-
}; }
|
|
179
|
-
return __generator(this, function (_d) {
|
|
180
|
-
switch (_d.label) {
|
|
173
|
+
var _a;
|
|
174
|
+
return __generator(this, function (_b) {
|
|
175
|
+
switch (_b.label) {
|
|
181
176
|
case 0:
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
_a[arvo_core_1.ArvoExecution.ATTR_SPAN_KIND] = spanKinds.arvoExecution,
|
|
193
|
-
_a),
|
|
194
|
-
};
|
|
195
|
-
span = opentelemetry.inheritFrom === 'event'
|
|
196
|
-
? (0, utils_3.createSpanFromEvent)(spanName, event, spanKinds, opentelemetry.tracer)
|
|
197
|
-
: ((_c = opentelemetry.tracer) !== null && _c !== void 0 ? _c : OpenTelemetry_1.ArvoEventHandlerTracer).startSpan(spanName, spanOptions);
|
|
177
|
+
span = (0, utils_3.createHandlerExecutionSpan)({
|
|
178
|
+
spanName: "ArvoEventRouter.source<".concat((_a = this._source) !== null && _a !== void 0 ? _a : 'arvo.event.router', ">.execute<").concat(event.type, ">"),
|
|
179
|
+
spanKinds: {
|
|
180
|
+
kind: this.openTelemetrySpanKind,
|
|
181
|
+
openInference: this.openInferenceSpanKind,
|
|
182
|
+
arvoExecution: this.arvoExecutionSpanKind,
|
|
183
|
+
},
|
|
184
|
+
event: event,
|
|
185
|
+
opentelemetryConfig: opentelemetry
|
|
186
|
+
});
|
|
198
187
|
return [4 /*yield*/, api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), function () { return __awaiter(_this, void 0, void 0, function () {
|
|
199
188
|
var otelSpanHeaders, newEvent, results, error_1;
|
|
200
189
|
var _this = this;
|
|
201
|
-
|
|
202
|
-
|
|
190
|
+
var _a;
|
|
191
|
+
return __generator(this, function (_b) {
|
|
192
|
+
switch (_b.label) {
|
|
203
193
|
case 0:
|
|
204
194
|
otelSpanHeaders = (0, arvo_core_1.currentOpenTelemetryHeaders)();
|
|
205
195
|
newEvent = (0, utils_2.deleteOtelHeaders)(event);
|
|
206
|
-
|
|
196
|
+
_b.label = 1;
|
|
207
197
|
case 1:
|
|
208
|
-
|
|
198
|
+
_b.trys.push([1, 3, 4, 5]);
|
|
209
199
|
span.setStatus({ code: api_1.SpanStatusCode.OK });
|
|
210
200
|
if (!(0, utils_1.isNullOrUndefined)(this._source) &&
|
|
211
201
|
newEvent.to !== this._source) {
|
|
@@ -214,9 +204,9 @@ var ArvoEventRouter = /** @class */ (function (_super) {
|
|
|
214
204
|
if (!this.handlersMap[newEvent.type]) {
|
|
215
205
|
throw new Error((0, arvo_core_1.cleanString)("\n Invalid event (type=".concat(newEvent.type, "). No valid handler \n <handler[*].contract.accepts.type> found in the router.\n ")));
|
|
216
206
|
}
|
|
217
|
-
return [4 /*yield*/, this.handlersMap[newEvent.type].execute(newEvent, { inheritFrom: 'execution', tracer: opentelemetry.tracer })];
|
|
207
|
+
return [4 /*yield*/, this.handlersMap[newEvent.type].execute(newEvent, { inheritFrom: 'execution', tracer: (_a = opentelemetry === null || opentelemetry === void 0 ? void 0 : opentelemetry.tracer) !== null && _a !== void 0 ? _a : (0, OpenTelemetry_1.fetchOpenTelemetryTracer)() })];
|
|
218
208
|
case 2:
|
|
219
|
-
results =
|
|
209
|
+
results = _b.sent();
|
|
220
210
|
return [2 /*return*/, results.map(function (event) {
|
|
221
211
|
var _a;
|
|
222
212
|
return new arvo_core_1.ArvoEvent({
|
|
@@ -237,11 +227,11 @@ var ArvoEventRouter = /** @class */ (function (_super) {
|
|
|
237
227
|
}, event.data, event.cloudevent.extensions);
|
|
238
228
|
})];
|
|
239
229
|
case 3:
|
|
240
|
-
error_1 =
|
|
230
|
+
error_1 = _b.sent();
|
|
241
231
|
return [2 /*return*/, (0, utils_1.createHandlerErrorOutputEvent)(error_1, otelSpanHeaders, "sys.".concat(this.source, ".error"), this.source, event, this.executionunits, function (param, extension) {
|
|
242
232
|
var _a;
|
|
243
233
|
return (0, arvo_core_1.createArvoEvent)(param, extension, {
|
|
244
|
-
tracer: (_a = opentelemetry.tracer) !== null && _a !== void 0 ? _a : OpenTelemetry_1.
|
|
234
|
+
tracer: (_a = opentelemetry === null || opentelemetry === void 0 ? void 0 : opentelemetry.tracer) !== null && _a !== void 0 ? _a : (0, OpenTelemetry_1.fetchOpenTelemetryTracer)(),
|
|
245
235
|
});
|
|
246
236
|
})];
|
|
247
237
|
case 4:
|
|
@@ -251,7 +241,7 @@ var ArvoEventRouter = /** @class */ (function (_super) {
|
|
|
251
241
|
}
|
|
252
242
|
});
|
|
253
243
|
}); })];
|
|
254
|
-
case 1: return [2 /*return*/,
|
|
244
|
+
case 1: return [2 /*return*/, _b.sent()];
|
|
255
245
|
}
|
|
256
246
|
});
|
|
257
247
|
});
|
|
@@ -57,9 +57,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
57
57
|
var api_1 = require("@opentelemetry/api");
|
|
58
58
|
var arvo_core_1 = require("arvo-core");
|
|
59
59
|
var utils_1 = require("../utils");
|
|
60
|
-
var utils_2 = require("../OpenTelemetry/utils");
|
|
61
60
|
var AbstractArvoEventHandler_1 = __importDefault(require("../AbstractArvoEventHandler"));
|
|
62
61
|
var OpenTelemetry_1 = require("../OpenTelemetry");
|
|
62
|
+
var utils_2 = require("../AbstractArvoEventHandler/utils");
|
|
63
63
|
/**
|
|
64
64
|
* Represents a Multi ArvoEvent handler that can process multiple event types.
|
|
65
65
|
*
|
|
@@ -152,35 +152,23 @@ var MultiArvoEventHandler = /** @class */ (function (_super) {
|
|
|
152
152
|
* - If they don't match, an error is thrown with a descriptive message.
|
|
153
153
|
* - This ensures that the handler only processes events intended for it.
|
|
154
154
|
*/
|
|
155
|
-
MultiArvoEventHandler.prototype.execute = function (
|
|
156
|
-
return __awaiter(this,
|
|
157
|
-
var
|
|
158
|
-
var _a;
|
|
155
|
+
MultiArvoEventHandler.prototype.execute = function (event, opentelemetry) {
|
|
156
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
157
|
+
var span;
|
|
159
158
|
var _this = this;
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
inheritFrom: 'event',
|
|
163
|
-
tracer: OpenTelemetry_1.ArvoEventHandlerTracer,
|
|
164
|
-
}; }
|
|
165
|
-
return __generator(this, function (_c) {
|
|
166
|
-
switch (_c.label) {
|
|
159
|
+
return __generator(this, function (_a) {
|
|
160
|
+
switch (_a.label) {
|
|
167
161
|
case 0:
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
_a[arvo_core_1.ArvoExecution.ATTR_SPAN_KIND] = spanKinds.arvoExecution,
|
|
179
|
-
_a),
|
|
180
|
-
};
|
|
181
|
-
span = opentelemetry.inheritFrom === 'event'
|
|
182
|
-
? (0, utils_2.createSpanFromEvent)(spanName, event, spanKinds, opentelemetry.tracer)
|
|
183
|
-
: ((_b = opentelemetry.tracer) !== null && _b !== void 0 ? _b : OpenTelemetry_1.ArvoEventHandlerTracer).startSpan(spanName, spanOptions);
|
|
162
|
+
span = (0, utils_2.createHandlerExecutionSpan)({
|
|
163
|
+
spanName: "MutliArvoEventHandler.source<".concat(this.source, ">.execute<").concat(event.type, ">"),
|
|
164
|
+
spanKinds: {
|
|
165
|
+
kind: this.openTelemetrySpanKind,
|
|
166
|
+
openInference: this.openInferenceSpanKind,
|
|
167
|
+
arvoExecution: this.arvoExecutionSpanKind,
|
|
168
|
+
},
|
|
169
|
+
event: event,
|
|
170
|
+
opentelemetryConfig: opentelemetry
|
|
171
|
+
});
|
|
184
172
|
return [4 /*yield*/, api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), function () { return __awaiter(_this, void 0, void 0, function () {
|
|
185
173
|
var otelSpanHeaders, _handlerOutput, outputs, error_1;
|
|
186
174
|
return __generator(this, function (_a) {
|
|
@@ -216,7 +204,7 @@ var MultiArvoEventHandler = /** @class */ (function (_super) {
|
|
|
216
204
|
return [2 /*return*/, (0, utils_1.eventHandlerOutputEventCreator)(outputs, otelSpanHeaders, this.source, event, this.executionunits, function (param, extension) {
|
|
217
205
|
var _a;
|
|
218
206
|
return (0, arvo_core_1.createArvoEvent)(param, extension, {
|
|
219
|
-
tracer: (_a = opentelemetry.tracer) !== null && _a !== void 0 ? _a : OpenTelemetry_1.
|
|
207
|
+
tracer: (_a = opentelemetry === null || opentelemetry === void 0 ? void 0 : opentelemetry.tracer) !== null && _a !== void 0 ? _a : (0, OpenTelemetry_1.fetchOpenTelemetryTracer)(),
|
|
220
208
|
});
|
|
221
209
|
})];
|
|
222
210
|
case 3:
|
|
@@ -224,7 +212,7 @@ var MultiArvoEventHandler = /** @class */ (function (_super) {
|
|
|
224
212
|
return [2 /*return*/, (0, utils_1.createHandlerErrorOutputEvent)(error_1, otelSpanHeaders, "sys.".concat(this.source, ".error"), this.source, event, this.executionunits, function (param, extension) {
|
|
225
213
|
var _a;
|
|
226
214
|
return (0, arvo_core_1.createArvoEvent)(param, extension, {
|
|
227
|
-
tracer: (_a = opentelemetry.tracer) !== null && _a !== void 0 ? _a : OpenTelemetry_1.
|
|
215
|
+
tracer: (_a = opentelemetry === null || opentelemetry === void 0 ? void 0 : opentelemetry.tracer) !== null && _a !== void 0 ? _a : (0, OpenTelemetry_1.fetchOpenTelemetryTracer)(),
|
|
228
216
|
});
|
|
229
217
|
})];
|
|
230
218
|
case 4:
|
|
@@ -234,7 +222,7 @@ var MultiArvoEventHandler = /** @class */ (function (_super) {
|
|
|
234
222
|
}
|
|
235
223
|
});
|
|
236
224
|
}); })];
|
|
237
|
-
case 1: return [2 /*return*/,
|
|
225
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
238
226
|
}
|
|
239
227
|
});
|
|
240
228
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Context } from '@opentelemetry/api';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Returns a tracer instance for the ArvoEventHandler package.
|
|
4
4
|
*/
|
|
5
|
-
export declare const
|
|
5
|
+
export declare const fetchOpenTelemetryTracer: () => import("@opentelemetry/api").Tracer;
|
|
6
6
|
export declare const extractContext: (traceparent: string, tracestate: string | null) => Context;
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.extractContext = exports.
|
|
3
|
+
exports.extractContext = exports.fetchOpenTelemetryTracer = void 0;
|
|
4
4
|
var api_1 = require("@opentelemetry/api");
|
|
5
5
|
var utils_1 = require("./utils");
|
|
6
|
-
var pkg = (0, utils_1.getPackageInfo)();
|
|
7
6
|
/**
|
|
8
|
-
*
|
|
7
|
+
* Returns a tracer instance for the ArvoEventHandler package.
|
|
9
8
|
*/
|
|
10
|
-
|
|
9
|
+
var fetchOpenTelemetryTracer = function () {
|
|
10
|
+
var pkg = (0, utils_1.getPackageInfo)("arvo-event-handler");
|
|
11
|
+
return api_1.trace.getTracer(pkg.name, pkg.version);
|
|
12
|
+
};
|
|
13
|
+
exports.fetchOpenTelemetryTracer = fetchOpenTelemetryTracer;
|
|
11
14
|
// Helper function to extract context from traceparent and tracestate
|
|
12
15
|
var extractContext = function (traceparent, tracestate) {
|
|
13
16
|
var extractedContext = api_1.propagation.extract(api_1.context.active(), {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Span, SpanKind, Tracer } from '@opentelemetry/api';
|
|
2
2
|
import { ArvoEvent, ArvoExecutionSpanKind, OpenInferenceSpanKind } from 'arvo-core';
|
|
3
|
-
export declare function getPackageInfo(): {
|
|
3
|
+
export declare function getPackageInfo(defaultName: string): {
|
|
4
4
|
name: string;
|
|
5
5
|
version: string;
|
|
6
6
|
};
|
|
@@ -29,7 +29,7 @@ var arvo_core_1 = require("arvo-core");
|
|
|
29
29
|
var fs = __importStar(require("fs"));
|
|
30
30
|
var path = __importStar(require("path"));
|
|
31
31
|
var _1 = require(".");
|
|
32
|
-
function getPackageInfo() {
|
|
32
|
+
function getPackageInfo(defaultName) {
|
|
33
33
|
try {
|
|
34
34
|
// Read the package.json file
|
|
35
35
|
var packageJsonPath = path.resolve(__dirname, '../../package.json');
|
|
@@ -42,7 +42,7 @@ function getPackageInfo() {
|
|
|
42
42
|
}
|
|
43
43
|
catch (error) {
|
|
44
44
|
console.error('Error reading package.json:', error);
|
|
45
|
-
return { name:
|
|
45
|
+
return { name: defaultName, version: 'Unknown' };
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
@@ -109,7 +109,7 @@ function getPackageInfo() {
|
|
|
109
109
|
*/
|
|
110
110
|
var createSpanFromEvent = function (spanName, event, spanKinds, tracer) {
|
|
111
111
|
var _a;
|
|
112
|
-
if (tracer === void 0) { tracer = _1.
|
|
112
|
+
if (tracer === void 0) { tracer = (0, _1.fetchOpenTelemetryTracer)(); }
|
|
113
113
|
var spanOptions = {
|
|
114
114
|
kind: spanKinds.kind,
|
|
115
115
|
attributes: (_a = {},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "arvo-event-handler",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.14",
|
|
4
4
|
"description": "This package contains class and function for event handlers in an Arvo Event Driven system",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
51
|
"@opentelemetry/api": "^1.9.0",
|
|
52
|
-
"arvo-core": "^1.1.
|
|
52
|
+
"arvo-core": "^1.1.19",
|
|
53
53
|
"uuid": "^10.0.0",
|
|
54
54
|
"zod": "^3.23.8"
|
|
55
55
|
}
|