autotel-plugins 0.19.26 → 0.19.27

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/rabbitmq.cjs CHANGED
@@ -15,23 +15,24 @@ function normalizeHeaders(headers) {
15
15
  }
16
16
  if (Buffer.isBuffer(value)) {
17
17
  try {
18
- const decoded = value.toString("utf8");
19
- normalized[key] = Buffer.from(decoded, "utf8").equals(value) ? decoded : `base64:${value.toString("base64")}`;
18
+ const decoded = value.toString('utf8');
19
+ normalized[key] = Buffer.from(decoded, 'utf8').equals(value)
20
+ ? decoded
21
+ : `base64:${value.toString('base64')}`;
20
22
  } catch {
21
- normalized[key] = `base64:${value.toString("base64")}`;
23
+ normalized[key] = `base64:${value.toString('base64')}`;
22
24
  }
23
- } else if (typeof value === "string") {
25
+ } else if (typeof value === 'string') {
24
26
  normalized[key] = value;
25
- } else if (typeof value === "number" || typeof value === "boolean") {
27
+ } else if (typeof value === 'number' || typeof value === 'boolean') {
26
28
  normalized[key] = String(value);
27
- } else if (typeof value === "object") {
29
+ } else if (typeof value === 'object') {
28
30
  try {
29
31
  const json = JSON.stringify(value);
30
32
  if (json.length <= MAX_OBJECT_SIZE) {
31
33
  normalized[key] = json;
32
34
  }
33
- } catch {
34
- }
35
+ } catch {}
35
36
  }
36
37
  }
37
38
  return normalized;
@@ -48,36 +49,43 @@ var caseInsensitiveGetter = {
48
49
  },
49
50
  keys(carrier) {
50
51
  return Object.keys(carrier);
51
- }
52
+ },
52
53
  };
53
54
  function extractTraceContext(headers) {
54
- return autotel.propagation.extract(autotel.ROOT_CONTEXT, headers, caseInsensitiveGetter);
55
+ return autotel.propagation.extract(
56
+ autotel.ROOT_CONTEXT,
57
+ headers,
58
+ caseInsensitiveGetter,
59
+ );
55
60
  }
56
61
 
57
62
  // src/common/constants.ts
58
- var SEMATTRS_MESSAGING_SYSTEM = "messaging.system";
59
- var SEMATTRS_MESSAGING_DESTINATION_NAME = "messaging.destination.name";
60
- var SEMATTRS_LINKED_TRACE_ID_COUNT = "linked_trace_id_count";
61
- var SEMATTRS_LINKED_TRACE_ID_HASH = "linked_trace_id_hash";
62
- var CORRELATION_ID_HEADER = "x-correlation-id";
63
- var SEMATTRS_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY = "messaging.rabbitmq.destination.routing_key";
64
- var SEMATTRS_MESSAGING_RABBITMQ_DESTINATION_EXCHANGE = "messaging.rabbitmq.destination.exchange";
65
- var SEMATTRS_MESSAGING_RABBITMQ_ACK_RESULT = "messaging.rabbitmq.ack_result";
66
- var SEMATTRS_MESSAGING_RABBITMQ_REQUEUE = "messaging.rabbitmq.requeue";
67
- var SEMATTRS_MESSAGING_MESSAGE_ID = "messaging.message.id";
68
- var SEMATTRS_MESSAGING_MESSAGE_CONVERSATION_ID = "messaging.message.conversation_id";
69
- var SEMATTRS_MESSAGING_CONSUMER_ID = "messaging.consumer.id";
70
- var SEMATTRS_MESSAGING_OPERATION_NAME = "messaging.operation.name";
63
+ var SEMATTRS_MESSAGING_SYSTEM = 'messaging.system';
64
+ var SEMATTRS_MESSAGING_DESTINATION_NAME = 'messaging.destination.name';
65
+ var SEMATTRS_LINKED_TRACE_ID_COUNT = 'linked_trace_id_count';
66
+ var SEMATTRS_LINKED_TRACE_ID_HASH = 'linked_trace_id_hash';
67
+ var CORRELATION_ID_HEADER = 'x-correlation-id';
68
+ var SEMATTRS_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY =
69
+ 'messaging.rabbitmq.destination.routing_key';
70
+ var SEMATTRS_MESSAGING_RABBITMQ_DESTINATION_EXCHANGE =
71
+ 'messaging.rabbitmq.destination.exchange';
72
+ var SEMATTRS_MESSAGING_RABBITMQ_ACK_RESULT = 'messaging.rabbitmq.ack_result';
73
+ var SEMATTRS_MESSAGING_RABBITMQ_REQUEUE = 'messaging.rabbitmq.requeue';
74
+ var SEMATTRS_MESSAGING_MESSAGE_ID = 'messaging.message.id';
75
+ var SEMATTRS_MESSAGING_MESSAGE_CONVERSATION_ID =
76
+ 'messaging.message.conversation_id';
77
+ var SEMATTRS_MESSAGING_CONSUMER_ID = 'messaging.consumer.id';
78
+ var SEMATTRS_MESSAGING_OPERATION_NAME = 'messaging.operation.name';
71
79
 
72
80
  // src/rabbitmq/correlation.ts
73
81
  var headerSetter = {
74
82
  set(carrier, key, value) {
75
83
  carrier[key] = value;
76
- }
84
+ },
77
85
  };
78
86
  function deriveCorrelationId() {
79
87
  const activeBaggage = autotel.propagation.getActiveBaggage();
80
- const baggageCorrelationId = activeBaggage?.getEntry("correlation-id");
88
+ const baggageCorrelationId = activeBaggage?.getEntry('correlation-id');
81
89
  if (baggageCorrelationId?.value) {
82
90
  return baggageCorrelationId.value;
83
91
  }
@@ -86,7 +94,7 @@ function deriveCorrelationId() {
86
94
  const spanContext = activeSpan.spanContext();
87
95
  return spanContext.traceId.slice(0, 16);
88
96
  }
89
- return "";
97
+ return '';
90
98
  }
91
99
  function extractCorrelationId(headers, amqpCorrelationId) {
92
100
  if (amqpCorrelationId) {
@@ -112,13 +120,18 @@ function injectTraceHeaders(base = {}, options = {}) {
112
120
  }
113
121
  return carrier;
114
122
  }
115
- var DEFAULT_TRACER_NAME = "autotel-plugins/rabbitmq";
123
+ var DEFAULT_TRACER_NAME = 'autotel-plugins/rabbitmq';
116
124
  function isValidSpanContext(spanContext) {
117
- return !!(spanContext && spanContext.traceId && spanContext.spanId && autotel.otelTrace.isSpanContextValid(spanContext));
125
+ return !!(
126
+ spanContext &&
127
+ spanContext.traceId &&
128
+ spanContext.spanId &&
129
+ autotel.otelTrace.isSpanContextValid(spanContext)
130
+ );
118
131
  }
119
132
  function validateDeferredConfig(descriptor) {
120
133
  if (descriptor.deferSpanEnd && !descriptor.ackTimeoutMs) {
121
- throw new Error("deferSpanEnd requires ackTimeoutMs to be set");
134
+ throw new Error('deferSpanEnd requires ackTimeoutMs to be set');
122
135
  }
123
136
  }
124
137
  async function withConsumeSpan(descriptor, fn) {
@@ -126,7 +139,7 @@ async function withConsumeSpan(descriptor, fn) {
126
139
  const {
127
140
  name,
128
141
  headers,
129
- contextMode = "inherit",
142
+ contextMode = 'inherit',
130
143
  links = [],
131
144
  queue,
132
145
  exchange,
@@ -135,7 +148,7 @@ async function withConsumeSpan(descriptor, fn) {
135
148
  correlationId,
136
149
  consumerTag,
137
150
  deferSpanEnd = false,
138
- ackTimeoutMs
151
+ ackTimeoutMs,
139
152
  } = descriptor;
140
153
  const tracer = autotel.otelTrace.getTracer(DEFAULT_TRACER_NAME);
141
154
  const normalizedHeaders = normalizeHeaders(headers);
@@ -144,15 +157,15 @@ async function withConsumeSpan(descriptor, fn) {
144
157
  const { parentContext, spanLinks } = resolveContextAndLinks(
145
158
  contextMode,
146
159
  extractedSpanContext,
147
- links
160
+ links,
148
161
  );
149
162
  const span = tracer.startSpan(
150
163
  name,
151
164
  {
152
165
  kind: autotel.SpanKind.CONSUMER,
153
- links: spanLinks
166
+ links: spanLinks,
154
167
  },
155
- parentContext
168
+ parentContext,
156
169
  );
157
170
  setMessagingAttributes(span, {
158
171
  queue,
@@ -160,16 +173,11 @@ async function withConsumeSpan(descriptor, fn) {
160
173
  routingKey,
161
174
  messageId,
162
175
  correlationId,
163
- consumerTag
176
+ consumerTag,
164
177
  });
165
178
  const spanContext = autotel.otelTrace.setSpan(autotel.context.active(), span);
166
179
  if (deferSpanEnd) {
167
- return executeDeferredMode(
168
- span,
169
- spanContext,
170
- fn,
171
- ackTimeoutMs
172
- );
180
+ return executeDeferredMode(span, spanContext, fn, ackTimeoutMs);
173
181
  }
174
182
  return executeImmediateMode(span, spanContext, fn);
175
183
  }
@@ -208,25 +216,28 @@ async function executeDeferredMode(span, spanContext, fn, ackTimeoutMs) {
208
216
  span.setAttribute(SEMATTRS_MESSAGING_RABBITMQ_REQUEUE, requeue);
209
217
  }
210
218
  span.setStatus({
211
- code: status === "ok" ? autotel.SpanStatusCode.OK : autotel.SpanStatusCode.ERROR
219
+ code:
220
+ status === 'ok'
221
+ ? autotel.SpanStatusCode.OK
222
+ : autotel.SpanStatusCode.ERROR,
212
223
  });
213
224
  span.end();
214
225
  };
215
226
  const controls = {
216
227
  ack() {
217
- endSpan("ok", "ack");
228
+ endSpan('ok', 'ack');
218
229
  },
219
230
  nack(options) {
220
- endSpan("ok", "nack", options?.requeue ?? true);
231
+ endSpan('ok', 'nack', options?.requeue ?? true);
221
232
  },
222
233
  reject(options) {
223
- endSpan("ok", "reject", options?.requeue ?? false);
224
- }
234
+ endSpan('ok', 'reject', options?.requeue ?? false);
235
+ },
225
236
  };
226
237
  timeoutRef.id = setTimeout(() => {
227
238
  if (!spanEnded) {
228
- span.setAttribute("messaging.rabbitmq.ack_timeout", true);
229
- endSpan("error");
239
+ span.setAttribute('messaging.rabbitmq.ack_timeout', true);
240
+ endSpan('error');
230
241
  }
231
242
  }, ackTimeoutMs);
232
243
  try {
@@ -234,7 +245,7 @@ async function executeDeferredMode(span, spanContext, fn, ackTimeoutMs) {
234
245
  return await fn(span, controls);
235
246
  });
236
247
  if (!spanEnded) {
237
- endSpan("ok");
248
+ endSpan('ok');
238
249
  }
239
250
  return result;
240
251
  } catch (error) {
@@ -244,33 +255,37 @@ async function executeDeferredMode(span, spanContext, fn, ackTimeoutMs) {
244
255
  } else {
245
256
  span.recordException(new Error(String(error)));
246
257
  }
247
- endSpan("error");
258
+ endSpan('error');
248
259
  }
249
260
  throw error;
250
261
  }
251
262
  }
252
- function resolveContextAndLinks(contextMode, extractedSpanContext, additionalLinks) {
263
+ function resolveContextAndLinks(
264
+ contextMode,
265
+ extractedSpanContext,
266
+ additionalLinks,
267
+ ) {
253
268
  const activeContext = autotel.context.active();
254
269
  const hasValidExtracted = isValidSpanContext(extractedSpanContext);
255
270
  const spanLinks = [...additionalLinks];
256
271
  switch (contextMode) {
257
- case "inherit": {
272
+ case 'inherit': {
258
273
  if (hasValidExtracted) {
259
274
  const extractedParentCtx = autotel.otelTrace.setSpanContext(
260
275
  activeContext,
261
- extractedSpanContext
276
+ extractedSpanContext,
262
277
  );
263
278
  return { parentContext: extractedParentCtx, spanLinks };
264
279
  }
265
280
  return { parentContext: activeContext, spanLinks };
266
281
  }
267
- case "link": {
282
+ case 'link': {
268
283
  if (hasValidExtracted) {
269
284
  spanLinks.push({ context: extractedSpanContext });
270
285
  }
271
286
  return { parentContext: activeContext, spanLinks };
272
287
  }
273
- case "none": {
288
+ case 'none': {
274
289
  return { parentContext: activeContext, spanLinks };
275
290
  }
276
291
  default: {
@@ -280,22 +295,23 @@ function resolveContextAndLinks(contextMode, extractedSpanContext, additionalLin
280
295
  }
281
296
  }
282
297
  function setMessagingAttributes(span, attrs) {
283
- const { queue, exchange, routingKey, messageId, correlationId, consumerTag } = attrs;
284
- span.setAttribute(SEMATTRS_MESSAGING_SYSTEM, "rabbitmq");
285
- span.setAttribute(SEMATTRS_MESSAGING_OPERATION_NAME, "receive");
298
+ const { queue, exchange, routingKey, messageId, correlationId, consumerTag } =
299
+ attrs;
300
+ span.setAttribute(SEMATTRS_MESSAGING_SYSTEM, 'rabbitmq');
301
+ span.setAttribute(SEMATTRS_MESSAGING_OPERATION_NAME, 'receive');
286
302
  if (queue) {
287
303
  span.setAttribute(SEMATTRS_MESSAGING_DESTINATION_NAME, queue);
288
304
  }
289
305
  if (exchange) {
290
306
  span.setAttribute(
291
307
  SEMATTRS_MESSAGING_RABBITMQ_DESTINATION_EXCHANGE,
292
- exchange
308
+ exchange,
293
309
  );
294
310
  }
295
311
  if (routingKey) {
296
312
  span.setAttribute(
297
313
  SEMATTRS_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY,
298
- routingKey
314
+ routingKey,
299
315
  );
300
316
  }
301
317
  if (messageId) {
@@ -304,33 +320,33 @@ function setMessagingAttributes(span, attrs) {
304
320
  if (correlationId) {
305
321
  span.setAttribute(
306
322
  SEMATTRS_MESSAGING_MESSAGE_CONVERSATION_ID,
307
- correlationId
323
+ correlationId,
308
324
  );
309
325
  }
310
326
  if (consumerTag) {
311
327
  span.setAttribute(SEMATTRS_MESSAGING_CONSUMER_ID, consumerTag);
312
328
  }
313
329
  }
314
- var DEFAULT_TRACER_NAME2 = "autotel-plugins/rabbitmq";
330
+ var DEFAULT_TRACER_NAME2 = 'autotel-plugins/rabbitmq';
315
331
  async function withPublishSpan(descriptor, fn) {
316
332
  const {
317
333
  name,
318
- exchange = "amq.default",
334
+ exchange = 'amq.default',
319
335
  routingKey,
320
336
  messageId,
321
337
  correlationId,
322
- system = "rabbitmq"
338
+ system = 'rabbitmq',
323
339
  } = descriptor;
324
340
  const tracer = autotel.otelTrace.getTracer(DEFAULT_TRACER_NAME2);
325
341
  const span = tracer.startSpan(name, {
326
- kind: autotel.SpanKind.PRODUCER
342
+ kind: autotel.SpanKind.PRODUCER,
327
343
  });
328
344
  span.setAttribute(SEMATTRS_MESSAGING_SYSTEM, system);
329
345
  span.setAttribute(SEMATTRS_MESSAGING_DESTINATION_NAME, exchange);
330
- span.setAttribute(SEMATTRS_MESSAGING_OPERATION_NAME, "publish");
346
+ span.setAttribute(SEMATTRS_MESSAGING_OPERATION_NAME, 'publish');
331
347
  span.setAttribute(
332
348
  SEMATTRS_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY,
333
- routingKey
349
+ routingKey,
334
350
  );
335
351
  if (messageId) {
336
352
  span.setAttribute(SEMATTRS_MESSAGING_MESSAGE_ID, messageId);
@@ -338,7 +354,7 @@ async function withPublishSpan(descriptor, fn) {
338
354
  if (correlationId) {
339
355
  span.setAttribute(
340
356
  SEMATTRS_MESSAGING_MESSAGE_CONVERSATION_ID,
341
- correlationId
357
+ correlationId,
342
358
  );
343
359
  }
344
360
  const spanContext = autotel.otelTrace.setSpan(autotel.context.active(), span);
@@ -362,15 +378,20 @@ async function withPublishSpan(descriptor, fn) {
362
378
  }
363
379
  var DEFAULT_MAX_LINKS = 128;
364
380
  function isValidSpanContext2(spanContext) {
365
- return !!(spanContext && spanContext.traceId && spanContext.spanId && autotel.otelTrace.isSpanContextValid(spanContext));
381
+ return !!(
382
+ spanContext &&
383
+ spanContext.traceId &&
384
+ spanContext.spanId &&
385
+ autotel.otelTrace.isSpanContextValid(spanContext)
386
+ );
366
387
  }
367
388
  function hashTraceIdsSync(traceIds) {
368
- const input = traceIds.join("|");
389
+ const input = traceIds.join('|');
369
390
  let hash = 5381;
370
391
  for (let i = 0; i < input.length; i++) {
371
- hash = hash * 33 ^ input.charCodeAt(i);
392
+ hash = (hash * 33) ^ input.charCodeAt(i);
372
393
  }
373
- return (hash >>> 0).toString(16).padStart(16, "0");
394
+ return (hash >>> 0).toString(16).padStart(16, '0');
374
395
  }
375
396
  function extractBatchLineage(items, options = {}) {
376
397
  const { includeTraceIds = false, maxLinks = DEFAULT_MAX_LINKS } = options;
@@ -380,23 +401,29 @@ function extractBatchLineage(items, options = {}) {
380
401
  const normalizedHeaders = normalizeHeaders(item.headers);
381
402
  const extractedCtx = extractTraceContext(normalizedHeaders);
382
403
  const spanContext = autotel.otelTrace.getSpanContext(extractedCtx);
383
- if (isValidSpanContext2(spanContext) && !seenTraceIds.has(spanContext.traceId)) {
404
+ if (
405
+ isValidSpanContext2(spanContext) &&
406
+ !seenTraceIds.has(spanContext.traceId)
407
+ ) {
384
408
  seenTraceIds.add(spanContext.traceId);
385
409
  extractedContexts.push({
386
410
  traceId: spanContext.traceId,
387
- spanContext
411
+ spanContext,
388
412
  });
389
413
  }
390
414
  }
391
415
  extractedContexts.sort((a, b) => a.traceId.localeCompare(b.traceId));
392
416
  const traceIds = extractedContexts.map((ec) => ec.traceId);
393
- const links = extractedContexts.slice(0, maxLinks).map((ec) => ({ context: ec.spanContext }));
394
- const hash = traceIds.length > 0 ? hashTraceIdsSync(traceIds) : "0000000000000000";
417
+ const links = extractedContexts
418
+ .slice(0, maxLinks)
419
+ .map((ec) => ({ context: ec.spanContext }));
420
+ const hash =
421
+ traceIds.length > 0 ? hashTraceIdsSync(traceIds) : '0000000000000000';
395
422
  return {
396
423
  linked_trace_id_count: traceIds.length,
397
424
  linked_trace_id_hash: hash,
398
425
  links,
399
- ...includeTraceIds && { trace_ids: traceIds }
426
+ ...(includeTraceIds && { trace_ids: traceIds }),
400
427
  };
401
428
  }
402
429
 
@@ -412,14 +439,20 @@ exports.CORRELATION_ID_HEADER = CORRELATION_ID_HEADER;
412
439
  exports.SEMATTRS_LINKED_TRACE_ID_COUNT = SEMATTRS_LINKED_TRACE_ID_COUNT;
413
440
  exports.SEMATTRS_LINKED_TRACE_ID_HASH = SEMATTRS_LINKED_TRACE_ID_HASH;
414
441
  exports.SEMATTRS_MESSAGING_CONSUMER_ID = SEMATTRS_MESSAGING_CONSUMER_ID;
415
- exports.SEMATTRS_MESSAGING_DESTINATION_NAME = SEMATTRS_MESSAGING_DESTINATION_NAME;
416
- exports.SEMATTRS_MESSAGING_MESSAGE_CONVERSATION_ID = SEMATTRS_MESSAGING_MESSAGE_CONVERSATION_ID;
442
+ exports.SEMATTRS_MESSAGING_DESTINATION_NAME =
443
+ SEMATTRS_MESSAGING_DESTINATION_NAME;
444
+ exports.SEMATTRS_MESSAGING_MESSAGE_CONVERSATION_ID =
445
+ SEMATTRS_MESSAGING_MESSAGE_CONVERSATION_ID;
417
446
  exports.SEMATTRS_MESSAGING_MESSAGE_ID = SEMATTRS_MESSAGING_MESSAGE_ID;
418
447
  exports.SEMATTRS_MESSAGING_OPERATION_NAME = SEMATTRS_MESSAGING_OPERATION_NAME;
419
- exports.SEMATTRS_MESSAGING_RABBITMQ_ACK_RESULT = SEMATTRS_MESSAGING_RABBITMQ_ACK_RESULT;
420
- exports.SEMATTRS_MESSAGING_RABBITMQ_DESTINATION_EXCHANGE = SEMATTRS_MESSAGING_RABBITMQ_DESTINATION_EXCHANGE;
421
- exports.SEMATTRS_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY = SEMATTRS_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY;
422
- exports.SEMATTRS_MESSAGING_RABBITMQ_REQUEUE = SEMATTRS_MESSAGING_RABBITMQ_REQUEUE;
448
+ exports.SEMATTRS_MESSAGING_RABBITMQ_ACK_RESULT =
449
+ SEMATTRS_MESSAGING_RABBITMQ_ACK_RESULT;
450
+ exports.SEMATTRS_MESSAGING_RABBITMQ_DESTINATION_EXCHANGE =
451
+ SEMATTRS_MESSAGING_RABBITMQ_DESTINATION_EXCHANGE;
452
+ exports.SEMATTRS_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY =
453
+ SEMATTRS_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY;
454
+ exports.SEMATTRS_MESSAGING_RABBITMQ_REQUEUE =
455
+ SEMATTRS_MESSAGING_RABBITMQ_REQUEUE;
423
456
  exports.SEMATTRS_MESSAGING_SYSTEM = SEMATTRS_MESSAGING_SYSTEM;
424
457
  exports.deriveCorrelationId = deriveCorrelationId;
425
458
  exports.extractBatchLineage = extractBatchLineage;
@@ -431,4 +464,4 @@ exports.recordAckResult = recordAckResult;
431
464
  exports.withConsumeSpan = withConsumeSpan;
432
465
  exports.withPublishSpan = withPublishSpan;
433
466
  //# sourceMappingURL=rabbitmq.cjs.map
434
- //# sourceMappingURL=rabbitmq.cjs.map
467
+ //# sourceMappingURL=rabbitmq.cjs.map