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