arvo-event-handler 1.1.7 → 1.1.8

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.
@@ -1,6 +1,6 @@
1
1
  import { ArvoContract, ArvoEvent, ArvoExecutionSpanKind, OpenInferenceSpanKind, ResolveArvoContractRecord } from 'arvo-core';
2
2
  import { IArvoEventHandler } from './types';
3
- import { SpanKind } from '@opentelemetry/api';
3
+ import { SpanKind, Tracer } from '@opentelemetry/api';
4
4
  import AbstractArvoEventHandler from '../AbstractArvoEventHandler';
5
5
  /**
6
6
  * Represents an event handler for Arvo contracts.
@@ -90,6 +90,7 @@ export default class ArvoEventHandler<TContract extends ArvoContract> extends Ab
90
90
  */
91
91
  execute(event: ArvoEvent<ResolveArvoContractRecord<TContract['accepts']>, Record<string, any>, TContract['accepts']['type']>, opentelemetry?: {
92
92
  inheritFrom: 'event' | 'execution';
93
+ tracer?: Tracer;
93
94
  }): Promise<ArvoEvent[]>;
94
95
  /**
95
96
  * Provides the schema for system error events.
@@ -162,11 +162,13 @@ var ArvoEventHandler = /** @class */ (function (_super) {
162
162
  var spanName, spanKinds, spanOptions, span, eventFactory;
163
163
  var _a;
164
164
  var _this = this;
165
+ var _b;
165
166
  if (opentelemetry === void 0) { opentelemetry = {
166
167
  inheritFrom: 'event',
168
+ tracer: OpenTelemetry_1.ArvoEventHandlerTracer,
167
169
  }; }
168
- return __generator(this, function (_b) {
169
- switch (_b.label) {
170
+ return __generator(this, function (_c) {
171
+ switch (_c.label) {
170
172
  case 0:
171
173
  spanName = "ArvoEventHandler<".concat(this.contract.uri, ">.execute<").concat(event.type, ">");
172
174
  spanKinds = {
@@ -182,8 +184,8 @@ var ArvoEventHandler = /** @class */ (function (_super) {
182
184
  _a),
183
185
  };
184
186
  span = opentelemetry.inheritFrom === 'event'
185
- ? (0, utils_2.createSpanFromEvent)(spanName, event, spanKinds)
186
- : OpenTelemetry_1.ArvoEventHandlerTracer.startSpan(spanName, spanOptions);
187
+ ? (0, utils_2.createSpanFromEvent)(spanName, event, spanKinds, opentelemetry.tracer)
188
+ : ((_b = opentelemetry.tracer) !== null && _b !== void 0 ? _b : OpenTelemetry_1.ArvoEventHandlerTracer).startSpan(spanName, spanOptions);
187
189
  eventFactory = (0, arvo_core_1.createArvoEventFactory)(this.contract);
188
190
  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 () {
189
191
  var otelSpanHeaders, inputEventValidation, _handleOutput, outputs, error_1, result;
@@ -257,7 +259,7 @@ var ArvoEventHandler = /** @class */ (function (_super) {
257
259
  }
258
260
  });
259
261
  }); })];
260
- case 1: return [2 /*return*/, _b.sent()];
262
+ case 1: return [2 /*return*/, _c.sent()];
261
263
  }
262
264
  });
263
265
  });
@@ -1,7 +1,7 @@
1
1
  import { ArvoContract, ArvoEvent, ArvoExecutionSpanKind, OpenInferenceSpanKind } from 'arvo-core';
2
2
  import ArvoEventHandler from '../ArvoEventHandler';
3
3
  import { IArvoEventRouter } from './types';
4
- import { SpanKind } from '@opentelemetry/api';
4
+ import { SpanKind, Tracer } from '@opentelemetry/api';
5
5
  import AbstractArvoEventHandler from '../AbstractArvoEventHandler';
6
6
  /**
7
7
  * ArvoEventRouter class handles routing of ArvoEvents to appropriate event handlers.
@@ -89,7 +89,10 @@ export declare class ArvoEventRouter extends AbstractArvoEventHandler {
89
89
  * - Execution units are tracked for both successful executions and errors.
90
90
  * - The router's default execution units are used for error events.
91
91
  */
92
- execute(event: ArvoEvent): Promise<ArvoEvent[]>;
92
+ execute(event: ArvoEvent, opentelemetry?: {
93
+ inheritFrom: 'event' | 'execution';
94
+ tracer?: Tracer;
95
+ }): Promise<ArvoEvent[]>;
93
96
  /**
94
97
  * Provides the schema for system error events.
95
98
  *
@@ -61,6 +61,7 @@ var api_1 = require("@opentelemetry/api");
61
61
  var utils_2 = require("./utils");
62
62
  var utils_3 = require("../OpenTelemetry/utils");
63
63
  var AbstractArvoEventHandler_1 = __importDefault(require("../AbstractArvoEventHandler"));
64
+ var OpenTelemetry_1 = require("../OpenTelemetry");
64
65
  /**
65
66
  * ArvoEventRouter class handles routing of ArvoEvents to appropriate event handlers.
66
67
  */
@@ -163,19 +164,35 @@ var ArvoEventRouter = /** @class */ (function (_super) {
163
164
  * - Execution units are tracked for both successful executions and errors.
164
165
  * - The router's default execution units are used for error events.
165
166
  */
166
- ArvoEventRouter.prototype.execute = function (event) {
167
- return __awaiter(this, void 0, void 0, function () {
168
- var span;
169
- var _this = this;
167
+ ArvoEventRouter.prototype.execute = function (event_1) {
168
+ return __awaiter(this, arguments, void 0, function (event, opentelemetry) {
169
+ var spanName, spanKinds, spanOptions, span;
170
170
  var _a;
171
- return __generator(this, function (_b) {
172
- switch (_b.label) {
171
+ var _this = this;
172
+ var _b, _c;
173
+ if (opentelemetry === void 0) { opentelemetry = {
174
+ inheritFrom: 'event',
175
+ tracer: OpenTelemetry_1.ArvoEventHandlerTracer,
176
+ }; }
177
+ return __generator(this, function (_d) {
178
+ switch (_d.label) {
173
179
  case 0:
174
- span = (0, utils_3.createSpanFromEvent)("ArvoEventRouter.source<".concat((_a = this._source) !== null && _a !== void 0 ? _a : 'arvo.event.router', ">.execute<").concat(event.type, ">"), event, {
180
+ spanName = "ArvoEventRouter.source<".concat((_b = this._source) !== null && _b !== void 0 ? _b : 'arvo.event.router', ">.execute<").concat(event.type, ">");
181
+ spanKinds = {
175
182
  kind: this.openTelemetrySpanKind,
176
183
  openInference: this.openInferenceSpanKind,
177
184
  arvoExecution: this.arvoExecutionSpanKind,
178
- });
185
+ };
186
+ spanOptions = {
187
+ kind: spanKinds.kind,
188
+ attributes: (_a = {},
189
+ _a[arvo_core_1.OpenInference.ATTR_SPAN_KIND] = spanKinds.openInference,
190
+ _a[arvo_core_1.ArvoExecution.ATTR_SPAN_KIND] = spanKinds.arvoExecution,
191
+ _a),
192
+ };
193
+ span = opentelemetry.inheritFrom === 'event'
194
+ ? (0, utils_3.createSpanFromEvent)(spanName, event, spanKinds, opentelemetry.tracer)
195
+ : ((_c = opentelemetry.tracer) !== null && _c !== void 0 ? _c : OpenTelemetry_1.ArvoEventHandlerTracer).startSpan(spanName, spanOptions);
179
196
  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 () {
180
197
  var otelSpanHeaders, newEvent, results, error_1;
181
198
  var _this = this;
@@ -195,7 +212,7 @@ var ArvoEventRouter = /** @class */ (function (_super) {
195
212
  if (!this.handlersMap[newEvent.type]) {
196
213
  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 ")));
197
214
  }
198
- return [4 /*yield*/, this.handlersMap[newEvent.type].execute(newEvent)];
215
+ return [4 /*yield*/, this.handlersMap[newEvent.type].execute(newEvent, { inheritFrom: 'execution', tracer: opentelemetry.tracer })];
199
216
  case 2:
200
217
  results = _a.sent();
201
218
  return [2 /*return*/, results.map(function (event) {
@@ -233,7 +250,7 @@ var ArvoEventRouter = /** @class */ (function (_super) {
233
250
  }
234
251
  });
235
252
  }); })];
236
- case 1: return [2 /*return*/, _b.sent()];
253
+ case 1: return [2 /*return*/, _d.sent()];
237
254
  }
238
255
  });
239
256
  });
@@ -1,4 +1,4 @@
1
- import { SpanKind } from '@opentelemetry/api';
1
+ import { SpanKind, Tracer } from '@opentelemetry/api';
2
2
  import { ArvoEvent, ArvoExecutionSpanKind, OpenInferenceSpanKind } from 'arvo-core';
3
3
  import { IMultiArvoEventHandler } from './types';
4
4
  import AbstractArvoEventHandler from '../AbstractArvoEventHandler';
@@ -92,6 +92,7 @@ export default class MultiArvoEventHandler extends AbstractArvoEventHandler {
92
92
  */
93
93
  execute(event: ArvoEvent, opentelemetry?: {
94
94
  inheritFrom: 'event' | 'execution';
95
+ tracer?: Tracer;
95
96
  }): Promise<ArvoEvent[]>;
96
97
  /**
97
98
  * Provides the schema for system error events.
@@ -155,11 +155,13 @@ var MultiArvoEventHandler = /** @class */ (function (_super) {
155
155
  var spanName, spanKinds, spanOptions, span;
156
156
  var _a;
157
157
  var _this = this;
158
+ var _b;
158
159
  if (opentelemetry === void 0) { opentelemetry = {
159
160
  inheritFrom: 'event',
161
+ tracer: OpenTelemetry_1.ArvoEventHandlerTracer,
160
162
  }; }
161
- return __generator(this, function (_b) {
162
- switch (_b.label) {
163
+ return __generator(this, function (_c) {
164
+ switch (_c.label) {
163
165
  case 0:
164
166
  spanName = "MutliArvoEventHandler.source<".concat(this.source, ">.execute<").concat(event.type, ">");
165
167
  spanKinds = {
@@ -175,8 +177,8 @@ var MultiArvoEventHandler = /** @class */ (function (_super) {
175
177
  _a),
176
178
  };
177
179
  span = opentelemetry.inheritFrom === 'event'
178
- ? (0, utils_2.createSpanFromEvent)(spanName, event, spanKinds)
179
- : OpenTelemetry_1.ArvoEventHandlerTracer.startSpan(spanName, spanOptions);
180
+ ? (0, utils_2.createSpanFromEvent)(spanName, event, spanKinds, opentelemetry.tracer)
181
+ : ((_b = opentelemetry.tracer) !== null && _b !== void 0 ? _b : OpenTelemetry_1.ArvoEventHandlerTracer).startSpan(spanName, spanOptions);
180
182
  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 () {
181
183
  var otelSpanHeaders, _handlerOutput, outputs, error_1;
182
184
  return __generator(this, function (_a) {
@@ -232,7 +234,7 @@ var MultiArvoEventHandler = /** @class */ (function (_super) {
232
234
  }
233
235
  });
234
236
  }); })];
235
- case 1: return [2 /*return*/, _b.sent()];
237
+ case 1: return [2 /*return*/, _c.sent()];
236
238
  }
237
239
  });
238
240
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arvo-event-handler",
3
- "version": "1.1.7",
3
+ "version": "1.1.8",
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": {