From a5bee9fe15f67f0e08bb6354e9bfd7876f3ff0ca Mon Sep 17 00:00:00 2001 From: David Luna Date: Tue, 23 Apr 2024 21:07:21 +0200 Subject: [PATCH 01/39] chore(instr-amqpllib): use semconv strings in test files (#2113) --- .../test/amqplib-callbacks.test.ts | 196 +++++++------ .../test/amqplib-connection.test.ts | 83 +++--- .../test/amqplib-promise.test.ts | 260 +++++++++--------- .../test/utils.test.ts | 104 +++---- 4 files changed, 319 insertions(+), 324 deletions(-) diff --git a/plugins/node/instrumentation-amqplib/test/amqplib-callbacks.test.ts b/plugins/node/instrumentation-amqplib/test/amqplib-callbacks.test.ts index 9f2ab1d81e..533b5d9942 100644 --- a/plugins/node/instrumentation-amqplib/test/amqplib-callbacks.test.ts +++ b/plugins/node/instrumentation-amqplib/test/amqplib-callbacks.test.ts @@ -25,8 +25,16 @@ registerInstrumentationTesting(new AmqplibInstrumentation()); import * as amqpCallback from 'amqplib/callback_api'; import { - MessagingDestinationKindValues, - SemanticAttributes, + MESSAGINGDESTINATIONKINDVALUES_TOPIC, + SEMATTRS_MESSAGING_DESTINATION, + SEMATTRS_MESSAGING_DESTINATION_KIND, + SEMATTRS_MESSAGING_PROTOCOL, + SEMATTRS_MESSAGING_PROTOCOL_VERSION, + SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY, + SEMATTRS_MESSAGING_SYSTEM, + SEMATTRS_MESSAGING_URL, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, } from '@opentelemetry/semantic-conventions'; import { Baggage, context, propagation, SpanKind } from '@opentelemetry/api'; import { asyncConfirmSend, asyncConsume, shouldTest } from './utils'; @@ -127,67 +135,63 @@ describe('amqplib instrumentation callback model', () => { // assert publish span expect(publishSpan.kind).toEqual(SpanKind.PRODUCER); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + '' + ); // according to spec: "This will be an empty string if the default exchange is used" expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual(''); // according to spec: "This will be an empty string if the default exchange is used" - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.TOPIC); + publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] + ).toEqual(MESSAGINGDESTINATIONKINDVALUES_TOPIC); expect( - publishSpan.attributes[ - SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY - ] + publishSpan.attributes[SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY] ).toEqual(queueName); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL_VERSION] + publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_URL] - ).toEqual(censoredUrl); - expect( - publishSpan.attributes[SemanticAttributes.NET_PEER_NAME] - ).toEqual(TEST_RABBITMQ_HOST); - expect( - publishSpan.attributes[SemanticAttributes.NET_PEER_PORT] - ).toEqual(TEST_RABBITMQ_PORT); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_URL]).toEqual( + censoredUrl + ); + expect(publishSpan.attributes[SEMATTRS_NET_PEER_NAME]).toEqual( + TEST_RABBITMQ_HOST + ); + expect(publishSpan.attributes[SEMATTRS_NET_PEER_PORT]).toEqual( + TEST_RABBITMQ_PORT + ); // assert consume span expect(consumeSpan.kind).toEqual(SpanKind.CONSUMER); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + '' + ); // according to spec: "This will be an empty string if the default exchange is used" expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual(''); // according to spec: "This will be an empty string if the default exchange is used" - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.TOPIC); + consumeSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] + ).toEqual(MESSAGINGDESTINATIONKINDVALUES_TOPIC); expect( - consumeSpan.attributes[ - SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY - ] + consumeSpan.attributes[SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY] ).toEqual(queueName); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL_VERSION] + consumeSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_URL] - ).toEqual(censoredUrl); - expect( - consumeSpan.attributes[SemanticAttributes.NET_PEER_NAME] - ).toEqual(TEST_RABBITMQ_HOST); - expect( - consumeSpan.attributes[SemanticAttributes.NET_PEER_PORT] - ).toEqual(TEST_RABBITMQ_PORT); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_URL]).toEqual( + censoredUrl + ); + expect(consumeSpan.attributes[SEMATTRS_NET_PEER_NAME]).toEqual( + TEST_RABBITMQ_HOST + ); + expect(consumeSpan.attributes[SEMATTRS_NET_PEER_PORT]).toEqual( + TEST_RABBITMQ_PORT + ); // assert context propagation expect(consumeSpan.spanContext().traceId).toEqual( @@ -301,75 +305,63 @@ describe('amqplib instrumentation callback model', () => { // assert publish span expect(publishSpan.kind).toEqual(SpanKind.PRODUCER); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] + publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION] ).toEqual(''); // according to spec: "This will be an empty string if the default exchange is used" expect( - publishSpan.attributes[ - SemanticAttributes.MESSAGING_DESTINATION_KIND - ] - ).toEqual(MessagingDestinationKindValues.TOPIC); + publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] + ).toEqual(MESSAGINGDESTINATIONKINDVALUES_TOPIC); expect( - publishSpan.attributes[ - SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY - ] + publishSpan.attributes[SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY] ).toEqual(queueName); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - publishSpan.attributes[ - SemanticAttributes.MESSAGING_PROTOCOL_VERSION - ] + publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_URL] - ).toEqual(censoredUrl); - expect( - publishSpan.attributes[SemanticAttributes.NET_PEER_NAME] - ).toEqual(TEST_RABBITMQ_HOST); - expect( - publishSpan.attributes[SemanticAttributes.NET_PEER_PORT] - ).toEqual(TEST_RABBITMQ_PORT); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_URL]).toEqual( + censoredUrl + ); + expect(publishSpan.attributes[SEMATTRS_NET_PEER_NAME]).toEqual( + TEST_RABBITMQ_HOST + ); + expect(publishSpan.attributes[SEMATTRS_NET_PEER_PORT]).toEqual( + TEST_RABBITMQ_PORT + ); // assert consume span expect(consumeSpan.kind).toEqual(SpanKind.CONSUMER); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] + consumeSpan.attributes[SEMATTRS_MESSAGING_DESTINATION] ).toEqual(''); // according to spec: "This will be an empty string if the default exchange is used" expect( - consumeSpan.attributes[ - SemanticAttributes.MESSAGING_DESTINATION_KIND - ] - ).toEqual(MessagingDestinationKindValues.TOPIC); + consumeSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] + ).toEqual(MESSAGINGDESTINATIONKINDVALUES_TOPIC); expect( - consumeSpan.attributes[ - SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY - ] + consumeSpan.attributes[SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY] ).toEqual(queueName); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - consumeSpan.attributes[ - SemanticAttributes.MESSAGING_PROTOCOL_VERSION - ] + consumeSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_URL] - ).toEqual(censoredUrl); - expect( - consumeSpan.attributes[SemanticAttributes.NET_PEER_NAME] - ).toEqual(TEST_RABBITMQ_HOST); - expect( - consumeSpan.attributes[SemanticAttributes.NET_PEER_PORT] - ).toEqual(TEST_RABBITMQ_PORT); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_URL]).toEqual( + censoredUrl + ); + expect(consumeSpan.attributes[SEMATTRS_NET_PEER_NAME]).toEqual( + TEST_RABBITMQ_HOST + ); + expect(consumeSpan.attributes[SEMATTRS_NET_PEER_PORT]).toEqual( + TEST_RABBITMQ_PORT + ); // assert context propagation expect(consumeSpan.spanContext().traceId).toEqual( diff --git a/plugins/node/instrumentation-amqplib/test/amqplib-connection.test.ts b/plugins/node/instrumentation-amqplib/test/amqplib-connection.test.ts index 7ac3e686e5..a9f6c5526d 100644 --- a/plugins/node/instrumentation-amqplib/test/amqplib-connection.test.ts +++ b/plugins/node/instrumentation-amqplib/test/amqplib-connection.test.ts @@ -32,7 +32,14 @@ import { registerInstrumentationTesting(new AmqplibInstrumentation()); import * as amqp from 'amqplib'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_MESSAGING_PROTOCOL, + SEMATTRS_MESSAGING_PROTOCOL_VERSION, + SEMATTRS_MESSAGING_SYSTEM, + SEMATTRS_MESSAGING_URL, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, +} from '@opentelemetry/semantic-conventions'; describe('amqplib instrumentation connection', () => { before(function () { @@ -60,24 +67,22 @@ describe('amqplib instrumentation connection', () => { ); const [publishSpan] = getTestSpans(); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL_VERSION] + publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_URL] - ).toBeUndefined(); // no url string if value supplied as object - expect( - publishSpan.attributes[SemanticAttributes.NET_PEER_NAME] - ).toEqual(TEST_RABBITMQ_HOST); - expect( - publishSpan.attributes[SemanticAttributes.NET_PEER_PORT] - ).toEqual(TEST_RABBITMQ_PORT); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_URL]).toBeUndefined(); // no url string if value supplied as object + expect(publishSpan.attributes[SEMATTRS_NET_PEER_NAME]).toEqual( + TEST_RABBITMQ_HOST + ); + expect(publishSpan.attributes[SEMATTRS_NET_PEER_PORT]).toEqual( + TEST_RABBITMQ_PORT + ); } finally { await conn.close(); } @@ -99,9 +104,9 @@ describe('amqplib instrumentation connection', () => { Buffer.from('message created only to test connection attributes') ); const [publishSpan] = getTestSpans(); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); } finally { await conn.close(); } @@ -127,9 +132,9 @@ describe('amqplib instrumentation connection', () => { Buffer.from('message created only to test connection attributes') ); const [publishSpan] = getTestSpans(); - expect( - publishSpan.attributes[SemanticAttributes.NET_PEER_NAME] - ).toEqual(TEST_RABBITMQ_HOST); + expect(publishSpan.attributes[SEMATTRS_NET_PEER_NAME]).toEqual( + TEST_RABBITMQ_HOST + ); } finally { await conn.close(); } @@ -149,24 +154,24 @@ describe('amqplib instrumentation connection', () => { ); const [publishSpan] = getTestSpans(); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL_VERSION] + publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_URL] - ).toEqual(censoredUrl); - expect( - publishSpan.attributes[SemanticAttributes.NET_PEER_NAME] - ).toEqual(TEST_RABBITMQ_HOST); - expect( - publishSpan.attributes[SemanticAttributes.NET_PEER_PORT] - ).toEqual(TEST_RABBITMQ_PORT); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_URL]).toEqual( + censoredUrl + ); + expect(publishSpan.attributes[SEMATTRS_NET_PEER_NAME]).toEqual( + TEST_RABBITMQ_HOST + ); + expect(publishSpan.attributes[SEMATTRS_NET_PEER_PORT]).toEqual( + TEST_RABBITMQ_PORT + ); } finally { await conn.close(); } diff --git a/plugins/node/instrumentation-amqplib/test/amqplib-promise.test.ts b/plugins/node/instrumentation-amqplib/test/amqplib-promise.test.ts index e130f5e942..2205d76a5a 100644 --- a/plugins/node/instrumentation-amqplib/test/amqplib-promise.test.ts +++ b/plugins/node/instrumentation-amqplib/test/amqplib-promise.test.ts @@ -36,8 +36,16 @@ const instrumentation = registerInstrumentationTesting( import * as amqp from 'amqplib'; import { ConsumeMessage } from 'amqplib'; import { - MessagingDestinationKindValues, - SemanticAttributes, + MESSAGINGDESTINATIONKINDVALUES_TOPIC, + SEMATTRS_MESSAGING_DESTINATION, + SEMATTRS_MESSAGING_DESTINATION_KIND, + SEMATTRS_MESSAGING_PROTOCOL, + SEMATTRS_MESSAGING_PROTOCOL_VERSION, + SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY, + SEMATTRS_MESSAGING_SYSTEM, + SEMATTRS_MESSAGING_URL, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, } from '@opentelemetry/semantic-conventions'; import { Span, SpanKind, SpanStatusCode } from '@opentelemetry/api'; import { asyncConfirmPublish, asyncConfirmSend, asyncConsume } from './utils'; @@ -146,65 +154,61 @@ describe('amqplib instrumentation promise model', () => { // assert publish span expect(publishSpan.kind).toEqual(SpanKind.PRODUCER); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + '' + ); // according to spec: "This will be an empty string if the default exchange is used" expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual(''); // according to spec: "This will be an empty string if the default exchange is used" - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.TOPIC); + publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] + ).toEqual(MESSAGINGDESTINATIONKINDVALUES_TOPIC); expect( - publishSpan.attributes[ - SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY - ] + publishSpan.attributes[SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY] ).toEqual(queueName); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL_VERSION] + publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); - expect(publishSpan.attributes[SemanticAttributes.MESSAGING_URL]).toEqual( + expect(publishSpan.attributes[SEMATTRS_MESSAGING_URL]).toEqual( censoredUrl ); - expect(publishSpan.attributes[SemanticAttributes.NET_PEER_NAME]).toEqual( + expect(publishSpan.attributes[SEMATTRS_NET_PEER_NAME]).toEqual( TEST_RABBITMQ_HOST ); - expect(publishSpan.attributes[SemanticAttributes.NET_PEER_PORT]).toEqual( + expect(publishSpan.attributes[SEMATTRS_NET_PEER_PORT]).toEqual( TEST_RABBITMQ_PORT ); // assert consume span expect(consumeSpan.kind).toEqual(SpanKind.CONSUMER); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + '' + ); // according to spec: "This will be an empty string if the default exchange is used" expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual(''); // according to spec: "This will be an empty string if the default exchange is used" - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.TOPIC); + consumeSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] + ).toEqual(MESSAGINGDESTINATIONKINDVALUES_TOPIC); expect( - consumeSpan.attributes[ - SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY - ] + consumeSpan.attributes[SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY] ).toEqual(queueName); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL_VERSION] + consumeSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); - expect(consumeSpan.attributes[SemanticAttributes.MESSAGING_URL]).toEqual( + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_URL]).toEqual( censoredUrl ); - expect(consumeSpan.attributes[SemanticAttributes.NET_PEER_NAME]).toEqual( + expect(consumeSpan.attributes[SEMATTRS_NET_PEER_NAME]).toEqual( TEST_RABBITMQ_HOST ); - expect(consumeSpan.attributes[SemanticAttributes.NET_PEER_PORT]).toEqual( + expect(consumeSpan.attributes[SEMATTRS_NET_PEER_PORT]).toEqual( TEST_RABBITMQ_PORT ); @@ -505,48 +509,44 @@ describe('amqplib instrumentation promise model', () => { // assert publish span expect(publishSpan.kind).toEqual(SpanKind.PRODUCER); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + exchangeName + ); expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual(exchangeName); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.TOPIC); + publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] + ).toEqual(MESSAGINGDESTINATIONKINDVALUES_TOPIC); expect( - publishSpan.attributes[ - SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY - ] + publishSpan.attributes[SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY] ).toEqual(routingKey); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL_VERSION] + publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); // assert consume span expect(consumeSpan.kind).toEqual(SpanKind.CONSUMER); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + exchangeName + ); expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual(exchangeName); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.TOPIC); + consumeSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] + ).toEqual(MESSAGINGDESTINATIONKINDVALUES_TOPIC); expect( - consumeSpan.attributes[ - SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY - ] + consumeSpan.attributes[SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY] ).toEqual(routingKey); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL_VERSION] + consumeSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); // assert context propagation @@ -689,65 +689,61 @@ describe('amqplib instrumentation promise model', () => { // assert publish span expect(publishSpan.kind).toEqual(SpanKind.PRODUCER); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + '' + ); // according to spec: "This will be an empty string if the default exchange is used" expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual(''); // according to spec: "This will be an empty string if the default exchange is used" - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.TOPIC); + publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] + ).toEqual(MESSAGINGDESTINATIONKINDVALUES_TOPIC); expect( - publishSpan.attributes[ - SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY - ] + publishSpan.attributes[SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY] ).toEqual(queueName); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL_VERSION] + publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); - expect(publishSpan.attributes[SemanticAttributes.MESSAGING_URL]).toEqual( + expect(publishSpan.attributes[SEMATTRS_MESSAGING_URL]).toEqual( censoredUrl ); - expect(publishSpan.attributes[SemanticAttributes.NET_PEER_NAME]).toEqual( + expect(publishSpan.attributes[SEMATTRS_NET_PEER_NAME]).toEqual( TEST_RABBITMQ_HOST ); - expect(publishSpan.attributes[SemanticAttributes.NET_PEER_PORT]).toEqual( + expect(publishSpan.attributes[SEMATTRS_NET_PEER_PORT]).toEqual( TEST_RABBITMQ_PORT ); // assert consume span expect(consumeSpan.kind).toEqual(SpanKind.CONSUMER); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + '' + ); // according to spec: "This will be an empty string if the default exchange is used" expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual(''); // according to spec: "This will be an empty string if the default exchange is used" - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.TOPIC); + consumeSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] + ).toEqual(MESSAGINGDESTINATIONKINDVALUES_TOPIC); expect( - consumeSpan.attributes[ - SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY - ] + consumeSpan.attributes[SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY] ).toEqual(queueName); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL_VERSION] + consumeSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); - expect(consumeSpan.attributes[SemanticAttributes.MESSAGING_URL]).toEqual( + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_URL]).toEqual( censoredUrl ); - expect(consumeSpan.attributes[SemanticAttributes.NET_PEER_NAME]).toEqual( + expect(consumeSpan.attributes[SEMATTRS_NET_PEER_NAME]).toEqual( TEST_RABBITMQ_HOST ); - expect(consumeSpan.attributes[SemanticAttributes.NET_PEER_PORT]).toEqual( + expect(consumeSpan.attributes[SEMATTRS_NET_PEER_PORT]).toEqual( TEST_RABBITMQ_PORT ); @@ -1100,48 +1096,44 @@ describe('amqplib instrumentation promise model', () => { // assert publish span expect(publishSpan.kind).toEqual(SpanKind.PRODUCER); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + exchangeName + ); expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual(exchangeName); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.TOPIC); + publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] + ).toEqual(MESSAGINGDESTINATIONKINDVALUES_TOPIC); expect( - publishSpan.attributes[ - SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY - ] + publishSpan.attributes[SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY] ).toEqual(routingKey); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL_VERSION] + publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); // assert consume span expect(consumeSpan.kind).toEqual(SpanKind.CONSUMER); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + exchangeName + ); expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual(exchangeName); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.TOPIC); + consumeSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] + ).toEqual(MESSAGINGDESTINATIONKINDVALUES_TOPIC); expect( - consumeSpan.attributes[ - SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY - ] + consumeSpan.attributes[SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY] ).toEqual(routingKey); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL_VERSION] + consumeSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); // assert context propagation diff --git a/plugins/node/instrumentation-amqplib/test/utils.test.ts b/plugins/node/instrumentation-amqplib/test/utils.test.ts index 34e6fb7aa9..6369398969 100644 --- a/plugins/node/instrumentation-amqplib/test/utils.test.ts +++ b/plugins/node/instrumentation-amqplib/test/utils.test.ts @@ -19,7 +19,14 @@ import { getConnectionAttributesFromServer, getConnectionAttributesFromUrl, } from '../src/utils'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_MESSAGING_PROTOCOL, + SEMATTRS_MESSAGING_PROTOCOL_VERSION, + SEMATTRS_MESSAGING_SYSTEM, + SEMATTRS_MESSAGING_URL, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, +} from '@opentelemetry/semantic-conventions'; import * as amqp from 'amqplib'; import { shouldTest } from './utils'; import { rabbitMqUrl } from './config'; @@ -43,7 +50,7 @@ describe('utils', () => { it('messaging system attribute', () => { const attributes = getConnectionAttributesFromServer(conn.connection); expect(attributes).toStrictEqual({ - [SemanticAttributes.MESSAGING_SYSTEM]: 'rabbitmq', + [SEMATTRS_MESSAGING_SYSTEM]: 'rabbitmq', }); }); }); @@ -54,11 +61,11 @@ describe('utils', () => { 'amqp://user:pass@host:10000/vhost' ); expect(attributes).toStrictEqual({ - [SemanticAttributes.MESSAGING_PROTOCOL]: 'AMQP', - [SemanticAttributes.MESSAGING_PROTOCOL_VERSION]: '0.9.1', - [SemanticAttributes.NET_PEER_NAME]: 'host', - [SemanticAttributes.NET_PEER_PORT]: 10000, - [SemanticAttributes.MESSAGING_URL]: 'amqp://user:***@host:10000/vhost', + [SEMATTRS_MESSAGING_PROTOCOL]: 'AMQP', + [SEMATTRS_MESSAGING_PROTOCOL_VERSION]: '0.9.1', + [SEMATTRS_NET_PEER_NAME]: 'host', + [SEMATTRS_NET_PEER_PORT]: 10000, + [SEMATTRS_MESSAGING_URL]: 'amqp://user:***@host:10000/vhost', }); }); @@ -67,102 +74,101 @@ describe('utils', () => { 'amqp://user%61:%61pass@ho%61st:10000/v%2fhost' ); expect(attributes).toStrictEqual({ - [SemanticAttributes.MESSAGING_PROTOCOL]: 'AMQP', - [SemanticAttributes.MESSAGING_PROTOCOL_VERSION]: '0.9.1', - [SemanticAttributes.NET_PEER_NAME]: 'ho%61st', - [SemanticAttributes.NET_PEER_PORT]: 10000, - [SemanticAttributes.MESSAGING_URL]: - 'amqp://user%61:***@ho%61st:10000/v%2fhost', + [SEMATTRS_MESSAGING_PROTOCOL]: 'AMQP', + [SEMATTRS_MESSAGING_PROTOCOL_VERSION]: '0.9.1', + [SEMATTRS_NET_PEER_NAME]: 'ho%61st', + [SEMATTRS_NET_PEER_PORT]: 10000, + [SEMATTRS_MESSAGING_URL]: 'amqp://user%61:***@ho%61st:10000/v%2fhost', }); }); it('only protocol', () => { const attributes = getConnectionAttributesFromUrl('amqp://'); expect(attributes).toStrictEqual({ - [SemanticAttributes.MESSAGING_PROTOCOL]: 'AMQP', - [SemanticAttributes.MESSAGING_PROTOCOL_VERSION]: '0.9.1', - [SemanticAttributes.NET_PEER_NAME]: 'localhost', - [SemanticAttributes.NET_PEER_PORT]: 5672, - [SemanticAttributes.MESSAGING_URL]: 'amqp://', + [SEMATTRS_MESSAGING_PROTOCOL]: 'AMQP', + [SEMATTRS_MESSAGING_PROTOCOL_VERSION]: '0.9.1', + [SEMATTRS_NET_PEER_NAME]: 'localhost', + [SEMATTRS_NET_PEER_PORT]: 5672, + [SEMATTRS_MESSAGING_URL]: 'amqp://', }); }); it('empty username and password', () => { const attributes = getConnectionAttributesFromUrl('amqp://:@/'); expect(attributes).toStrictEqual({ - [SemanticAttributes.MESSAGING_PROTOCOL_VERSION]: '0.9.1', - [SemanticAttributes.MESSAGING_URL]: 'amqp://:***@/', + [SEMATTRS_MESSAGING_PROTOCOL_VERSION]: '0.9.1', + [SEMATTRS_MESSAGING_URL]: 'amqp://:***@/', }); }); it('username and no password', () => { const attributes = getConnectionAttributesFromUrl('amqp://user@'); expect(attributes).toStrictEqual({ - [SemanticAttributes.MESSAGING_PROTOCOL_VERSION]: '0.9.1', - [SemanticAttributes.MESSAGING_URL]: 'amqp://user@', + [SEMATTRS_MESSAGING_PROTOCOL_VERSION]: '0.9.1', + [SEMATTRS_MESSAGING_URL]: 'amqp://user@', }); }); it('username and password, no host', () => { const attributes = getConnectionAttributesFromUrl('amqp://user:pass@'); expect(attributes).toStrictEqual({ - [SemanticAttributes.MESSAGING_PROTOCOL_VERSION]: '0.9.1', - [SemanticAttributes.MESSAGING_URL]: 'amqp://user:***@', + [SEMATTRS_MESSAGING_PROTOCOL_VERSION]: '0.9.1', + [SEMATTRS_MESSAGING_URL]: 'amqp://user:***@', }); }); it('host only', () => { const attributes = getConnectionAttributesFromUrl('amqp://host'); expect(attributes).toStrictEqual({ - [SemanticAttributes.MESSAGING_PROTOCOL]: 'AMQP', - [SemanticAttributes.MESSAGING_PROTOCOL_VERSION]: '0.9.1', - [SemanticAttributes.NET_PEER_NAME]: 'host', - [SemanticAttributes.NET_PEER_PORT]: 5672, - [SemanticAttributes.MESSAGING_URL]: 'amqp://host', + [SEMATTRS_MESSAGING_PROTOCOL]: 'AMQP', + [SEMATTRS_MESSAGING_PROTOCOL_VERSION]: '0.9.1', + [SEMATTRS_NET_PEER_NAME]: 'host', + [SEMATTRS_NET_PEER_PORT]: 5672, + [SEMATTRS_MESSAGING_URL]: 'amqp://host', }); }); it('vhost only', () => { const attributes = getConnectionAttributesFromUrl('amqp:///vhost'); expect(attributes).toStrictEqual({ - [SemanticAttributes.MESSAGING_PROTOCOL]: 'AMQP', - [SemanticAttributes.MESSAGING_PROTOCOL_VERSION]: '0.9.1', - [SemanticAttributes.NET_PEER_NAME]: 'localhost', - [SemanticAttributes.NET_PEER_PORT]: 5672, - [SemanticAttributes.MESSAGING_URL]: 'amqp:///vhost', + [SEMATTRS_MESSAGING_PROTOCOL]: 'AMQP', + [SEMATTRS_MESSAGING_PROTOCOL_VERSION]: '0.9.1', + [SEMATTRS_NET_PEER_NAME]: 'localhost', + [SEMATTRS_NET_PEER_PORT]: 5672, + [SEMATTRS_MESSAGING_URL]: 'amqp:///vhost', }); }); it('host only, trailing slash', () => { const attributes = getConnectionAttributesFromUrl('amqp://host/'); expect(attributes).toStrictEqual({ - [SemanticAttributes.MESSAGING_PROTOCOL]: 'AMQP', - [SemanticAttributes.MESSAGING_PROTOCOL_VERSION]: '0.9.1', - [SemanticAttributes.NET_PEER_NAME]: 'host', - [SemanticAttributes.NET_PEER_PORT]: 5672, - [SemanticAttributes.MESSAGING_URL]: 'amqp://host/', + [SEMATTRS_MESSAGING_PROTOCOL]: 'AMQP', + [SEMATTRS_MESSAGING_PROTOCOL_VERSION]: '0.9.1', + [SEMATTRS_NET_PEER_NAME]: 'host', + [SEMATTRS_NET_PEER_PORT]: 5672, + [SEMATTRS_MESSAGING_URL]: 'amqp://host/', }); }); it('vhost encoded', () => { const attributes = getConnectionAttributesFromUrl('amqp://host/%2f'); expect(attributes).toStrictEqual({ - [SemanticAttributes.MESSAGING_PROTOCOL]: 'AMQP', - [SemanticAttributes.MESSAGING_PROTOCOL_VERSION]: '0.9.1', - [SemanticAttributes.NET_PEER_NAME]: 'host', - [SemanticAttributes.NET_PEER_PORT]: 5672, - [SemanticAttributes.MESSAGING_URL]: 'amqp://host/%2f', + [SEMATTRS_MESSAGING_PROTOCOL]: 'AMQP', + [SEMATTRS_MESSAGING_PROTOCOL_VERSION]: '0.9.1', + [SEMATTRS_NET_PEER_NAME]: 'host', + [SEMATTRS_NET_PEER_PORT]: 5672, + [SEMATTRS_MESSAGING_URL]: 'amqp://host/%2f', }); }); it('IPv6 host', () => { const attributes = getConnectionAttributesFromUrl('amqp://[::1]'); expect(attributes).toStrictEqual({ - [SemanticAttributes.MESSAGING_PROTOCOL]: 'AMQP', - [SemanticAttributes.MESSAGING_PROTOCOL_VERSION]: '0.9.1', - [SemanticAttributes.NET_PEER_NAME]: '[::1]', - [SemanticAttributes.NET_PEER_PORT]: 5672, - [SemanticAttributes.MESSAGING_URL]: 'amqp://[::1]', + [SEMATTRS_MESSAGING_PROTOCOL]: 'AMQP', + [SEMATTRS_MESSAGING_PROTOCOL_VERSION]: '0.9.1', + [SEMATTRS_NET_PEER_NAME]: '[::1]', + [SEMATTRS_NET_PEER_PORT]: 5672, + [SEMATTRS_MESSAGING_URL]: 'amqp://[::1]', }); }); }); From 2d709ecc73a6b3d99967ec7d2bd814e5ef10c4cc Mon Sep 17 00:00:00 2001 From: Jamie Danielson Date: Wed, 24 Apr 2024 11:40:48 -0400 Subject: [PATCH 02/39] chore(instrumentation-fs): remove unused semconv package (#2141) --- package-lock.json | 4 +--- plugins/node/instrumentation-fs/package.json | 3 +-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1bfd2fcf51..d11fd45248 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36969,8 +36969,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/instrumentation": "^0.50.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -46144,7 +46143,6 @@ "@opentelemetry/resources": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "^10.0.11", diff --git a/plugins/node/instrumentation-fs/package.json b/plugins/node/instrumentation-fs/package.json index 2c41acd685..72ad223de5 100644 --- a/plugins/node/instrumentation-fs/package.json +++ b/plugins/node/instrumentation-fs/package.json @@ -59,8 +59,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/instrumentation": "^0.50.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-fs#readme" } From 0d380816aabdbaab54d55e34410c1c10543e2062 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Wed, 24 Apr 2024 12:30:02 -0400 Subject: [PATCH 03/39] docs: remove `key` column on readme (#2132) A key column was added to several READMEs, but it was decided to not have them anymore. So this commit removes the column from the doc that were already added. --- plugins/node/instrumentation-undici/README.md | 30 +++++++++---------- .../README.md | 6 ++-- .../README.md | 6 ++-- .../README.md | 14 ++++----- .../README.md | 8 ++--- 5 files changed, 32 insertions(+), 32 deletions(-) diff --git a/plugins/node/instrumentation-undici/README.md b/plugins/node/instrumentation-undici/README.md index 08a7128404..f26fee2352 100644 --- a/plugins/node/instrumentation-undici/README.md +++ b/plugins/node/instrumentation-undici/README.md @@ -71,21 +71,21 @@ Ref: [opentelemetry-js/issues/4235](https://github.com/open-telemetry/openteleme Attributes collected: -| Attribute | Short Description | Notes | -| ------------ | ---------------------------------- | ----------------- | -| `http.request.method` | HTTP request method. | Key: `HTTP_REQUEST_METHOD` | -| `http.request.method_original` | Original HTTP method sent by the client in the request line. | Key: `HTTP_REQUEST_METHOD_ORIGINAL` | -| `url.full` | Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986). | Key: `URL_FULL` | -| `url.path` | The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component. | Key: `URL_PATH` | -| `url.query` | The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component. | Key: `URL_QUERY` | -| `url.scheme` | HTTP request method. | Key: `URL_SCHEME` | -| `server.address` | Server domain name, IP address or Unix domain socket name. | Key: `HTTP_REQUEST_METHOD` | -| `server.port` | Server port number. | Key: `HTTP_REQUEST_METHOD` | -| `user_agent.original` | Value of the HTTP User-Agent header sent by the client. | Key: `USER_AGENT_ORIGINAL` | -| `network.peer.address` | Peer address of the network connection - IP address or Unix domain socket name. | Key: `NETWORK_PEER_ADDRESS` | -| `network.peer.port` | Peer port number of the network connection. | Key: `NETWORK_PEER_PORT` | -| `http.response.status_code` | [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). | Key: `HTTP_RESPONSE_STATUS_CODE` | -| `error.type` | Describes a class of error the operation ended with. | Key: `ERROR_TYPE` | +| Attribute | Short Description | +| ------------------------------ | ---------------------------------------------------------------------------------------------------------- | +| `error.type` | Describes a class of error the operation ended with. | +| `http.request.method` | HTTP request method. | +| `http.request.method_original` | Original HTTP method sent by the client in the request line. | +| `http.response.status_code` | [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). | +| `network.peer.address` | Peer address of the network connection - IP address or Unix domain socket name. | +| `network.peer.port` | Peer port number of the network connection. | +| `server.address` | Server domain name, IP address or Unix domain socket name. | +| `server.port` | Server port number. | +| `url.full` | Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986). | +| `url.path` | The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component. | +| `url.query` | The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component. | +| `url.scheme` | HTTP request method. | +| `user_agent.original` | Value of the HTTP User-Agent header sent by the client. | ## Useful links diff --git a/plugins/node/opentelemetry-instrumentation-express/README.md b/plugins/node/opentelemetry-instrumentation-express/README.md index 9818cc5e2d..f6758e09db 100644 --- a/plugins/node/opentelemetry-instrumentation-express/README.md +++ b/plugins/node/opentelemetry-instrumentation-express/README.md @@ -148,9 +148,9 @@ This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which i Attributes collected: -| Attribute | Short Description | Notes | -| ------------ | ---------------------------------- | -------------------------- | -| `http.route` | The matched route (path template). | Key: `SEMATTRS_HTTP_ROUTE` | +| Attribute | Short Description | +| ------------ | ---------------------------------- | +| `http.route` | The matched route (path template). | ## Useful links diff --git a/plugins/node/opentelemetry-instrumentation-fastify/README.md b/plugins/node/opentelemetry-instrumentation-fastify/README.md index 9f230b7b5b..ffaf255868 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/README.md +++ b/plugins/node/opentelemetry-instrumentation-fastify/README.md @@ -74,9 +74,9 @@ This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which i Attributes collected: -| Attribute | Short Description | Notes | -| ------------ | ---------------------------------- | -------------------------- | -| `http.route` | The matched route (path template). | Key: `SEMATTRS_HTTP_ROUTE` | +| Attribute | Short Description | +| ------------ | ---------------------------------- | +| `http.route` | The matched route (path template). | ## Useful links diff --git a/plugins/node/opentelemetry-instrumentation-redis/README.md b/plugins/node/opentelemetry-instrumentation-redis/README.md index e93e4c7873..f345f9ac02 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/README.md +++ b/plugins/node/opentelemetry-instrumentation-redis/README.md @@ -80,13 +80,13 @@ This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which i Attributes collected: -| Attribute | Short Description | Notes | -|------------------------|--------------------------------------------------------------|--------------------------------------| -| `db.connection_string` | URL to Redis server address, of the form `redis://host:port` | Key: `SEMATTRS_DB_CONNECTION_STRING` | -| `db.statement` | Executed Redis statement | Key: `SEMATTRS_DB_STATEMENT` | -| `db.system` | Database identifier; always `redis` | Key: `SEMATTRS_DB_SYSTEM` | -| `net.peer.name` | Hostname or IP of the connected Redis server | Key: `SEMATTRS_NET_PEER_NAME` | -| `net.peer.port` | Port of the connected Redis server | Key: `SEMATTRS_NET_PORT_NAME` | +| Attribute | Short Description | +|------------------------|--------------------------------------------------------------| +| `db.connection_string` | URL to Redis server address, of the form `redis://host:port` | +| `db.statement` | Executed Redis statement | +| `db.system` | Database identifier; always `redis` | +| `net.peer.name` | Hostname or IP of the connected Redis server | +| `net.peer.port` | Port of the connected Redis server | ## Useful links diff --git a/plugins/web/opentelemetry-instrumentation-document-load/README.md b/plugins/web/opentelemetry-instrumentation-document-load/README.md index 4ec62269ae..3d87e40398 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/README.md +++ b/plugins/web/opentelemetry-instrumentation-document-load/README.md @@ -117,10 +117,10 @@ This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which i Attributes collected: -| Attribute | Short Description | Notes | -| ----------------- | ------------------------------------------------------------------------------ | ------------------------------- | -| `http.url` | Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]` | Key: `SEMATTRS_HTTP_URL` | -| `http.user_agent` | Value of the HTTP User-Agent header sent by the client | Key: `SEMATTRS_HTTP_USER_AGENT` | +| Attribute | Short Description | +| ----------------- | ------------------------------------------------------------------------------ | +| `http.url` | Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]` | +| `http.user_agent` | Value of the HTTP User-Agent header sent by the client | ## Useful links From 5f1910b75b45b5d751162fb20841d9ae5f0b59f3 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Wed, 24 Apr 2024 13:14:05 -0400 Subject: [PATCH 04/39] chore(examples/web): use exported strings for attributes (#2129) Use exported strings for Semantic Attributes Refs: #2025 --- examples/web/examples/document-load/index.js | 4 ++-- examples/web/examples/meta/index.js | 4 ++-- examples/web/examples/user-interaction/index.js | 4 ++-- examples/web/package.json | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/web/examples/document-load/index.js b/examples/web/examples/document-load/index.js index 0cb6755088..65db02bba3 100644 --- a/examples/web/examples/document-load/index.js +++ b/examples/web/examples/document-load/index.js @@ -9,11 +9,11 @@ import { B3Propagator } from '@opentelemetry/propagator-b3'; import { CompositePropagator, W3CTraceContextPropagator } from '@opentelemetry/core'; import { registerInstrumentations } from '@opentelemetry/instrumentation'; import { Resource } from '@opentelemetry/resources'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; const provider = new WebTracerProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: 'web-service-dl', + [SEMRESATTRS_SERVICE_NAME]: 'web-service-dl', }), }); diff --git a/examples/web/examples/meta/index.js b/examples/web/examples/meta/index.js index 621779d0dc..8b9cb5ad41 100644 --- a/examples/web/examples/meta/index.js +++ b/examples/web/examples/meta/index.js @@ -6,11 +6,11 @@ import { B3Propagator } from '@opentelemetry/propagator-b3'; import { getWebAutoInstrumentations } from '@opentelemetry/auto-instrumentations-web'; import { registerInstrumentations } from '@opentelemetry/instrumentation'; import { Resource } from '@opentelemetry/resources'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; const providerWithZone = new WebTracerProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: 'web-service-meta', + [SEMRESATTRS_SERVICE_NAME]: 'web-service-meta', }), }); diff --git a/examples/web/examples/user-interaction/index.js b/examples/web/examples/user-interaction/index.js index 34606eb0e9..b75cae65d5 100644 --- a/examples/web/examples/user-interaction/index.js +++ b/examples/web/examples/user-interaction/index.js @@ -7,11 +7,11 @@ import { B3Propagator } from '@opentelemetry/propagator-b3'; import { XMLHttpRequestInstrumentation } from '@opentelemetry/instrumentation-xml-http-request'; import { registerInstrumentations } from '@opentelemetry/instrumentation'; import { Resource } from '@opentelemetry/resources'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; const providerWithZone = new WebTracerProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: 'web-service-ui', + [SEMRESATTRS_SERVICE_NAME]: 'web-service-ui', }), }); diff --git a/examples/web/package.json b/examples/web/package.json index 0bc5691c59..b4be8fa692 100644 --- a/examples/web/package.json +++ b/examples/web/package.json @@ -46,7 +46,7 @@ "@opentelemetry/instrumentation-xml-http-request": "^0.39.1", "@opentelemetry/propagator-b3": "^1.13.0", "@opentelemetry/sdk-trace-web": "^1.13.0", - "@opentelemetry/semantic-conventions": "^1.13.0" + "@opentelemetry/semantic-conventions": "^1.23.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib#readme" } From 77452c1640bca9c10dd62ee47a0a603f6c4b05dd Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Wed, 24 Apr 2024 13:20:16 -0400 Subject: [PATCH 05/39] chore(examples/connect): use exported strings for attributes (#2120) Use exported strings for Semantic Resource Attributes Signed-off-by: maryliag Refs: #2025 --- examples/connect/package.json | 2 +- examples/connect/tracing.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/connect/package.json b/examples/connect/package.json index eb58fc2299..4acf0fcf9a 100644 --- a/examples/connect/package.json +++ b/examples/connect/package.json @@ -45,7 +45,7 @@ "@opentelemetry/instrumentation-http": "^0.25.0", "@opentelemetry/sdk-trace-node": "^0.25.0", "@opentelemetry/resources": "^0.25.0", - "@opentelemetry/semantic-conventions": "^0.25.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "@opentelemetry/sdk-trace-base": "^0.25.0", "axios": "^0.21.1", "cross-env": "^7.0.3", diff --git a/examples/connect/tracing.js b/examples/connect/tracing.js index d711b935d1..7639af2925 100644 --- a/examples/connect/tracing.js +++ b/examples/connect/tracing.js @@ -6,7 +6,7 @@ const { diag, DiagConsoleLogger, DiagLogLevel } = opentelemetry; diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.INFO); const { Resource } = require('@opentelemetry/resources'); -const { ResourceAttributes: SemanticResourceAttributes } = require('@opentelemetry/semantic-conventions'); +const { SEMRESATTRS_SERVICE_NAME } = require('@opentelemetry/semantic-conventions'); const { registerInstrumentations } = require('@opentelemetry/instrumentation'); const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); const { SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base'); @@ -24,7 +24,7 @@ function log() { module.exports = (serviceName) => { const provider = new NodeTracerProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: serviceName, + [SEMRESATTRS_SERVICE_NAME]: serviceName, }), }); const connectInstrumentation = new ConnectInstrumentation(); From 931318cac21ee3707f3735a64ac751566ee37182 Mon Sep 17 00:00:00 2001 From: Jamie Danielson Date: Wed, 24 Apr 2024 19:34:00 -0400 Subject: [PATCH 06/39] refactor(instr-aws-sdk): use exported strings for attributes (#2142) * refactor(instr-aws-sdk): use exported strings for attributes * update SpanAttributes to Attributes * add semantic conventions to readme --- package-lock.json | 4 +- .../src/instrumentation.ts | 11 +- .../test/integrations/lambda-handler.test.ts | 18 +- .../README.md | 48 ++++ .../package.json | 2 +- .../src/aws-sdk.ts | 9 +- .../src/services/dynamodb.ts | 116 ++++---- .../src/services/lambda.ts | 27 +- .../src/services/sns.ts | 22 +- .../src/services/sqs.ts | 48 ++-- .../src/utils.ts | 16 +- .../test/aws-sdk-v2.test.ts | 26 +- .../test/aws-sdk-v3.test.ts | 139 ++++----- .../test/dynamodb.test.ts | 266 +++++++++--------- .../test/lambda.test.ts | 20 +- .../test/sns.test.ts | 65 ++--- .../test/sqs.test.ts | 64 +++-- 17 files changed, 460 insertions(+), 441 deletions(-) diff --git a/package-lock.json b/package-lock.json index d11fd45248..b85ccf58fb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37458,7 +37458,7 @@ "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/propagation-utils": "^0.30.8", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@aws-sdk/client-dynamodb": "3.85.0", @@ -45817,7 +45817,7 @@ "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/propagation-utils": "^0.30.8", "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts index 0b85377d1d..35345739c3 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts @@ -44,8 +44,9 @@ import { AWSXRayPropagator, } from '@opentelemetry/propagator-aws-xray'; import { - SemanticAttributes, - SemanticResourceAttributes, + SEMATTRS_FAAS_EXECUTION, + SEMRESATTRS_CLOUD_ACCOUNT_ID, + SEMRESATTRS_FAAS_ID, } from '@opentelemetry/semantic-conventions'; import { @@ -201,9 +202,9 @@ export class AwsLambdaInstrumentation extends InstrumentationBase { { kind: SpanKind.SERVER, attributes: { - [SemanticAttributes.FAAS_EXECUTION]: context.awsRequestId, - [SemanticResourceAttributes.FAAS_ID]: context.invokedFunctionArn, - [SemanticResourceAttributes.CLOUD_ACCOUNT_ID]: + [SEMATTRS_FAAS_EXECUTION]: context.awsRequestId, + [SEMRESATTRS_FAAS_ID]: context.invokedFunctionArn, + [SEMRESATTRS_CLOUD_ACCOUNT_ID]: AwsLambdaInstrumentation._extractAccountId( context.invokedFunctionArn ), diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/test/integrations/lambda-handler.test.ts b/plugins/node/opentelemetry-instrumentation-aws-lambda/test/integrations/lambda-handler.test.ts index e8f9bea083..2088c4316f 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/test/integrations/lambda-handler.test.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/test/integrations/lambda-handler.test.ts @@ -33,8 +33,9 @@ import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import { Context } from 'aws-lambda'; import * as assert from 'assert'; import { - SemanticAttributes, - SemanticResourceAttributes, + SEMATTRS_EXCEPTION_MESSAGE, + SEMATTRS_FAAS_EXECUTION, + SEMRESATTRS_FAAS_NAME, } from '@opentelemetry/semantic-conventions'; import { Context as OtelContext, @@ -56,7 +57,7 @@ const assertSpanSuccess = (span: ReadableSpan) => { assert.strictEqual(span.kind, SpanKind.SERVER); assert.strictEqual(span.name, 'my_function'); assert.strictEqual( - span.attributes[SemanticAttributes.FAAS_EXECUTION], + span.attributes[SEMATTRS_FAAS_EXECUTION], 'aws_request_id' ); assert.strictEqual(span.attributes['faas.id'], 'my_arn'); @@ -68,7 +69,7 @@ const assertSpanFailure = (span: ReadableSpan) => { assert.strictEqual(span.kind, SpanKind.SERVER); assert.strictEqual(span.name, 'my_function'); assert.strictEqual( - span.attributes[SemanticAttributes.FAAS_EXECUTION], + span.attributes[SEMATTRS_FAAS_EXECUTION], 'aws_request_id' ); assert.strictEqual(span.attributes['faas.id'], 'my_arn'); @@ -76,7 +77,7 @@ const assertSpanFailure = (span: ReadableSpan) => { assert.strictEqual(span.status.message, 'handler error'); assert.strictEqual(span.events.length, 1); assert.strictEqual( - span.events[0].attributes![SemanticAttributes.EXCEPTION_MESSAGE], + span.events[0].attributes![SEMATTRS_EXCEPTION_MESSAGE], 'handler error' ); }; @@ -841,10 +842,7 @@ describe('lambda handler', () => { it('sync - success', async () => { initializeHandler('lambda-test/async.handler', { requestHook: (span, { context }) => { - span.setAttribute( - SemanticResourceAttributes.FAAS_NAME, - context.functionName - ); + span.setAttribute(SEMRESATTRS_FAAS_NAME, context.functionName); }, }); @@ -853,7 +851,7 @@ describe('lambda handler', () => { const [span] = spans; assert.strictEqual(spans.length, 1); assert.strictEqual( - span.attributes[SemanticResourceAttributes.FAAS_NAME], + span.attributes[SEMRESATTRS_FAAS_NAME], ctx.functionName ); assertSpanSuccess(span); diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/README.md b/plugins/node/opentelemetry-instrumentation-aws-sdk/README.md index 2c9ee2ae7c..dc362c6a29 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/README.md +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/README.md @@ -117,6 +117,54 @@ The instrumentation's config `preRequestHook`, `responseHook` and `sqsProcessHoo The `moduleVersionAttributeName` config option is removed. To add the aws-sdk package version to spans, use the `moduleVersion` attribute in hook info for `preRequestHook` and `responseHook` functions. +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | Service | +| --------------------------------------------- | ---------------------------------------------------------------------------------------------- | -------- | +| `http.status_code` | (aws-sdk) HTTP response status code. | | +| `rpc.method` | The name of the (logical) method being called. | | +| `rpc.service` | The full (logical) name of the service being called. | | +| `rpc.system` | A string identifying the remoting system. | | +| `aws.dynamodb.attribute_definitions` | The JSON-serialized value of each item in the `AttributeDefinitions` request field. | dynamodb | +| `aws.dynamodb.consistent_read` | The value of the `ConsistentRead` request parameter. | dynamodb | +| `aws.dynamodb.consumed_capacity` | The JSON-serialized value of each item in the `ConsumedCapacity` response field. | dynamodb | +| `aws.dynamodb.count` | The value of the `Count` response parameter. | dynamodb | +| `aws.dynamodb.exclusive_start_table` | The value of the `ExclusiveStartTableName` request parameter. | dynamodb | +| `aws.dynamodb.global_secondary_index_updates` | The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field. | dynamodb | +| `aws.dynamodb.global_secondary_indexes` | The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field. | dynamodb | +| `aws.dynamodb.index_name` | The value of the `IndexName` request parameter. | dynamodb | +| `aws.dynamodb.item_collection_metrics` | The JSON-serialized value of the `ItemCollectionMetrics` response field. | dynamodb | +| `aws.dynamodb.limit` | The value of the `Limit` request parameter. | dynamodb | +| `aws.dynamodb.local_secondary_indexes` | The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field. | dynamodb | +| `aws.dynamodb.projection` | The value of the `ProjectionExpression` request parameter. | dynamodb | +| `aws.dynamodb.provisioned_read_capacity` | The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter. | dynamodb | +| `aws.dynamodb.provisioned_write_capacity` | The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter. | dynamodb | +| `aws.dynamodb.scan_forward` | The value of the `ScanIndexForward` request parameter. | dynamodb | +| `aws.dynamodb.scanned_count` | The value of the `ScannedCount` response parameter. | dynamodb | +| `aws.dynamodb.segment` | The value of the `Segment` request parameter. | dynamodb | +| `aws.dynamodb.select` | The value of the `Select` request parameter. | dynamodb | +| `aws.dynamodb.table_count` | The number of items in the `TableNames` response parameter. | dynamodb | +| `aws.dynamodb.table_names` | The keys in the `RequestItems` object field. | dynamodb | +| `aws.dynamodb.total_segments` | The value of the `TotalSegments` request parameter. | dynamodb | +| `db.name` | The name of the database being accessed. | dynamodb | +| `db.operation` | The name of the operation being executed. | dynamodb | +| `db.statement` | The database statement being executed. | dynamodb | +| `db.system` | An identifier for the database management system (DBMS) product being used. | dynamodb | +| `faas.execution` | The execution ID of the current function execution. | lambda | +| `faas.invoked_name` | The name of the invoked function. | lambda | +| `faas.invoked_provider` | The cloud provider of the invoked function. | lambda | +| `faas.invoked_region` | The cloud region of the invoked function. | lambda | +| `messaging.destination` | The message destination name. | sns, sqs | +| `messaging.destination_kind` | The kind of message destination. | sns, sqs | +| `messaging.system` | A string identifying the messaging system. | sns, sqs | +| `messaging.operation` | A string identifying the kind of message consumption. | sqs | +| `messaging.message_id` | A value used by the messaging system as an identifier for the message. | sqs | +| `messaging.url` | The connection string. | sqs | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json b/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json index 9925809bb1..8fb6a5620f 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json @@ -47,7 +47,7 @@ "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/propagation-utils": "^0.30.8", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@aws-sdk/client-dynamodb": "3.85.0", diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts index 349d2ff388..b53241b0b5 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts @@ -58,7 +58,7 @@ import { } from './utils'; import { propwrap } from './propwrap'; import { RequestMetadata } from './services/ServiceExtension'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMATTRS_HTTP_STATUS_CODE } from '@opentelemetry/semantic-conventions'; const V3_CLIENT_CONFIG_KEY = Symbol( 'opentelemetry.instrumentation.aws-sdk.client.config' @@ -369,10 +369,7 @@ export class AwsInstrumentation extends InstrumentationBase { const httpStatusCode = response.httpResponse?.statusCode; if (httpStatusCode) { - span.setAttribute( - SemanticAttributes.HTTP_STATUS_CODE, - httpStatusCode - ); + span.setAttribute(SEMATTRS_HTTP_STATUS_CODE, httpStatusCode); } span.end(); }); @@ -526,7 +523,7 @@ export class AwsInstrumentation extends InstrumentationBase { response.output?.$metadata?.httpStatusCode; if (httpStatusCode) { span.setAttribute( - SemanticAttributes.HTTP_STATUS_CODE, + SEMATTRS_HTTP_STATUS_CODE, httpStatusCode ); } diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/dynamodb.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/dynamodb.ts index 9407f32e34..499a5803bd 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/dynamodb.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/dynamodb.ts @@ -14,16 +14,40 @@ * limitations under the License. */ import { + Attributes, DiagLogger, Span, - SpanAttributes, SpanKind, Tracer, } from '@opentelemetry/api'; import { RequestMetadata, ServiceExtension } from './ServiceExtension'; import { - DbSystemValues, - SemanticAttributes, + DBSYSTEMVALUES_DYNAMODB, + SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS, + SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ, + SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY, + SEMATTRS_AWS_DYNAMODB_COUNT, + SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE, + SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES, + SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES, + SEMATTRS_AWS_DYNAMODB_INDEX_NAME, + SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS, + SEMATTRS_AWS_DYNAMODB_LIMIT, + SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES, + SEMATTRS_AWS_DYNAMODB_PROJECTION, + SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY, + SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY, + SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD, + SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT, + SEMATTRS_AWS_DYNAMODB_SEGMENT, + SEMATTRS_AWS_DYNAMODB_SELECT, + SEMATTRS_AWS_DYNAMODB_TABLE_COUNT, + SEMATTRS_AWS_DYNAMODB_TABLE_NAMES, + SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS, + SEMATTRS_DB_NAME, + SEMATTRS_DB_OPERATION, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, } from '@opentelemetry/semantic-conventions'; import { AwsSdkInstrumentationConfig, @@ -46,10 +70,10 @@ export class DynamodbServiceExtension implements ServiceExtension { const isIncoming = false; const operation = normalizedRequest.commandName; - const spanAttributes: SpanAttributes = { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.DYNAMODB, - [SemanticAttributes.DB_NAME]: normalizedRequest.commandInput?.TableName, - [SemanticAttributes.DB_OPERATION]: operation, + const spanAttributes: Attributes = { + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_DYNAMODB, + [SEMATTRS_DB_NAME]: normalizedRequest.commandInput?.TableName, + [SEMATTRS_DB_OPERATION]: operation, }; if (config.dynamoDBStatementSerializer) { @@ -60,7 +84,7 @@ export class DynamodbServiceExtension implements ServiceExtension { ); if (typeof sanitizedStatement === 'string') { - spanAttributes[SemanticAttributes.DB_STATEMENT] = sanitizedStatement; + spanAttributes[SEMATTRS_DB_STATEMENT] = sanitizedStatement; } } catch (err) { diag.error('failed to sanitize DynamoDB statement', err); @@ -72,11 +96,11 @@ export class DynamodbServiceExtension implements ServiceExtension { if (normalizedRequest.commandInput?.TableName) { // Necessary for commands with only 1 table name (example: CreateTable). Attribute is TableName not keys of RequestItems // single table name returned for operations like CreateTable - spanAttributes[SemanticAttributes.AWS_DYNAMODB_TABLE_NAMES] = [ + spanAttributes[SEMATTRS_AWS_DYNAMODB_TABLE_NAMES] = [ normalizedRequest.commandInput.TableName, ]; } else if (normalizedRequest.commandInput?.RequestItems) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_TABLE_NAMES] = Object.keys( + spanAttributes[SEMATTRS_AWS_DYNAMODB_TABLE_NAMES] = Object.keys( normalizedRequest.commandInput.RequestItems ); } @@ -84,13 +108,9 @@ export class DynamodbServiceExtension implements ServiceExtension { if (operation === 'CreateTable' || operation === 'UpdateTable') { // only check for ProvisionedThroughput since ReadCapacityUnits and WriteCapacity units are required attributes if (normalizedRequest.commandInput?.ProvisionedThroughput) { - spanAttributes[ - SemanticAttributes.AWS_DYNAMODB_PROVISIONED_READ_CAPACITY - ] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY] = normalizedRequest.commandInput.ProvisionedThroughput.ReadCapacityUnits; - spanAttributes[ - SemanticAttributes.AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY - ] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY] = normalizedRequest.commandInput.ProvisionedThroughput.WriteCapacityUnits; } } @@ -101,33 +121,31 @@ export class DynamodbServiceExtension implements ServiceExtension { operation === 'Query' ) { if (normalizedRequest.commandInput?.ConsistentRead) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_CONSISTENT_READ] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ] = normalizedRequest.commandInput.ConsistentRead; } } if (operation === 'Query' || operation === 'Scan') { if (normalizedRequest.commandInput?.ProjectionExpression) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_PROJECTION] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_PROJECTION] = normalizedRequest.commandInput.ProjectionExpression; } } if (operation === 'CreateTable') { if (normalizedRequest.commandInput?.GlobalSecondaryIndexes) { - spanAttributes[ - SemanticAttributes.AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES - ] = this.toArray( - normalizedRequest.commandInput.GlobalSecondaryIndexes - ).map((x: { [DictionaryKey: string]: any }) => JSON.stringify(x)); + spanAttributes[SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES] = + this.toArray( + normalizedRequest.commandInput.GlobalSecondaryIndexes + ).map((x: { [DictionaryKey: string]: any }) => JSON.stringify(x)); } if (normalizedRequest.commandInput?.LocalSecondaryIndexes) { - spanAttributes[ - SemanticAttributes.AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES - ] = this.toArray( - normalizedRequest.commandInput.LocalSecondaryIndexes - ).map((x: { [DictionaryKey: string]: any }) => JSON.stringify(x)); + spanAttributes[SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES] = + this.toArray( + normalizedRequest.commandInput.LocalSecondaryIndexes + ).map((x: { [DictionaryKey: string]: any }) => JSON.stringify(x)); } } @@ -137,71 +155,70 @@ export class DynamodbServiceExtension implements ServiceExtension { operation === 'Scan' ) { if (normalizedRequest.commandInput?.Limit) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_LIMIT] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_LIMIT] = normalizedRequest.commandInput.Limit; } } if (operation === 'ListTables') { if (normalizedRequest.commandInput?.ExclusiveStartTableName) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_EXCLUSIVE_START_TABLE] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE] = normalizedRequest.commandInput.ExclusiveStartTableName; } } if (operation === 'Query') { if (normalizedRequest.commandInput?.ScanIndexForward) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_SCAN_FORWARD] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD] = normalizedRequest.commandInput.ScanIndexForward; } if (normalizedRequest.commandInput?.IndexName) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_INDEX_NAME] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_INDEX_NAME] = normalizedRequest.commandInput.IndexName; } if (normalizedRequest.commandInput?.Select) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_SELECT] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_SELECT] = normalizedRequest.commandInput.Select; } } if (operation === 'Scan') { if (normalizedRequest.commandInput?.Segment) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_SEGMENT] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_SEGMENT] = normalizedRequest.commandInput?.Segment; } if (normalizedRequest.commandInput?.TotalSegments) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_TOTAL_SEGMENTS] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS] = normalizedRequest.commandInput?.TotalSegments; } if (normalizedRequest.commandInput?.IndexName) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_INDEX_NAME] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_INDEX_NAME] = normalizedRequest.commandInput.IndexName; } if (normalizedRequest.commandInput?.Select) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_SELECT] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_SELECT] = normalizedRequest.commandInput.Select; } } if (operation === 'UpdateTable') { if (normalizedRequest.commandInput?.AttributeDefinitions) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS] = this.toArray(normalizedRequest.commandInput.AttributeDefinitions).map( (x: { [DictionaryKey: string]: any }) => JSON.stringify(x) ); } if (normalizedRequest.commandInput?.GlobalSecondaryIndexUpdates) { - spanAttributes[ - SemanticAttributes.AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES - ] = this.toArray( - normalizedRequest.commandInput.GlobalSecondaryIndexUpdates - ).map((x: { [DictionaryKey: string]: any }) => JSON.stringify(x)); + spanAttributes[SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES] = + this.toArray( + normalizedRequest.commandInput.GlobalSecondaryIndexUpdates + ).map((x: { [DictionaryKey: string]: any }) => JSON.stringify(x)); } } @@ -221,7 +238,7 @@ export class DynamodbServiceExtension implements ServiceExtension { ) { if (response.data?.ConsumedCapacity) { span.setAttribute( - SemanticAttributes.AWS_DYNAMODB_CONSUMED_CAPACITY, + SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY, toArray(response.data.ConsumedCapacity).map( (x: { [DictionaryKey: string]: any }) => JSON.stringify(x) ) @@ -230,7 +247,7 @@ export class DynamodbServiceExtension implements ServiceExtension { if (response.data?.ItemCollectionMetrics) { span.setAttribute( - SemanticAttributes.AWS_DYNAMODB_ITEM_COLLECTION_METRICS, + SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS, this.toArray(response.data.ItemCollectionMetrics).map( (x: { [DictionaryKey: string]: any }) => JSON.stringify(x) ) @@ -239,21 +256,18 @@ export class DynamodbServiceExtension implements ServiceExtension { if (response.data?.TableNames) { span.setAttribute( - SemanticAttributes.AWS_DYNAMODB_TABLE_COUNT, + SEMATTRS_AWS_DYNAMODB_TABLE_COUNT, response.data?.TableNames.length ); } if (response.data?.Count) { - span.setAttribute( - SemanticAttributes.AWS_DYNAMODB_COUNT, - response.data?.Count - ); + span.setAttribute(SEMATTRS_AWS_DYNAMODB_COUNT, response.data?.Count); } if (response.data?.ScannedCount) { span.setAttribute( - SemanticAttributes.AWS_DYNAMODB_SCANNED_COUNT, + SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT, response.data?.ScannedCount ); } diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/lambda.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/lambda.ts index 3254374966..3970c3c098 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/lambda.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/lambda.ts @@ -13,14 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { Span, SpanKind, Tracer, diag, Attributes } from '@opentelemetry/api'; import { - Span, - SpanKind, - Tracer, - diag, - SpanAttributes, -} from '@opentelemetry/api'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; + SEMATTRS_FAAS_EXECUTION, + SEMATTRS_FAAS_INVOKED_NAME, + SEMATTRS_FAAS_INVOKED_PROVIDER, + SEMATTRS_FAAS_INVOKED_REGION, +} from '@opentelemetry/semantic-conventions'; import { AwsSdkInstrumentationConfig, NormalizedRequest, @@ -40,18 +39,17 @@ export class LambdaServiceExtension implements ServiceExtension { ): RequestMetadata { const functionName = this.extractFunctionName(request.commandInput); - let spanAttributes: SpanAttributes = {}; + let spanAttributes: Attributes = {}; let spanName: string | undefined; switch (request.commandName) { case 'Invoke': spanAttributes = { - [SemanticAttributes.FAAS_INVOKED_NAME]: functionName, - [SemanticAttributes.FAAS_INVOKED_PROVIDER]: 'aws', + [SEMATTRS_FAAS_INVOKED_NAME]: functionName, + [SEMATTRS_FAAS_INVOKED_PROVIDER]: 'aws', }; if (request.region) { - spanAttributes[SemanticAttributes.FAAS_INVOKED_REGION] = - request.region; + spanAttributes[SEMATTRS_FAAS_INVOKED_REGION] = request.region; } spanName = `${functionName} ${LambdaCommands.Invoke}`; break; @@ -87,10 +85,7 @@ export class LambdaServiceExtension implements ServiceExtension { switch (response.request.commandName) { case LambdaCommands.Invoke: { - span.setAttribute( - SemanticAttributes.FAAS_EXECUTION, - response.requestId - ); + span.setAttribute(SEMATTRS_FAAS_EXECUTION, response.requestId); } break; } diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/sns.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/sns.ts index f7416d0070..e825cdd309 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/sns.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/sns.ts @@ -13,10 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Span, Tracer, SpanKind, SpanAttributes } from '@opentelemetry/api'; +import { Span, Tracer, SpanKind, Attributes } from '@opentelemetry/api'; import { - MessagingDestinationKindValues, - SemanticAttributes, + MESSAGINGDESTINATIONKINDVALUES_TOPIC, + SEMATTRS_MESSAGING_DESTINATION, + SEMATTRS_MESSAGING_DESTINATION_KIND, + SEMATTRS_MESSAGING_SYSTEM, } from '@opentelemetry/semantic-conventions'; import { NormalizedRequest, @@ -33,26 +35,26 @@ export class SnsServiceExtension implements ServiceExtension { ): RequestMetadata { let spanKind: SpanKind = SpanKind.CLIENT; let spanName = `SNS ${request.commandName}`; - const spanAttributes: SpanAttributes = { - [SemanticAttributes.MESSAGING_SYSTEM]: 'aws.sns', + const spanAttributes: Attributes = { + [SEMATTRS_MESSAGING_SYSTEM]: 'aws.sns', }; if (request.commandName === 'Publish') { spanKind = SpanKind.PRODUCER; - spanAttributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] = - MessagingDestinationKindValues.TOPIC; + spanAttributes[SEMATTRS_MESSAGING_DESTINATION_KIND] = + MESSAGINGDESTINATIONKINDVALUES_TOPIC; const { TopicArn, TargetArn, PhoneNumber } = request.commandInput; - spanAttributes[SemanticAttributes.MESSAGING_DESTINATION] = + spanAttributes[SEMATTRS_MESSAGING_DESTINATION] = this.extractDestinationName(TopicArn, TargetArn, PhoneNumber); - // ToDO: Use SpanAttributes.MESSAGING_DESTINATION_NAME when implemented + // ToDO: Use SEMATTRS_MESSAGING_DESTINATION_NAME when implemented spanAttributes['messaging.destination.name'] = TopicArn || TargetArn || PhoneNumber || 'unknown'; spanName = `${ PhoneNumber ? 'phone_number' - : spanAttributes[SemanticAttributes.MESSAGING_DESTINATION] + : spanAttributes[SEMATTRS_MESSAGING_DESTINATION] } send`; } diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/sqs.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/sqs.ts index d5052dfcae..07cedaa25d 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/sqs.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/sqs.ts @@ -21,7 +21,7 @@ import { trace, context, ROOT_CONTEXT, - SpanAttributes, + Attributes, } from '@opentelemetry/api'; import { pubsubPropagation } from '@opentelemetry/propagation-utils'; import { RequestMetadata, ServiceExtension } from './ServiceExtension'; @@ -32,9 +32,15 @@ import { NormalizedResponse, } from '../types'; import { - MessagingDestinationKindValues, - MessagingOperationValues, - SemanticAttributes, + MESSAGINGDESTINATIONKINDVALUES_QUEUE, + MESSAGINGOPERATIONVALUES_PROCESS, + MESSAGINGOPERATIONVALUES_RECEIVE, + SEMATTRS_MESSAGING_DESTINATION, + SEMATTRS_MESSAGING_DESTINATION_KIND, + SEMATTRS_MESSAGING_MESSAGE_ID, + SEMATTRS_MESSAGING_OPERATION, + SEMATTRS_MESSAGING_SYSTEM, + SEMATTRS_MESSAGING_URL, } from '@opentelemetry/semantic-conventions'; import { contextGetter, @@ -53,12 +59,12 @@ export class SqsServiceExtension implements ServiceExtension { let spanKind: SpanKind = SpanKind.CLIENT; let spanName: string | undefined; - const spanAttributes: SpanAttributes = { - [SemanticAttributes.MESSAGING_SYSTEM]: 'aws.sqs', - [SemanticAttributes.MESSAGING_DESTINATION_KIND]: - MessagingDestinationKindValues.QUEUE, - [SemanticAttributes.MESSAGING_DESTINATION]: queueName, - [SemanticAttributes.MESSAGING_URL]: queueUrl, + const spanAttributes: Attributes = { + [SEMATTRS_MESSAGING_SYSTEM]: 'aws.sqs', + [SEMATTRS_MESSAGING_DESTINATION_KIND]: + MESSAGINGDESTINATIONKINDVALUES_QUEUE, + [SEMATTRS_MESSAGING_DESTINATION]: queueName, + [SEMATTRS_MESSAGING_URL]: queueUrl, }; let isIncoming = false; @@ -69,8 +75,8 @@ export class SqsServiceExtension implements ServiceExtension { isIncoming = true; spanKind = SpanKind.CONSUMER; spanName = `${queueName} receive`; - spanAttributes[SemanticAttributes.MESSAGING_OPERATION] = - MessagingOperationValues.RECEIVE; + spanAttributes[SEMATTRS_MESSAGING_OPERATION] = + MESSAGINGOPERATIONVALUES_RECEIVE; request.commandInput.MessageAttributeNames = addPropagationFieldsToAttributeNames( @@ -134,7 +140,7 @@ export class SqsServiceExtension implements ServiceExtension { switch (response.request.commandName) { case 'SendMessage': span.setAttribute( - SemanticAttributes.MESSAGING_MESSAGE_ID, + SEMATTRS_MESSAGING_MESSAGE_ID, response?.data?.MessageId ); break; @@ -164,14 +170,14 @@ export class SqsServiceExtension implements ServiceExtension { contextGetter ), attributes: { - [SemanticAttributes.MESSAGING_SYSTEM]: 'aws.sqs', - [SemanticAttributes.MESSAGING_DESTINATION]: queueName, - [SemanticAttributes.MESSAGING_DESTINATION_KIND]: - MessagingDestinationKindValues.QUEUE, - [SemanticAttributes.MESSAGING_MESSAGE_ID]: message.MessageId, - [SemanticAttributes.MESSAGING_URL]: queueUrl, - [SemanticAttributes.MESSAGING_OPERATION]: - MessagingOperationValues.PROCESS, + [SEMATTRS_MESSAGING_SYSTEM]: 'aws.sqs', + [SEMATTRS_MESSAGING_DESTINATION]: queueName, + [SEMATTRS_MESSAGING_DESTINATION_KIND]: + MESSAGINGDESTINATIONKINDVALUES_QUEUE, + [SEMATTRS_MESSAGING_MESSAGE_ID]: message.MessageId, + [SEMATTRS_MESSAGING_URL]: queueUrl, + [SEMATTRS_MESSAGING_OPERATION]: + MESSAGINGOPERATIONVALUES_PROCESS, }, }), processHook: (span: Span, message: SQS.Message) => diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/utils.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/utils.ts index df8cbc3e88..e3d0db6bdb 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/utils.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/utils.ts @@ -14,8 +14,12 @@ * limitations under the License. */ import { NormalizedRequest } from './types'; -import { Context, SpanAttributes, context } from '@opentelemetry/api'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { Attributes, Context, context } from '@opentelemetry/api'; +import { + SEMATTRS_RPC_METHOD, + SEMATTRS_RPC_SERVICE, + SEMATTRS_RPC_SYSTEM, +} from '@opentelemetry/semantic-conventions'; import { AttributeNames } from './enums'; const toPascalCase = (str: string): string => @@ -60,11 +64,11 @@ export const normalizeV3Request = ( export const extractAttributesFromNormalizedRequest = ( normalizedRequest: NormalizedRequest -): SpanAttributes => { +): Attributes => { return { - [SemanticAttributes.RPC_SYSTEM]: 'aws-api', - [SemanticAttributes.RPC_METHOD]: normalizedRequest.commandName, - [SemanticAttributes.RPC_SERVICE]: normalizedRequest.serviceName, + [SEMATTRS_RPC_SYSTEM]: 'aws-api', + [SEMATTRS_RPC_METHOD]: normalizedRequest.commandName, + [SEMATTRS_RPC_SERVICE]: normalizedRequest.serviceName, [AttributeNames.AWS_REGION]: normalizedRequest.region, }; }; diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/aws-sdk-v2.test.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/aws-sdk-v2.test.ts index bf11de2060..545fe09bd0 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/aws-sdk-v2.test.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/aws-sdk-v2.test.ts @@ -32,7 +32,7 @@ import { SpanStatusCode, Span, SpanKind } from '@opentelemetry/api'; import { AttributeNames } from '../src/enums'; import { mockV2AwsSend } from './testing-utils'; import { expect } from 'expect'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMATTRS_HTTP_STATUS_CODE } from '@opentelemetry/semantic-conventions'; import { AWSError } from 'aws-sdk'; import { HttpResponse } from 'aws-sdk/lib/http_response'; @@ -131,9 +131,9 @@ describe('instrumentation-aws-sdk-v2', () => { expect(spanCreateBucket.attributes[AttributeNames.AWS_REGION]).toBe( 'us-east-1' ); - expect( - spanCreateBucket.attributes[SemanticAttributes.HTTP_STATUS_CODE] - ).toBe(200); + expect(spanCreateBucket.attributes[SEMATTRS_HTTP_STATUS_CODE]).toBe( + 200 + ); expect(spanCreateBucket.name).toBe('S3.CreateBucket'); expect(spanCreateBucket.kind).toEqual(SpanKind.CLIENT); @@ -159,9 +159,7 @@ describe('instrumentation-aws-sdk-v2', () => { 'us-east-1' ); expect(spanPutObject.name).toBe('S3.PutObject'); - expect( - spanPutObject.attributes[SemanticAttributes.HTTP_STATUS_CODE] - ).toBe(200); + expect(spanPutObject.attributes[SEMATTRS_HTTP_STATUS_CODE]).toBe(200); }); it('adds proper number of spans with correct attributes if both, promise and callback were used', async () => { @@ -210,9 +208,7 @@ describe('instrumentation-aws-sdk-v2', () => { expect(spanPutObjectCb.attributes[AttributeNames.AWS_REGION]).toBe( 'us-east-1' ); - expect( - spanPutObjectCb.attributes[SemanticAttributes.HTTP_STATUS_CODE] - ).toBe(200); + expect(spanPutObjectCb.attributes[SEMATTRS_HTTP_STATUS_CODE]).toBe(200); }); it('adds proper number of spans with correct attributes if only promise was used', async () => { @@ -248,9 +244,7 @@ describe('instrumentation-aws-sdk-v2', () => { expect(spanPutObjectCb.attributes[AttributeNames.AWS_REGION]).toBe( 'us-east-1' ); - expect( - spanPutObjectCb.attributes[SemanticAttributes.HTTP_STATUS_CODE] - ).toBe(200); + expect(spanPutObjectCb.attributes[SEMATTRS_HTTP_STATUS_CODE]).toBe(200); }); it('should create span if no callback is supplied', done => { @@ -304,9 +298,9 @@ describe('instrumentation-aws-sdk-v2', () => { }) ); - expect( - spanCreateBucket.attributes[SemanticAttributes.HTTP_STATUS_CODE] - ).toBe(400); + expect(spanCreateBucket.attributes[SEMATTRS_HTTP_STATUS_CODE]).toBe( + 400 + ); }); }); }); diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/aws-sdk-v3.test.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/aws-sdk-v3.test.ts index 3003da3051..8dee305175 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/aws-sdk-v3.test.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/aws-sdk-v3.test.ts @@ -42,9 +42,18 @@ import 'mocha'; import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; import { context, SpanStatusCode, trace, Span } from '@opentelemetry/api'; import { - MessagingDestinationKindValues, - MessagingOperationValues, - SemanticAttributes, + MESSAGINGDESTINATIONKINDVALUES_QUEUE, + MESSAGINGOPERATIONVALUES_RECEIVE, + SEMATTRS_HTTP_STATUS_CODE, + SEMATTRS_MESSAGING_DESTINATION, + SEMATTRS_MESSAGING_DESTINATION_KIND, + SEMATTRS_MESSAGING_MESSAGE_ID, + SEMATTRS_MESSAGING_OPERATION, + SEMATTRS_MESSAGING_SYSTEM, + SEMATTRS_MESSAGING_URL, + SEMATTRS_RPC_METHOD, + SEMATTRS_RPC_SERVICE, + SEMATTRS_RPC_SYSTEM, } from '@opentelemetry/semantic-conventions'; import { AttributeNames } from '../src/enums'; import { expect } from 'expect'; @@ -72,15 +81,13 @@ describe('instrumentation-aws-sdk-v3', () => { await s3Client.putObject(params); expect(getTestSpans().length).toBe(1); const [span] = getTestSpans(); - expect(span.attributes[SemanticAttributes.RPC_SYSTEM]).toEqual('aws-api'); - expect(span.attributes[SemanticAttributes.RPC_METHOD]).toEqual( - 'PutObject' - ); - expect(span.attributes[SemanticAttributes.RPC_SERVICE]).toEqual('S3'); + expect(span.attributes[SEMATTRS_RPC_SYSTEM]).toEqual('aws-api'); + expect(span.attributes[SEMATTRS_RPC_METHOD]).toEqual('PutObject'); + expect(span.attributes[SEMATTRS_RPC_SERVICE]).toEqual('S3'); expect(span.attributes[AttributeNames.AWS_REGION]).toEqual(region); expect(span.name).toEqual('S3.PutObject'); expect(span.kind).toEqual(SpanKind.CLIENT); - expect(span.attributes[SemanticAttributes.HTTP_STATUS_CODE]).toEqual(200); + expect(span.attributes[SEMATTRS_HTTP_STATUS_CODE]).toEqual(200); }); it('callback interface', done => { @@ -98,18 +105,12 @@ describe('instrumentation-aws-sdk-v3', () => { s3Client.putObject(params, (err: any, data?: PutObjectCommandOutput) => { expect(getTestSpans().length).toBe(1); const [span] = getTestSpans(); - expect(span.attributes[SemanticAttributes.RPC_SYSTEM]).toEqual( - 'aws-api' - ); - expect(span.attributes[SemanticAttributes.RPC_METHOD]).toEqual( - 'PutObject' - ); - expect(span.attributes[SemanticAttributes.RPC_SERVICE]).toEqual('S3'); + expect(span.attributes[SEMATTRS_RPC_SYSTEM]).toEqual('aws-api'); + expect(span.attributes[SEMATTRS_RPC_METHOD]).toEqual('PutObject'); + expect(span.attributes[SEMATTRS_RPC_SERVICE]).toEqual('S3'); expect(span.attributes[AttributeNames.AWS_REGION]).toEqual(region); expect(span.name).toEqual('S3.PutObject'); - expect(span.attributes[SemanticAttributes.HTTP_STATUS_CODE]).toEqual( - 200 - ); + expect(span.attributes[SEMATTRS_HTTP_STATUS_CODE]).toEqual(200); done(); }); }); @@ -130,14 +131,12 @@ describe('instrumentation-aws-sdk-v3', () => { await client.send(new PutObjectCommand(params)); expect(getTestSpans().length).toBe(1); const [span] = getTestSpans(); - expect(span.attributes[SemanticAttributes.RPC_SYSTEM]).toEqual('aws-api'); - expect(span.attributes[SemanticAttributes.RPC_METHOD]).toEqual( - 'PutObject' - ); - expect(span.attributes[SemanticAttributes.RPC_SERVICE]).toEqual('S3'); + expect(span.attributes[SEMATTRS_RPC_SYSTEM]).toEqual('aws-api'); + expect(span.attributes[SEMATTRS_RPC_METHOD]).toEqual('PutObject'); + expect(span.attributes[SEMATTRS_RPC_SERVICE]).toEqual('S3'); expect(span.attributes[AttributeNames.AWS_REGION]).toEqual(region); expect(span.name).toEqual('S3.PutObject'); - expect(span.attributes[SemanticAttributes.HTTP_STATUS_CODE]).toEqual(200); + expect(span.attributes[SEMATTRS_HTTP_STATUS_CODE]).toEqual(200); }); it('aws error', async () => { @@ -165,13 +164,9 @@ describe('instrumentation-aws-sdk-v3', () => { expect(span.events.length).toBe(1); expect(span.events[0].name).toEqual('exception'); - expect(span.attributes[SemanticAttributes.RPC_SYSTEM]).toEqual( - 'aws-api' - ); - expect(span.attributes[SemanticAttributes.RPC_METHOD]).toEqual( - 'PutObject' - ); - expect(span.attributes[SemanticAttributes.RPC_SERVICE]).toEqual('S3'); + expect(span.attributes[SEMATTRS_RPC_SYSTEM]).toEqual('aws-api'); + expect(span.attributes[SEMATTRS_RPC_METHOD]).toEqual('PutObject'); + expect(span.attributes[SEMATTRS_RPC_SERVICE]).toEqual('S3'); expect(span.attributes[AttributeNames.AWS_REGION]).toEqual(region); expect(span.attributes[AttributeNames.AWS_REQUEST_ID]).toEqual( 'MS95GTS7KXQ34X2S' @@ -309,34 +304,26 @@ describe('instrumentation-aws-sdk-v3', () => { const [span] = getTestSpans(); // make sure we have the general aws attributes: - expect(span.attributes[SemanticAttributes.RPC_SYSTEM]).toEqual( - 'aws-api' - ); - expect(span.attributes[SemanticAttributes.RPC_METHOD]).toEqual( - 'SendMessage' - ); - expect(span.attributes[SemanticAttributes.RPC_SERVICE]).toEqual('SQS'); + expect(span.attributes[SEMATTRS_RPC_SYSTEM]).toEqual('aws-api'); + expect(span.attributes[SEMATTRS_RPC_METHOD]).toEqual('SendMessage'); + expect(span.attributes[SEMATTRS_RPC_SERVICE]).toEqual('SQS'); expect(span.attributes[AttributeNames.AWS_REGION]).toEqual(region); // custom messaging attributes - expect(span.attributes[SemanticAttributes.MESSAGING_SYSTEM]).toEqual( - 'aws.sqs' + expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual('aws.sqs'); + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND]).toEqual( + MESSAGINGDESTINATIONKINDVALUES_QUEUE ); - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.QUEUE); - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual('otel-demo-aws-sdk'); - expect(span.attributes[SemanticAttributes.MESSAGING_URL]).toEqual( + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + 'otel-demo-aws-sdk' + ); + expect(span.attributes[SEMATTRS_MESSAGING_URL]).toEqual( params.QueueUrl ); - expect( - span.attributes[SemanticAttributes.MESSAGING_MESSAGE_ID] - ).toEqual(response.MessageId); - expect(span.attributes[SemanticAttributes.HTTP_STATUS_CODE]).toEqual( - 200 + expect(span.attributes[SEMATTRS_MESSAGING_MESSAGE_ID]).toEqual( + response.MessageId ); + expect(span.attributes[SEMATTRS_HTTP_STATUS_CODE]).toEqual(200); }); it('sqs send message batch attributes', async () => { @@ -375,31 +362,25 @@ describe('instrumentation-aws-sdk-v3', () => { const [span] = getTestSpans(); // make sure we have the general aws attributes: - expect(span.attributes[SemanticAttributes.RPC_SYSTEM]).toEqual( - 'aws-api' - ); - expect(span.attributes[SemanticAttributes.RPC_METHOD]).toEqual( + expect(span.attributes[SEMATTRS_RPC_SYSTEM]).toEqual('aws-api'); + expect(span.attributes[SEMATTRS_RPC_METHOD]).toEqual( 'SendMessageBatch' ); - expect(span.attributes[SemanticAttributes.RPC_SERVICE]).toEqual('SQS'); + expect(span.attributes[SEMATTRS_RPC_SERVICE]).toEqual('SQS'); expect(span.attributes[AttributeNames.AWS_REGION]).toEqual(region); // messaging semantic attributes - expect(span.attributes[SemanticAttributes.MESSAGING_SYSTEM]).toEqual( - 'aws.sqs' + expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual('aws.sqs'); + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND]).toEqual( + MESSAGINGDESTINATIONKINDVALUES_QUEUE ); - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.QUEUE); - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual('otel-demo-aws-sdk'); - expect(span.attributes[SemanticAttributes.MESSAGING_URL]).toEqual( - params.QueueUrl + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + 'otel-demo-aws-sdk' ); - expect(span.attributes[SemanticAttributes.HTTP_STATUS_CODE]).toEqual( - 200 + expect(span.attributes[SEMATTRS_MESSAGING_URL]).toEqual( + params.QueueUrl ); + expect(span.attributes[SEMATTRS_HTTP_STATUS_CODE]).toEqual(200); }); it('sqs receive add messaging attributes', done => { @@ -428,19 +409,13 @@ describe('instrumentation-aws-sdk-v3', () => { const [span] = getTestSpans(); // make sure we have the general aws attributes: - expect(span.attributes[SemanticAttributes.RPC_SYSTEM]).toEqual( - 'aws-api' - ); - expect(span.attributes[SemanticAttributes.RPC_METHOD]).toEqual( + expect(span.attributes[SEMATTRS_RPC_SYSTEM]).toEqual('aws-api'); + expect(span.attributes[SEMATTRS_RPC_METHOD]).toEqual( 'ReceiveMessage' ); - expect(span.attributes[SemanticAttributes.RPC_SERVICE]).toEqual( - 'SQS' - ); + expect(span.attributes[SEMATTRS_RPC_SERVICE]).toEqual('SQS'); expect(span.attributes[AttributeNames.AWS_REGION]).toEqual(region); - expect(span.attributes[SemanticAttributes.HTTP_STATUS_CODE]).toEqual( - 200 - ); + expect(span.attributes[SEMATTRS_HTTP_STATUS_CODE]).toEqual(200); done(); }); }); @@ -474,8 +449,8 @@ describe('instrumentation-aws-sdk-v3', () => { expect(receiveCallbackSpan).toBeDefined(); const attributes = (receiveCallbackSpan as unknown as ReadableSpan) .attributes; - expect(attributes[SemanticAttributes.MESSAGING_OPERATION]).toMatch( - MessagingOperationValues.RECEIVE + expect(attributes[SEMATTRS_MESSAGING_OPERATION]).toMatch( + MESSAGINGOPERATIONVALUES_RECEIVE ); done(); }); diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/dynamodb.test.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/dynamodb.test.ts index ea4317c63d..de34fd8a84 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/dynamodb.test.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/dynamodb.test.ts @@ -30,8 +30,32 @@ import { AWSError } from 'aws-sdk'; import { mockV2AwsSend } from './testing-utils'; import { - DbSystemValues, - SemanticAttributes, + DBSYSTEMVALUES_DYNAMODB, + SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS, + SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ, + SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY, + SEMATTRS_AWS_DYNAMODB_COUNT, + SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE, + SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES, + SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES, + SEMATTRS_AWS_DYNAMODB_INDEX_NAME, + SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS, + SEMATTRS_AWS_DYNAMODB_LIMIT, + SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES, + SEMATTRS_AWS_DYNAMODB_PROJECTION, + SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY, + SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY, + SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD, + SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT, + SEMATTRS_AWS_DYNAMODB_SEGMENT, + SEMATTRS_AWS_DYNAMODB_SELECT, + SEMATTRS_AWS_DYNAMODB_TABLE_COUNT, + SEMATTRS_AWS_DYNAMODB_TABLE_NAMES, + SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS, + SEMATTRS_DB_NAME, + SEMATTRS_DB_OPERATION, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, } from '@opentelemetry/semantic-conventions'; import { expect } from 'expect'; import type { ConsumedCapacity as ConsumedCapacityV2 } from 'aws-sdk/clients/dynamodb'; @@ -90,33 +114,27 @@ describe('DynamoDB', () => { const spans = getTestSpans(); expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( - DbSystemValues.DYNAMODB + expect(attrs[SEMATTRS_DB_SYSTEM]).toStrictEqual( + DBSYSTEMVALUES_DYNAMODB ); - expect(attrs[SemanticAttributes.DB_NAME]).toStrictEqual('test-table'); - expect(attrs[SemanticAttributes.DB_OPERATION]).toStrictEqual('Query'); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_SCAN_FORWARD] - ).toStrictEqual(true); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_CONSISTENT_READ] - ).toStrictEqual(true); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_INDEX_NAME] - ).toStrictEqual('name_to_group'); - expect(attrs[SemanticAttributes.AWS_DYNAMODB_SELECT]).toStrictEqual( - 'ALL_ATTRIBUTES' + expect(attrs[SEMATTRS_DB_NAME]).toStrictEqual('test-table'); + expect(attrs[SEMATTRS_DB_OPERATION]).toStrictEqual('Query'); + expect(attrs[SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD]).toStrictEqual(true); + expect(attrs[SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ]).toStrictEqual( + true ); - expect(attrs[SemanticAttributes.AWS_DYNAMODB_LIMIT]).toStrictEqual( - 10 + expect(attrs[SEMATTRS_AWS_DYNAMODB_INDEX_NAME]).toStrictEqual( + 'name_to_group' ); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_TABLE_NAMES] - ).toStrictEqual(['test-table']); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_PROJECTION] - ).toStrictEqual('id'); - expect(attrs).not.toHaveProperty(SemanticAttributes.DB_STATEMENT); + expect(attrs[SEMATTRS_AWS_DYNAMODB_SELECT]).toStrictEqual( + 'ALL_ATTRIBUTES' + ); + expect(attrs[SEMATTRS_AWS_DYNAMODB_LIMIT]).toStrictEqual(10); + expect(attrs[SEMATTRS_AWS_DYNAMODB_TABLE_NAMES]).toStrictEqual([ + 'test-table', + ]); + expect(attrs[SEMATTRS_AWS_DYNAMODB_PROJECTION]).toStrictEqual('id'); + expect(attrs).not.toHaveProperty(SEMATTRS_DB_STATEMENT); expect(err).toBeFalsy(); done(); } @@ -157,39 +175,29 @@ describe('DynamoDB', () => { const spans = getTestSpans(); expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( - DbSystemValues.DYNAMODB + expect(attrs[SEMATTRS_DB_SYSTEM]).toStrictEqual( + DBSYSTEMVALUES_DYNAMODB ); - expect(attrs[SemanticAttributes.DB_NAME]).toStrictEqual('test-table'); - expect(attrs[SemanticAttributes.DB_OPERATION]).toStrictEqual('Scan'); - expect(attrs[SemanticAttributes.AWS_DYNAMODB_SEGMENT]).toStrictEqual( - 10 + expect(attrs[SEMATTRS_DB_NAME]).toStrictEqual('test-table'); + expect(attrs[SEMATTRS_DB_OPERATION]).toStrictEqual('Scan'); + expect(attrs[SEMATTRS_AWS_DYNAMODB_SEGMENT]).toStrictEqual(10); + expect(attrs[SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS]).toStrictEqual( + 100 ); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_TOTAL_SEGMENTS] - ).toStrictEqual(100); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_INDEX_NAME] - ).toStrictEqual('index_name'); - expect(attrs[SemanticAttributes.AWS_DYNAMODB_SELECT]).toStrictEqual( - 'ALL_ATTRIBUTES' - ); - expect(attrs[SemanticAttributes.AWS_DYNAMODB_COUNT]).toStrictEqual( - 10 + expect(attrs[SEMATTRS_AWS_DYNAMODB_INDEX_NAME]).toStrictEqual( + 'index_name' ); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_SCANNED_COUNT] - ).toStrictEqual(50); - expect(attrs[SemanticAttributes.AWS_DYNAMODB_LIMIT]).toStrictEqual( - 10 + expect(attrs[SEMATTRS_AWS_DYNAMODB_SELECT]).toStrictEqual( + 'ALL_ATTRIBUTES' ); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_TABLE_NAMES] - ).toStrictEqual(['test-table']); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_PROJECTION] - ).toStrictEqual('id'); - expect(attrs).not.toHaveProperty(SemanticAttributes.DB_STATEMENT); + expect(attrs[SEMATTRS_AWS_DYNAMODB_COUNT]).toStrictEqual(10); + expect(attrs[SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT]).toStrictEqual(50); + expect(attrs[SEMATTRS_AWS_DYNAMODB_LIMIT]).toStrictEqual(10); + expect(attrs[SEMATTRS_AWS_DYNAMODB_TABLE_NAMES]).toStrictEqual([ + 'test-table', + ]); + expect(attrs[SEMATTRS_AWS_DYNAMODB_PROJECTION]).toStrictEqual('id'); + expect(attrs).not.toHaveProperty(SEMATTRS_DB_STATEMENT); expect(err).toBeFalsy(); done(); } @@ -226,16 +234,16 @@ describe('DynamoDB', () => { const spans = getTestSpans(); expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( - DbSystemValues.DYNAMODB + expect(attrs[SEMATTRS_DB_SYSTEM]).toStrictEqual( + DBSYSTEMVALUES_DYNAMODB ); expect( - attrs[SemanticAttributes.AWS_DYNAMODB_ITEM_COLLECTION_METRICS] + attrs[SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS] ).toStrictEqual([ JSON.stringify({ ItemCollectionKey: [], SizeEstimateRangeGB: [0] }), ]); - expect(attrs).not.toHaveProperty(SemanticAttributes.DB_STATEMENT); + expect(attrs).not.toHaveProperty(SEMATTRS_DB_STATEMENT); expect(err).toBeFalsy(); done(); } @@ -321,29 +329,29 @@ describe('DynamoDB', () => { const spans = getTestSpans(); expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( - DbSystemValues.DYNAMODB + expect(attrs[SEMATTRS_DB_SYSTEM]).toStrictEqual( + DBSYSTEMVALUES_DYNAMODB ); expect( - attrs[SemanticAttributes.AWS_DYNAMODB_ITEM_COLLECTION_METRICS] + attrs[SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS] ).toStrictEqual([ JSON.stringify({ ItemCollectionKey: [], SizeEstimateRangeGB: [0] }), ]); expect( - attrs[SemanticAttributes.AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES] + attrs[SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES] ).toStrictEqual([JSON.stringify(globalSecondaryIndexMockData)]); expect( - attrs[SemanticAttributes.AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES] + attrs[SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES] ).toStrictEqual([JSON.stringify(localSecondaryIndexMockData)]); expect( - attrs[SemanticAttributes.AWS_DYNAMODB_PROVISIONED_READ_CAPACITY] + attrs[SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY] ).toStrictEqual(20); expect( - attrs[SemanticAttributes.AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY] + attrs[SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY] ).toStrictEqual(30); - expect(attrs).not.toHaveProperty(SemanticAttributes.DB_STATEMENT); + expect(attrs).not.toHaveProperty(SEMATTRS_DB_STATEMENT); expect(err).toBeFalsy(); done(); } @@ -394,14 +402,12 @@ describe('DynamoDB', () => { const spans = getTestSpans(); expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( - DbSystemValues.DYNAMODB + expect(attrs[SEMATTRS_DB_SYSTEM]).toStrictEqual( + DBSYSTEMVALUES_DYNAMODB ); expect( - attrs[ - SemanticAttributes.AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES - ] + attrs[SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES] ).toStrictEqual([ JSON.stringify({ Update: { @@ -414,7 +420,7 @@ describe('DynamoDB', () => { }), ]); expect( - attrs[SemanticAttributes.AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS] + attrs[SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS] ).toStrictEqual([ JSON.stringify({ AttributeName: 'test_attr', @@ -422,12 +428,12 @@ describe('DynamoDB', () => { }), ]); expect( - attrs[SemanticAttributes.AWS_DYNAMODB_PROVISIONED_READ_CAPACITY] + attrs[SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY] ).toStrictEqual(10); expect( - attrs[SemanticAttributes.AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY] + attrs[SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY] ).toStrictEqual(15); - expect(attrs).not.toHaveProperty(SemanticAttributes.DB_STATEMENT); + expect(attrs).not.toHaveProperty(SEMATTRS_DB_STATEMENT); expect(err).toBeFalsy(); done(); } @@ -455,21 +461,17 @@ describe('DynamoDB', () => { const spans = getTestSpans(); expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( - DbSystemValues.DYNAMODB + expect(attrs[SEMATTRS_DB_SYSTEM]).toStrictEqual( + DBSYSTEMVALUES_DYNAMODB ); expect( - attrs[SemanticAttributes.AWS_DYNAMODB_EXCLUSIVE_START_TABLE] + attrs[SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE] ).toStrictEqual('start_table'); - expect(attrs[SemanticAttributes.AWS_DYNAMODB_LIMIT]).toStrictEqual( - 10 - ); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_TABLE_COUNT] - ).toStrictEqual(3); + expect(attrs[SEMATTRS_AWS_DYNAMODB_LIMIT]).toStrictEqual(10); + expect(attrs[SEMATTRS_AWS_DYNAMODB_TABLE_COUNT]).toStrictEqual(3); - expect(attrs).not.toHaveProperty(SemanticAttributes.DB_STATEMENT); + expect(attrs).not.toHaveProperty(SEMATTRS_DB_STATEMENT); expect(err).toBeFalsy(); done(); } @@ -511,19 +513,17 @@ describe('DynamoDB', () => { const spans = getTestSpans(); expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( - DbSystemValues.DYNAMODB + expect(attrs[SEMATTRS_DB_SYSTEM]).toStrictEqual( + DBSYSTEMVALUES_DYNAMODB ); - expect(attrs[SemanticAttributes.DB_OPERATION]).toStrictEqual( - 'BatchGetItem' - ); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_TABLE_NAMES] - ).toStrictEqual(['test-table']); + expect(attrs[SEMATTRS_DB_OPERATION]).toStrictEqual('BatchGetItem'); + expect(attrs[SEMATTRS_AWS_DYNAMODB_TABLE_NAMES]).toStrictEqual([ + 'test-table', + ]); expect( - attrs[SemanticAttributes.AWS_DYNAMODB_CONSUMED_CAPACITY] + attrs[SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY] ).toBeUndefined(); - expect(attrs).not.toHaveProperty(SemanticAttributes.DB_STATEMENT); + expect(attrs).not.toHaveProperty(SEMATTRS_DB_STATEMENT); expect(err).toBeFalsy(); done(); } @@ -556,23 +556,19 @@ describe('DynamoDB', () => { const spans = getTestSpans(); expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( - DbSystemValues.DYNAMODB - ); - expect(attrs[SemanticAttributes.DB_OPERATION]).toStrictEqual( - 'BatchGetItem' + expect(attrs[SEMATTRS_DB_SYSTEM]).toStrictEqual( + DBSYSTEMVALUES_DYNAMODB ); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_TABLE_NAMES] - ).toStrictEqual(['test-table']); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_CONSUMED_CAPACITY] - ).toStrictEqual( + expect(attrs[SEMATTRS_DB_OPERATION]).toStrictEqual('BatchGetItem'); + expect(attrs[SEMATTRS_AWS_DYNAMODB_TABLE_NAMES]).toStrictEqual([ + 'test-table', + ]); + expect(attrs[SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY]).toStrictEqual( consumedCapacityResponseMockData.map((x: ConsumedCapacity) => JSON.stringify(x) ) ); - expect(attrs).not.toHaveProperty(SemanticAttributes.DB_STATEMENT); + expect(attrs).not.toHaveProperty(SEMATTRS_DB_STATEMENT); expect(err).toBeFalsy(); done(); } @@ -605,17 +601,15 @@ describe('DynamoDB', () => { const spans = getTestSpans(); expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual('dynamodb'); - expect(attrs[SemanticAttributes.DB_OPERATION]).toStrictEqual( - 'BatchGetItem' - ); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_TABLE_NAMES] - ).toStrictEqual(['test-table']); + expect(attrs[SEMATTRS_DB_SYSTEM]).toStrictEqual('dynamodb'); + expect(attrs[SEMATTRS_DB_OPERATION]).toStrictEqual('BatchGetItem'); + expect(attrs[SEMATTRS_AWS_DYNAMODB_TABLE_NAMES]).toStrictEqual([ + 'test-table', + ]); expect( - attrs[SemanticAttributes.AWS_DYNAMODB_CONSUMED_CAPACITY] + attrs[SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY] ).toBeUndefined(); - expect(attrs).not.toHaveProperty(SemanticAttributes.DB_STATEMENT); + expect(attrs).not.toHaveProperty(SEMATTRS_DB_STATEMENT); expect(err).toBeFalsy(); done(); } @@ -644,15 +638,11 @@ describe('DynamoDB', () => { const spans = getTestSpans(); expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( - DbSystemValues.DYNAMODB + expect(attrs[SEMATTRS_DB_SYSTEM]).toStrictEqual( + DBSYSTEMVALUES_DYNAMODB ); - expect(attrs[SemanticAttributes.DB_OPERATION]).toStrictEqual( - 'PutItem' - ); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_CONSUMED_CAPACITY] - ).toStrictEqual([ + expect(attrs[SEMATTRS_DB_OPERATION]).toStrictEqual('PutItem'); + expect(attrs[SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY]).toStrictEqual([ JSON.stringify({ TableName: 'test-table', CapacityUnits: 0.5, @@ -681,14 +671,12 @@ describe('DynamoDB', () => { const spans = getTestSpans(); expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( - DbSystemValues.DYNAMODB - ); - expect(attrs[SemanticAttributes.DB_OPERATION]).toStrictEqual( - 'PutItem' + expect(attrs[SEMATTRS_DB_SYSTEM]).toStrictEqual( + DBSYSTEMVALUES_DYNAMODB ); + expect(attrs[SEMATTRS_DB_OPERATION]).toStrictEqual('PutItem'); expect(attrs).not.toHaveProperty( - SemanticAttributes.AWS_DYNAMODB_CONSUMED_CAPACITY + SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY ); expect(err).toBeFalsy(); done(); @@ -753,7 +741,7 @@ describe('DynamoDB', () => { expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs).not.toHaveProperty(SemanticAttributes.DB_STATEMENT); + expect(attrs).not.toHaveProperty(SEMATTRS_DB_STATEMENT); expect(err).toBeFalsy(); done(); } @@ -796,7 +784,7 @@ describe('DynamoDB', () => { expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs).not.toHaveProperty(SemanticAttributes.DB_STATEMENT); + expect(attrs).not.toHaveProperty(SEMATTRS_DB_STATEMENT); expect(err).toBeFalsy(); done(); } @@ -839,7 +827,7 @@ describe('DynamoDB', () => { expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs).not.toHaveProperty(SemanticAttributes.DB_STATEMENT); + expect(attrs).not.toHaveProperty(SEMATTRS_DB_STATEMENT); expect(err).toBeFalsy(); done(); } @@ -939,7 +927,7 @@ describe('DynamoDB', () => { expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_STATEMENT]).toStrictEqual( + expect(attrs[SEMATTRS_DB_STATEMENT]).toStrictEqual( SERIALIZED_DB_STATEMENT ); expect(err).toBeFalsy(); @@ -1023,7 +1011,7 @@ describe('DynamoDB', () => { expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_STATEMENT]).toStrictEqual( + expect(attrs[SEMATTRS_DB_STATEMENT]).toStrictEqual( SERIALIZED_DB_STATEMENT ); expect(err).toBeFalsy(); @@ -1072,7 +1060,7 @@ describe('DynamoDB', () => { expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_STATEMENT]).toStrictEqual( + expect(attrs[SEMATTRS_DB_STATEMENT]).toStrictEqual( SERIALIZED_DB_STATEMENT ); expect(err).toBeFalsy(); @@ -1101,7 +1089,7 @@ describe('DynamoDB', () => { expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_STATEMENT]).toStrictEqual( + expect(attrs[SEMATTRS_DB_STATEMENT]).toStrictEqual( SERIALIZED_DB_STATEMENT ); expect(err).toBeFalsy(); @@ -1136,7 +1124,7 @@ describe('DynamoDB', () => { expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_STATEMENT]).toStrictEqual( + expect(attrs[SEMATTRS_DB_STATEMENT]).toStrictEqual( SERIALIZED_DB_STATEMENT ); expect(err).toBeFalsy(); diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/lambda.test.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/lambda.test.ts index be3965a872..36fc14d990 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/lambda.test.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/lambda.test.ts @@ -21,7 +21,11 @@ import { } from '@opentelemetry/contrib-test-utils'; registerInstrumentationTesting(new AwsInstrumentation()); -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_FAAS_EXECUTION, + SEMATTRS_FAAS_INVOKED_NAME, + SEMATTRS_FAAS_INVOKED_PROVIDER, +} from '@opentelemetry/semantic-conventions'; import { SpanKind } from '@opentelemetry/api'; import { Lambda, InvocationType } from '@aws-sdk/client-lambda'; @@ -90,9 +94,7 @@ describe('Lambda', () => { }; const span = await getInvokedSpan(params); - expect( - span.attributes[SemanticAttributes.FAAS_INVOKED_PROVIDER] - ).toEqual('aws'); + expect(span.attributes[SEMATTRS_FAAS_INVOKED_PROVIDER]).toEqual('aws'); }); it('should add the function name as a semantic attribute', async () => { @@ -107,7 +109,7 @@ describe('Lambda', () => { }; const span = await getInvokedSpan(params); - expect(span.attributes[SemanticAttributes.FAAS_INVOKED_NAME]).toEqual( + expect(span.attributes[SEMATTRS_FAAS_INVOKED_NAME]).toEqual( 'ot-test-function-name' ); }); @@ -347,12 +349,10 @@ describe('Lambda', () => { const [span] = getTestSpans(); expect(span.kind).toEqual(SpanKind.CLIENT); - expect(span.attributes[SemanticAttributes.FAAS_INVOKED_NAME]).toEqual( + expect(span.attributes[SEMATTRS_FAAS_INVOKED_NAME]).toEqual( 'ot-test-function-name' ); - expect( - span.attributes[SemanticAttributes.FAAS_INVOKED_PROVIDER] - ).toEqual('aws'); + expect(span.attributes[SEMATTRS_FAAS_INVOKED_PROVIDER]).toEqual('aws'); }); }); @@ -385,7 +385,7 @@ describe('Lambda', () => { expect(getTestSpans().length).toBe(1); const [span] = getTestSpans(); - expect(span.attributes[SemanticAttributes.FAAS_EXECUTION]).toEqual( + expect(span.attributes[SEMATTRS_FAAS_EXECUTION]).toEqual( '95882c2b-3fd2-485d-ada3-9fcb1ca65459' ); }); diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/sns.test.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/sns.test.ts index 36fa27e3d8..f8d4dd777f 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/sns.test.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/sns.test.ts @@ -31,8 +31,11 @@ import { expect } from 'expect'; import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; import * as sinon from 'sinon'; import { - MessagingDestinationKindValues, - SemanticAttributes, + MESSAGINGDESTINATIONKINDVALUES_TOPIC, + SEMATTRS_MESSAGING_DESTINATION, + SEMATTRS_MESSAGING_DESTINATION_KIND, + SEMATTRS_MESSAGING_SYSTEM, + SEMATTRS_RPC_METHOD, } from '@opentelemetry/semantic-conventions'; import { SpanKind } from '@opentelemetry/api'; @@ -78,21 +81,17 @@ describe('SNS - v2', () => { expect(publishSpans.length).toBe(1); const publishSpan = publishSpans[0]; - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toBe(MessagingDestinationKindValues.TOPIC); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toBe(topicName); - expect(publishSpan.attributes['messaging.destination.name']).toBe( - fakeARN + expect(publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND]).toBe( + MESSAGINGDESTINATIONKINDVALUES_TOPIC ); - expect(publishSpan.attributes[SemanticAttributes.RPC_METHOD]).toBe( - 'Publish' + expect(publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toBe( + topicName ); - expect(publishSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM]).toBe( - 'aws.sns' + expect(publishSpan.attributes['messaging.destination.name']).toBe( + fakeARN ); + expect(publishSpan.attributes[SEMATTRS_RPC_METHOD]).toBe('Publish'); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toBe('aws.sns'); expect(publishSpan.kind).toBe(SpanKind.PRODUCER); }); @@ -111,9 +110,9 @@ describe('SNS - v2', () => { ); expect(publishSpans.length).toBe(1); const publishSpan = publishSpans[0]; - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toBe(PhoneNumber); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toBe( + PhoneNumber + ); expect(publishSpan.attributes['messaging.destination.name']).toBe( PhoneNumber ); @@ -158,12 +157,10 @@ describe('SNS - v2', () => { const createTopicSpan = createTopicSpans[0]; expect( - createTopicSpan.attributes[ - SemanticAttributes.MESSAGING_DESTINATION_KIND - ] + createTopicSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] ).toBeUndefined(); expect( - createTopicSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] + createTopicSpan.attributes[SEMATTRS_MESSAGING_DESTINATION] ).toBeUndefined(); expect( createTopicSpan.attributes['messaging.destination.name'] @@ -208,21 +205,17 @@ describe('SNS - v3', () => { expect(publishSpans.length).toBe(1); const publishSpan = publishSpans[0]; - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toBe(MessagingDestinationKindValues.TOPIC); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toBe(topicV3Name); - expect(publishSpan.attributes['messaging.destination.name']).toBe( - topicV3ARN + expect(publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND]).toBe( + MESSAGINGDESTINATIONKINDVALUES_TOPIC ); - expect(publishSpan.attributes[SemanticAttributes.RPC_METHOD]).toBe( - 'Publish' + expect(publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toBe( + topicV3Name ); - expect(publishSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM]).toBe( - 'aws.sns' + expect(publishSpan.attributes['messaging.destination.name']).toBe( + topicV3ARN ); + expect(publishSpan.attributes[SEMATTRS_RPC_METHOD]).toBe('Publish'); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toBe('aws.sns'); expect(publishSpan.kind).toBe(SpanKind.PRODUCER); }); @@ -238,9 +231,9 @@ describe('SNS - v3', () => { ); expect(publishSpans.length).toBe(1); const publishSpan = publishSpans[0]; - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toBe(PhoneNumber); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toBe( + PhoneNumber + ); }); }); }); diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/sqs.test.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/sqs.test.ts index f0bdd33599..e97d82bb2c 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/sqs.test.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/sqs.test.ts @@ -26,9 +26,19 @@ import { AWSError } from 'aws-sdk'; import type { SQS } from 'aws-sdk'; import { - MessagingDestinationKindValues, - MessagingOperationValues, - SemanticAttributes, + MESSAGINGDESTINATIONKINDVALUES_QUEUE, + MESSAGINGOPERATIONVALUES_PROCESS, + MESSAGINGOPERATIONVALUES_RECEIVE, + SEMATTRS_HTTP_STATUS_CODE, + SEMATTRS_MESSAGING_DESTINATION, + SEMATTRS_MESSAGING_DESTINATION_KIND, + SEMATTRS_MESSAGING_MESSAGE_ID, + SEMATTRS_MESSAGING_OPERATION, + SEMATTRS_MESSAGING_SYSTEM, + SEMATTRS_MESSAGING_URL, + SEMATTRS_RPC_METHOD, + SEMATTRS_RPC_SERVICE, + SEMATTRS_RPC_SYSTEM, } from '@opentelemetry/semantic-conventions'; import { context, @@ -179,15 +189,15 @@ describe('SQS', () => { ) => { const awsReceiveSpan = spans.filter( s => - s.attributes[SemanticAttributes.MESSAGING_OPERATION] === - MessagingOperationValues.RECEIVE + s.attributes[SEMATTRS_MESSAGING_OPERATION] === + MESSAGINGOPERATIONVALUES_RECEIVE ); expect(awsReceiveSpan.length).toBe(1); const processSpans = spans.filter( s => - s.attributes[SemanticAttributes.MESSAGING_OPERATION] === - MessagingOperationValues.PROCESS + s.attributes[SEMATTRS_MESSAGING_OPERATION] === + MESSAGINGOPERATIONVALUES_PROCESS ); expect(processSpans.length).toBe(2); expect(processSpans[0].parentSpanId).toStrictEqual( @@ -382,30 +392,24 @@ describe('SQS', () => { const [span] = getTestSpans(); // make sure we have the general aws attributes: - expect(span.attributes[SemanticAttributes.RPC_SYSTEM]).toEqual('aws-api'); - expect(span.attributes[SemanticAttributes.RPC_METHOD]).toEqual( - 'SendMessage' - ); - expect(span.attributes[SemanticAttributes.RPC_SERVICE]).toEqual('SQS'); + expect(span.attributes[SEMATTRS_RPC_SYSTEM]).toEqual('aws-api'); + expect(span.attributes[SEMATTRS_RPC_METHOD]).toEqual('SendMessage'); + expect(span.attributes[SEMATTRS_RPC_SERVICE]).toEqual('SQS'); expect(span.attributes[AttributeNames.AWS_REGION]).toEqual(region); // custom messaging attributes - expect(span.attributes[SemanticAttributes.MESSAGING_SYSTEM]).toEqual( - 'aws.sqs' + expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual('aws.sqs'); + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND]).toEqual( + MESSAGINGDESTINATIONKINDVALUES_QUEUE ); - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.QUEUE); - expect(span.attributes[SemanticAttributes.MESSAGING_DESTINATION]).toEqual( + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( QueueName ); - expect(span.attributes[SemanticAttributes.MESSAGING_URL]).toEqual( - params.QueueUrl - ); - expect(span.attributes[SemanticAttributes.MESSAGING_MESSAGE_ID]).toEqual( + expect(span.attributes[SEMATTRS_MESSAGING_URL]).toEqual(params.QueueUrl); + expect(span.attributes[SEMATTRS_MESSAGING_MESSAGE_ID]).toEqual( response.MessageId ); - expect(span.attributes[SemanticAttributes.HTTP_STATUS_CODE]).toEqual(200); + expect(span.attributes[SEMATTRS_HTTP_STATUS_CODE]).toEqual(200); }); it('sqsProcessHook called and add message attribute to span', async () => { @@ -435,8 +439,8 @@ describe('SQS', () => { const processSpans = getTestSpans().filter( s => - s.attributes[SemanticAttributes.MESSAGING_OPERATION] === - MessagingOperationValues.PROCESS + s.attributes[SEMATTRS_MESSAGING_OPERATION] === + MESSAGINGOPERATIONVALUES_PROCESS ); expect(processSpans.length).toBe(2); expect( @@ -459,8 +463,8 @@ describe('SQS', () => { ); const processSpans = getTestSpans().filter( s => - s.attributes[SemanticAttributes.MESSAGING_OPERATION] === - MessagingOperationValues.PROCESS + s.attributes[SEMATTRS_MESSAGING_OPERATION] === + MESSAGINGOPERATIONVALUES_PROCESS ); expect(processSpans.length).toBe(2); }); @@ -488,8 +492,8 @@ describe('SQS', () => { const processSpans = getTestSpans().filter( s => - s.attributes[SemanticAttributes.MESSAGING_OPERATION] === - MessagingOperationValues.PROCESS + s.attributes[SEMATTRS_MESSAGING_OPERATION] === + MESSAGINGOPERATIONVALUES_PROCESS ); expect(processSpans.length).toBe(2); expect(processSpans[0].status.code).toStrictEqual(SpanStatusCode.UNSET); @@ -514,7 +518,7 @@ describe('SQS', () => { expect(spans.length).toBe(1); // Spot check a single attribute as a sanity check. - expect(spans[0].attributes[SemanticAttributes.RPC_METHOD]).toEqual( + expect(spans[0].attributes[SEMATTRS_RPC_METHOD]).toEqual( 'SendMessageBatch' ); }); From 46b67752b001d428a1f5c315ca287300e9444dc7 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Wed, 24 Apr 2024 22:03:15 -0700 Subject: [PATCH 07/39] test(instr-document-load): fix test to allow missing network span events (#2145) The change in https://github.com/open-telemetry/opentelemetry-js/pull/4486 means that a addSpanNetworkEvent() in v1.24.0 and later might get dropped -- if its time value is before the fetchStart time. Typically this happens if the event time value is 0. --- .../test/documentLoad.test.ts | 59 ++++++++++--------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/plugins/web/opentelemetry-instrumentation-document-load/test/documentLoad.test.ts b/plugins/web/opentelemetry-instrumentation-document-load/test/documentLoad.test.ts index 3dbf64dbe7..a0aba71c3e 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/test/documentLoad.test.ts +++ b/plugins/web/opentelemetry-instrumentation-document-load/test/documentLoad.test.ts @@ -555,43 +555,44 @@ describe('DocumentLoad Instrumentation', () => { assert.strictEqual(rootSpan.attributes['http.user_agent'], userAgent); ensureNetworkEventsExists(fsEvents); + assert.strictEqual(fsEvents.length, 8); - assert.strictEqual(rsEvents[0].name, PTN.FETCH_START); - assert.strictEqual(rsEvents[1].name, PTN.UNLOAD_EVENT_START); - assert.strictEqual(rsEvents[2].name, PTN.UNLOAD_EVENT_END); - assert.strictEqual(rsEvents[3].name, PTN.DOM_INTERACTIVE); - assert.strictEqual( - rsEvents[4].name, - PTN.DOM_CONTENT_LOADED_EVENT_START - ); - assert.strictEqual(rsEvents[5].name, PTN.DOM_CONTENT_LOADED_EVENT_END); - assert.strictEqual(rsEvents[6].name, PTN.DOM_COMPLETE); - assert.strictEqual(rsEvents[7].name, PTN.LOAD_EVENT_START); - assert.strictEqual(rsEvents[8].name, PTN.LOAD_EVENT_END); + const rsEventNames = rsEvents.map(e => e.name); + // Allow the unloadEvent{Start,End} events to be missing. Tests that + // are simulating a fallback to window.performance.timing are using + // values (entriesFallback) for that result in those network span + // events being dropped after https://github.com/open-telemetry/opentelemetry-js/pull/4486 + // (@opentelemetry/sdk-trace-web@1.24.0). + const expectedRsEventNames = + rsEventNames[1] === PTN.UNLOAD_EVENT_START + ? [ + PTN.FETCH_START, + PTN.UNLOAD_EVENT_START, + PTN.UNLOAD_EVENT_END, + PTN.DOM_INTERACTIVE, + PTN.DOM_CONTENT_LOADED_EVENT_START, + PTN.DOM_CONTENT_LOADED_EVENT_END, + PTN.DOM_COMPLETE, + PTN.LOAD_EVENT_START, + PTN.LOAD_EVENT_END, + ] + : [ + PTN.FETCH_START, + PTN.DOM_INTERACTIVE, + PTN.DOM_CONTENT_LOADED_EVENT_START, + PTN.DOM_CONTENT_LOADED_EVENT_END, + PTN.DOM_COMPLETE, + PTN.LOAD_EVENT_START, + PTN.LOAD_EVENT_END, + ]; + assert.deepStrictEqual(rsEventNames, expectedRsEventNames); - assert.strictEqual(fsEvents.length, 8); - assert.strictEqual(rsEvents.length, 9); assert.strictEqual(exporter.getFinishedSpans().length, 2); done(); }); }); } - describe('when navigation entries types are NOT available then fallback to "performance.timing"', () => { - const sandbox = sinon.createSandbox(); - beforeEach(() => { - sandbox.stub(window.performance, 'getEntriesByType').value(undefined); - sandbox.stub(window.performance, 'timing').get(() => { - return entriesFallback; - }); - }); - afterEach(() => { - sandbox.restore(); - }); - - shouldExportCorrectSpan(); - }); - describe('when getEntriesByType is not defined then fallback to "performance.timing"', () => { const sandbox = sinon.createSandbox(); beforeEach(() => { From 80cbee73130c65c8ccd78384485a7be8d2a4a84b Mon Sep 17 00:00:00 2001 From: Amir Blum Date: Thu, 25 Apr 2024 11:20:57 +0300 Subject: [PATCH 08/39] chore: experimental 0.51.0, remove instrumentations generic type to align with upstream (#2091) * chore: remove instrumentations generic type to align with upstream * fix: lint * chore: update core to 0.51.0 * revert: redundant any type * fix: merged issue * fix: apply original types from generics * revert: cucumber testing * fix: tedious import types --------- Co-authored-by: Trent Mick --- .../package.json | 2 +- .../auto-instrumentations-node/package.json | 8 +- .../auto-instrumentations-web/package.json | 6 +- package-lock.json | 930 +++++++++--------- .../opentelemetry-test-utils/package.json | 4 +- packages/winston-transport/package.json | 2 +- .../node/instrumentation-amqplib/package.json | 2 +- .../instrumentation-cucumber/package.json | 2 +- .../src/instrumentation.ts | 12 +- .../instrumentation-dataloader/package.json | 2 +- .../src/instrumentation.ts | 5 +- plugins/node/instrumentation-fs/package.json | 2 +- .../instrumentation-fs/src/instrumentation.ts | 10 +- .../instrumentation-lru-memoizer/package.json | 2 +- .../src/instrumentation.ts | 4 +- .../instrumentation-mongoose/package.json | 2 +- .../instrumentation-mongoose/src/mongoose.ts | 6 +- .../instrumentation-runtime-node/package.json | 2 +- .../instrumentation-socket.io/package.json | 2 +- .../src/socket.io.ts | 122 ++- .../node/instrumentation-tedious/package.json | 2 +- .../src/instrumentation.ts | 10 +- .../node/instrumentation-undici/package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../src/aws-sdk.ts | 23 +- .../package.json | 6 +- .../src/instrumentation.ts | 6 +- .../package.json | 2 +- .../src/instrumentation.ts | 2 +- .../package.json | 2 +- .../src/instrumentation.ts | 4 +- .../package.json | 2 +- .../src/instrumentation.ts | 18 +- .../src/internal-types.ts | 4 - .../package.json | 2 +- .../src/instrumentation.ts | 6 +- .../package.json | 4 +- .../src/instrumentation.ts | 2 +- .../package.json | 2 +- .../src/instrumentation.ts | 8 +- .../package.json | 2 +- .../src/instrumentation.ts | 24 +- .../package.json | 2 +- .../src/instrumentation.ts | 6 +- .../package.json | 6 +- .../src/instrumentation.ts | 6 +- .../package.json | 2 +- .../src/instrumentation.ts | 10 +- .../package.json | 4 +- .../src/instrumentation.ts | 4 +- .../package.json | 2 +- .../src/instrumentation.ts | 8 +- .../package.json | 2 +- .../src/instrumentation.ts | 16 +- .../package.json | 2 +- .../src/instrumentation.ts | 10 +- .../package.json | 2 +- .../src/instrumentation.ts | 4 +- .../package.json | 2 +- .../src/instrumentation.ts | 8 +- .../package.json | 2 +- .../src/instrumentation.ts | 13 +- .../src/internal-types.ts | 4 - .../package.json | 2 +- .../src/instrumentation.ts | 10 +- .../package.json | 2 +- .../src/instrumentation.ts | 2 +- .../package.json | 2 +- .../src/instrumentation.ts | 12 +- .../package.json | 2 +- .../src/instrumentation.ts | 2 +- .../package.json | 2 +- .../src/instrumentation.ts | 6 +- .../package.json | 2 +- .../src/instrumentation.ts | 6 +- .../package.json | 4 +- .../src/instrumentation.ts | 18 +- .../package.json | 2 +- .../src/instrumentation.ts | 2 +- .../package.json | 2 +- .../package.json | 4 +- .../src/instrumentation.ts | 2 +- 83 files changed, 717 insertions(+), 746 deletions(-) diff --git a/detectors/node/opentelemetry-resource-detector-instana/package.json b/detectors/node/opentelemetry-resource-detector-instana/package.json index 2bc2b34f36..e8fc0b716b 100644 --- a/detectors/node/opentelemetry-resource-detector-instana/package.json +++ b/detectors/node/opentelemetry-resource-detector-instana/package.json @@ -39,7 +39,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/sdk-node": "^0.50.0", + "@opentelemetry/sdk-node": "^0.51.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/semver": "7.5.3", diff --git a/metapackages/auto-instrumentations-node/package.json b/metapackages/auto-instrumentations-node/package.json index e8c3bbe6b8..e1814cf072 100644 --- a/metapackages/auto-instrumentations-node/package.json +++ b/metapackages/auto-instrumentations-node/package.json @@ -49,7 +49,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/instrumentation-amqplib": "^0.36.0", "@opentelemetry/instrumentation-aws-lambda": "^0.40.0", "@opentelemetry/instrumentation-aws-sdk": "^0.40.0", @@ -64,9 +64,9 @@ "@opentelemetry/instrumentation-fs": "^0.11.0", "@opentelemetry/instrumentation-generic-pool": "^0.35.0", "@opentelemetry/instrumentation-graphql": "^0.39.0", - "@opentelemetry/instrumentation-grpc": "^0.50.0", + "@opentelemetry/instrumentation-grpc": "^0.51.0", "@opentelemetry/instrumentation-hapi": "^0.36.0", - "@opentelemetry/instrumentation-http": "^0.50.0", + "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/instrumentation-ioredis": "^0.39.0", "@opentelemetry/instrumentation-knex": "^0.35.0", "@opentelemetry/instrumentation-koa": "^0.39.0", @@ -92,7 +92,7 @@ "@opentelemetry/resource-detector-container": "^0.3.8", "@opentelemetry/resource-detector-gcp": "^0.29.8", "@opentelemetry/resources": "^1.12.0", - "@opentelemetry/sdk-node": "^0.50.0" + "@opentelemetry/sdk-node": "^0.51.0" }, "files": [ "build/src/**/*.js", diff --git a/metapackages/auto-instrumentations-web/package.json b/metapackages/auto-instrumentations-web/package.json index 61e875742f..d733b95e2d 100644 --- a/metapackages/auto-instrumentations-web/package.json +++ b/metapackages/auto-instrumentations-web/package.json @@ -61,11 +61,11 @@ "webpack-merge": "5.8.0" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/instrumentation-document-load": "^0.37.0", - "@opentelemetry/instrumentation-fetch": "^0.50.0", + "@opentelemetry/instrumentation-fetch": "^0.51.0", "@opentelemetry/instrumentation-user-interaction": "^0.37.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.50.0" + "@opentelemetry/instrumentation-xml-http-request": "^0.51.0" }, "files": [ "build/src/**/*.js", diff --git a/package-lock.json b/package-lock.json index b85ccf58fb..331b9eaeed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -255,7 +255,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/sdk-node": "^0.50.0", + "@opentelemetry/sdk-node": "^0.51.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/semver": "7.5.3", @@ -284,7 +284,7 @@ "version": "0.44.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/instrumentation-amqplib": "^0.36.0", "@opentelemetry/instrumentation-aws-lambda": "^0.40.0", "@opentelemetry/instrumentation-aws-sdk": "^0.40.0", @@ -299,9 +299,9 @@ "@opentelemetry/instrumentation-fs": "^0.11.0", "@opentelemetry/instrumentation-generic-pool": "^0.35.0", "@opentelemetry/instrumentation-graphql": "^0.39.0", - "@opentelemetry/instrumentation-grpc": "^0.50.0", + "@opentelemetry/instrumentation-grpc": "^0.51.0", "@opentelemetry/instrumentation-hapi": "^0.36.0", - "@opentelemetry/instrumentation-http": "^0.50.0", + "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/instrumentation-ioredis": "^0.39.0", "@opentelemetry/instrumentation-knex": "^0.35.0", "@opentelemetry/instrumentation-koa": "^0.39.0", @@ -327,7 +327,7 @@ "@opentelemetry/resource-detector-container": "^0.3.8", "@opentelemetry/resource-detector-gcp": "^0.29.8", "@opentelemetry/resources": "^1.12.0", - "@opentelemetry/sdk-node": "^0.50.0" + "@opentelemetry/sdk-node": "^0.51.0" }, "devDependencies": { "@opentelemetry/api": "^1.4.1", @@ -353,11 +353,11 @@ "version": "0.38.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/instrumentation-document-load": "^0.37.0", - "@opentelemetry/instrumentation-fetch": "^0.50.0", + "@opentelemetry/instrumentation-fetch": "^0.51.0", "@opentelemetry/instrumentation-user-interaction": "^0.37.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.50.0" + "@opentelemetry/instrumentation-xml-http-request": "^0.51.0" }, "devDependencies": { "@babel/core": "7.22.17", @@ -8197,9 +8197,9 @@ } }, "node_modules/@opentelemetry/api-logs": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.50.0.tgz", - "integrity": "sha512-JdZuKrhOYggqOpUljAq4WWNi5nB10PmgoF0y2CvedLGXd0kSawb/UBnWT8gg1ND3bHCNHStAIVT0ELlxJJRqrA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.51.0.tgz", + "integrity": "sha512-m/jtfBPEIXS1asltl8fPQtO3Sb1qMpuL61unQajUmM8zIxeMF1AlqzWXM3QedcYgTTFiJCew5uJjyhpmqhc0+g==", "dependencies": { "@opentelemetry/api": "^1.0.0" }, @@ -8216,9 +8216,9 @@ "link": true }, "node_modules/@opentelemetry/context-async-hooks": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.23.0.tgz", - "integrity": "sha512-wazGJZDRevibOJ+VgyrT+9+8sybZAxpZx2G7vy30OAtk92OpZCg7HgNxT11NUx0VBDWcRx1dOatMYGOVplQ7QA==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.24.0.tgz", + "integrity": "sha512-s7xaQ9ifDpJvwbWRLkZD/J5hY35w+MECm4TQUkg6szRcny9lf6oVhWij4w3JJFQgvHQMXU7oXOpX8Z05HxV/8g==", "engines": { "node": ">=14" }, @@ -8227,11 +8227,11 @@ } }, "node_modules/@opentelemetry/context-zone": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone/-/context-zone-1.23.0.tgz", - "integrity": "sha512-7piNTrpH+gZNMDDOHIJXCSwp0Xslh3R96HWH5HwXw+4PykR4+jVoXvd6jziQxudX9rFAfu2B64A10DHs4ZWrfA==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone/-/context-zone-1.24.0.tgz", + "integrity": "sha512-Znb6fvmqZy+4ZC63vvf9qktXakTlLOLeBsMizR5E1G/1cM8LKUVR/JJUws+A4QSAY95Rzldi05aqxoc+YUVVKw==", "dependencies": { - "@opentelemetry/context-zone-peer-dep": "1.23.0", + "@opentelemetry/context-zone-peer-dep": "1.24.0", "zone.js": "^0.11.0 || ^0.13.0 || ^0.14.0" }, "engines": { @@ -8239,9 +8239,9 @@ } }, "node_modules/@opentelemetry/context-zone-peer-dep": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-1.23.0.tgz", - "integrity": "sha512-3ia5w2y3CGHIhMSggttliGbeRBWclIyMMXdfRCcit1NHg1ocieA9qYxyUEetbOvPrQpoti3O3k+5eyQUv7r8nw==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-1.24.0.tgz", + "integrity": "sha512-znNlicjfxRqepQdOZGUN3RYSs+QGoEiGI+cjILBYM4KdEXpoXgxt87l72b0UYhH7YI/uK0TVHse99D0ER9ODAw==", "engines": { "node": ">=14" }, @@ -8255,11 +8255,11 @@ "link": true }, "node_modules/@opentelemetry/core": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.23.0.tgz", - "integrity": "sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.0.tgz", + "integrity": "sha512-FP2oN7mVPqcdxJDTTnKExj4mi91EH+DNuArKfHTjPuJWe2K1JfMIVXNfahw1h3onJxQnxS8K0stKkogX05s+Aw==", "dependencies": { - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/semantic-conventions": "1.24.0" }, "engines": { "node": ">=14" @@ -8269,13 +8269,13 @@ } }, "node_modules/@opentelemetry/exporter-jaeger": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.23.0.tgz", - "integrity": "sha512-9GjZPS9kR4nC0ApOFQtj2xwYAGhQ3bO6KPx27DLqCOiso27OlJVUgvAtB3i+1On23OTcjfPtKbNo4a2npmV27A==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.24.0.tgz", + "integrity": "sha512-mD28eBrdth937QGU6zgn+6fYBywUaYxLJwANREnE7XS8pHP/Hjxpiy4nb9yIzQ2DqC8Uq7yEnc8ah2pH45B9ZQ==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0", "jaeger-client": "^3.15.0" }, "engines": { @@ -8286,16 +8286,16 @@ } }, "node_modules/@opentelemetry/exporter-trace-otlp-grpc": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.50.0.tgz", - "integrity": "sha512-w/NF4TrwHxx+Uz1M0rCOSVr6KgcoQPv3zF9JRqcebY2euD7ddWnLP0hE8JavyA1uq4UchnMp9faAk9n7hTCePw==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.51.0.tgz", + "integrity": "sha512-xQpxKzS8ZnxYCa1v+3EKWhwMrSK3+RezpJ+AEKaP2pf2QbLfHt7kKfSn7niR2u3A1Tbe2aC7Ptt9+MafhThOOQ==", "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.23.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.50.0", - "@opentelemetry/otlp-transformer": "0.50.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.51.0", + "@opentelemetry/otlp-transformer": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" }, "engines": { "node": ">=14" @@ -8305,15 +8305,15 @@ } }, "node_modules/@opentelemetry/exporter-trace-otlp-http": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.50.0.tgz", - "integrity": "sha512-L7OtIMT7MsFqkmhbQlPBGRXt7152VN5esHpQEJYIBFedOEo3Da+yHpu5ojMZtPzpIvSpB5Xr5lnJUjJCbkttCA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.51.0.tgz", + "integrity": "sha512-zODqnLZmPOxj9CarFv0TrVlx9mgj0TfCMCiUiTdNi9iA2rgdKVo+bjJjpYF6LCTJOQCR5TScAUCKyzwkgDI+iA==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/otlp-exporter-base": "0.50.0", - "@opentelemetry/otlp-transformer": "0.50.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", + "@opentelemetry/otlp-transformer": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" }, "engines": { "node": ">=14" @@ -8323,16 +8323,16 @@ } }, "node_modules/@opentelemetry/exporter-trace-otlp-proto": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.50.0.tgz", - "integrity": "sha512-vavD9Ow6yOLiD+ocuS/oeciCsXNdsN41aYUrEljNaLXogvnkfMhJ+JLAhOnRSpzlVtRp7Ciw2BYGdYSebR0OsA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.51.0.tgz", + "integrity": "sha512-Fi7r0iMqGoFCQQ+WY0pYOWp395vdinZJIkYKnNbnreHxAN/kVDBl2FxbV3DeOKuRxEY08Gyb9ggPf+Zrqp7l/w==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/otlp-exporter-base": "0.50.0", - "@opentelemetry/otlp-proto-exporter-base": "0.50.0", - "@opentelemetry/otlp-transformer": "0.50.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", + "@opentelemetry/otlp-proto-exporter-base": "0.51.0", + "@opentelemetry/otlp-transformer": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" }, "engines": { "node": ">=14" @@ -8342,14 +8342,14 @@ } }, "node_modules/@opentelemetry/exporter-zipkin": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.23.0.tgz", - "integrity": "sha512-2LOGvNUGONuIcWhynFaJorVyqv03uZkURScciLmOxvBf2lWTNPEj77br1dCpShIWBM+YlrH7Tc+JXAs+GC7DqA==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.24.0.tgz", + "integrity": "sha512-QeGv0PHONswmu567pf9QliJ6s6DgCu5+ziF+soNS1LTcr1VRRVLViYLmGxmzDFUC48sjNTu7sumcKT0nJXsGBw==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" }, "engines": { "node": ">=14" @@ -8367,11 +8367,11 @@ "link": true }, "node_modules/@opentelemetry/instrumentation": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.50.0.tgz", - "integrity": "sha512-bhGhbJiZKpuu7wTaSak4hyZcFPlnDeuSF/2vglze8B4w2LubcSbbOnkVTzTs5SXtzh4Xz8eRjaNnAm+u2GYufQ==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.51.0.tgz", + "integrity": "sha512-Eg/+Od5bEvzpvZQGhvMyKIkrzB9S7jW+6z9LHEI2VXhl/GrqQ3oBqlzJt4tA6pGtxRmqQWKWGM1wAbwDdW/gUA==", "dependencies": { - "@opentelemetry/api-logs": "0.50.0", + "@opentelemetry/api-logs": "0.51.0", "@types/shimmer": "^1.0.2", "import-in-the-middle": "1.7.1", "require-in-the-middle": "^7.1.1", @@ -8434,14 +8434,14 @@ "link": true }, "node_modules/@opentelemetry/instrumentation-fetch": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.50.0.tgz", - "integrity": "sha512-CayteluGJbrfDvzEFQ0EWqLFkNAcO9H7nfDHptZjtonBpJRWF170XZoMkJVC2bxp0lIVwyuw6WlnGVRSNwEtKA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.51.0.tgz", + "integrity": "sha512-dB9wisB2+wyh0wUB1RFNinCS4TqJ7QMVc4jNzy3JCMJudwFWI/stU10DgZ3vwFQNUEBUIz9QmEQSFud7lsvB2w==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/instrumentation": "0.50.0", - "@opentelemetry/sdk-trace-web": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/instrumentation": "0.51.0", + "@opentelemetry/sdk-trace-web": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" }, "engines": { "node": ">=14" @@ -8463,12 +8463,12 @@ "link": true }, "node_modules/@opentelemetry/instrumentation-grpc": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.50.0.tgz", - "integrity": "sha512-/ZFuvHtrHyxfRJX5CJ8yPKokAIcvTbIJAoR4AN+gBq1YqecWuCr4XG52p5YU5qDrbwOBtShOrC8d4GdFZOky6Q==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.51.0.tgz", + "integrity": "sha512-Wfhs9e1Hi4nnULLqzt9s2M6+Tz52EkKj6uZnj9ZL3coldlZiP+WmvuUNepds7jcBJg/qDBjnEe96fThPuO7ddA==", "dependencies": { - "@opentelemetry/instrumentation": "0.50.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/instrumentation": "0.51.0", + "@opentelemetry/semantic-conventions": "1.24.0" }, "engines": { "node": ">=14" @@ -8482,13 +8482,13 @@ "link": true }, "node_modules/@opentelemetry/instrumentation-http": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.50.0.tgz", - "integrity": "sha512-bsd6Nv0FtN9C6M6vX/kgPzvJY9UhJc4CZZNvqDbsfVQv3/MWvPrYgthf41AhrehqeDnpfn/QGzNKtdWUduGanQ==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.51.0.tgz", + "integrity": "sha512-6VsGPBnU6iVKWhVBnuRpwrmiHfxt8EYrqfnH2glfsMpsn4xy+O6U0yGlggPLhoYeOVafV3h70EEk5MU0tpsbiw==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/instrumentation": "0.50.0", - "@opentelemetry/semantic-conventions": "1.23.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/instrumentation": "0.51.0", + "@opentelemetry/semantic-conventions": "1.24.0", "semver": "^7.5.2" }, "engines": { @@ -8595,14 +8595,14 @@ "link": true }, "node_modules/@opentelemetry/instrumentation-xml-http-request": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.50.0.tgz", - "integrity": "sha512-o9z6SDQByqc3GvmUcy6Npt/SAIrv2Pk0Hm0Hl54B3Ny8WUrTsrlt6MULx8d+EjuifE4uVo8op8DekmvKJ1FHoQ==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.51.0.tgz", + "integrity": "sha512-KgLO2qx1z1Wn9NeJgrgNukd10ssK1QqxODwdeBJFO1BaP9sVVargpupYowlDKUL5I3oWOEqi/Oxxdh/fbEsJtw==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/instrumentation": "0.50.0", - "@opentelemetry/sdk-trace-web": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/instrumentation": "0.51.0", + "@opentelemetry/sdk-trace-web": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" }, "engines": { "node": ">=14" @@ -8612,11 +8612,11 @@ } }, "node_modules/@opentelemetry/otlp-exporter-base": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.50.0.tgz", - "integrity": "sha512-JUmjmrCmE1/fc4LjCQMqLfudgSl5OpUkzx7iA94b4jgeODM7zWxUoVXL7/CT7fWf47Cn+pmKjMvTCSESqZZ3mA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.51.0.tgz", + "integrity": "sha512-hR4c9vWVz1QgzCBSyy9zSDkvfTgaK96E6/tfVP6O4dzdZW9HqWimA3lXV/KXadEGqShvM4GToz9EHp2A5RU5bQ==", "dependencies": { - "@opentelemetry/core": "1.23.0" + "@opentelemetry/core": "1.24.0" }, "engines": { "node": ">=14" @@ -8626,13 +8626,13 @@ } }, "node_modules/@opentelemetry/otlp-grpc-exporter-base": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.50.0.tgz", - "integrity": "sha512-J500AczSD7xEsjXpwNzSh5HQqxW73PT3CCNsi1VEWCE+8UPgVfkHYIGRHGoch35DV+CMe1svbi7gAk3e5eCSVA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.51.0.tgz", + "integrity": "sha512-oTRtDvvB0bTRTBVrvKA/oM1gIAqQ6DVQS07pvqiL1cZS8wBrGgpw+2iTd0nV661Y/MhDn/kNWp8lRhMEIKN9bw==", "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.23.0", - "@opentelemetry/otlp-exporter-base": "0.50.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", "protobufjs": "^7.2.3" }, "engines": { @@ -8643,12 +8643,12 @@ } }, "node_modules/@opentelemetry/otlp-proto-exporter-base": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.50.0.tgz", - "integrity": "sha512-hlbn3eZbhxoK79Sq1ddj1f7qcx+PzsPQC/SFpJvaWgTaqacCbqJmpzWDKfRRCAC7iGX2Hj/sgpf8vysazqyMOw==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.51.0.tgz", + "integrity": "sha512-WDANDLSUh11Gu5o6iCzmjZraIv5bK8z1L/t6lxQ2NeEKiKUPo5pVOBBQQC/yAQU2yeqkiO1GRCieH+XahZf60A==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/otlp-exporter-base": "0.50.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", "protobufjs": "^7.2.3" }, "engines": { @@ -8659,16 +8659,16 @@ } }, "node_modules/@opentelemetry/otlp-transformer": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.50.0.tgz", - "integrity": "sha512-s0sl1Yfqd5q1Kjrf6DqXPWzErL+XHhrXOfejh4Vc/SMTNqC902xDsC8JQxbjuramWt/+hibfguIvi7Ns8VLolA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.51.0.tgz", + "integrity": "sha512-ylLgx2xumVoSefDHP9GMAU/LG+TU3+8eacVDXV5o1RqWxsdVOaQmCTY0XyDgeRTn6hIOVAq/HHQbRq3iWOrt2A==", "dependencies": { - "@opentelemetry/api-logs": "0.50.0", - "@opentelemetry/core": "1.23.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-logs": "0.50.0", - "@opentelemetry/sdk-metrics": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0" + "@opentelemetry/api-logs": "0.51.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-logs": "0.51.0", + "@opentelemetry/sdk-metrics": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" }, "engines": { "node": ">=14" @@ -8686,25 +8686,25 @@ "link": true }, "node_modules/@opentelemetry/propagator-aws-xray": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-aws-xray/-/propagator-aws-xray-1.3.1.tgz", - "integrity": "sha512-6fDMzFlt5r6VWv7MUd0eOpglXPFqykW8CnOuUxJ1VZyLy6mV1bzBlzpsqEmhx1bjvZYvH93vhGkQZqrm95mlrQ==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-aws-xray/-/propagator-aws-xray-1.24.0.tgz", + "integrity": "sha512-rcuMtEOTZC7TW84tws1QLUVRElrGSbBJwK0b+qa56zJULDiUIiUpS+dSzO+aUchg7MtTJBZSG5OPsfsKpGgNig==", "dependencies": { - "@opentelemetry/core": "^1.0.0" + "@opentelemetry/core": "1.24.0" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": "^1.0.0" + "@opentelemetry/api": ">=1.0.0 <1.9.0" } }, "node_modules/@opentelemetry/propagator-b3": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.23.0.tgz", - "integrity": "sha512-cZ6rl8y2bdxYQ4e+zP2CQ+QmuPebaLBLO1skjFpj3eEu7zar+6hBzUP3llMOUupkQeQSwXz+4c8dZ26OhYfG/g==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.24.0.tgz", + "integrity": "sha512-7TMIDE4+NO5vnkor+zned42wqca+hmhW5gWKhmYjUHC5B5uojo1PvtmBrd7kigFu96XvL4ZUWVzibWRWIQ/++Q==", "dependencies": { - "@opentelemetry/core": "1.23.0" + "@opentelemetry/core": "1.24.0" }, "engines": { "node": ">=14" @@ -8722,11 +8722,11 @@ "link": true }, "node_modules/@opentelemetry/propagator-jaeger": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.23.0.tgz", - "integrity": "sha512-6iArixfgIl3ZgzeltQ5jyiKbjZygM+MbM84pXi1HL0Qs4x4Ck5rM6wEtjhZffFnlDMWEkEqrnM0xF6bTfbiMAQ==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.24.0.tgz", + "integrity": "sha512-r3MX3AmJiUeiWTXSDOdwBeaO+ahvWcFCpuKxmhhsH8Q8LqDnjhNd3krqBh4Qsq9wa0WhWtiQaDs/NOCWoMOlOw==", "dependencies": { - "@opentelemetry/core": "1.23.0" + "@opentelemetry/core": "1.24.0" }, "engines": { "node": ">=14" @@ -8772,12 +8772,12 @@ "link": true }, "node_modules/@opentelemetry/resources": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.23.0.tgz", - "integrity": "sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.24.0.tgz", + "integrity": "sha512-mxC7E7ocUS1tLzepnA7O9/G8G6ZTdjCH2pXme1DDDuCuk6n2/53GADX+GWBuyX0dfIxeMInIbJAdjlfN9GNr6A==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" }, "engines": { "node": ">=14" @@ -8787,12 +8787,12 @@ } }, "node_modules/@opentelemetry/sdk-logs": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.50.0.tgz", - "integrity": "sha512-PeUEupBB29p9nlPNqXoa1PUWNLsZnxG0DCDj3sHqzae+8y76B/A5hvZjg03ulWdnvBLYpnJslqzylG9E0IL87g==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.51.0.tgz", + "integrity": "sha512-K4fMBRFD8hQ6khk0rvYFuo6L9ymeGgByir6BcuFIgQuQ00OhYwBi9AruZz5V733Ejq7P8ObR3YyubkOUIbeVAw==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/resources": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0" }, "engines": { "node": ">=14" @@ -8803,12 +8803,12 @@ } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.23.0.tgz", - "integrity": "sha512-4OkvW6+wST4h6LFG23rXSTf6nmTf201h9dzq7bE0z5R9ESEVLERZz6WXwE7PSgg1gdjlaznm1jLJf8GttypFDg==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.24.0.tgz", + "integrity": "sha512-4tJ+E6N019OZVB/nUW/LoK9xHxfeh88TCoaTqHeLBE9wLYfi6irWW6J9cphMav7J8Qk0D5b7/RM4VEY4dArWOA==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/resources": "1.23.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", "lodash.merge": "^4.6.2" }, "engines": { @@ -8819,23 +8819,23 @@ } }, "node_modules/@opentelemetry/sdk-node": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.50.0.tgz", - "integrity": "sha512-LhIXHnvcnhRYcPwG9VG4G6lJ7x4ElYF6UYHHmXA7e4ZWzSUEFmAPfR1IBWv358aD1KwffcEBu7J6zeAR7lPZag==", - "dependencies": { - "@opentelemetry/api-logs": "0.50.0", - "@opentelemetry/core": "1.23.0", - "@opentelemetry/exporter-trace-otlp-grpc": "0.50.0", - "@opentelemetry/exporter-trace-otlp-http": "0.50.0", - "@opentelemetry/exporter-trace-otlp-proto": "0.50.0", - "@opentelemetry/exporter-zipkin": "1.23.0", - "@opentelemetry/instrumentation": "0.50.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-logs": "0.50.0", - "@opentelemetry/sdk-metrics": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0", - "@opentelemetry/sdk-trace-node": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.51.0.tgz", + "integrity": "sha512-MrPXDQsTAj3lcY8YUCjb7dvSXVZ5jG6wmjD2LB68V1rsLBdP8j70jsI9GaKijY7QB6psbLq6apO1vYeim5U7aw==", + "dependencies": { + "@opentelemetry/api-logs": "0.51.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.51.0", + "@opentelemetry/exporter-trace-otlp-http": "0.51.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.51.0", + "@opentelemetry/exporter-zipkin": "1.24.0", + "@opentelemetry/instrumentation": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-logs": "0.51.0", + "@opentelemetry/sdk-metrics": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "@opentelemetry/sdk-trace-node": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" }, "engines": { "node": ">=14" @@ -8845,13 +8845,13 @@ } }, "node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.23.0.tgz", - "integrity": "sha512-PzBmZM8hBomUqvCddF/5Olyyviayka44O5nDWq673np3ctnvwMOvNrsUORZjKja1zJbwEuD9niAGbnVrz3jwRQ==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.24.0.tgz", + "integrity": "sha512-H9sLETZ4jw9UJ3totV8oM5R0m4CW0ZIOLfp4NV3g0CM8HD5zGZcaW88xqzWDgiYRpctFxd+WmHtGX/Upoa2vRg==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" }, "engines": { "node": ">=14" @@ -8861,15 +8861,15 @@ } }, "node_modules/@opentelemetry/sdk-trace-node": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.23.0.tgz", - "integrity": "sha512-dwnin5Go2r6VzJZkVc9JBPupssWp7j2EFto+S7qRkwQ00WDykWeq3x2Skk7I1Jr448FeBSvGCQVPgV5e6s6O3w==", - "dependencies": { - "@opentelemetry/context-async-hooks": "1.23.0", - "@opentelemetry/core": "1.23.0", - "@opentelemetry/propagator-b3": "1.23.0", - "@opentelemetry/propagator-jaeger": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.24.0.tgz", + "integrity": "sha512-QgByHmM9uloTpcYEEyW9YJEIMKHFSIM677RH9pJPWWwtM2NQFbEp/8HIJw80Ymtaz6cAxg1Kay1ByqIVzq3t5g==", + "dependencies": { + "@opentelemetry/context-async-hooks": "1.24.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/propagator-b3": "1.24.0", + "@opentelemetry/propagator-jaeger": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", "semver": "^7.5.2" }, "engines": { @@ -8880,13 +8880,13 @@ } }, "node_modules/@opentelemetry/sdk-trace-web": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-1.23.0.tgz", - "integrity": "sha512-tx9N3hIkd6k567BeujBnpXYdhu3ptYVk0ZkhdcjyQ3I8ZDJ+/JkVtaVNLAuf8hp1buTqNDmxSipALMxEmK2fnw==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-1.24.0.tgz", + "integrity": "sha512-G0q8aZPUhRtO/iw2BkjHeNqCMBf0JQX5VqqiPWXn9u5iRkpeQ6LZrGaiymKWOdEqtXCgM44yrCY/4WoJqR0bjQ==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" }, "engines": { "node": ">=14" @@ -8896,9 +8896,9 @@ } }, "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.23.0.tgz", - "integrity": "sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.0.tgz", + "integrity": "sha512-yL0jI6Ltuz8R+Opj7jClGrul6pOoYrdfVmzQS4SITXRPH7I5IRZbrwe/6/v8v4WYMa6MYZG480S1+uc/IGfqsA==", "engines": { "node": ">=14" } @@ -36778,9 +36778,9 @@ "dependencies": { "@opentelemetry/core": "^1.0.0", "@opentelemetry/exporter-jaeger": "^1.3.1", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-node": "^0.50.0", + "@opentelemetry/sdk-node": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0" @@ -36802,7 +36802,7 @@ "version": "0.2.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "^0.50.0", + "@opentelemetry/api-logs": "^0.51.0", "winston-transport": "4.*" }, "devDependencies": { @@ -36833,7 +36833,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { @@ -36872,7 +36872,7 @@ "version": "0.5.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -36939,7 +36939,7 @@ "version": "0.8.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -36969,7 +36969,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -36999,7 +36999,7 @@ "version": "0.36.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -37035,7 +37035,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { @@ -37071,7 +37071,7 @@ "version": "0.3.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -37111,7 +37111,7 @@ "version": "0.38.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -37360,7 +37360,7 @@ "version": "0.9.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/tedious": "^4.0.10" }, @@ -37392,7 +37392,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "devDependencies": { "@opentelemetry/api": "^1.7.0", @@ -37423,7 +37423,7 @@ "version": "0.40.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/propagator-aws-xray": "^1.3.1", "@opentelemetry/resources": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -37456,7 +37456,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/propagation-utils": "^0.30.8", "@opentelemetry/semantic-conventions": "^1.22.0" }, @@ -37503,14 +37503,14 @@ "version": "0.37.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "^0.50.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/api-logs": "^0.51.0", + "@opentelemetry/instrumentation": "^0.51.0", "@types/bunyan": "1.8.9" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-logs": "^0.50.0", + "@opentelemetry/sdk-logs": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -37546,7 +37546,7 @@ "version": "0.37.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -37580,7 +37580,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/connect": "3.4.36" }, @@ -37618,7 +37618,7 @@ "version": "0.35.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0", "semver": "^7.5.4" }, @@ -37652,7 +37652,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { @@ -37687,7 +37687,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { @@ -37695,7 +37695,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation-http": "^0.50.0", + "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/express": "4.17.18", @@ -37735,7 +37735,7 @@ "version": "0.35.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -37800,7 +37800,7 @@ "version": "0.39.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -37835,7 +37835,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/hapi__hapi": "20.0.13" }, @@ -37866,7 +37866,7 @@ "version": "0.39.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/semantic-conventions": "^1.0.0" }, @@ -37902,7 +37902,7 @@ "version": "0.35.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { @@ -37933,7 +37933,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/koa": "2.14.0", "@types/koa__router": "12.0.3" @@ -37943,7 +37943,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation-http": "^0.50.0", + "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -37970,7 +37970,7 @@ "version": "0.35.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/memcached": "^2.2.6" }, @@ -38002,7 +38002,7 @@ "version": "0.42.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-metrics": "^1.9.1", "@opentelemetry/semantic-conventions": "^1.22.0" }, @@ -38196,7 +38196,7 @@ "version": "0.37.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mysql": "2.15.22" }, @@ -38229,7 +38229,7 @@ "version": "0.37.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@opentelemetry/sql-common": "^0.40.0" }, @@ -38295,7 +38295,7 @@ "version": "0.36.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -38368,7 +38368,7 @@ "version": "0.35.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -38398,7 +38398,7 @@ "version": "0.40.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@opentelemetry/sql-common": "^0.40.0", "@types/pg": "8.6.1", @@ -38437,7 +38437,7 @@ "version": "0.37.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -38504,7 +38504,7 @@ "version": "0.38.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/semantic-conventions": "^1.22.0" }, @@ -38538,7 +38538,7 @@ "version": "0.38.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/semantic-conventions": "^1.22.0" }, @@ -38587,7 +38587,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { @@ -38653,7 +38653,7 @@ "version": "0.36.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { @@ -38682,8 +38682,8 @@ "version": "0.36.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "^0.50.0", - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/api-logs": "^0.51.0", + "@opentelemetry/instrumentation": "^0.51.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -38718,7 +38718,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.0.0", "@opentelemetry/sdk-trace-web": "^1.15.0", "@opentelemetry/semantic-conventions": "^1.22.0" @@ -38759,7 +38759,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-web": "^1.8.0" }, "devDependencies": { @@ -38805,7 +38805,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-web": "^1.8.0" }, "devDependencies": { @@ -38813,7 +38813,7 @@ "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-zone-peer-dep": "^1.8.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.50.0", + "@opentelemetry/instrumentation-xml-http-request": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/jquery": "3.5.20", "@types/mocha": "7.0.2", @@ -45463,9 +45463,9 @@ "integrity": "sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==" }, "@opentelemetry/api-logs": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.50.0.tgz", - "integrity": "sha512-JdZuKrhOYggqOpUljAq4WWNi5nB10PmgoF0y2CvedLGXd0kSawb/UBnWT8gg1ND3bHCNHStAIVT0ELlxJJRqrA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.51.0.tgz", + "integrity": "sha512-m/jtfBPEIXS1asltl8fPQtO3Sb1qMpuL61unQajUmM8zIxeMF1AlqzWXM3QedcYgTTFiJCew5uJjyhpmqhc0+g==", "requires": { "@opentelemetry/api": "^1.0.0" } @@ -45474,7 +45474,7 @@ "version": "file:metapackages/auto-instrumentations-node", "requires": { "@opentelemetry/api": "^1.4.1", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/instrumentation-amqplib": "^0.36.0", "@opentelemetry/instrumentation-aws-lambda": "^0.40.0", "@opentelemetry/instrumentation-aws-sdk": "^0.40.0", @@ -45489,9 +45489,9 @@ "@opentelemetry/instrumentation-fs": "^0.11.0", "@opentelemetry/instrumentation-generic-pool": "^0.35.0", "@opentelemetry/instrumentation-graphql": "^0.39.0", - "@opentelemetry/instrumentation-grpc": "^0.50.0", + "@opentelemetry/instrumentation-grpc": "^0.51.0", "@opentelemetry/instrumentation-hapi": "^0.36.0", - "@opentelemetry/instrumentation-http": "^0.50.0", + "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/instrumentation-ioredis": "^0.39.0", "@opentelemetry/instrumentation-knex": "^0.35.0", "@opentelemetry/instrumentation-koa": "^0.39.0", @@ -45517,7 +45517,7 @@ "@opentelemetry/resource-detector-container": "^0.3.8", "@opentelemetry/resource-detector-gcp": "^0.29.8", "@opentelemetry/resources": "^1.12.0", - "@opentelemetry/sdk-node": "^0.50.0", + "@opentelemetry/sdk-node": "^0.51.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -45535,11 +45535,11 @@ "@babel/core": "7.22.17", "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/instrumentation-document-load": "^0.37.0", - "@opentelemetry/instrumentation-fetch": "^0.50.0", + "@opentelemetry/instrumentation-fetch": "^0.51.0", "@opentelemetry/instrumentation-user-interaction": "^0.37.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.50.0", + "@opentelemetry/instrumentation-xml-http-request": "^0.51.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -45572,24 +45572,24 @@ } }, "@opentelemetry/context-async-hooks": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.23.0.tgz", - "integrity": "sha512-wazGJZDRevibOJ+VgyrT+9+8sybZAxpZx2G7vy30OAtk92OpZCg7HgNxT11NUx0VBDWcRx1dOatMYGOVplQ7QA==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.24.0.tgz", + "integrity": "sha512-s7xaQ9ifDpJvwbWRLkZD/J5hY35w+MECm4TQUkg6szRcny9lf6oVhWij4w3JJFQgvHQMXU7oXOpX8Z05HxV/8g==", "requires": {} }, "@opentelemetry/context-zone": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone/-/context-zone-1.23.0.tgz", - "integrity": "sha512-7piNTrpH+gZNMDDOHIJXCSwp0Xslh3R96HWH5HwXw+4PykR4+jVoXvd6jziQxudX9rFAfu2B64A10DHs4ZWrfA==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone/-/context-zone-1.24.0.tgz", + "integrity": "sha512-Znb6fvmqZy+4ZC63vvf9qktXakTlLOLeBsMizR5E1G/1cM8LKUVR/JJUws+A4QSAY95Rzldi05aqxoc+YUVVKw==", "requires": { - "@opentelemetry/context-zone-peer-dep": "1.23.0", + "@opentelemetry/context-zone-peer-dep": "1.24.0", "zone.js": "^0.11.0 || ^0.13.0 || ^0.14.0" } }, "@opentelemetry/context-zone-peer-dep": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-1.23.0.tgz", - "integrity": "sha512-3ia5w2y3CGHIhMSggttliGbeRBWclIyMMXdfRCcit1NHg1ocieA9qYxyUEetbOvPrQpoti3O3k+5eyQUv7r8nw==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-1.24.0.tgz", + "integrity": "sha512-znNlicjfxRqepQdOZGUN3RYSs+QGoEiGI+cjILBYM4KdEXpoXgxt87l72b0UYhH7YI/uK0TVHse99D0ER9ODAw==", "requires": {} }, "@opentelemetry/contrib-test-utils": { @@ -45598,9 +45598,9 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/core": "^1.0.0", "@opentelemetry/exporter-jaeger": "^1.3.1", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-node": "^0.50.0", + "@opentelemetry/sdk-node": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -45609,71 +45609,71 @@ } }, "@opentelemetry/core": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.23.0.tgz", - "integrity": "sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.0.tgz", + "integrity": "sha512-FP2oN7mVPqcdxJDTTnKExj4mi91EH+DNuArKfHTjPuJWe2K1JfMIVXNfahw1h3onJxQnxS8K0stKkogX05s+Aw==", "requires": { - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/semantic-conventions": "1.24.0" } }, "@opentelemetry/exporter-jaeger": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.23.0.tgz", - "integrity": "sha512-9GjZPS9kR4nC0ApOFQtj2xwYAGhQ3bO6KPx27DLqCOiso27OlJVUgvAtB3i+1On23OTcjfPtKbNo4a2npmV27A==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.24.0.tgz", + "integrity": "sha512-mD28eBrdth937QGU6zgn+6fYBywUaYxLJwANREnE7XS8pHP/Hjxpiy4nb9yIzQ2DqC8Uq7yEnc8ah2pH45B9ZQ==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0", "jaeger-client": "^3.15.0" } }, "@opentelemetry/exporter-trace-otlp-grpc": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.50.0.tgz", - "integrity": "sha512-w/NF4TrwHxx+Uz1M0rCOSVr6KgcoQPv3zF9JRqcebY2euD7ddWnLP0hE8JavyA1uq4UchnMp9faAk9n7hTCePw==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.51.0.tgz", + "integrity": "sha512-xQpxKzS8ZnxYCa1v+3EKWhwMrSK3+RezpJ+AEKaP2pf2QbLfHt7kKfSn7niR2u3A1Tbe2aC7Ptt9+MafhThOOQ==", "requires": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.23.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.50.0", - "@opentelemetry/otlp-transformer": "0.50.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.51.0", + "@opentelemetry/otlp-transformer": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" } }, "@opentelemetry/exporter-trace-otlp-http": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.50.0.tgz", - "integrity": "sha512-L7OtIMT7MsFqkmhbQlPBGRXt7152VN5esHpQEJYIBFedOEo3Da+yHpu5ojMZtPzpIvSpB5Xr5lnJUjJCbkttCA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.51.0.tgz", + "integrity": "sha512-zODqnLZmPOxj9CarFv0TrVlx9mgj0TfCMCiUiTdNi9iA2rgdKVo+bjJjpYF6LCTJOQCR5TScAUCKyzwkgDI+iA==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/otlp-exporter-base": "0.50.0", - "@opentelemetry/otlp-transformer": "0.50.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", + "@opentelemetry/otlp-transformer": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" } }, "@opentelemetry/exporter-trace-otlp-proto": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.50.0.tgz", - "integrity": "sha512-vavD9Ow6yOLiD+ocuS/oeciCsXNdsN41aYUrEljNaLXogvnkfMhJ+JLAhOnRSpzlVtRp7Ciw2BYGdYSebR0OsA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.51.0.tgz", + "integrity": "sha512-Fi7r0iMqGoFCQQ+WY0pYOWp395vdinZJIkYKnNbnreHxAN/kVDBl2FxbV3DeOKuRxEY08Gyb9ggPf+Zrqp7l/w==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/otlp-exporter-base": "0.50.0", - "@opentelemetry/otlp-proto-exporter-base": "0.50.0", - "@opentelemetry/otlp-transformer": "0.50.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", + "@opentelemetry/otlp-proto-exporter-base": "0.51.0", + "@opentelemetry/otlp-transformer": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" } }, "@opentelemetry/exporter-zipkin": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.23.0.tgz", - "integrity": "sha512-2LOGvNUGONuIcWhynFaJorVyqv03uZkURScciLmOxvBf2lWTNPEj77br1dCpShIWBM+YlrH7Tc+JXAs+GC7DqA==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.24.0.tgz", + "integrity": "sha512-QeGv0PHONswmu567pf9QliJ6s6DgCu5+ziF+soNS1LTcr1VRRVLViYLmGxmzDFUC48sjNTu7sumcKT0nJXsGBw==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" } }, "@opentelemetry/host-metrics": { @@ -45736,11 +45736,11 @@ } }, "@opentelemetry/instrumentation": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.50.0.tgz", - "integrity": "sha512-bhGhbJiZKpuu7wTaSak4hyZcFPlnDeuSF/2vglze8B4w2LubcSbbOnkVTzTs5SXtzh4Xz8eRjaNnAm+u2GYufQ==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.51.0.tgz", + "integrity": "sha512-Eg/+Od5bEvzpvZQGhvMyKIkrzB9S7jW+6z9LHEI2VXhl/GrqQ3oBqlzJt4tA6pGtxRmqQWKWGM1wAbwDdW/gUA==", "requires": { - "@opentelemetry/api-logs": "0.50.0", + "@opentelemetry/api-logs": "0.51.0", "@types/shimmer": "^1.0.2", "import-in-the-middle": "1.7.1", "require-in-the-middle": "^7.1.1", @@ -45754,7 +45754,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/amqplib": "^0.5.17", "@types/lodash": "4.14.199", @@ -45785,7 +45785,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/propagator-aws-xray": "^1.3.1", "@opentelemetry/resources": "^1.8.0", "@opentelemetry/sdk-metrics": "^1.8.0", @@ -45814,7 +45814,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/propagation-utils": "^0.30.8", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -45846,10 +45846,10 @@ "version": "file:plugins/node/opentelemetry-instrumentation-bunyan", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/api-logs": "^0.50.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/api-logs": "^0.51.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-logs": "^0.50.0", + "@opentelemetry/sdk-logs": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -45883,7 +45883,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -45906,7 +45906,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -45937,7 +45937,7 @@ "@cucumber/cucumber": "^9.0.0", "@opentelemetry/api": "^1.0.0", "@opentelemetry/core": "^1.3.1", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.3.1", "@opentelemetry/sdk-trace-node": "^1.3.1", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -45986,7 +45986,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -46005,7 +46005,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46030,7 +46030,7 @@ "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.0.0", "@opentelemetry/sdk-trace-web": "^1.15.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46063,7 +46063,7 @@ "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46089,8 +46089,8 @@ "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/instrumentation-http": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", + "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46123,14 +46123,14 @@ } }, "@opentelemetry/instrumentation-fetch": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.50.0.tgz", - "integrity": "sha512-CayteluGJbrfDvzEFQ0EWqLFkNAcO9H7nfDHptZjtonBpJRWF170XZoMkJVC2bxp0lIVwyuw6WlnGVRSNwEtKA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.51.0.tgz", + "integrity": "sha512-dB9wisB2+wyh0wUB1RFNinCS4TqJ7QMVc4jNzy3JCMJudwFWI/stU10DgZ3vwFQNUEBUIz9QmEQSFud7lsvB2w==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/instrumentation": "0.50.0", - "@opentelemetry/sdk-trace-web": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/instrumentation": "0.51.0", + "@opentelemetry/sdk-trace-web": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" } }, "@opentelemetry/instrumentation-fs": { @@ -46139,7 +46139,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/resources": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -46159,7 +46159,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46206,7 +46206,7 @@ "version": "file:plugins/node/opentelemetry-instrumentation-graphql", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.3.1", "@types/mocha": "8.2.3", @@ -46229,12 +46229,12 @@ } }, "@opentelemetry/instrumentation-grpc": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.50.0.tgz", - "integrity": "sha512-/ZFuvHtrHyxfRJX5CJ8yPKokAIcvTbIJAoR4AN+gBq1YqecWuCr4XG52p5YU5qDrbwOBtShOrC8d4GdFZOky6Q==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.51.0.tgz", + "integrity": "sha512-Wfhs9e1Hi4nnULLqzt9s2M6+Tz52EkKj6uZnj9ZL3coldlZiP+WmvuUNepds7jcBJg/qDBjnEe96fThPuO7ddA==", "requires": { - "@opentelemetry/instrumentation": "0.50.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/instrumentation": "0.51.0", + "@opentelemetry/semantic-conventions": "1.24.0" } }, "@opentelemetry/instrumentation-hapi": { @@ -46244,7 +46244,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46260,13 +46260,13 @@ } }, "@opentelemetry/instrumentation-http": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.50.0.tgz", - "integrity": "sha512-bsd6Nv0FtN9C6M6vX/kgPzvJY9UhJc4CZZNvqDbsfVQv3/MWvPrYgthf41AhrehqeDnpfn/QGzNKtdWUduGanQ==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.51.0.tgz", + "integrity": "sha512-6VsGPBnU6iVKWhVBnuRpwrmiHfxt8EYrqfnH2glfsMpsn4xy+O6U0yGlggPLhoYeOVafV3h70EEk5MU0tpsbiw==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/instrumentation": "0.50.0", - "@opentelemetry/semantic-conventions": "1.23.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/instrumentation": "0.51.0", + "@opentelemetry/semantic-conventions": "1.24.0", "semver": "^7.5.2" } }, @@ -46276,7 +46276,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -46301,7 +46301,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46324,8 +46324,8 @@ "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/instrumentation-http": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", + "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46351,7 +46351,7 @@ "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-web": "^1.8.0", "@types/jquery": "3.5.20", @@ -46385,7 +46385,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@types/lru-cache": "7.10.9", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -46413,7 +46413,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46435,7 +46435,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-metrics": "^1.9.1", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -46565,7 +46565,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", @@ -46594,7 +46594,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-metrics": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46617,7 +46617,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@opentelemetry/sql-common": "^0.40.0", @@ -46670,7 +46670,7 @@ "@nestjs/websockets": "9.4.3", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46721,7 +46721,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46742,7 +46742,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46771,7 +46771,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -46821,7 +46821,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -46846,7 +46846,7 @@ "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -46885,7 +46885,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46934,7 +46934,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46952,7 +46952,7 @@ "version": "file:plugins/node/instrumentation-runtime-node", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-metrics": "^1.20.0", "@types/mocha": "^10.0.6", "@types/node": "^20.11.2", @@ -46985,7 +46985,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/mocha": "8.2.3", @@ -47178,7 +47178,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/mocha": "7.0.2", @@ -47198,7 +47198,7 @@ "requires": { "@opentelemetry/api": "^1.7.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-metrics": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -47223,8 +47223,8 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-zone-peer-dep": "^1.8.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", + "@opentelemetry/instrumentation-xml-http-request": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-web": "^1.8.0", "@types/jquery": "3.5.20", @@ -47257,9 +47257,9 @@ "version": "file:plugins/node/opentelemetry-instrumentation-winston", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/api-logs": "^0.50.0", + "@opentelemetry/api-logs": "^0.51.0", "@opentelemetry/context-async-hooks": "^1.21.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.21.0", "@opentelemetry/sdk-trace-node": "^1.21.0", "@opentelemetry/winston-transport": "^0.2.0", @@ -47279,56 +47279,56 @@ } }, "@opentelemetry/instrumentation-xml-http-request": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.50.0.tgz", - "integrity": "sha512-o9z6SDQByqc3GvmUcy6Npt/SAIrv2Pk0Hm0Hl54B3Ny8WUrTsrlt6MULx8d+EjuifE4uVo8op8DekmvKJ1FHoQ==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.51.0.tgz", + "integrity": "sha512-KgLO2qx1z1Wn9NeJgrgNukd10ssK1QqxODwdeBJFO1BaP9sVVargpupYowlDKUL5I3oWOEqi/Oxxdh/fbEsJtw==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/instrumentation": "0.50.0", - "@opentelemetry/sdk-trace-web": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/instrumentation": "0.51.0", + "@opentelemetry/sdk-trace-web": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" } }, "@opentelemetry/otlp-exporter-base": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.50.0.tgz", - "integrity": "sha512-JUmjmrCmE1/fc4LjCQMqLfudgSl5OpUkzx7iA94b4jgeODM7zWxUoVXL7/CT7fWf47Cn+pmKjMvTCSESqZZ3mA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.51.0.tgz", + "integrity": "sha512-hR4c9vWVz1QgzCBSyy9zSDkvfTgaK96E6/tfVP6O4dzdZW9HqWimA3lXV/KXadEGqShvM4GToz9EHp2A5RU5bQ==", "requires": { - "@opentelemetry/core": "1.23.0" + "@opentelemetry/core": "1.24.0" } }, "@opentelemetry/otlp-grpc-exporter-base": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.50.0.tgz", - "integrity": "sha512-J500AczSD7xEsjXpwNzSh5HQqxW73PT3CCNsi1VEWCE+8UPgVfkHYIGRHGoch35DV+CMe1svbi7gAk3e5eCSVA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.51.0.tgz", + "integrity": "sha512-oTRtDvvB0bTRTBVrvKA/oM1gIAqQ6DVQS07pvqiL1cZS8wBrGgpw+2iTd0nV661Y/MhDn/kNWp8lRhMEIKN9bw==", "requires": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.23.0", - "@opentelemetry/otlp-exporter-base": "0.50.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", "protobufjs": "^7.2.3" } }, "@opentelemetry/otlp-proto-exporter-base": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.50.0.tgz", - "integrity": "sha512-hlbn3eZbhxoK79Sq1ddj1f7qcx+PzsPQC/SFpJvaWgTaqacCbqJmpzWDKfRRCAC7iGX2Hj/sgpf8vysazqyMOw==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.51.0.tgz", + "integrity": "sha512-WDANDLSUh11Gu5o6iCzmjZraIv5bK8z1L/t6lxQ2NeEKiKUPo5pVOBBQQC/yAQU2yeqkiO1GRCieH+XahZf60A==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/otlp-exporter-base": "0.50.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", "protobufjs": "^7.2.3" } }, "@opentelemetry/otlp-transformer": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.50.0.tgz", - "integrity": "sha512-s0sl1Yfqd5q1Kjrf6DqXPWzErL+XHhrXOfejh4Vc/SMTNqC902xDsC8JQxbjuramWt/+hibfguIvi7Ns8VLolA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.51.0.tgz", + "integrity": "sha512-ylLgx2xumVoSefDHP9GMAU/LG+TU3+8eacVDXV5o1RqWxsdVOaQmCTY0XyDgeRTn6hIOVAq/HHQbRq3iWOrt2A==", "requires": { - "@opentelemetry/api-logs": "0.50.0", - "@opentelemetry/core": "1.23.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-logs": "0.50.0", - "@opentelemetry/sdk-metrics": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0" + "@opentelemetry/api-logs": "0.51.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-logs": "0.51.0", + "@opentelemetry/sdk-metrics": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" } }, "@opentelemetry/plugin-react-load": { @@ -47398,19 +47398,19 @@ } }, "@opentelemetry/propagator-aws-xray": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-aws-xray/-/propagator-aws-xray-1.3.1.tgz", - "integrity": "sha512-6fDMzFlt5r6VWv7MUd0eOpglXPFqykW8CnOuUxJ1VZyLy6mV1bzBlzpsqEmhx1bjvZYvH93vhGkQZqrm95mlrQ==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-aws-xray/-/propagator-aws-xray-1.24.0.tgz", + "integrity": "sha512-rcuMtEOTZC7TW84tws1QLUVRElrGSbBJwK0b+qa56zJULDiUIiUpS+dSzO+aUchg7MtTJBZSG5OPsfsKpGgNig==", "requires": { - "@opentelemetry/core": "^1.0.0" + "@opentelemetry/core": "1.24.0" } }, "@opentelemetry/propagator-b3": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.23.0.tgz", - "integrity": "sha512-cZ6rl8y2bdxYQ4e+zP2CQ+QmuPebaLBLO1skjFpj3eEu7zar+6hBzUP3llMOUupkQeQSwXz+4c8dZ26OhYfG/g==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.24.0.tgz", + "integrity": "sha512-7TMIDE4+NO5vnkor+zned42wqca+hmhW5gWKhmYjUHC5B5uojo1PvtmBrd7kigFu96XvL4ZUWVzibWRWIQ/++Q==", "requires": { - "@opentelemetry/core": "1.23.0" + "@opentelemetry/core": "1.24.0" } }, "@opentelemetry/propagator-grpc-census-binary": { @@ -47600,11 +47600,11 @@ } }, "@opentelemetry/propagator-jaeger": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.23.0.tgz", - "integrity": "sha512-6iArixfgIl3ZgzeltQ5jyiKbjZygM+MbM84pXi1HL0Qs4x4Ck5rM6wEtjhZffFnlDMWEkEqrnM0xF6bTfbiMAQ==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.24.0.tgz", + "integrity": "sha512-r3MX3AmJiUeiWTXSDOdwBeaO+ahvWcFCpuKxmhhsH8Q8LqDnjhNd3krqBh4Qsq9wa0WhWtiQaDs/NOCWoMOlOw==", "requires": { - "@opentelemetry/core": "1.23.0" + "@opentelemetry/core": "1.24.0" } }, "@opentelemetry/propagator-ot-trace": { @@ -47823,7 +47823,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/resources": "^1.0.0", - "@opentelemetry/sdk-node": "^0.50.0", + "@opentelemetry/sdk-node": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -47845,90 +47845,90 @@ } }, "@opentelemetry/resources": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.23.0.tgz", - "integrity": "sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.24.0.tgz", + "integrity": "sha512-mxC7E7ocUS1tLzepnA7O9/G8G6ZTdjCH2pXme1DDDuCuk6n2/53GADX+GWBuyX0dfIxeMInIbJAdjlfN9GNr6A==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" } }, "@opentelemetry/sdk-logs": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.50.0.tgz", - "integrity": "sha512-PeUEupBB29p9nlPNqXoa1PUWNLsZnxG0DCDj3sHqzae+8y76B/A5hvZjg03ulWdnvBLYpnJslqzylG9E0IL87g==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.51.0.tgz", + "integrity": "sha512-K4fMBRFD8hQ6khk0rvYFuo6L9ymeGgByir6BcuFIgQuQ00OhYwBi9AruZz5V733Ejq7P8ObR3YyubkOUIbeVAw==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/resources": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0" } }, "@opentelemetry/sdk-metrics": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.23.0.tgz", - "integrity": "sha512-4OkvW6+wST4h6LFG23rXSTf6nmTf201h9dzq7bE0z5R9ESEVLERZz6WXwE7PSgg1gdjlaznm1jLJf8GttypFDg==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.24.0.tgz", + "integrity": "sha512-4tJ+E6N019OZVB/nUW/LoK9xHxfeh88TCoaTqHeLBE9wLYfi6irWW6J9cphMav7J8Qk0D5b7/RM4VEY4dArWOA==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/resources": "1.23.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", "lodash.merge": "^4.6.2" } }, "@opentelemetry/sdk-node": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.50.0.tgz", - "integrity": "sha512-LhIXHnvcnhRYcPwG9VG4G6lJ7x4ElYF6UYHHmXA7e4ZWzSUEFmAPfR1IBWv358aD1KwffcEBu7J6zeAR7lPZag==", - "requires": { - "@opentelemetry/api-logs": "0.50.0", - "@opentelemetry/core": "1.23.0", - "@opentelemetry/exporter-trace-otlp-grpc": "0.50.0", - "@opentelemetry/exporter-trace-otlp-http": "0.50.0", - "@opentelemetry/exporter-trace-otlp-proto": "0.50.0", - "@opentelemetry/exporter-zipkin": "1.23.0", - "@opentelemetry/instrumentation": "0.50.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-logs": "0.50.0", - "@opentelemetry/sdk-metrics": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0", - "@opentelemetry/sdk-trace-node": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.51.0.tgz", + "integrity": "sha512-MrPXDQsTAj3lcY8YUCjb7dvSXVZ5jG6wmjD2LB68V1rsLBdP8j70jsI9GaKijY7QB6psbLq6apO1vYeim5U7aw==", + "requires": { + "@opentelemetry/api-logs": "0.51.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.51.0", + "@opentelemetry/exporter-trace-otlp-http": "0.51.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.51.0", + "@opentelemetry/exporter-zipkin": "1.24.0", + "@opentelemetry/instrumentation": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-logs": "0.51.0", + "@opentelemetry/sdk-metrics": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "@opentelemetry/sdk-trace-node": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" } }, "@opentelemetry/sdk-trace-base": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.23.0.tgz", - "integrity": "sha512-PzBmZM8hBomUqvCddF/5Olyyviayka44O5nDWq673np3ctnvwMOvNrsUORZjKja1zJbwEuD9niAGbnVrz3jwRQ==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.24.0.tgz", + "integrity": "sha512-H9sLETZ4jw9UJ3totV8oM5R0m4CW0ZIOLfp4NV3g0CM8HD5zGZcaW88xqzWDgiYRpctFxd+WmHtGX/Upoa2vRg==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" } }, "@opentelemetry/sdk-trace-node": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.23.0.tgz", - "integrity": "sha512-dwnin5Go2r6VzJZkVc9JBPupssWp7j2EFto+S7qRkwQ00WDykWeq3x2Skk7I1Jr448FeBSvGCQVPgV5e6s6O3w==", - "requires": { - "@opentelemetry/context-async-hooks": "1.23.0", - "@opentelemetry/core": "1.23.0", - "@opentelemetry/propagator-b3": "1.23.0", - "@opentelemetry/propagator-jaeger": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.24.0.tgz", + "integrity": "sha512-QgByHmM9uloTpcYEEyW9YJEIMKHFSIM677RH9pJPWWwtM2NQFbEp/8HIJw80Ymtaz6cAxg1Kay1ByqIVzq3t5g==", + "requires": { + "@opentelemetry/context-async-hooks": "1.24.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/propagator-b3": "1.24.0", + "@opentelemetry/propagator-jaeger": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", "semver": "^7.5.2" } }, "@opentelemetry/sdk-trace-web": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-1.23.0.tgz", - "integrity": "sha512-tx9N3hIkd6k567BeujBnpXYdhu3ptYVk0ZkhdcjyQ3I8ZDJ+/JkVtaVNLAuf8hp1buTqNDmxSipALMxEmK2fnw==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-1.24.0.tgz", + "integrity": "sha512-G0q8aZPUhRtO/iw2BkjHeNqCMBf0JQX5VqqiPWXn9u5iRkpeQ6LZrGaiymKWOdEqtXCgM44yrCY/4WoJqR0bjQ==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" } }, "@opentelemetry/semantic-conventions": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.23.0.tgz", - "integrity": "sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg==" + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.0.tgz", + "integrity": "sha512-yL0jI6Ltuz8R+Opj7jClGrul6pOoYrdfVmzQS4SITXRPH7I5IRZbrwe/6/v8v4WYMa6MYZG480S1+uc/IGfqsA==" }, "@opentelemetry/sql-common": { "version": "file:packages/opentelemetry-sql-common", @@ -47946,7 +47946,7 @@ "@opentelemetry/winston-transport": { "version": "file:packages/winston-transport", "requires": { - "@opentelemetry/api-logs": "^0.50.0", + "@opentelemetry/api-logs": "^0.51.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", diff --git a/packages/opentelemetry-test-utils/package.json b/packages/opentelemetry-test-utils/package.json index 0b77a8acbf..6b54001eb8 100644 --- a/packages/opentelemetry-test-utils/package.json +++ b/packages/opentelemetry-test-utils/package.json @@ -46,9 +46,9 @@ "dependencies": { "@opentelemetry/core": "^1.0.0", "@opentelemetry/exporter-jaeger": "^1.3.1", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-node": "^0.50.0", + "@opentelemetry/sdk-node": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0" diff --git a/packages/winston-transport/package.json b/packages/winston-transport/package.json index 485dfea31e..d7ffe927ec 100644 --- a/packages/winston-transport/package.json +++ b/packages/winston-transport/package.json @@ -50,7 +50,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/api-logs": "^0.50.0", + "@opentelemetry/api-logs": "^0.51.0", "winston-transport": "4.*" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/winston-transport#readme" diff --git a/plugins/node/instrumentation-amqplib/package.json b/plugins/node/instrumentation-amqplib/package.json index 5b7202cf4a..612a6a3aab 100644 --- a/plugins/node/instrumentation-amqplib/package.json +++ b/plugins/node/instrumentation-amqplib/package.json @@ -45,7 +45,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { diff --git a/plugins/node/instrumentation-cucumber/package.json b/plugins/node/instrumentation-cucumber/package.json index 0fce8819e6..b6f31c16ce 100644 --- a/plugins/node/instrumentation-cucumber/package.json +++ b/plugins/node/instrumentation-cucumber/package.json @@ -62,7 +62,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-cucumber#readme" diff --git a/plugins/node/instrumentation-cucumber/src/instrumentation.ts b/plugins/node/instrumentation-cucumber/src/instrumentation.ts index 5ea3305db2..4633707e33 100644 --- a/plugins/node/instrumentation-cucumber/src/instrumentation.ts +++ b/plugins/node/instrumentation-cucumber/src/instrumentation.ts @@ -48,12 +48,12 @@ export class CucumberInstrumentation extends InstrumentationBase { super('@opentelemetry/instrumentation-cucumber', VERSION, config); } - init(): InstrumentationNodeModuleDefinition[] { + init(): InstrumentationNodeModuleDefinition[] { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( '@cucumber/cucumber', ['^8.0.0', '^9.0.0', '^10.0.0'], - (moduleExports, moduleVersion) => { + (moduleExports: Cucumber, moduleVersion) => { this._diag.debug( `Applying patch for @cucumber/cucumber@${moduleVersion}` ); @@ -72,7 +72,7 @@ export class CucumberInstrumentation extends InstrumentationBase { }); return moduleExports; }, - (moduleExports, moduleVersion) => { + (moduleExports: Cucumber, moduleVersion) => { if (moduleExports === undefined) return; this._diag.debug( `Removing patch for @cucumber/cucumber@${moduleVersion}` @@ -82,9 +82,7 @@ export class CucumberInstrumentation extends InstrumentationBase { }); }, [ - new InstrumentationNodeModuleFile<{ - default: { new (): TestCaseRunner; prototype: TestCaseRunner }; - }>( + new InstrumentationNodeModuleFile( '@cucumber/cucumber/lib/runtime/test_case_runner.js', ['^8.0.0', '^9.0.0', '^10.0.0'], (moduleExports, moduleVersion) => { diff --git a/plugins/node/instrumentation-dataloader/package.json b/plugins/node/instrumentation-dataloader/package.json index b9e234c949..8c5ae9eb74 100644 --- a/plugins/node/instrumentation-dataloader/package.json +++ b/plugins/node/instrumentation-dataloader/package.json @@ -58,7 +58,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-dataloader#readme" } diff --git a/plugins/node/instrumentation-dataloader/src/instrumentation.ts b/plugins/node/instrumentation-dataloader/src/instrumentation.ts index 7264d031ae..75cfb03861 100644 --- a/plugins/node/instrumentation-dataloader/src/instrumentation.ts +++ b/plugins/node/instrumentation-dataloader/src/instrumentation.ts @@ -51,7 +51,7 @@ export class DataloaderInstrumentation extends InstrumentationBase { protected init() { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( MODULE_NAME, ['^2.0.0'], (dataloader, moduleVersion) => { @@ -73,8 +73,7 @@ export class DataloaderInstrumentation extends InstrumentationBase { this._unwrap(dataloader.prototype, 'loadMany'); } } - // cast it to module definition of unknown type to avoid exposing Dataloader types on public APIs - ) as InstrumentationNodeModuleDefinition, + ) as InstrumentationNodeModuleDefinition, ]; } diff --git a/plugins/node/instrumentation-fs/package.json b/plugins/node/instrumentation-fs/package.json index 72ad223de5..b79344d042 100644 --- a/plugins/node/instrumentation-fs/package.json +++ b/plugins/node/instrumentation-fs/package.json @@ -59,7 +59,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-fs#readme" } diff --git a/plugins/node/instrumentation-fs/src/instrumentation.ts b/plugins/node/instrumentation-fs/src/instrumentation.ts index 048b8d7b34..15da51a5ea 100644 --- a/plugins/node/instrumentation-fs/src/instrumentation.ts +++ b/plugins/node/instrumentation-fs/src/instrumentation.ts @@ -51,17 +51,17 @@ function patchedFunctionWithOriginalProperties< return Object.assign(patchedFunction, original); } -export default class FsInstrumentation extends InstrumentationBase { +export default class FsInstrumentation extends InstrumentationBase { constructor(config?: FsInstrumentationConfig) { super('@opentelemetry/instrumentation-fs', VERSION, config); } init(): ( - | InstrumentationNodeModuleDefinition - | InstrumentationNodeModuleDefinition + | InstrumentationNodeModuleDefinition + | InstrumentationNodeModuleDefinition )[] { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'fs', ['*'], (fs: FS) => { @@ -133,7 +133,7 @@ export default class FsInstrumentation extends InstrumentationBase { } } ), - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'fs/promises', ['*'], (fsPromises: FSPromises) => { diff --git a/plugins/node/instrumentation-lru-memoizer/package.json b/plugins/node/instrumentation-lru-memoizer/package.json index 25e412b828..6ceef239a4 100644 --- a/plugins/node/instrumentation-lru-memoizer/package.json +++ b/plugins/node/instrumentation-lru-memoizer/package.json @@ -57,7 +57,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-lru-memoizer#readme" } diff --git a/plugins/node/instrumentation-lru-memoizer/src/instrumentation.ts b/plugins/node/instrumentation-lru-memoizer/src/instrumentation.ts index b26d9468a3..c901a500a5 100644 --- a/plugins/node/instrumentation-lru-memoizer/src/instrumentation.ts +++ b/plugins/node/instrumentation-lru-memoizer/src/instrumentation.ts @@ -27,9 +27,9 @@ export default class LruMemoizerInstrumentation extends InstrumentationBase { super('@opentelemetry/instrumentation-lru-memoizer', VERSION, config); } - init(): InstrumentationNodeModuleDefinition[] { + init(): InstrumentationNodeModuleDefinition[] { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'lru-memoizer', ['>=1.3 <3'], moduleExports => { diff --git a/plugins/node/instrumentation-mongoose/package.json b/plugins/node/instrumentation-mongoose/package.json index dbafc9af61..245fbc756c 100644 --- a/plugins/node/instrumentation-mongoose/package.json +++ b/plugins/node/instrumentation-mongoose/package.json @@ -61,7 +61,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-mongoose#readme" diff --git a/plugins/node/instrumentation-mongoose/src/mongoose.ts b/plugins/node/instrumentation-mongoose/src/mongoose.ts index 96bf8f3734..967a30ded1 100644 --- a/plugins/node/instrumentation-mongoose/src/mongoose.ts +++ b/plugins/node/instrumentation-mongoose/src/mongoose.ts @@ -57,7 +57,7 @@ const contextCaptureFunctions = [ // calls. this bypass the unlinked spans issue on thenables await operations. export const _STORED_PARENT_SPAN: unique symbol = Symbol('stored-parent-span'); -export class MongooseInstrumentation extends InstrumentationBase { +export class MongooseInstrumentation extends InstrumentationBase { protected override _config!: MongooseInstrumentationConfig; constructor(config: MongooseInstrumentationConfig = {}) { @@ -72,8 +72,8 @@ export class MongooseInstrumentation extends InstrumentationBase { this._config = Object.assign({}, config); } - protected init(): InstrumentationModuleDefinition { - const module = new InstrumentationNodeModuleDefinition( + protected init(): InstrumentationModuleDefinition { + const module = new InstrumentationNodeModuleDefinition( 'mongoose', ['>=5.9.7 <7'], this.patch.bind(this), diff --git a/plugins/node/instrumentation-runtime-node/package.json b/plugins/node/instrumentation-runtime-node/package.json index 80a1cc46bb..15b254afc7 100644 --- a/plugins/node/instrumentation-runtime-node/package.json +++ b/plugins/node/instrumentation-runtime-node/package.json @@ -39,7 +39,7 @@ "access": "public" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", diff --git a/plugins/node/instrumentation-socket.io/package.json b/plugins/node/instrumentation-socket.io/package.json index 11ab404b6b..8cffebd79a 100644 --- a/plugins/node/instrumentation-socket.io/package.json +++ b/plugins/node/instrumentation-socket.io/package.json @@ -58,7 +58,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-socket.io#readme" diff --git a/plugins/node/instrumentation-socket.io/src/socket.io.ts b/plugins/node/instrumentation-socket.io/src/socket.io.ts index db37e5c375..f5ef96df8f 100644 --- a/plugins/node/instrumentation-socket.io/src/socket.io.ts +++ b/plugins/node/instrumentation-socket.io/src/socket.io.ts @@ -50,7 +50,7 @@ const reservedEvents = [ 'removeListener', ]; -export class SocketIoInstrumentation extends InstrumentationBase { +export class SocketIoInstrumentation extends InstrumentationBase { protected override _config!: SocketIoInstrumentationConfig; constructor(config: SocketIoInstrumentationConfig = {}) { @@ -62,7 +62,7 @@ export class SocketIoInstrumentation extends InstrumentationBase { } protected init() { - const socketInstrumentation = new InstrumentationNodeModuleFile( + const socketInstrumentation = new InstrumentationNodeModuleFile( 'socket.io/dist/socket.js', ['>=3 <5'], (moduleExports, moduleVersion) => { @@ -102,38 +102,37 @@ export class SocketIoInstrumentation extends InstrumentationBase { } ); - const broadcastOperatorInstrumentation = - new InstrumentationNodeModuleFile( - 'socket.io/dist/broadcast-operator.js', - ['>=4 <5'], - (moduleExports, moduleVersion) => { - if (moduleExports === undefined || moduleExports === null) { - return moduleExports; - } - if (moduleVersion === undefined) { - return moduleExports; - } - this._diag.debug( - `applying patch to socket.io@${moduleVersion} StrictEventEmitter` - ); - if (isWrapped(moduleExports?.BroadcastOperator?.prototype?.emit)) { - this._unwrap(moduleExports.BroadcastOperator.prototype, 'emit'); - } - this._wrap( - moduleExports.BroadcastOperator.prototype, - 'emit', - this._patchEmit(moduleVersion) - ); + const broadcastOperatorInstrumentation = new InstrumentationNodeModuleFile( + 'socket.io/dist/broadcast-operator.js', + ['>=4 <5'], + (moduleExports, moduleVersion) => { + if (moduleExports === undefined || moduleExports === null) { return moduleExports; - }, - moduleExports => { - if (isWrapped(moduleExports?.BroadcastOperator?.prototype?.emit)) { - this._unwrap(moduleExports.BroadcastOperator.prototype, 'emit'); - } + } + if (moduleVersion === undefined) { return moduleExports; } - ); - const namespaceInstrumentation = new InstrumentationNodeModuleFile( + this._diag.debug( + `applying patch to socket.io@${moduleVersion} StrictEventEmitter` + ); + if (isWrapped(moduleExports?.BroadcastOperator?.prototype?.emit)) { + this._unwrap(moduleExports.BroadcastOperator.prototype, 'emit'); + } + this._wrap( + moduleExports.BroadcastOperator.prototype, + 'emit', + this._patchEmit(moduleVersion) + ); + return moduleExports; + }, + moduleExports => { + if (isWrapped(moduleExports?.BroadcastOperator?.prototype?.emit)) { + this._unwrap(moduleExports.BroadcastOperator.prototype, 'emit'); + } + return moduleExports; + } + ); + const namespaceInstrumentation = new InstrumentationNodeModuleFile( 'socket.io/dist/namespace.js', ['<4'], (moduleExports, moduleVersion) => { @@ -162,7 +161,7 @@ export class SocketIoInstrumentation extends InstrumentationBase { } } ); - const socketInstrumentationLegacy = new InstrumentationNodeModuleFile( + const socketInstrumentationLegacy = new InstrumentationNodeModuleFile( 'socket.io/lib/socket.js', ['2'], (moduleExports, moduleVersion) => { @@ -197,39 +196,38 @@ export class SocketIoInstrumentation extends InstrumentationBase { return moduleExports; } ); - const namespaceInstrumentationLegacy = - new InstrumentationNodeModuleFile( - 'socket.io/lib/namespace.js', - ['2'], - (moduleExports, moduleVersion) => { - if (moduleExports === undefined || moduleExports === null) { - return moduleExports; - } - if (moduleVersion === undefined) { - return moduleExports; - } - this._diag.debug( - `applying patch to socket.io@${moduleVersion} Namespace` - ); - if (isWrapped(moduleExports?.prototype?.emit)) { - this._unwrap(moduleExports.prototype, 'emit'); - } - this._wrap( - moduleExports.prototype, - 'emit', - this._patchEmit(moduleVersion) - ); + const namespaceInstrumentationLegacy = new InstrumentationNodeModuleFile( + 'socket.io/lib/namespace.js', + ['2'], + (moduleExports, moduleVersion) => { + if (moduleExports === undefined || moduleExports === null) { + return moduleExports; + } + if (moduleVersion === undefined) { return moduleExports; - }, - moduleExports => { - if (isWrapped(moduleExports?.prototype?.emit)) { - this._unwrap(moduleExports.prototype, 'emit'); - } } - ); + this._diag.debug( + `applying patch to socket.io@${moduleVersion} Namespace` + ); + if (isWrapped(moduleExports?.prototype?.emit)) { + this._unwrap(moduleExports.prototype, 'emit'); + } + this._wrap( + moduleExports.prototype, + 'emit', + this._patchEmit(moduleVersion) + ); + return moduleExports; + }, + moduleExports => { + if (isWrapped(moduleExports?.prototype?.emit)) { + this._unwrap(moduleExports.prototype, 'emit'); + } + } + ); return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'socket.io', ['>=3 <5'], (moduleExports, moduleVersion) => { @@ -264,7 +262,7 @@ export class SocketIoInstrumentation extends InstrumentationBase { socketInstrumentation, ] ), - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'socket.io', ['2'], (moduleExports, moduleVersion) => { diff --git a/plugins/node/instrumentation-tedious/package.json b/plugins/node/instrumentation-tedious/package.json index 0d73cf1922..b03962f166 100644 --- a/plugins/node/instrumentation-tedious/package.json +++ b/plugins/node/instrumentation-tedious/package.json @@ -62,7 +62,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/tedious": "^4.0.10" }, diff --git a/plugins/node/instrumentation-tedious/src/instrumentation.ts b/plugins/node/instrumentation-tedious/src/instrumentation.ts index 7484dd49fb..5415bae955 100644 --- a/plugins/node/instrumentation-tedious/src/instrumentation.ts +++ b/plugins/node/instrumentation-tedious/src/instrumentation.ts @@ -61,9 +61,7 @@ function setDatabase(this: ApproxConnection, databaseName: string) { }); } -export class TediousInstrumentation extends InstrumentationBase< - typeof tedious -> { +export class TediousInstrumentation extends InstrumentationBase { static readonly COMPONENT = 'tedious'; constructor(config?: TediousInstrumentationConfig) { @@ -72,10 +70,10 @@ export class TediousInstrumentation extends InstrumentationBase< protected init() { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( TediousInstrumentation.COMPONENT, ['>=1.11.0 <=15'], - (moduleExports: any, moduleVersion) => { + (moduleExports: typeof tedious, moduleVersion) => { this._diag.debug(`Patching tedious@${moduleVersion}`); const ConnectionPrototype: any = moduleExports.Connection.prototype; @@ -97,7 +95,7 @@ export class TediousInstrumentation extends InstrumentationBase< return moduleExports; }, - (moduleExports: any) => { + (moduleExports: typeof tedious) => { if (moduleExports === undefined) return; const ConnectionPrototype: any = moduleExports.Connection.prototype; for (const method of PATCHED_METHODS) { diff --git a/plugins/node/instrumentation-undici/package.json b/plugins/node/instrumentation-undici/package.json index fd21b60b47..10ed52a9fd 100644 --- a/plugins/node/instrumentation-undici/package.json +++ b/plugins/node/instrumentation-undici/package.json @@ -62,7 +62,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-undici#readme", "sideEffects": false diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json b/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json index 92b33aefc3..5fb1ef5f20 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json @@ -56,7 +56,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/propagator-aws-xray": "^1.3.1", "@opentelemetry/resources": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json b/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json index 8fb6a5620f..90154572fa 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json @@ -45,7 +45,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/propagation-utils": "^0.30.8", "@opentelemetry/semantic-conventions": "^1.22.0" }, diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts index b53241b0b5..186976a190 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts @@ -72,7 +72,7 @@ type V2PluginRequest = AWS.Request & { [REQUEST_SPAN_KEY]?: Span; }; -export class AwsInstrumentation extends InstrumentationBase { +export class AwsInstrumentation extends InstrumentationBase { static readonly component = 'aws-sdk'; protected override _config!: AwsSdkInstrumentationConfig; private servicesExtensions: ServicesExtensions = new ServicesExtensions(); @@ -89,7 +89,7 @@ export class AwsInstrumentation extends InstrumentationBase { this._config = Object.assign({}, config); } - protected init(): InstrumentationModuleDefinition[] { + protected init(): InstrumentationModuleDefinition[] { const v3MiddlewareStackFileOldVersions = new InstrumentationNodeModuleFile( '@aws-sdk/middleware-stack/dist/cjs/MiddlewareStack.js', ['>=3.1.0 <3.35.0'], @@ -106,12 +106,13 @@ export class AwsInstrumentation extends InstrumentationBase { // as for aws-sdk v3.13.1, constructStack is exported from @aws-sdk/middleware-stack as // getter instead of function, which fails shimmer. // so we are patching the MiddlewareStack.js file directly to get around it. - const v3MiddlewareStack = new InstrumentationNodeModuleDefinition< - typeof AWS - >('@aws-sdk/middleware-stack', ['^3.1.0'], undefined, undefined, [ - v3MiddlewareStackFileOldVersions, - v3MiddlewareStackFileNewVersions, - ]); + const v3MiddlewareStack = new InstrumentationNodeModuleDefinition( + '@aws-sdk/middleware-stack', + ['^3.1.0'], + undefined, + undefined, + [v3MiddlewareStackFileOldVersions, v3MiddlewareStackFileNewVersions] + ); // Patch for @smithy/middleware-stack for @aws-sdk/* packages v3.363.0+. // As of @smithy/middleware-stack@2.1.0 `constructStack` is only available @@ -133,7 +134,7 @@ export class AwsInstrumentation extends InstrumentationBase { } ); - const v3SmithyClient = new InstrumentationNodeModuleDefinition( + const v3SmithyClient = new InstrumentationNodeModuleDefinition( '@aws-sdk/smithy-client', ['^3.1.0'], this.patchV3SmithyClient.bind(this), @@ -148,14 +149,14 @@ export class AwsInstrumentation extends InstrumentationBase { this.unpatchV3SmithyClient.bind(this) ); - const v2Request = new InstrumentationNodeModuleFile( + const v2Request = new InstrumentationNodeModuleFile( 'aws-sdk/lib/core.js', ['^2.308.0'], this.patchV2.bind(this), this.unpatchV2.bind(this) ); - const v2Module = new InstrumentationNodeModuleDefinition( + const v2Module = new InstrumentationNodeModuleDefinition( 'aws-sdk', ['^2.308.0'], undefined, diff --git a/plugins/node/opentelemetry-instrumentation-bunyan/package.json b/plugins/node/opentelemetry-instrumentation-bunyan/package.json index 2ba62b7309..038e16993e 100644 --- a/plugins/node/opentelemetry-instrumentation-bunyan/package.json +++ b/plugins/node/opentelemetry-instrumentation-bunyan/package.json @@ -46,7 +46,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-logs": "^0.50.0", + "@opentelemetry/sdk-logs": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -63,8 +63,8 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/api-logs": "^0.50.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/api-logs": "^0.51.0", + "@opentelemetry/instrumentation": "^0.51.0", "@types/bunyan": "1.8.9" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-bunyan#readme" diff --git a/plugins/node/opentelemetry-instrumentation-bunyan/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-bunyan/src/instrumentation.ts index d3e76a74ce..08928a23d6 100644 --- a/plugins/node/opentelemetry-instrumentation-bunyan/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-bunyan/src/instrumentation.ts @@ -32,9 +32,7 @@ const DEFAULT_CONFIG: BunyanInstrumentationConfig = { disableLogCorrelation: false, }; -export class BunyanInstrumentation extends InstrumentationBase< - typeof BunyanLogger -> { +export class BunyanInstrumentation extends InstrumentationBase { constructor(config: BunyanInstrumentationConfig = {}) { super( '@opentelemetry/instrumentation-bunyan', @@ -45,7 +43,7 @@ export class BunyanInstrumentation extends InstrumentationBase< protected init() { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'bunyan', ['<2.0'], (module: any, moduleVersion) => { diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/package.json b/plugins/node/opentelemetry-instrumentation-cassandra/package.json index ce04542bba..aa2c88828d 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/package.json +++ b/plugins/node/opentelemetry-instrumentation-cassandra/package.json @@ -61,7 +61,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-cassandra#readme" diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-cassandra/src/instrumentation.ts index fe2f9718e5..a9bd3d2b85 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-cassandra/src/instrumentation.ts @@ -48,7 +48,7 @@ export class CassandraDriverInstrumentation extends InstrumentationBase { } protected init() { - return new InstrumentationNodeModuleDefinition( + return new InstrumentationNodeModuleDefinition( 'cassandra-driver', supportedVersions, (driverModule, moduleVersion) => { diff --git a/plugins/node/opentelemetry-instrumentation-connect/package.json b/plugins/node/opentelemetry-instrumentation-connect/package.json index 22a2df2ffc..862d3f3823 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/package.json +++ b/plugins/node/opentelemetry-instrumentation-connect/package.json @@ -56,7 +56,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/connect": "3.4.36" }, diff --git a/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts index 97a06d8a37..e28dd67d74 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts @@ -41,7 +41,7 @@ import { export const ANONYMOUS_NAME = 'anonymous'; /** Connect instrumentation for OpenTelemetry */ -export class ConnectInstrumentation extends InstrumentationBase { +export class ConnectInstrumentation extends InstrumentationBase { constructor(config: InstrumentationConfig = {}) { super( '@opentelemetry/instrumentation-connect', @@ -52,7 +52,7 @@ export class ConnectInstrumentation extends InstrumentationBase { init() { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'connect', ['^3.0.0'], (moduleExports, moduleVersion) => { diff --git a/plugins/node/opentelemetry-instrumentation-dns/package.json b/plugins/node/opentelemetry-instrumentation-dns/package.json index 6f28ccf5fb..d40053950b 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/package.json +++ b/plugins/node/opentelemetry-instrumentation-dns/package.json @@ -59,7 +59,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0", "semver": "^7.5.4" }, diff --git a/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts index 319a27e1c1..ca96db7167 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts @@ -15,6 +15,8 @@ */ import { LookupAddress } from 'dns'; +import type * as dns from 'dns'; +import * as dnsPromises from 'dns/promises'; import { diag, Span, SpanKind } from '@opentelemetry/api'; import { InstrumentationBase, @@ -27,8 +29,6 @@ import { DnsInstrumentationConfig } from './types'; import * as utils from './utils'; import { VERSION } from './version'; import { - Dns, - DnsPromises, LookupCallbackSignature, LookupPromiseSignature, } from './internal-types'; @@ -36,20 +36,20 @@ import { /** * Dns instrumentation for Opentelemetry */ -export class DnsInstrumentation extends InstrumentationBase { +export class DnsInstrumentation extends InstrumentationBase { constructor(protected override _config: DnsInstrumentationConfig = {}) { super('@opentelemetry/instrumentation-dns', VERSION, _config); } init(): ( - | InstrumentationNodeModuleDefinition - | InstrumentationNodeModuleDefinition + | InstrumentationNodeModuleDefinition + | InstrumentationNodeModuleDefinition )[] { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'dns', ['*'], - moduleExports => { + (moduleExports: typeof dns) => { diag.debug('Applying patch for dns'); if (isWrapped(moduleExports.lookup)) { this._unwrap(moduleExports, 'lookup'); @@ -71,10 +71,10 @@ export class DnsInstrumentation extends InstrumentationBase { this._unwrap(moduleExports.promises, 'lookup'); } ), - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'dns/promises', ['*'], - moduleExports => { + (moduleExports: typeof dnsPromises) => { diag.debug('Applying patch for dns/promises'); if (isWrapped(moduleExports.lookup)) { this._unwrap(moduleExports, 'lookup'); diff --git a/plugins/node/opentelemetry-instrumentation-dns/src/internal-types.ts b/plugins/node/opentelemetry-instrumentation-dns/src/internal-types.ts index 26638ba1a7..2a404e4326 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/src/internal-types.ts +++ b/plugins/node/opentelemetry-instrumentation-dns/src/internal-types.ts @@ -15,10 +15,6 @@ */ import type * as dns from 'dns'; -import type * as dnsPromises from 'dns/promises'; - -export type Dns = typeof dns; -export type DnsPromises = typeof dnsPromises; export type LookupFunction = (( hostname: string, diff --git a/plugins/node/opentelemetry-instrumentation-express/package.json b/plugins/node/opentelemetry-instrumentation-express/package.json index 6c3aa8a2c0..a53f2967ca 100644 --- a/plugins/node/opentelemetry-instrumentation-express/package.json +++ b/plugins/node/opentelemetry-instrumentation-express/package.json @@ -64,7 +64,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-express#readme" diff --git a/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts index 3df15aa699..1d53559cf3 100644 --- a/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts @@ -49,9 +49,7 @@ import { } from './internal-types'; /** Express instrumentation for OpenTelemetry */ -export class ExpressInstrumentation extends InstrumentationBase< - typeof express -> { +export class ExpressInstrumentation extends InstrumentationBase { constructor(config: ExpressInstrumentationConfig = {}) { super( '@opentelemetry/instrumentation-express', @@ -70,7 +68,7 @@ export class ExpressInstrumentation extends InstrumentationBase< init() { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'express', ['^4.0.0'], (moduleExports, moduleVersion) => { diff --git a/plugins/node/opentelemetry-instrumentation-fastify/package.json b/plugins/node/opentelemetry-instrumentation-fastify/package.json index 0f527fc875..e1cd5daa15 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/package.json +++ b/plugins/node/opentelemetry-instrumentation-fastify/package.json @@ -47,7 +47,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation-http": "^0.50.0", + "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/express": "4.17.18", @@ -65,7 +65,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-fastify#readme" diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts index 223ed28854..f1fb316081 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts @@ -65,7 +65,7 @@ export class FastifyInstrumentation extends InstrumentationBase { init() { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'fastify', ['^3.0.0', '^4.0.0'], (moduleExports, moduleVersion) => { diff --git a/plugins/node/opentelemetry-instrumentation-generic-pool/package.json b/plugins/node/opentelemetry-instrumentation-generic-pool/package.json index 05466afff6..15e9f888aa 100644 --- a/plugins/node/opentelemetry-instrumentation-generic-pool/package.json +++ b/plugins/node/opentelemetry-instrumentation-generic-pool/package.json @@ -59,7 +59,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-generic-pool#readme" diff --git a/plugins/node/opentelemetry-instrumentation-generic-pool/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-generic-pool/src/instrumentation.ts index 35a9266e36..cea3ff9b81 100644 --- a/plugins/node/opentelemetry-instrumentation-generic-pool/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-generic-pool/src/instrumentation.ts @@ -28,7 +28,7 @@ import { VERSION } from './version'; const MODULE_NAME = 'generic-pool'; -export default class Instrumentation extends InstrumentationBase { +export default class Instrumentation extends InstrumentationBase { // only used for v2 - v2.3) private _isDisabled = false; @@ -38,7 +38,7 @@ export default class Instrumentation extends InstrumentationBase { init() { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( MODULE_NAME, ['>=3'], (moduleExports, moduleVersion) => { @@ -61,7 +61,7 @@ export default class Instrumentation extends InstrumentationBase { return moduleExports; } ), - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( MODULE_NAME, ['^2.4'], (moduleExports, moduleVersion) => { @@ -84,7 +84,7 @@ export default class Instrumentation extends InstrumentationBase { return moduleExports; } ), - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( MODULE_NAME, ['2 - 2.3'], (moduleExports, moduleVersion) => { diff --git a/plugins/node/opentelemetry-instrumentation-graphql/package.json b/plugins/node/opentelemetry-instrumentation-graphql/package.json index 9594358c0a..e843537130 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/package.json +++ b/plugins/node/opentelemetry-instrumentation-graphql/package.json @@ -58,7 +58,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-graphql#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-graphql/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-graphql/src/instrumentation.ts index 0bb1bc2c3a..8d30b67391 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-graphql/src/instrumentation.ts @@ -84,7 +84,7 @@ export class GraphQLInstrumentation extends InstrumentationBase { } protected init() { - const module = new InstrumentationNodeModuleDefinition( + const module = new InstrumentationNodeModuleDefinition( 'graphql', supportedVersions ); @@ -95,10 +95,8 @@ export class GraphQLInstrumentation extends InstrumentationBase { return module; } - private _addPatchingExecute(): InstrumentationNodeModuleFile< - typeof graphqlTypes - > { - return new InstrumentationNodeModuleFile( + private _addPatchingExecute(): InstrumentationNodeModuleFile { + return new InstrumentationNodeModuleFile( 'graphql/execution/execute.js', supportedVersions, // cannot make it work with appropriate type as execute function has 2 @@ -126,13 +124,11 @@ export class GraphQLInstrumentation extends InstrumentationBase { ); } - private _addPatchingParser(): InstrumentationNodeModuleFile< - typeof graphqlTypes - > { - return new InstrumentationNodeModuleFile( + private _addPatchingParser(): InstrumentationNodeModuleFile { + return new InstrumentationNodeModuleFile( 'graphql/language/parser.js', supportedVersions, - (moduleExports, moduleVersion) => { + (moduleExports: typeof graphqlTypes, moduleVersion) => { this._diag.debug(`Applying patch for graphql@${moduleVersion} parse`); if (isWrapped(moduleExports.parse)) { this._unwrap(moduleExports, 'parse'); @@ -140,7 +136,7 @@ export class GraphQLInstrumentation extends InstrumentationBase { this._wrap(moduleExports, 'parse', this._patchParse()); return moduleExports; }, - (moduleExports, moduleVersion) => { + (moduleExports: typeof graphqlTypes, moduleVersion) => { if (moduleExports) { this._diag.debug(`Removing patch for graphql@${moduleVersion} parse`); this._unwrap(moduleExports, 'parse'); @@ -149,10 +145,8 @@ export class GraphQLInstrumentation extends InstrumentationBase { ); } - private _addPatchingValidate(): InstrumentationNodeModuleFile< - typeof graphqlTypes - > { - return new InstrumentationNodeModuleFile( + private _addPatchingValidate(): InstrumentationNodeModuleFile { + return new InstrumentationNodeModuleFile( 'graphql/validation/validate.js', supportedVersions, (moduleExports, moduleVersion) => { diff --git a/plugins/node/opentelemetry-instrumentation-hapi/package.json b/plugins/node/opentelemetry-instrumentation-hapi/package.json index d595016b9b..182c9fe968 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/package.json +++ b/plugins/node/opentelemetry-instrumentation-hapi/package.json @@ -59,7 +59,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/hapi__hapi": "20.0.13" }, diff --git a/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts index 9644497626..4e938f438b 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts @@ -54,10 +54,10 @@ export class HapiInstrumentation extends InstrumentationBase { } protected init() { - return new InstrumentationNodeModuleDefinition( + return new InstrumentationNodeModuleDefinition( HapiComponentName, ['>=17 <21'], - moduleExports => { + (moduleExports: typeof Hapi) => { if (!isWrapped(moduleExports.server)) { api.diag.debug('Patching Hapi.server'); this._wrap(moduleExports, 'server', this._getServerPatch.bind(this)); @@ -79,7 +79,7 @@ export class HapiInstrumentation extends InstrumentationBase { } return moduleExports; }, - moduleExports => { + (moduleExports: typeof Hapi) => { api.diag.debug('Unpatching Hapi'); this._massUnwrap([moduleExports], ['server', 'Server']); } diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/package.json b/plugins/node/opentelemetry-instrumentation-ioredis/package.json index 4ecc2eb1b3..ccd6a8be2a 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/package.json +++ b/plugins/node/opentelemetry-instrumentation-ioredis/package.json @@ -52,6 +52,7 @@ "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", + "@types/ioredis4": "npm:@types/ioredis@4.28.10", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -63,11 +64,10 @@ "sinon": "15.2.0", "test-all-versions": "6.1.0", "ts-mocha": "10.0.0", - "typescript": "4.4.4", - "@types/ioredis4": "npm:@types/ioredis@4.28.10" + "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/semantic-conventions": "^1.0.0" }, diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts index 0753518de3..d0d662cccd 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts @@ -35,7 +35,7 @@ const DEFAULT_CONFIG: IORedisInstrumentationConfig = { requireParentSpan: true, }; -export class IORedisInstrumentation extends InstrumentationBase { +export class IORedisInstrumentation extends InstrumentationBase { constructor(_config: IORedisInstrumentationConfig = {}) { super( '@opentelemetry/instrumentation-ioredis', @@ -44,9 +44,9 @@ export class IORedisInstrumentation extends InstrumentationBase { ); } - init(): InstrumentationNodeModuleDefinition[] { + init(): InstrumentationNodeModuleDefinition[] { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'ioredis', ['>1', '<6'], (module, moduleVersion?: string) => { diff --git a/plugins/node/opentelemetry-instrumentation-knex/package.json b/plugins/node/opentelemetry-instrumentation-knex/package.json index 5a8b7078c6..ca283faf29 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/package.json +++ b/plugins/node/opentelemetry-instrumentation-knex/package.json @@ -57,7 +57,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-knex#readme" diff --git a/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts index bb6e6114b5..7aab25716a 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts @@ -37,14 +37,12 @@ import { import * as utils from './utils'; import * as types from './types'; -import type * as knex from 'knex'; - const contextSymbol = Symbol('opentelemetry.instrumentation-knex.context'); const DEFAULT_CONFIG: types.KnexInstrumentationConfig = { maxQueryLength: 1022, }; -export class KnexInstrumentation extends InstrumentationBase { +export class KnexInstrumentation extends InstrumentationBase { constructor(config: types.KnexInstrumentationConfig = {}) { super( `@opentelemetry/instrumentation-${constants.MODULE_NAME}`, @@ -54,7 +52,7 @@ export class KnexInstrumentation extends InstrumentationBase { } init() { - const module = new InstrumentationNodeModuleDefinition( + const module = new InstrumentationNodeModuleDefinition( constants.MODULE_NAME, constants.SUPPORTED_VERSIONS ); @@ -71,7 +69,7 @@ export class KnexInstrumentation extends InstrumentationBase { } private getRunnerNodeModuleFileInstrumentation(basePath: string) { - return new InstrumentationNodeModuleFile( + return new InstrumentationNodeModuleFile( `knex/${basePath}/runner.js`, constants.SUPPORTED_VERSIONS, (Runner: any, moduleVersion) => { @@ -97,7 +95,7 @@ export class KnexInstrumentation extends InstrumentationBase { } private getClientNodeModuleFileInstrumentation(basePath: string) { - return new InstrumentationNodeModuleFile( + return new InstrumentationNodeModuleFile( `knex/${basePath}/client.js`, constants.SUPPORTED_VERSIONS, (Client: any, moduleVersion) => { diff --git a/plugins/node/opentelemetry-instrumentation-koa/package.json b/plugins/node/opentelemetry-instrumentation-koa/package.json index e1a6f4f492..35eadc1cb8 100644 --- a/plugins/node/opentelemetry-instrumentation-koa/package.json +++ b/plugins/node/opentelemetry-instrumentation-koa/package.json @@ -49,7 +49,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation-http": "^0.50.0", + "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -66,7 +66,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/koa": "2.14.0", "@types/koa__router": "12.0.3" diff --git a/plugins/node/opentelemetry-instrumentation-koa/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-koa/src/instrumentation.ts index 69a14157cc..7ce213fe82 100644 --- a/plugins/node/opentelemetry-instrumentation-koa/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-koa/src/instrumentation.ts @@ -34,7 +34,7 @@ import { } from './internal-types'; /** Koa instrumentation for OpenTelemetry */ -export class KoaInstrumentation extends InstrumentationBase { +export class KoaInstrumentation extends InstrumentationBase { constructor(config: KoaInstrumentationConfig = {}) { super( '@opentelemetry/instrumentation-koa', @@ -52,7 +52,7 @@ export class KoaInstrumentation extends InstrumentationBase { } protected init() { - return new InstrumentationNodeModuleDefinition( + return new InstrumentationNodeModuleDefinition( 'koa', ['^2.0.0'], (module: any) => { diff --git a/plugins/node/opentelemetry-instrumentation-memcached/package.json b/plugins/node/opentelemetry-instrumentation-memcached/package.json index a329872649..85181573fa 100644 --- a/plugins/node/opentelemetry-instrumentation-memcached/package.json +++ b/plugins/node/opentelemetry-instrumentation-memcached/package.json @@ -60,7 +60,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/memcached": "^2.2.6" }, diff --git a/plugins/node/opentelemetry-instrumentation-memcached/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-memcached/src/instrumentation.ts index afa205dad9..3ba0770355 100644 --- a/plugins/node/opentelemetry-instrumentation-memcached/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-memcached/src/instrumentation.ts @@ -29,7 +29,7 @@ import * as utils from './utils'; import { InstrumentationConfig } from './types'; import { VERSION } from './version'; -export class Instrumentation extends InstrumentationBase { +export class Instrumentation extends InstrumentationBase { static readonly COMPONENT = 'memcached'; static readonly COMMON_ATTRIBUTES = { [SemanticAttributes.DB_SYSTEM]: DbSystemValues.MEMCACHED, @@ -52,10 +52,10 @@ export class Instrumentation extends InstrumentationBase { init() { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'memcached', ['>=2.2'], - (moduleExports, moduleVersion) => { + (moduleExports: typeof Memcached, moduleVersion) => { this._diag.debug( `Patching ${Instrumentation.COMPONENT}@${moduleVersion}` ); @@ -67,7 +67,7 @@ export class Instrumentation extends InstrumentationBase { ); return moduleExports; }, - (moduleExports, moduleVersion) => { + (moduleExports: typeof Memcached, moduleVersion) => { this._diag.debug( `Unpatching ${Instrumentation.COMPONENT}@${moduleVersion}` ); diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/package.json b/plugins/node/opentelemetry-instrumentation-mongodb/package.json index f3d704c7da..c47dd310a1 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/package.json +++ b/plugins/node/opentelemetry-instrumentation-mongodb/package.json @@ -66,7 +66,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-metrics": "^1.9.1", "@opentelemetry/semantic-conventions": "^1.22.0" }, diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts index d5239d9706..7b99c55c9a 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts @@ -91,13 +91,13 @@ export class MongoDBInstrumentation extends InstrumentationBase { const { v4PatchSessions, v4UnpatchSessions } = this._getV4SessionsPatches(); return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'mongodb', ['>=3.3 <4'], undefined, undefined, [ - new InstrumentationNodeModuleFile( + new InstrumentationNodeModuleFile( 'mongodb/lib/core/wireprotocol/index.js', ['>=3.3 <4'], v3PatchConnection, @@ -105,37 +105,37 @@ export class MongoDBInstrumentation extends InstrumentationBase { ), ] ), - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'mongodb', ['4.*', '5.*', '6.*'], undefined, undefined, [ - new InstrumentationNodeModuleFile( + new InstrumentationNodeModuleFile( 'mongodb/lib/cmap/connection.js', ['4.*', '5.*', '>=6 <6.4'], v4PatchConnectionCallback, v4UnpatchConnection ), - new InstrumentationNodeModuleFile( + new InstrumentationNodeModuleFile( 'mongodb/lib/cmap/connection.js', ['>=6.4'], v4PatchConnectionPromise, v4UnpatchConnection ), - new InstrumentationNodeModuleFile( + new InstrumentationNodeModuleFile( 'mongodb/lib/cmap/connection_pool.js', ['4.*', '5.*', '>=6 <6.4'], v4PatchConnectionPool, v4UnpatchConnectionPool ), - new InstrumentationNodeModuleFile( + new InstrumentationNodeModuleFile( 'mongodb/lib/cmap/connect.js', ['4.*', '5.*', '6.*'], v4PatchConnect, v4UnpatchConnect ), - new InstrumentationNodeModuleFile( + new InstrumentationNodeModuleFile( 'mongodb/lib/sessions.js', ['4.*', '5.*', '6.*'], v4PatchSessions, diff --git a/plugins/node/opentelemetry-instrumentation-mysql/package.json b/plugins/node/opentelemetry-instrumentation-mysql/package.json index 13d2c6d3af..47b2ff01a4 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql/package.json @@ -59,7 +59,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mysql": "2.15.22" }, diff --git a/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts index 9ff48fd684..78e9b78a03 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts @@ -51,9 +51,7 @@ type getConnectionCallbackType = ( connection: mysqlTypes.PoolConnection ) => void; -export class MySQLInstrumentation extends InstrumentationBase< - typeof mysqlTypes -> { +export class MySQLInstrumentation extends InstrumentationBase { static readonly COMMON_ATTRIBUTES = { [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_MYSQL, }; @@ -82,10 +80,10 @@ export class MySQLInstrumentation extends InstrumentationBase< protected init() { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'mysql', ['2.*'], - (moduleExports, moduleVersion) => { + (moduleExports: typeof mysqlTypes, moduleVersion) => { diag.debug(`Patching mysql@${moduleVersion}`); diag.debug('Patching mysql.createConnection'); @@ -120,7 +118,7 @@ export class MySQLInstrumentation extends InstrumentationBase< return moduleExports; }, - moduleExports => { + (moduleExports: typeof mysqlTypes) => { if (moduleExports === undefined) return; this._unwrap(moduleExports, 'createConnection'); this._unwrap(moduleExports, 'createPool'); diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/package.json b/plugins/node/opentelemetry-instrumentation-mysql2/package.json index 5d7d885d02..420184e53a 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql2/package.json @@ -61,7 +61,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@opentelemetry/sql-common": "^0.40.0" }, diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts index 2d79311bcb..d2f130b2ac 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts @@ -39,7 +39,7 @@ import { VERSION } from './version'; type formatType = typeof mysqlTypes.format; -export class MySQL2Instrumentation extends InstrumentationBase { +export class MySQL2Instrumentation extends InstrumentationBase { static readonly COMMON_ATTRIBUTES = { [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_MYSQL, }; @@ -50,7 +50,7 @@ export class MySQL2Instrumentation extends InstrumentationBase { protected init() { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'mysql2', ['>= 1.4.2 < 4.0'], (moduleExports: any, moduleVersion) => { diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json index b831d12ff9..ee9a235854 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json @@ -70,7 +70,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-nestjs-core#readme" diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts index 98922126fa..d947169ec4 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts @@ -29,7 +29,7 @@ import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; import { VERSION } from './version'; import { AttributeNames, NestType } from './enums'; -export class Instrumentation extends InstrumentationBase { +export class Instrumentation extends InstrumentationBase { static readonly COMPONENT = '@nestjs/core'; static readonly COMMON_ATTRIBUTES = { component: Instrumentation.COMPONENT, @@ -40,7 +40,7 @@ export class Instrumentation extends InstrumentationBase { } init() { - const module = new InstrumentationNodeModuleDefinition( + const module = new InstrumentationNodeModuleDefinition( Instrumentation.COMPONENT, ['>=4.0.0'], (moduleExports, moduleVersion) => { @@ -66,7 +66,7 @@ export class Instrumentation extends InstrumentationBase { } getNestFactoryFileInstrumentation(versions: string[]) { - return new InstrumentationNodeModuleFile( + return new InstrumentationNodeModuleFile( '@nestjs/core/nest-factory.js', versions, (NestFactoryStatic: any, moduleVersion?: string) => { @@ -85,7 +85,7 @@ export class Instrumentation extends InstrumentationBase { } getRouterExecutionContextFileInstrumentation(versions: string[]) { - return new InstrumentationNodeModuleFile( + return new InstrumentationNodeModuleFile( '@nestjs/core/router/router-execution-context.js', versions, (RouterExecutionContext: any, moduleVersion?: string) => { diff --git a/plugins/node/opentelemetry-instrumentation-net/package.json b/plugins/node/opentelemetry-instrumentation-net/package.json index 60f25541be..0183bb0615 100644 --- a/plugins/node/opentelemetry-instrumentation-net/package.json +++ b/plugins/node/opentelemetry-instrumentation-net/package.json @@ -58,7 +58,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-net#readme" diff --git a/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts index e3aa6f1e33..59befd2daa 100644 --- a/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts @@ -27,23 +27,24 @@ import { NetTransportValues, } from '@opentelemetry/semantic-conventions'; import { TLSAttributes } from './types'; -import { Net, NormalizedOptions, SocketEvent } from './internal-types'; +import { NormalizedOptions, SocketEvent } from './internal-types'; import { getNormalizedArgs, IPC_TRANSPORT } from './utils'; import { VERSION } from './version'; import { Socket } from 'net'; import { TLSSocket } from 'tls'; +import type * as net from 'net'; -export class NetInstrumentation extends InstrumentationBase { +export class NetInstrumentation extends InstrumentationBase { constructor(_config?: InstrumentationConfig) { super('@opentelemetry/instrumentation-net', VERSION, _config); } - init(): InstrumentationNodeModuleDefinition[] { + init(): InstrumentationNodeModuleDefinition[] { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'net', ['*'], - moduleExports => { + (moduleExports: typeof net) => { diag.debug('Applying patch for net module'); if (isWrapped(moduleExports.Socket.prototype.connect)) { this._unwrap(moduleExports.Socket.prototype, 'connect'); @@ -56,7 +57,7 @@ export class NetInstrumentation extends InstrumentationBase { ); return moduleExports; }, - moduleExports => { + (moduleExports: typeof net) => { if (moduleExports === undefined) return; diag.debug('Removing patch from net module'); this._unwrap(moduleExports.Socket.prototype, 'connect'); diff --git a/plugins/node/opentelemetry-instrumentation-net/src/internal-types.ts b/plugins/node/opentelemetry-instrumentation-net/src/internal-types.ts index a9cb63f735..79726c77aa 100644 --- a/plugins/node/opentelemetry-instrumentation-net/src/internal-types.ts +++ b/plugins/node/opentelemetry-instrumentation-net/src/internal-types.ts @@ -14,10 +14,6 @@ * limitations under the License. */ -import type * as net from 'net'; - -export type Net = typeof net; - export interface NormalizedOptions { host?: string; port?: number; diff --git a/plugins/node/opentelemetry-instrumentation-pg/package.json b/plugins/node/opentelemetry-instrumentation-pg/package.json index c99ceeaf68..df71b8f324 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/package.json +++ b/plugins/node/opentelemetry-instrumentation-pg/package.json @@ -71,7 +71,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@opentelemetry/sql-common": "^0.40.0", "@types/pg": "8.6.1", diff --git a/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts index abe4e65c5e..3a05d00ce4 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts @@ -52,7 +52,7 @@ export class PgInstrumentation extends InstrumentationBase { } protected init() { - const modulePG = new InstrumentationNodeModuleDefinition( + const modulePG = new InstrumentationNodeModuleDefinition( 'pg', ['8.*'], (module: any, moduleVersion) => { @@ -95,12 +95,10 @@ export class PgInstrumentation extends InstrumentationBase { } ); - const modulePGPool = new InstrumentationNodeModuleDefinition< - typeof pgPoolTypes - >( + const modulePGPool = new InstrumentationNodeModuleDefinition( 'pg-pool', ['2.*', '3.*'], - (moduleExports, moduleVersion) => { + (moduleExports: typeof pgPoolTypes, moduleVersion) => { this._diag.debug(`Applying patch for pg-pool@${moduleVersion}`); if (isWrapped(moduleExports.prototype.connect)) { this._unwrap(moduleExports.prototype, 'connect'); @@ -112,7 +110,7 @@ export class PgInstrumentation extends InstrumentationBase { ); return moduleExports; }, - (moduleExports, moduleVersion) => { + (moduleExports: typeof pgPoolTypes, moduleVersion) => { this._diag.debug(`Removing patch for pg-pool@${moduleVersion}`); if (isWrapped(moduleExports.prototype.connect)) { this._unwrap(moduleExports.prototype, 'connect'); diff --git a/plugins/node/opentelemetry-instrumentation-pino/package.json b/plugins/node/opentelemetry-instrumentation-pino/package.json index 6e16aae45d..b23490786c 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/package.json +++ b/plugins/node/opentelemetry-instrumentation-pino/package.json @@ -64,7 +64,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-pino#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts index 3c5824b359..b84dfd4209 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts @@ -44,7 +44,7 @@ export class PinoInstrumentation extends InstrumentationBase { protected init() { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'pino', pinoVersions, (module, moduleVersion?: string) => { diff --git a/plugins/node/opentelemetry-instrumentation-redis-4/package.json b/plugins/node/opentelemetry-instrumentation-redis-4/package.json index f6e0957832..1075413252 100644 --- a/plugins/node/opentelemetry-instrumentation-redis-4/package.json +++ b/plugins/node/opentelemetry-instrumentation-redis-4/package.json @@ -66,7 +66,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/semantic-conventions": "^1.22.0" }, diff --git a/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts index 825defe5cf..42f44e8775 100644 --- a/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts @@ -52,7 +52,7 @@ const DEFAULT_CONFIG: RedisInstrumentationConfig = { requireParentSpan: false, }; -export class RedisInstrumentation extends InstrumentationBase { +export class RedisInstrumentation extends InstrumentationBase { static readonly COMPONENT = 'redis'; constructor(protected override _config: RedisInstrumentationConfig = {}) { @@ -75,8 +75,8 @@ export class RedisInstrumentation extends InstrumentationBase { private _getInstrumentationNodeModuleDefinition( basePackageName: string - ): InstrumentationNodeModuleDefinition { - const commanderModuleFile = new InstrumentationNodeModuleFile( + ): InstrumentationNodeModuleDefinition { + const commanderModuleFile = new InstrumentationNodeModuleFile( `${basePackageName}/dist/lib/commander.js`, ['^1.0.0'], (moduleExports: any, moduleVersion?: string) => { @@ -119,7 +119,7 @@ export class RedisInstrumentation extends InstrumentationBase { } ); - const multiCommanderModule = new InstrumentationNodeModuleFile( + const multiCommanderModule = new InstrumentationNodeModuleFile( `${basePackageName}/dist/lib/client/multi-command.js`, ['^1.0.0'], (moduleExports: any) => { @@ -160,7 +160,7 @@ export class RedisInstrumentation extends InstrumentationBase { } ); - const clientIndexModule = new InstrumentationNodeModuleFile( + const clientIndexModule = new InstrumentationNodeModuleFile( `${basePackageName}/dist/lib/client/index.js`, ['^1.0.0'], (moduleExports: any) => { @@ -225,7 +225,7 @@ export class RedisInstrumentation extends InstrumentationBase { } ); - return new InstrumentationNodeModuleDefinition( + return new InstrumentationNodeModuleDefinition( basePackageName, ['^1.0.0'], (moduleExports: any, moduleVersion?: string) => { diff --git a/plugins/node/opentelemetry-instrumentation-redis/package.json b/plugins/node/opentelemetry-instrumentation-redis/package.json index 7c52f2cb7b..463d608c96 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/package.json +++ b/plugins/node/opentelemetry-instrumentation-redis/package.json @@ -66,7 +66,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/semantic-conventions": "^1.22.0" }, diff --git a/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts index 819daa3398..a25ef5b8ed 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts @@ -45,7 +45,7 @@ export class RedisInstrumentation extends InstrumentationBase { protected init() { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'redis', ['^2.6.0', '^3.0.0'], (moduleExports, moduleVersion) => { diff --git a/plugins/node/opentelemetry-instrumentation-restify/package.json b/plugins/node/opentelemetry-instrumentation-restify/package.json index dbe6fa86ed..de6c089427 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/package.json +++ b/plugins/node/opentelemetry-instrumentation-restify/package.json @@ -62,7 +62,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-restify#readme" diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts index a29679f6ba..f5a1ee96dd 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts @@ -37,7 +37,7 @@ import type { RestifyInstrumentationConfig } from './types'; const { diag } = api; -export class RestifyInstrumentation extends InstrumentationBase { +export class RestifyInstrumentation extends InstrumentationBase { constructor(config: RestifyInstrumentationConfig = {}) { super( `@opentelemetry/instrumentation-${constants.MODULE_NAME}`, @@ -58,7 +58,7 @@ export class RestifyInstrumentation extends InstrumentationBase { } init() { - const module = new InstrumentationNodeModuleDefinition( + const module = new InstrumentationNodeModuleDefinition( constants.MODULE_NAME, constants.SUPPORTED_VERSIONS, (moduleExports, moduleVersion) => { @@ -68,7 +68,7 @@ export class RestifyInstrumentation extends InstrumentationBase { ); module.files.push( - new InstrumentationNodeModuleFile( + new InstrumentationNodeModuleFile( 'restify/lib/server.js', constants.SUPPORTED_VERSIONS, (moduleExports, moduleVersion) => { diff --git a/plugins/node/opentelemetry-instrumentation-router/package.json b/plugins/node/opentelemetry-instrumentation-router/package.json index 48a8335379..c0ac50d89b 100644 --- a/plugins/node/opentelemetry-instrumentation-router/package.json +++ b/plugins/node/opentelemetry-instrumentation-router/package.json @@ -56,7 +56,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-router#readme" diff --git a/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts index 46f6a84836..ca5c73790c 100644 --- a/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts @@ -34,7 +34,7 @@ import * as utils from './utils'; import AttributeNames from './enums/AttributeNames'; import LayerType from './enums/LayerType'; -export default class RouterInstrumentation extends InstrumentationBase { +export default class RouterInstrumentation extends InstrumentationBase { constructor(config?: InstrumentationConfig) { super( `@opentelemetry/instrumentation-${constants.MODULE_NAME}`, @@ -46,7 +46,7 @@ export default class RouterInstrumentation extends InstrumentationBase { private _moduleVersion?: string; init() { - const module = new InstrumentationNodeModuleDefinition( + const module = new InstrumentationNodeModuleDefinition( constants.MODULE_NAME, constants.SUPPORTED_VERSIONS, (moduleExports, moduleVersion) => { @@ -65,7 +65,7 @@ export default class RouterInstrumentation extends InstrumentationBase { ); module.files.push( - new InstrumentationNodeModuleFile( + new InstrumentationNodeModuleFile( 'router/lib/layer.js', constants.SUPPORTED_VERSIONS, (moduleExports, moduleVersion) => { diff --git a/plugins/node/opentelemetry-instrumentation-winston/package.json b/plugins/node/opentelemetry-instrumentation-winston/package.json index 0c25fbb7cb..06a1302f03 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/package.json +++ b/plugins/node/opentelemetry-instrumentation-winston/package.json @@ -64,8 +64,8 @@ "winston2": "npm:winston@2.4.7" }, "dependencies": { - "@opentelemetry/api-logs": "^0.50.0", - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/api-logs": "^0.51.0", + "@opentelemetry/instrumentation": "^0.51.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-winston#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts index de72ed235b..4312f2bc31 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts @@ -25,8 +25,8 @@ import { } from '@opentelemetry/instrumentation'; import type { WinstonInstrumentationConfig } from './types'; import type { - Winston2LogMethod, Winston2LoggerModule, + Winston2LogMethod, Winston3ConfigureMethod, Winston3LogMethod, Winston3Logger, @@ -43,16 +43,16 @@ export class WinstonInstrumentation extends InstrumentationBase { protected init() { const winstons3instrumentationNodeModuleDefinition = - new InstrumentationNodeModuleDefinition<{}>( + new InstrumentationNodeModuleDefinition( 'winston', winston3Versions, moduleExports => moduleExports, () => {}, [ - new InstrumentationNodeModuleFile( + new InstrumentationNodeModuleFile( 'winston/lib/winston/logger.js', winston3Versions, - (logger, moduleVersion) => { + (logger: Winston3Logger, moduleVersion) => { this._diag.debug(`Applying patch for winston@${moduleVersion}`); if (isWrapped(logger.prototype['write'])) { this._unwrap(logger.prototype, 'write'); @@ -71,7 +71,7 @@ export class WinstonInstrumentation extends InstrumentationBase { return logger; }, - (logger, moduleVersion) => { + (logger: Winston3Logger, moduleVersion) => { if (logger === undefined) return; this._diag.debug(`Removing patch for winston@${moduleVersion}`); this._unwrap(logger.prototype, 'write'); @@ -82,16 +82,16 @@ export class WinstonInstrumentation extends InstrumentationBase { ); const winstons2instrumentationNodeModuleDefinition = - new InstrumentationNodeModuleDefinition<{}>( + new InstrumentationNodeModuleDefinition( 'winston', winstonPre3Versions, moduleExports => moduleExports, () => {}, [ - new InstrumentationNodeModuleFile( + new InstrumentationNodeModuleFile( 'winston/lib/winston/logger.js', winstonPre3Versions, - (fileExports, moduleVersion) => { + (fileExports: Winston2LoggerModule, moduleVersion) => { this._diag.debug(`Applying patch for winston@${moduleVersion}`); const proto = fileExports.Logger.prototype; @@ -102,7 +102,7 @@ export class WinstonInstrumentation extends InstrumentationBase { return fileExports; }, - (fileExports, moduleVersion) => { + (fileExports: Winston2LoggerModule, moduleVersion) => { if (fileExports === undefined) return; this._diag.debug(`Removing patch for winston@${moduleVersion}`); this._unwrap(fileExports.Logger.prototype, 'log'); diff --git a/plugins/web/opentelemetry-instrumentation-document-load/package.json b/plugins/web/opentelemetry-instrumentation-document-load/package.json index 7d1a1de173..5b135a8a41 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/package.json +++ b/plugins/web/opentelemetry-instrumentation-document-load/package.json @@ -69,7 +69,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.0.0", "@opentelemetry/sdk-trace-web": "^1.15.0", "@opentelemetry/semantic-conventions": "^1.22.0" diff --git a/plugins/web/opentelemetry-instrumentation-document-load/src/instrumentation.ts b/plugins/web/opentelemetry-instrumentation-document-load/src/instrumentation.ts index ecc84b9f76..f3837177a0 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/src/instrumentation.ts +++ b/plugins/web/opentelemetry-instrumentation-document-load/src/instrumentation.ts @@ -52,7 +52,7 @@ import { /** * This class represents a document load plugin */ -export class DocumentLoadInstrumentation extends InstrumentationBase { +export class DocumentLoadInstrumentation extends InstrumentationBase { readonly component: string = 'document-load'; readonly version: string = '1'; moduleName = this.component; diff --git a/plugins/web/opentelemetry-instrumentation-long-task/package.json b/plugins/web/opentelemetry-instrumentation-long-task/package.json index 0c230f899d..6720125885 100644 --- a/plugins/web/opentelemetry-instrumentation-long-task/package.json +++ b/plugins/web/opentelemetry-instrumentation-long-task/package.json @@ -79,7 +79,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-web": "^1.8.0" }, "peerDependencies": { diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/package.json b/plugins/web/opentelemetry-instrumentation-user-interaction/package.json index 8f2658f700..272ede8cd3 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/package.json +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/package.json @@ -52,7 +52,7 @@ "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-zone-peer-dep": "^1.8.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.50.0", + "@opentelemetry/instrumentation-xml-http-request": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/jquery": "3.5.20", "@types/mocha": "7.0.2", @@ -81,7 +81,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-web": "^1.8.0" }, "peerDependencies": { diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/src/instrumentation.ts b/plugins/web/opentelemetry-instrumentation-user-interaction/src/instrumentation.ts index e8be5e3fc5..bba10b2ff9 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/src/instrumentation.ts +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/src/instrumentation.ts @@ -49,7 +49,7 @@ function defaultShouldPreventSpanCreation() { * If zone.js is available then it patches the zone otherwise it patches * addEventListener of HTMLElement */ -export class UserInteractionInstrumentation extends InstrumentationBase { +export class UserInteractionInstrumentation extends InstrumentationBase { readonly version = VERSION; readonly moduleName: string = 'user-interaction'; private _spansData = new WeakMap(); From 73e01f281d2823e7f81e3efee2e0cb2a24e528e5 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Thu, 25 Apr 2024 04:34:35 -0400 Subject: [PATCH 09/39] chore(examples/graphql): use exported strings for attributes (#2122) Use exported strings for Semantic Attributes Co-authored-by: Trent Mick Co-authored-by: Amir Blum Co-authored-by: Marc Pichler --- examples/graphql/package.json | 2 +- examples/graphql/tracer.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/graphql/package.json b/examples/graphql/package.json index 53e8935933..6ca5a0371b 100644 --- a/examples/graphql/package.json +++ b/examples/graphql/package.json @@ -44,7 +44,7 @@ "@opentelemetry/resources": "~1.0.0", "@opentelemetry/sdk-trace-base": "~1.0.0", "@opentelemetry/sdk-trace-node": "~1.0.0", - "@opentelemetry/semantic-conventions": "~1.0.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "apollo-server": "^2.18.1", "cross-fetch": "^3.0.5", "express": "^4.17.1", diff --git a/examples/graphql/tracer.js b/examples/graphql/tracer.js index 2545a20874..82a24edde8 100644 --- a/examples/graphql/tracer.js +++ b/examples/graphql/tracer.js @@ -8,11 +8,11 @@ const { OTLPTraceExporter } = require('@opentelemetry/exporter-otlp-http'); const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http'); const { ExpressInstrumentation } = require('@opentelemetry/instrumentation-express'); const { Resource } = require('@opentelemetry/resources'); -const { SemanticResourceAttributes } = require('@opentelemetry/semantic-conventions'); +const { SEMRESATTRS_SERVICE_NAME } = require('@opentelemetry/semantic-conventions'); const provider = new NodeTracerProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: 'graphql-service', + [SEMRESATTRS_SERVICE_NAME]: 'graphql-service', }), }); From f3406ea864ec614dd4c26b4baf8c44c50ef7d504 Mon Sep 17 00:00:00 2001 From: Amir Blum Date: Thu, 25 Apr 2024 14:44:24 +0300 Subject: [PATCH 10/39] chore: remove patch and unpatch diag from instrumentations (#2107) * chore: remove patch and unpatch diag from instrumentations * fix: compile * fix: compile error connect instrumentation * fix: compile * fix: remove more patch and unpatch diag prints * fix: remove unused moduleVersion argument * fix: unused import from merge --- .../src/instrumentation.ts | 20 +---- .../src/instrumentation.ts | 9 +-- .../instrumentation-fs/src/instrumentation.ts | 4 - .../src/instrumentation.ts | 2 - .../instrumentation-mongoose/src/mongoose.ts | 1 - .../src/socket.io.ts | 19 +---- .../src/instrumentation.ts | 4 +- .../src/instrumentation.ts | 2 - .../src/aws-sdk.ts | 15 ---- .../src/instrumentation.ts | 3 +- .../src/instrumentation.ts | 10 +-- .../src/instrumentation.ts | 8 +- .../src/instrumentation.ts | 4 - .../src/instrumentation.ts | 6 +- .../src/instrumentation.ts | 3 +- .../src/instrumentation.ts | 18 ++--- .../src/instrumentation.ts | 24 ++---- .../src/instrumentation.ts | 3 - .../src/instrumentation.ts | 2 - .../src/instrumentation.ts | 25 +----- .../src/instrumentation.ts | 2 - .../src/instrumentation.ts | 13 +-- .../src/instrumentation.ts | 43 +++------- .../src/instrumentation.ts | 4 +- .../src/instrumentation.ts | 4 +- .../src/instrumentation.ts | 20 +---- .../src/instrumentation.ts | 4 +- .../src/instrumentation.ts | 12 +-- .../src/instrumentation.ts | 81 +++++++++---------- .../src/instrumentation.ts | 18 +---- .../src/instrumentation.ts | 3 +- .../src/instrumentation.ts | 12 +-- .../src/instrumentation.ts | 19 +---- .../src/instrumentation.ts | 12 +-- 34 files changed, 99 insertions(+), 330 deletions(-) diff --git a/plugins/node/instrumentation-cucumber/src/instrumentation.ts b/plugins/node/instrumentation-cucumber/src/instrumentation.ts index 4633707e33..29e466cb69 100644 --- a/plugins/node/instrumentation-cucumber/src/instrumentation.ts +++ b/plugins/node/instrumentation-cucumber/src/instrumentation.ts @@ -53,10 +53,7 @@ export class CucumberInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( '@cucumber/cucumber', ['^8.0.0', '^9.0.0', '^10.0.0'], - (moduleExports: Cucumber, moduleVersion) => { - this._diag.debug( - `Applying patch for @cucumber/cucumber@${moduleVersion}` - ); + (moduleExports: Cucumber) => { this.module = moduleExports; steps.forEach(step => { if (isWrapped(moduleExports[step])) { @@ -72,11 +69,8 @@ export class CucumberInstrumentation extends InstrumentationBase { }); return moduleExports; }, - (moduleExports: Cucumber, moduleVersion) => { + (moduleExports: Cucumber) => { if (moduleExports === undefined) return; - this._diag.debug( - `Removing patch for @cucumber/cucumber@${moduleVersion}` - ); [...hooks, ...steps].forEach(method => { this._unwrap(moduleExports, method); }); @@ -85,10 +79,7 @@ export class CucumberInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleFile( '@cucumber/cucumber/lib/runtime/test_case_runner.js', ['^8.0.0', '^9.0.0', '^10.0.0'], - (moduleExports, moduleVersion) => { - this._diag.debug( - `Applying patch for @cucumber/cucumber/lib/runtime/test_case_runner.js@${moduleVersion}` - ); + moduleExports => { if (isWrapped(moduleExports.default.prototype.run)) { this._unwrap(moduleExports.default.prototype, 'run'); this._unwrap(moduleExports.default.prototype, 'runStep'); @@ -115,11 +106,8 @@ export class CucumberInstrumentation extends InstrumentationBase { } return moduleExports; }, - (moduleExports, moduleVersion) => { + moduleExports => { if (moduleExports === undefined) return; - this._diag.debug( - `Removing patch for @cucumber/cucumber/lib/runtime/test_case_runner.js@${moduleVersion}` - ); this._unwrap(moduleExports.default.prototype, 'run'); this._unwrap(moduleExports.default.prototype, 'runStep'); if ('runAttempt' in moduleExports.default.prototype) { diff --git a/plugins/node/instrumentation-dataloader/src/instrumentation.ts b/plugins/node/instrumentation-dataloader/src/instrumentation.ts index 75cfb03861..55d53ece64 100644 --- a/plugins/node/instrumentation-dataloader/src/instrumentation.ts +++ b/plugins/node/instrumentation-dataloader/src/instrumentation.ts @@ -20,7 +20,6 @@ import { isWrapped, } from '@opentelemetry/instrumentation'; import { - diag, trace, context, Link, @@ -54,17 +53,13 @@ export class DataloaderInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( MODULE_NAME, ['^2.0.0'], - (dataloader, moduleVersion) => { - diag.debug(`Applying patch for ${MODULE_NAME}@${moduleVersion}`); - + dataloader => { this._patchLoad(dataloader.prototype); this._patchLoadMany(dataloader.prototype); return this._getPatchedConstructor(dataloader); }, - (dataloader, moduleVersion) => { - diag.debug(`Removing patch for ${MODULE_NAME}@${moduleVersion}`); - + dataloader => { if (isWrapped(dataloader.prototype.load)) { this._unwrap(dataloader.prototype, 'load'); } diff --git a/plugins/node/instrumentation-fs/src/instrumentation.ts b/plugins/node/instrumentation-fs/src/instrumentation.ts index 15da51a5ea..d3fea1c952 100644 --- a/plugins/node/instrumentation-fs/src/instrumentation.ts +++ b/plugins/node/instrumentation-fs/src/instrumentation.ts @@ -65,7 +65,6 @@ export default class FsInstrumentation extends InstrumentationBase { 'fs', ['*'], (fs: FS) => { - this._diag.debug('Applying patch for fs'); for (const fName of SYNC_FUNCTIONS) { const { objectToPatch, functionNameToPatch } = indexFs(fs, fName); @@ -113,7 +112,6 @@ export default class FsInstrumentation extends InstrumentationBase { }, (fs: FS) => { if (fs === undefined) return; - this._diag.debug('Removing patch for fs'); for (const fName of SYNC_FUNCTIONS) { const { objectToPatch, functionNameToPatch } = indexFs(fs, fName); if (isWrapped(objectToPatch[functionNameToPatch])) { @@ -137,7 +135,6 @@ export default class FsInstrumentation extends InstrumentationBase { 'fs/promises', ['*'], (fsPromises: FSPromises) => { - this._diag.debug('Applying patch for fs/promises'); for (const fName of PROMISE_FUNCTIONS) { if (isWrapped(fsPromises[fName])) { this._unwrap(fsPromises, fName); @@ -152,7 +149,6 @@ export default class FsInstrumentation extends InstrumentationBase { }, (fsPromises: FSPromises) => { if (fsPromises === undefined) return; - this._diag.debug('Removing patch for fs/promises'); for (const fName of PROMISE_FUNCTIONS) { if (isWrapped(fsPromises[fName])) { this._unwrap(fsPromises, fName); diff --git a/plugins/node/instrumentation-lru-memoizer/src/instrumentation.ts b/plugins/node/instrumentation-lru-memoizer/src/instrumentation.ts index c901a500a5..d11e803973 100644 --- a/plugins/node/instrumentation-lru-memoizer/src/instrumentation.ts +++ b/plugins/node/instrumentation-lru-memoizer/src/instrumentation.ts @@ -33,8 +33,6 @@ export default class LruMemoizerInstrumentation extends InstrumentationBase { 'lru-memoizer', ['>=1.3 <3'], moduleExports => { - this._diag.debug('applying patch for lru-memoizer'); - // moduleExports is a function which receives an options object, // and returns a "memoizer" function upon invocation. // We want to patch this "memoizer's" internal function diff --git a/plugins/node/instrumentation-mongoose/src/mongoose.ts b/plugins/node/instrumentation-mongoose/src/mongoose.ts index 967a30ded1..3de0ea33ee 100644 --- a/plugins/node/instrumentation-mongoose/src/mongoose.ts +++ b/plugins/node/instrumentation-mongoose/src/mongoose.ts @@ -126,7 +126,6 @@ export class MongooseInstrumentation extends InstrumentationBase { } private unpatch(moduleExports: typeof mongoose): void { - this._diag.debug('mongoose instrumentation: unpatch mongoose'); this._unwrap(moduleExports.Model.prototype, 'save'); // revert the patch for $save which we applied by aliasing it to patched `save` moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save; diff --git a/plugins/node/instrumentation-socket.io/src/socket.io.ts b/plugins/node/instrumentation-socket.io/src/socket.io.ts index f5ef96df8f..51c3d1d962 100644 --- a/plugins/node/instrumentation-socket.io/src/socket.io.ts +++ b/plugins/node/instrumentation-socket.io/src/socket.io.ts @@ -72,7 +72,6 @@ export class SocketIoInstrumentation extends InstrumentationBase { if (moduleVersion === undefined) { return moduleExports; } - this._diag.debug(`applying patch to socket.io@${moduleVersion} Socket`); if (isWrapped(moduleExports?.Socket?.prototype?.on)) { this._unwrap(moduleExports.Socket.prototype, 'on'); } @@ -112,9 +111,6 @@ export class SocketIoInstrumentation extends InstrumentationBase { if (moduleVersion === undefined) { return moduleExports; } - this._diag.debug( - `applying patch to socket.io@${moduleVersion} StrictEventEmitter` - ); if (isWrapped(moduleExports?.BroadcastOperator?.prototype?.emit)) { this._unwrap(moduleExports.BroadcastOperator.prototype, 'emit'); } @@ -142,9 +138,6 @@ export class SocketIoInstrumentation extends InstrumentationBase { if (moduleVersion === undefined) { return moduleExports; } - this._diag.debug( - `applying patch to socket.io@${moduleVersion} Namespace` - ); if (isWrapped(moduleExports?.Namespace?.prototype?.emit)) { this._unwrap(moduleExports.Namespace.prototype, 'emit'); } @@ -171,7 +164,6 @@ export class SocketIoInstrumentation extends InstrumentationBase { if (moduleVersion === undefined) { return moduleExports; } - this._diag.debug(`applying patch to socket.io@${moduleVersion} Socket`); if (isWrapped(moduleExports.prototype?.on)) { this._unwrap(moduleExports.prototype, 'on'); } @@ -206,9 +198,6 @@ export class SocketIoInstrumentation extends InstrumentationBase { if (moduleVersion === undefined) { return moduleExports; } - this._diag.debug( - `applying patch to socket.io@${moduleVersion} Namespace` - ); if (isWrapped(moduleExports?.prototype?.emit)) { this._unwrap(moduleExports.prototype, 'emit'); } @@ -237,9 +226,6 @@ export class SocketIoInstrumentation extends InstrumentationBase { if (moduleVersion === undefined) { return moduleExports; } - this._diag.debug( - `applying patch to socket.io@${moduleVersion} Server` - ); if (isWrapped(moduleExports?.Server?.prototype?.on)) { this._unwrap(moduleExports.Server.prototype, 'on'); } @@ -250,7 +236,7 @@ export class SocketIoInstrumentation extends InstrumentationBase { ); return moduleExports; }, - (moduleExports, moduleVersion) => { + moduleExports => { if (isWrapped(moduleExports?.Server?.prototype?.on)) { this._unwrap(moduleExports.Server.prototype, 'on'); } @@ -272,9 +258,6 @@ export class SocketIoInstrumentation extends InstrumentationBase { if (moduleVersion === undefined) { return moduleExports; } - this._diag.debug( - `applying patch to socket.io@${moduleVersion} Server` - ); if (isWrapped(moduleExports?.prototype?.on)) { this._unwrap(moduleExports.prototype, 'on'); } diff --git a/plugins/node/instrumentation-tedious/src/instrumentation.ts b/plugins/node/instrumentation-tedious/src/instrumentation.ts index 5415bae955..d9c23eeb86 100644 --- a/plugins/node/instrumentation-tedious/src/instrumentation.ts +++ b/plugins/node/instrumentation-tedious/src/instrumentation.ts @@ -73,9 +73,7 @@ export class TediousInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( TediousInstrumentation.COMPONENT, ['>=1.11.0 <=15'], - (moduleExports: typeof tedious, moduleVersion) => { - this._diag.debug(`Patching tedious@${moduleVersion}`); - + (moduleExports: typeof tedious) => { const ConnectionPrototype: any = moduleExports.Connection.prototype; for (const method of PATCHED_METHODS) { if (isWrapped(ConnectionPrototype[method])) { diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts index 35345739c3..0b88aeec75 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts @@ -151,7 +151,6 @@ export class AwsLambdaInstrumentation extends InstrumentationBase { module, ['*'], (moduleExports: LambdaModule) => { - diag.debug('Applying patch for lambda handler'); if (isWrapped(moduleExports[functionName])) { this._unwrap(moduleExports, functionName); } @@ -160,7 +159,6 @@ export class AwsLambdaInstrumentation extends InstrumentationBase { }, (moduleExports?: LambdaModule) => { if (moduleExports == null) return; - diag.debug('Removing patch for lambda handler'); this._unwrap(moduleExports, functionName); } ), diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts index 186976a190..7203010630 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts @@ -174,9 +174,6 @@ export class AwsInstrumentation extends InstrumentationBase { } protected patchV3ConstructStack(moduleExports: any, moduleVersion?: string) { - diag.debug( - 'aws-sdk instrumentation: applying patch to aws-sdk v3 constructStack' - ); this._wrap( moduleExports, 'constructStack', @@ -186,17 +183,11 @@ export class AwsInstrumentation extends InstrumentationBase { } protected unpatchV3ConstructStack(moduleExports: any) { - diag.debug( - 'aws-sdk instrumentation: applying unpatch to aws-sdk v3 constructStack' - ); this._unwrap(moduleExports, 'constructStack'); return moduleExports; } protected patchV3SmithyClient(moduleExports: any) { - diag.debug( - 'aws-sdk instrumentation: applying patch to aws-sdk v3 client send' - ); this._wrap( moduleExports.Client.prototype, 'send', @@ -206,17 +197,11 @@ export class AwsInstrumentation extends InstrumentationBase { } protected unpatchV3SmithyClient(moduleExports: any) { - diag.debug( - 'aws-sdk instrumentation: applying patch to aws-sdk v3 constructStack' - ); this._unwrap(moduleExports.Client.prototype, 'send'); return moduleExports; } protected patchV2(moduleExports: any, moduleVersion?: string) { - diag.debug( - `aws-sdk instrumentation: applying patch to ${AwsInstrumentation.component}` - ); this.unpatchV2(moduleExports); this._wrap( moduleExports?.Request.prototype, diff --git a/plugins/node/opentelemetry-instrumentation-bunyan/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-bunyan/src/instrumentation.ts index 08928a23d6..571cbc992e 100644 --- a/plugins/node/opentelemetry-instrumentation-bunyan/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-bunyan/src/instrumentation.ts @@ -46,8 +46,7 @@ export class BunyanInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( 'bunyan', ['<2.0'], - (module: any, moduleVersion) => { - this._diag.debug(`Applying patch for bunyan@${moduleVersion}`); + (module: any) => { const instrumentation = this; const Logger = module[Symbol.toStringTag] === 'Module' diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-cassandra/src/instrumentation.ts index a9bd3d2b85..754277310f 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-cassandra/src/instrumentation.ts @@ -51,10 +51,7 @@ export class CassandraDriverInstrumentation extends InstrumentationBase { return new InstrumentationNodeModuleDefinition( 'cassandra-driver', supportedVersions, - (driverModule, moduleVersion) => { - this._diag.debug( - `Applying patch for cassandra-driver@${moduleVersion}` - ); + driverModule => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const Client = driverModule.Client.prototype as any; @@ -76,10 +73,7 @@ export class CassandraDriverInstrumentation extends InstrumentationBase { return driverModule; }, - (driverModule, moduleVersion) => { - this._diag.debug( - `Removing patch for cassandra-driver@${moduleVersion}` - ); + driverModule => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const Client = driverModule.Client.prototype as any; diff --git a/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts index e28dd67d74..f1d13bb575 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { context, diag, Span, SpanOptions } from '@opentelemetry/api'; +import { context, Span, SpanOptions } from '@opentelemetry/api'; import { getRPCMetadata, RPCType } from '@opentelemetry/core'; import type { HandleFunction, NextFunction, Server } from 'connect'; import type { ServerResponse } from 'http'; @@ -55,12 +55,8 @@ export class ConnectInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( 'connect', ['^3.0.0'], - (moduleExports, moduleVersion) => { - diag.debug(`Applying patch for connect@${moduleVersion}`); + moduleExports => { return this._patchConstructor(moduleExports); - }, - (moduleExports, moduleVersion) => { - diag.debug(`Removing patch for connect@${moduleVersion}`); } ), ]; diff --git a/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts index ca96db7167..37ad2822fb 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts @@ -50,7 +50,6 @@ export class DnsInstrumentation extends InstrumentationBase { 'dns', ['*'], (moduleExports: typeof dns) => { - diag.debug('Applying patch for dns'); if (isWrapped(moduleExports.lookup)) { this._unwrap(moduleExports, 'lookup'); } @@ -66,7 +65,6 @@ export class DnsInstrumentation extends InstrumentationBase { }, moduleExports => { if (moduleExports === undefined) return; - diag.debug('Removing patch for dns'); this._unwrap(moduleExports, 'lookup'); this._unwrap(moduleExports.promises, 'lookup'); } @@ -75,7 +73,6 @@ export class DnsInstrumentation extends InstrumentationBase { 'dns/promises', ['*'], (moduleExports: typeof dnsPromises) => { - diag.debug('Applying patch for dns/promises'); if (isWrapped(moduleExports.lookup)) { this._unwrap(moduleExports, 'lookup'); } @@ -85,7 +82,6 @@ export class DnsInstrumentation extends InstrumentationBase { }, moduleExports => { if (moduleExports === undefined) return; - diag.debug('Removing patch for dns/promises'); this._unwrap(moduleExports, 'lookup'); } ), diff --git a/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts index 1d53559cf3..b20121b304 100644 --- a/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts @@ -71,8 +71,7 @@ export class ExpressInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( 'express', ['^4.0.0'], - (moduleExports, moduleVersion) => { - diag.debug(`Applying patch for express@${moduleVersion}`); + moduleExports => { const routerProto = moduleExports.Router as unknown as express.Router; // patch express.Router.route if (isWrapped(routerProto.route)) { @@ -97,9 +96,8 @@ export class ExpressInstrumentation extends InstrumentationBase { ); return moduleExports; }, - (moduleExports, moduleVersion) => { + moduleExports => { if (moduleExports === undefined) return; - diag.debug(`Removing patch for express@${moduleVersion}`); const routerProto = moduleExports.Router as unknown as express.Router; this._unwrap(routerProto, 'route'); this._unwrap(routerProto, 'use'); diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts index f1fb316081..aebf1bf721 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts @@ -68,8 +68,7 @@ export class FastifyInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( 'fastify', ['^3.0.0', '^4.0.0'], - (moduleExports, moduleVersion) => { - this._diag.debug(`Applying patch for fastify@${moduleVersion}`); + moduleExports => { return this._patchConstructor(moduleExports); } ), diff --git a/plugins/node/opentelemetry-instrumentation-generic-pool/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-generic-pool/src/instrumentation.ts index cea3ff9b81..29f3671688 100644 --- a/plugins/node/opentelemetry-instrumentation-generic-pool/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-generic-pool/src/instrumentation.ts @@ -41,8 +41,7 @@ export default class Instrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( MODULE_NAME, ['>=3'], - (moduleExports, moduleVersion) => { - api.diag.debug(`Applying patch for ${MODULE_NAME}@${moduleVersion}`); + moduleExports => { const Pool: any = moduleExports.Pool; if (isWrapped(Pool.prototype.acquire)) { this._unwrap(Pool.prototype, 'acquire'); @@ -54,8 +53,7 @@ export default class Instrumentation extends InstrumentationBase { ); return moduleExports; }, - (moduleExports, moduleVersion) => { - api.diag.debug(`Removing patch for ${MODULE_NAME}@${moduleVersion}`); + moduleExports => { const Pool: any = moduleExports.Pool; this._unwrap(Pool.prototype, 'acquire'); return moduleExports; @@ -64,8 +62,7 @@ export default class Instrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( MODULE_NAME, ['^2.4'], - (moduleExports, moduleVersion) => { - api.diag.debug(`Applying patch for ${MODULE_NAME}@${moduleVersion}`); + moduleExports => { const Pool: any = moduleExports.Pool; if (isWrapped(Pool.prototype.acquire)) { this._unwrap(Pool.prototype, 'acquire'); @@ -77,8 +74,7 @@ export default class Instrumentation extends InstrumentationBase { ); return moduleExports; }, - (moduleExports, moduleVersion) => { - api.diag.debug(`Removing patch for ${MODULE_NAME}@${moduleVersion}`); + moduleExports => { const Pool: any = moduleExports.Pool; this._unwrap(Pool.prototype, 'acquire'); return moduleExports; @@ -87,8 +83,7 @@ export default class Instrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( MODULE_NAME, ['2 - 2.3'], - (moduleExports, moduleVersion) => { - api.diag.debug(`Applying patch for ${MODULE_NAME}@${moduleVersion}`); + moduleExports => { this._isDisabled = false; if (isWrapped(moduleExports.Pool)) { this._unwrap(moduleExports, 'Pool'); @@ -96,8 +91,7 @@ export default class Instrumentation extends InstrumentationBase { this._wrap(moduleExports, 'Pool', this._poolWrapper.bind(this)); return moduleExports; }, - (moduleExports, moduleVersion) => { - api.diag.debug(`Removing patch for ${MODULE_NAME}@${moduleVersion}`); + moduleExports => { // since the object is created on the fly every time, we need to use // a boolean switch here to disable the instrumentation this._isDisabled = true; diff --git a/plugins/node/opentelemetry-instrumentation-graphql/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-graphql/src/instrumentation.ts index 8d30b67391..ddae6e3ddb 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-graphql/src/instrumentation.ts @@ -101,8 +101,7 @@ export class GraphQLInstrumentation extends InstrumentationBase { supportedVersions, // cannot make it work with appropriate type as execute function has 2 //types and/cannot import function but only types - (moduleExports: any, moduleVersion) => { - this._diag.debug(`Applying patch for graphql@${moduleVersion} execute`); + (moduleExports: any) => { if (isWrapped(moduleExports.execute)) { this._unwrap(moduleExports, 'execute'); } @@ -113,11 +112,8 @@ export class GraphQLInstrumentation extends InstrumentationBase { ); return moduleExports; }, - (moduleExports, moduleVersion) => { + moduleExports => { if (moduleExports) { - this._diag.debug( - `Removing patch for graphql@${moduleVersion} execute` - ); this._unwrap(moduleExports, 'execute'); } } @@ -128,17 +124,15 @@ export class GraphQLInstrumentation extends InstrumentationBase { return new InstrumentationNodeModuleFile( 'graphql/language/parser.js', supportedVersions, - (moduleExports: typeof graphqlTypes, moduleVersion) => { - this._diag.debug(`Applying patch for graphql@${moduleVersion} parse`); + (moduleExports: typeof graphqlTypes) => { if (isWrapped(moduleExports.parse)) { this._unwrap(moduleExports, 'parse'); } this._wrap(moduleExports, 'parse', this._patchParse()); return moduleExports; }, - (moduleExports: typeof graphqlTypes, moduleVersion) => { + (moduleExports: typeof graphqlTypes) => { if (moduleExports) { - this._diag.debug(`Removing patch for graphql@${moduleVersion} parse`); this._unwrap(moduleExports, 'parse'); } } @@ -149,21 +143,15 @@ export class GraphQLInstrumentation extends InstrumentationBase { return new InstrumentationNodeModuleFile( 'graphql/validation/validate.js', supportedVersions, - (moduleExports, moduleVersion) => { - this._diag.debug( - `Applying patch for graphql@${moduleVersion} validate` - ); + moduleExports => { if (isWrapped(moduleExports.validate)) { this._unwrap(moduleExports, 'validate'); } this._wrap(moduleExports, 'validate', this._patchValidate()); return moduleExports; }, - (moduleExports, moduleVersion) => { + moduleExports => { if (moduleExports) { - this._diag.debug( - `Removing patch for graphql@${moduleVersion} validate` - ); this._unwrap(moduleExports, 'validate'); } } diff --git a/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts index 4e938f438b..4e3d1d4ce9 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts @@ -59,7 +59,6 @@ export class HapiInstrumentation extends InstrumentationBase { ['>=17 <21'], (moduleExports: typeof Hapi) => { if (!isWrapped(moduleExports.server)) { - api.diag.debug('Patching Hapi.server'); this._wrap(moduleExports, 'server', this._getServerPatch.bind(this)); } @@ -69,7 +68,6 @@ export class HapiInstrumentation extends InstrumentationBase { // also be supported and instrumented. This is an issue with the DefinitelyTyped repo. // Function is defined at: https://github.com/hapijs/hapi/blob/main/lib/index.js#L9 if (!isWrapped(moduleExports.Server)) { - api.diag.debug('Patching Hapi.Server'); this._wrap( // eslint-disable-next-line @typescript-eslint/no-explicit-any moduleExports as any, @@ -80,7 +78,6 @@ export class HapiInstrumentation extends InstrumentationBase { return moduleExports; }, (moduleExports: typeof Hapi) => { - api.diag.debug('Unpatching Hapi'); this._massUnwrap([moduleExports], ['server', 'Server']); } ); diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts index d0d662cccd..26b671ab1f 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts @@ -54,7 +54,6 @@ export class IORedisInstrumentation extends InstrumentationBase { module[Symbol.toStringTag] === 'Module' ? module.default // ESM : module; // CommonJS - diag.debug('Applying patch for ioredis'); if (isWrapped(moduleExports.prototype.sendCommand)) { this._unwrap(moduleExports.prototype, 'sendCommand'); } @@ -79,7 +78,6 @@ export class IORedisInstrumentation extends InstrumentationBase { module[Symbol.toStringTag] === 'Module' ? module.default // ESM : module; // CommonJS - diag.debug('Removing patch for ioredis'); this._unwrap(moduleExports.prototype, 'sendCommand'); this._unwrap(moduleExports.prototype, 'connect'); } diff --git a/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts index 7aab25716a..ce45403efc 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts @@ -73,11 +73,7 @@ export class KnexInstrumentation extends InstrumentationBase { `knex/${basePath}/runner.js`, constants.SUPPORTED_VERSIONS, (Runner: any, moduleVersion) => { - api.diag.debug( - `Applying ${basePath}/runner.js patch for ${constants.MODULE_NAME}@${moduleVersion}` - ); this.ensureWrapped( - moduleVersion, Runner.prototype, 'query', this.createQueryWrapper(moduleVersion) @@ -85,9 +81,6 @@ export class KnexInstrumentation extends InstrumentationBase { return Runner; }, (Runner: any, moduleVersion) => { - api.diag.debug( - `Removing ${basePath}/runner.js patch for ${constants.MODULE_NAME}@${moduleVersion}` - ); this._unwrap(Runner.prototype, 'query'); return Runner; } @@ -98,24 +91,18 @@ export class KnexInstrumentation extends InstrumentationBase { return new InstrumentationNodeModuleFile( `knex/${basePath}/client.js`, constants.SUPPORTED_VERSIONS, - (Client: any, moduleVersion) => { - api.diag.debug( - `Applying ${basePath}/client.js patch for ${constants.MODULE_NAME}@${moduleVersion}` - ); + (Client: any) => { this.ensureWrapped( - moduleVersion, Client.prototype, 'queryBuilder', this.storeContext.bind(this) ); this.ensureWrapped( - moduleVersion, Client.prototype, 'schemaBuilder', this.storeContext.bind(this) ); this.ensureWrapped( - moduleVersion, Client.prototype, 'raw', this.storeContext.bind(this) @@ -214,15 +201,7 @@ export class KnexInstrumentation extends InstrumentationBase { }; } - ensureWrapped( - moduleVersion: string | undefined, - obj: any, - methodName: string, - wrapper: (original: any) => any - ) { - api.diag.debug( - `Applying ${methodName} patch for ${constants.MODULE_NAME}@${moduleVersion}` - ); + ensureWrapped(obj: any, methodName: string, wrapper: (original: any) => any) { if (isWrapped(obj[methodName])) { this._unwrap(obj, methodName); } diff --git a/plugins/node/opentelemetry-instrumentation-koa/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-koa/src/instrumentation.ts index 7ce213fe82..742e500122 100644 --- a/plugins/node/opentelemetry-instrumentation-koa/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-koa/src/instrumentation.ts @@ -63,7 +63,6 @@ export class KoaInstrumentation extends InstrumentationBase { if (moduleExports == null) { return moduleExports; } - api.diag.debug('Patching Koa'); if (isWrapped(moduleExports.prototype.use)) { this._unwrap(moduleExports.prototype, 'use'); } @@ -79,7 +78,6 @@ export class KoaInstrumentation extends InstrumentationBase { module[Symbol.toStringTag] === 'Module' ? module.default // ESM : module; // CommonJS - api.diag.debug('Unpatching Koa'); if (isWrapped(moduleExports.prototype.use)) { this._unwrap(moduleExports.prototype, 'use'); } diff --git a/plugins/node/opentelemetry-instrumentation-memcached/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-memcached/src/instrumentation.ts index 3ba0770355..fba48b5434 100644 --- a/plugins/node/opentelemetry-instrumentation-memcached/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-memcached/src/instrumentation.ts @@ -56,21 +56,14 @@ export class Instrumentation extends InstrumentationBase { 'memcached', ['>=2.2'], (moduleExports: typeof Memcached, moduleVersion) => { - this._diag.debug( - `Patching ${Instrumentation.COMPONENT}@${moduleVersion}` - ); this.ensureWrapped( - moduleVersion, moduleExports.prototype, 'command', this.wrapCommand.bind(this, moduleVersion) ); return moduleExports; }, - (moduleExports: typeof Memcached, moduleVersion) => { - this._diag.debug( - `Unpatching ${Instrumentation.COMPONENT}@${moduleVersion}` - ); + (moduleExports: typeof Memcached) => { if (moduleExports === undefined) return; // `command` is documented API missing from the types this._unwrap(moduleExports.prototype, 'command' as keyof Memcached); @@ -175,14 +168,10 @@ export class Instrumentation extends InstrumentationBase { } private ensureWrapped( - moduleVersion: string | undefined, obj: any, methodName: string, wrapper: (original: any) => any ) { - this._diag.debug( - `Applying ${methodName} patch for ${Instrumentation.COMPONENT}@${moduleVersion}` - ); if (isWrapped(obj[methodName])) { this._unwrap(obj, methodName); } diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts index 7b99c55c9a..f7c9e99d3a 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts @@ -15,7 +15,6 @@ */ import { context, - diag, trace, Span, SpanKind, @@ -148,8 +147,7 @@ export class MongoDBInstrumentation extends InstrumentationBase { private _getV3ConnectionPatches() { return { - v3PatchConnection: (moduleExports: T, moduleVersion?: string) => { - diag.debug(`Applying patch for mongodb@${moduleVersion}`); + v3PatchConnection: (moduleExports: T) => { // patch insert operation if (isWrapped(moduleExports.insert)) { this._unwrap(moduleExports, 'insert'); @@ -194,9 +192,8 @@ export class MongoDBInstrumentation extends InstrumentationBase { this._wrap(moduleExports, 'getMore', this._getV3PatchCursor()); return moduleExports; }, - v3UnpatchConnection: (moduleExports?: T, moduleVersion?: string) => { + v3UnpatchConnection: (moduleExports?: T) => { if (moduleExports === undefined) return; - diag.debug(`Removing internal patch for mongodb@${moduleVersion}`); this._unwrap(moduleExports, 'insert'); this._unwrap(moduleExports, 'remove'); this._unwrap(moduleExports, 'update'); @@ -209,8 +206,7 @@ export class MongoDBInstrumentation extends InstrumentationBase { private _getV4SessionsPatches() { return { - v4PatchSessions: (moduleExports: any, moduleVersion?: string) => { - diag.debug(`Applying patch for mongodb@${moduleVersion}`); + v4PatchSessions: (moduleExports: any) => { if (isWrapped(moduleExports.acquire)) { this._unwrap(moduleExports, 'acquire'); } @@ -230,8 +226,7 @@ export class MongoDBInstrumentation extends InstrumentationBase { ); return moduleExports; }, - v4UnpatchSessions: (moduleExports?: T, moduleVersion?: string) => { - diag.debug(`Removing internal patch for mongodb@${moduleVersion}`); + v4UnpatchSessions: (moduleExports?: T) => { if (moduleExports === undefined) return; if (isWrapped(moduleExports.acquire)) { this._unwrap(moduleExports, 'acquire'); @@ -294,8 +289,7 @@ export class MongoDBInstrumentation extends InstrumentationBase { private _getV4ConnectionPoolPatches() { return { - v4PatchConnectionPool: (moduleExports: any, moduleVersion?: string) => { - diag.debug(`Applying patch for mongodb@${moduleVersion}`); + v4PatchConnectionPool: (moduleExports: any) => { const poolPrototype = moduleExports.ConnectionPool.prototype; if (isWrapped(poolPrototype.checkOut)) { @@ -309,11 +303,7 @@ export class MongoDBInstrumentation extends InstrumentationBase { ); return moduleExports; }, - v4UnpatchConnectionPool: ( - moduleExports?: any, - moduleVersion?: string - ) => { - diag.debug(`Removing internal patch for mongodb@${moduleVersion}`); + v4UnpatchConnectionPool: (moduleExports?: any) => { if (moduleExports === undefined) return; this._unwrap(moduleExports.ConnectionPool.prototype, 'checkOut'); @@ -323,8 +313,7 @@ export class MongoDBInstrumentation extends InstrumentationBase { private _getV4ConnectPatches() { return { - v4PatchConnect: (moduleExports: any, moduleVersion?: string) => { - diag.debug(`Applying patch for mongodb@${moduleVersion}`); + v4PatchConnect: (moduleExports: any) => { if (isWrapped(moduleExports.connect)) { this._unwrap(moduleExports, 'connect'); } @@ -332,8 +321,7 @@ export class MongoDBInstrumentation extends InstrumentationBase { this._wrap(moduleExports, 'connect', this._getV4ConnectCommand()); return moduleExports; }, - v4UnpatchConnect: (moduleExports?: T, moduleVersion?: string) => { - diag.debug(`Removing internal patch for mongodb@${moduleVersion}`); + v4UnpatchConnect: (moduleExports?: T) => { if (moduleExports === undefined) return; this._unwrap(moduleExports, 'connect'); @@ -402,11 +390,7 @@ export class MongoDBInstrumentation extends InstrumentationBase { // eslint-disable-next-line @typescript-eslint/no-unused-vars private _getV4ConnectionPatches() { return { - v4PatchConnectionCallback: ( - moduleExports: any, - moduleVersion?: string - ) => { - diag.debug(`Applying patch for mongodb@${moduleVersion}`); + v4PatchConnectionCallback: (moduleExports: any) => { // patch insert operation if (isWrapped(moduleExports.Connection.prototype.command)) { this._unwrap(moduleExports.Connection.prototype, 'command'); @@ -419,11 +403,7 @@ export class MongoDBInstrumentation extends InstrumentationBase { ); return moduleExports; }, - v4PatchConnectionPromise: ( - moduleExports: any, - moduleVersion?: string - ) => { - diag.debug(`Applying patch for mongodb@${moduleVersion}`); + v4PatchConnectionPromise: (moduleExports: any) => { // patch insert operation if (isWrapped(moduleExports.Connection.prototype.command)) { this._unwrap(moduleExports.Connection.prototype, 'command'); @@ -436,9 +416,8 @@ export class MongoDBInstrumentation extends InstrumentationBase { ); return moduleExports; }, - v4UnpatchConnection: (moduleExports?: any, moduleVersion?: string) => { + v4UnpatchConnection: (moduleExports?: any) => { if (moduleExports === undefined) return; - diag.debug(`Removing internal patch for mongodb@${moduleVersion}`); this._unwrap(moduleExports.Connection.prototype, 'command'); }, }; diff --git a/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts index 78e9b78a03..2e4ba8675e 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts @@ -83,9 +83,7 @@ export class MySQLInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( 'mysql', ['2.*'], - (moduleExports: typeof mysqlTypes, moduleVersion) => { - diag.debug(`Patching mysql@${moduleVersion}`); - + (moduleExports: typeof mysqlTypes) => { diag.debug('Patching mysql.createConnection'); if (isWrapped(moduleExports.createConnection)) { this._unwrap(moduleExports, 'createConnection'); diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts index d2f130b2ac..e693488de0 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts @@ -53,9 +53,7 @@ export class MySQL2Instrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( 'mysql2', ['>= 1.4.2 < 4.0'], - (moduleExports: any, moduleVersion) => { - api.diag.debug(`Patching mysql2@${moduleVersion}`); - + (moduleExports: any) => { const ConnectionPrototype: mysqlTypes.Connection = moduleExports.Connection.prototype; api.diag.debug('Patching Connection.prototype.query'); diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts index d947169ec4..619c68760f 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts @@ -42,19 +42,7 @@ export class Instrumentation extends InstrumentationBase { init() { const module = new InstrumentationNodeModuleDefinition( Instrumentation.COMPONENT, - ['>=4.0.0'], - (moduleExports, moduleVersion) => { - this._diag.debug( - `Patching ${Instrumentation.COMPONENT}@${moduleVersion}` - ); - return moduleExports; - }, - (moduleExports, moduleVersion) => { - this._diag.debug( - `Unpatching ${Instrumentation.COMPONENT}@${moduleVersion}` - ); - if (moduleExports === undefined) return; - } + ['>=4.0.0'] ); module.files.push( @@ -71,7 +59,6 @@ export class Instrumentation extends InstrumentationBase { versions, (NestFactoryStatic: any, moduleVersion?: string) => { this.ensureWrapped( - moduleVersion, NestFactoryStatic.NestFactoryStatic.prototype, 'create', createWrapNestFactoryCreate(this.tracer, moduleVersion) @@ -90,7 +77,6 @@ export class Instrumentation extends InstrumentationBase { versions, (RouterExecutionContext: any, moduleVersion?: string) => { this.ensureWrapped( - moduleVersion, RouterExecutionContext.RouterExecutionContext.prototype, 'create', createWrapCreateHandler(this.tracer, moduleVersion) @@ -107,14 +93,10 @@ export class Instrumentation extends InstrumentationBase { } private ensureWrapped( - moduleVersion: string | undefined, obj: any, methodName: string, wrapper: (original: any) => any ) { - this._diag.debug( - `Applying ${methodName} patch for ${Instrumentation.COMPONENT}@${moduleVersion}` - ); if (isWrapped(obj[methodName])) { this._unwrap(obj, methodName); } diff --git a/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts index 59befd2daa..49611da87c 100644 --- a/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { diag, Span, SpanStatusCode, context, trace } from '@opentelemetry/api'; +import { Span, SpanStatusCode, context, trace } from '@opentelemetry/api'; import { InstrumentationBase, InstrumentationConfig, @@ -45,7 +45,6 @@ export class NetInstrumentation extends InstrumentationBase { 'net', ['*'], (moduleExports: typeof net) => { - diag.debug('Applying patch for net module'); if (isWrapped(moduleExports.Socket.prototype.connect)) { this._unwrap(moduleExports.Socket.prototype, 'connect'); } @@ -59,7 +58,6 @@ export class NetInstrumentation extends InstrumentationBase { }, (moduleExports: typeof net) => { if (moduleExports === undefined) return; - diag.debug('Removing patch from net module'); this._unwrap(moduleExports.Socket.prototype, 'connect'); } ), diff --git a/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts index 3a05d00ce4..d8043af302 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts @@ -55,8 +55,7 @@ export class PgInstrumentation extends InstrumentationBase { const modulePG = new InstrumentationNodeModuleDefinition( 'pg', ['8.*'], - (module: any, moduleVersion) => { - this._diag.debug(`Applying patch for pg@${moduleVersion}`); + (module: any) => { const moduleExports: typeof pgTypes = module[Symbol.toStringTag] === 'Module' ? module.default // ESM @@ -83,12 +82,11 @@ export class PgInstrumentation extends InstrumentationBase { return module; }, - (module: any, moduleVersion) => { + (module: any) => { const moduleExports: typeof pgTypes = module[Symbol.toStringTag] === 'Module' ? module.default // ESM : module; // CommonJS - this._diag.debug(`Removing patch for pg@${moduleVersion}`); if (isWrapped(moduleExports.Client.prototype.query)) { this._unwrap(moduleExports.Client.prototype, 'query'); } @@ -98,8 +96,7 @@ export class PgInstrumentation extends InstrumentationBase { const modulePGPool = new InstrumentationNodeModuleDefinition( 'pg-pool', ['2.*', '3.*'], - (moduleExports: typeof pgPoolTypes, moduleVersion) => { - this._diag.debug(`Applying patch for pg-pool@${moduleVersion}`); + (moduleExports: typeof pgPoolTypes) => { if (isWrapped(moduleExports.prototype.connect)) { this._unwrap(moduleExports.prototype, 'connect'); } @@ -110,8 +107,7 @@ export class PgInstrumentation extends InstrumentationBase { ); return moduleExports; }, - (moduleExports: typeof pgPoolTypes, moduleVersion) => { - this._diag.debug(`Removing patch for pg-pool@${moduleVersion}`); + (moduleExports: typeof pgPoolTypes) => { if (isWrapped(moduleExports.prototype.connect)) { this._unwrap(moduleExports.prototype, 'connect'); } diff --git a/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts index b84dfd4209..dce1ff3ecc 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts @@ -44,57 +44,52 @@ export class PinoInstrumentation extends InstrumentationBase { protected init() { return [ - new InstrumentationNodeModuleDefinition( - 'pino', - pinoVersions, - (module, moduleVersion?: string) => { - diag.debug(`Applying patch for pino@${moduleVersion}`); - const isESM = module[Symbol.toStringTag] === 'Module'; - const moduleExports = isESM ? module.default : module; - const instrumentation = this; - const patchedPino = Object.assign((...args: unknown[]) => { - if (args.length === 0) { - return moduleExports({ + new InstrumentationNodeModuleDefinition('pino', pinoVersions, module => { + const isESM = module[Symbol.toStringTag] === 'Module'; + const moduleExports = isESM ? module.default : module; + const instrumentation = this; + const patchedPino = Object.assign((...args: unknown[]) => { + if (args.length === 0) { + return moduleExports({ + mixin: instrumentation._getMixinFunction(), + }); + } + + if (args.length === 1) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const optsOrStream = args[0] as any; + if ( + typeof optsOrStream === 'string' || + typeof optsOrStream?.write === 'function' + ) { + args.splice(0, 0, { mixin: instrumentation._getMixinFunction(), }); + return moduleExports(...args); } + } - if (args.length === 1) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const optsOrStream = args[0] as any; - if ( - typeof optsOrStream === 'string' || - typeof optsOrStream?.write === 'function' - ) { - args.splice(0, 0, { - mixin: instrumentation._getMixinFunction(), - }); - return moduleExports(...args); - } - } - - args[0] = instrumentation._combineOptions(args[0]); + args[0] = instrumentation._combineOptions(args[0]); - return moduleExports(...args); - }, moduleExports); + return moduleExports(...args); + }, moduleExports); - if (typeof patchedPino.pino === 'function') { - patchedPino.pino = patchedPino; - } - if (typeof patchedPino.default === 'function') { - patchedPino.default = patchedPino; - } - if (isESM) { - if (module.pino) { - // This was added in pino@6.8.0 (https://github.com/pinojs/pino/pull/936). - module.pino = patchedPino; - } - module.default = patchedPino; + if (typeof patchedPino.pino === 'function') { + patchedPino.pino = patchedPino; + } + if (typeof patchedPino.default === 'function') { + patchedPino.default = patchedPino; + } + if (isESM) { + if (module.pino) { + // This was added in pino@6.8.0 (https://github.com/pinojs/pino/pull/936). + module.pino = patchedPino; } - - return patchedPino; + module.default = patchedPino; } - ), + + return patchedPino; + }), ]; } diff --git a/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts index 42f44e8775..a431fd76ca 100644 --- a/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts @@ -15,7 +15,6 @@ */ import { - diag, trace, context, SpanKind, @@ -96,7 +95,6 @@ export class RedisInstrumentation extends InstrumentationBase { : 'attachCommands'; // this is the function that extend a redis client with a list of commands. // the function patches the commandExecutor to record a span - this._diag.debug('Patching redis commands executor'); if (isWrapped(moduleExports?.[functionToPatch])) { this._unwrap(moduleExports, functionToPatch); } @@ -109,7 +107,6 @@ export class RedisInstrumentation extends InstrumentationBase { return moduleExports; }, (moduleExports: any) => { - this._diag.debug('Unpatching redis commands executor'); if (isWrapped(moduleExports?.extendWithCommands)) { this._unwrap(moduleExports, 'extendWithCommands'); } @@ -123,7 +120,6 @@ export class RedisInstrumentation extends InstrumentationBase { `${basePackageName}/dist/lib/client/multi-command.js`, ['^1.0.0'], (moduleExports: any) => { - this._diag.debug('Patching redis multi commands executor'); const redisClientMultiCommandPrototype = moduleExports?.default?.prototype; @@ -148,7 +144,6 @@ export class RedisInstrumentation extends InstrumentationBase { return moduleExports; }, (moduleExports: any) => { - this._diag.debug('Unpatching redis multi commands executor'); const redisClientMultiCommandPrototype = moduleExports?.default?.prototype; if (isWrapped(redisClientMultiCommandPrototype?.exec)) { @@ -164,7 +159,6 @@ export class RedisInstrumentation extends InstrumentationBase { `${basePackageName}/dist/lib/client/index.js`, ['^1.0.0'], (moduleExports: any) => { - this._diag.debug('Patching redis client'); const redisClientPrototype = moduleExports?.default?.prototype; // In some @redis/client versions 'multi' is a method. In later @@ -211,7 +205,6 @@ export class RedisInstrumentation extends InstrumentationBase { return moduleExports; }, (moduleExports: any) => { - this._diag.debug('Unpatching redis client'); const redisClientPrototype = moduleExports?.default?.prototype; if (isWrapped(redisClientPrototype?.multi)) { this._unwrap(redisClientPrototype, 'multi'); @@ -228,17 +221,10 @@ export class RedisInstrumentation extends InstrumentationBase { return new InstrumentationNodeModuleDefinition( basePackageName, ['^1.0.0'], - (moduleExports: any, moduleVersion?: string) => { - diag.debug( - `Patching ${basePackageName}/client@${moduleVersion} (redis@^4.0.0)` - ); + (moduleExports: any) => { return moduleExports; }, - (_moduleExports: any, moduleVersion?: string) => { - diag.debug( - `Unpatching ${basePackageName}/client@${moduleVersion} (redis@^4.0.0)` - ); - }, + () => {}, [commanderModuleFile, multiCommanderModule, clientIndexModule] ); } diff --git a/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts index a25ef5b8ed..09ee03e6ad 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts @@ -48,8 +48,7 @@ export class RedisInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( 'redis', ['^2.6.0', '^3.0.0'], - (moduleExports, moduleVersion) => { - diag.debug(`Patching redis@${moduleVersion}`); + moduleExports => { diag.debug('Patching redis.RedisClient.internal_send_command'); if ( isWrapped( diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts index f5a1ee96dd..73b8b8f5e7 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts @@ -35,8 +35,6 @@ import { isPromise, isAsyncFunction } from './utils'; import { getRPCMetadata, RPCType } from '@opentelemetry/core'; import type { RestifyInstrumentationConfig } from './types'; -const { diag } = api; - export class RestifyInstrumentation extends InstrumentationBase { constructor(config: RestifyInstrumentationConfig = {}) { super( @@ -71,10 +69,7 @@ export class RestifyInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleFile( 'restify/lib/server.js', constants.SUPPORTED_VERSIONS, - (moduleExports, moduleVersion) => { - diag.debug( - `Applying patch for ${constants.MODULE_NAME}@${moduleVersion}` - ); + moduleExports => { this._isDisabled = false; const Server: any = moduleExports; for (const name of constants.RESTIFY_METHODS) { @@ -99,10 +94,7 @@ export class RestifyInstrumentation extends InstrumentationBase { } return moduleExports; }, - (moduleExports, moduleVersion) => { - diag.debug( - `Removing patch for ${constants.MODULE_NAME}@${moduleVersion}` - ); + moduleExports => { this._isDisabled = true; if (moduleExports) { const Server: any = moduleExports; diff --git a/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts index ca5c73790c..02e01d287e 100644 --- a/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts @@ -50,17 +50,8 @@ export default class RouterInstrumentation extends InstrumentationBase { constants.MODULE_NAME, constants.SUPPORTED_VERSIONS, (moduleExports, moduleVersion) => { - api.diag.debug( - `Applying patch for ${constants.MODULE_NAME}@${moduleVersion}` - ); this._moduleVersion = moduleVersion; return moduleExports; - }, - (moduleExports, moduleVersion) => { - api.diag.debug( - `Removing patch for ${constants.MODULE_NAME}@${moduleVersion}` - ); - return moduleExports; } ); @@ -68,10 +59,7 @@ export default class RouterInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleFile( 'router/lib/layer.js', constants.SUPPORTED_VERSIONS, - (moduleExports, moduleVersion) => { - api.diag.debug( - `Applying patch for "lib/layer.js" of ${constants.MODULE_NAME}@${moduleVersion}` - ); + moduleExports => { const Layer: any = moduleExports; if (isWrapped(Layer.prototype.handle_request)) { this._unwrap(Layer.prototype, 'handle_request'); @@ -91,10 +79,7 @@ export default class RouterInstrumentation extends InstrumentationBase { ); return moduleExports; }, - (moduleExports, moduleVersion) => { - api.diag.debug( - `Removing patch for "lib/layer.js" of ${constants.MODULE_NAME}@${moduleVersion}` - ); + moduleExports => { const Layer: any = moduleExports; this._unwrap(Layer.prototype, 'handle_request'); this._unwrap(Layer.prototype, 'handle_error'); diff --git a/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts index 4312f2bc31..2e75400741 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts @@ -52,8 +52,7 @@ export class WinstonInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleFile( 'winston/lib/winston/logger.js', winston3Versions, - (logger: Winston3Logger, moduleVersion) => { - this._diag.debug(`Applying patch for winston@${moduleVersion}`); + (logger: Winston3Logger) => { if (isWrapped(logger.prototype['write'])) { this._unwrap(logger.prototype, 'write'); } @@ -71,9 +70,8 @@ export class WinstonInstrumentation extends InstrumentationBase { return logger; }, - (logger: Winston3Logger, moduleVersion) => { + (logger: Winston3Logger) => { if (logger === undefined) return; - this._diag.debug(`Removing patch for winston@${moduleVersion}`); this._unwrap(logger.prototype, 'write'); this._unwrap(logger.prototype, 'configure'); } @@ -91,8 +89,7 @@ export class WinstonInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleFile( 'winston/lib/winston/logger.js', winstonPre3Versions, - (fileExports: Winston2LoggerModule, moduleVersion) => { - this._diag.debug(`Applying patch for winston@${moduleVersion}`); + (fileExports: Winston2LoggerModule) => { const proto = fileExports.Logger.prototype; if (isWrapped(proto.log)) { @@ -102,9 +99,8 @@ export class WinstonInstrumentation extends InstrumentationBase { return fileExports; }, - (fileExports: Winston2LoggerModule, moduleVersion) => { + (fileExports: Winston2LoggerModule) => { if (fileExports === undefined) return; - this._diag.debug(`Removing patch for winston@${moduleVersion}`); this._unwrap(fileExports.Logger.prototype, 'log'); } ), From b31df370ce61a60a407495cac665c4131ca8dfb9 Mon Sep 17 00:00:00 2001 From: Daniel Dyla Date: Thu, 25 Apr 2024 14:02:49 -0400 Subject: [PATCH 11/39] chore: release main (#2083) * chore: release main * chore: release main * chore: sync package-lock.json --------- Co-authored-by: opentelemetrybot <107717825+opentelemetrybot@users.noreply.github.com> --- .release-please-manifest.json | 120 ++--- .../CHANGELOG.md | 14 + .../package.json | 4 +- .../CHANGELOG.md | 14 + .../package.json | 4 +- .../CHANGELOG.md | 14 + .../package.json | 4 +- .../CHANGELOG.md | 14 + .../package.json | 4 +- .../CHANGELOG.md | 14 + .../package.json | 4 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- .../CHANGELOG.md | 20 + .../package.json | 4 +- .../auto-instrumentations-node/CHANGELOG.md | 58 +++ .../auto-instrumentations-node/package.json | 80 ++-- .../auto-instrumentations-web/CHANGELOG.md | 21 + .../auto-instrumentations-web/package.json | 6 +- package-lock.json | 416 +++++++++--------- .../opentelemetry-host-metrics/CHANGELOG.md | 7 + .../opentelemetry-host-metrics/package.json | 2 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- .../CHANGELOG.md | 14 + .../package.json | 4 +- .../opentelemetry-redis-common/CHANGELOG.md | 7 + .../opentelemetry-redis-common/package.json | 2 +- .../opentelemetry-sql-common/CHANGELOG.md | 7 + .../opentelemetry-sql-common/package.json | 2 +- .../opentelemetry-test-utils/CHANGELOG.md | 13 + .../opentelemetry-test-utils/package.json | 2 +- packages/winston-transport/CHANGELOG.md | 15 + packages/winston-transport/package.json | 2 +- .../node/instrumentation-amqplib/CHANGELOG.md | 20 + .../node/instrumentation-amqplib/package.json | 4 +- .../instrumentation-cucumber/CHANGELOG.md | 13 + .../instrumentation-cucumber/package.json | 2 +- .../instrumentation-dataloader/CHANGELOG.md | 13 + .../instrumentation-dataloader/package.json | 2 +- plugins/node/instrumentation-fs/CHANGELOG.md | 8 + plugins/node/instrumentation-fs/package.json | 2 +- .../instrumentation-lru-memoizer/CHANGELOG.md | 20 + .../instrumentation-lru-memoizer/package.json | 4 +- .../instrumentation-mongoose/CHANGELOG.md | 20 + .../instrumentation-mongoose/package.json | 4 +- .../instrumentation-runtime-node/CHANGELOG.md | 13 + .../instrumentation-runtime-node/package.json | 2 +- .../instrumentation-socket.io/CHANGELOG.md | 15 + .../instrumentation-socket.io/package.json | 4 +- .../node/instrumentation-tedious/CHANGELOG.md | 20 + .../node/instrumentation-tedious/package.json | 4 +- .../node/instrumentation-undici/CHANGELOG.md | 10 + .../node/instrumentation-undici/package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 22 + .../package.json | 6 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 20 + .../package.json | 4 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 20 + .../package.json | 4 +- .../CHANGELOG.md | 20 + .../package.json | 4 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 23 + .../package.json | 6 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 20 + .../package.json | 4 +- .../CHANGELOG.md | 20 + .../package.json | 4 +- .../CHANGELOG.md | 20 + .../package.json | 4 +- .../CHANGELOG.md | 20 + .../package.json | 4 +- .../CHANGELOG.md | 22 + .../package.json | 6 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 22 + .../package.json | 6 +- .../CHANGELOG.md | 20 + .../package.json | 4 +- .../CHANGELOG.md | 22 + .../package.json | 6 +- .../CHANGELOG.md | 22 + .../package.json | 6 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 21 + .../package.json | 4 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 8 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- 122 files changed, 1332 insertions(+), 402 deletions(-) create mode 100644 plugins/node/instrumentation-undici/CHANGELOG.md diff --git a/.release-please-manifest.json b/.release-please-manifest.json index b5d6facdda..ea3c50877d 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,62 +1,62 @@ { - "detectors/node/opentelemetry-resource-detector-alibaba-cloud": "0.28.8", - "detectors/node/opentelemetry-resource-detector-aws": "1.4.1", - "detectors/node/opentelemetry-resource-detector-azure": "0.2.6", - "detectors/node/opentelemetry-resource-detector-container": "0.3.8", - "detectors/node/opentelemetry-resource-detector-gcp": "0.29.8", - "detectors/node/opentelemetry-resource-detector-github": "0.28.1", - "detectors/node/opentelemetry-resource-detector-instana": "0.8.0", - "metapackages/auto-instrumentations-node": "0.44.0", - "metapackages/auto-instrumentations-web": "0.38.0", - "packages/opentelemetry-host-metrics": "0.35.0", - "packages/opentelemetry-id-generator-aws-xray": "1.2.1", - "packages/opentelemetry-propagation-utils": "0.30.8", - "packages/opentelemetry-redis-common": "0.36.1", - "packages/opentelemetry-sql-common": "0.40.0", - "packages/opentelemetry-test-utils": "0.38.0", - "packages/winston-transport": "0.2.0", - "plugins/node/instrumentation-amqplib": "0.36.0", - "plugins/node/instrumentation-cucumber": "0.5.0", - "plugins/node/instrumentation-dataloader": "0.8.0", - "plugins/node/instrumentation-fs": "0.11.0", - "plugins/node/instrumentation-lru-memoizer": "0.36.0", - "plugins/node/instrumentation-mongoose": "0.37.0", - "plugins/node/instrumentation-runtime-node": "0.3.0", - "plugins/node/instrumentation-socket.io": "0.38.0", - "plugins/node/instrumentation-tedious": "0.9.0", - "plugins/node/instrumentation-undici": "0.1.0", - "plugins/node/opentelemetry-instrumentation-aws-lambda": "0.40.0", - "plugins/node/opentelemetry-instrumentation-aws-sdk": "0.40.0", - "plugins/node/opentelemetry-instrumentation-bunyan": "0.37.0", - "plugins/node/opentelemetry-instrumentation-cassandra": "0.37.0", - "plugins/node/opentelemetry-instrumentation-connect": "0.35.0", - "plugins/node/opentelemetry-instrumentation-dns": "0.35.0", - "plugins/node/opentelemetry-instrumentation-express": "0.37.0", - "plugins/node/opentelemetry-instrumentation-fastify": "0.35.0", - "plugins/node/opentelemetry-instrumentation-generic-pool": "0.35.0", - "plugins/node/opentelemetry-instrumentation-graphql": "0.39.0", - "plugins/node/opentelemetry-instrumentation-hapi": "0.36.0", - "plugins/node/opentelemetry-instrumentation-ioredis": "0.39.0", - "plugins/node/opentelemetry-instrumentation-knex": "0.35.0", - "plugins/node/opentelemetry-instrumentation-koa": "0.39.0", - "plugins/node/opentelemetry-instrumentation-memcached": "0.35.0", - "plugins/node/opentelemetry-instrumentation-mongodb": "0.42.0", - "plugins/node/opentelemetry-instrumentation-mysql": "0.37.0", - "plugins/node/opentelemetry-instrumentation-mysql2": "0.37.0", - "plugins/node/opentelemetry-instrumentation-nestjs-core": "0.36.0", - "plugins/node/opentelemetry-instrumentation-net": "0.35.0", - "plugins/node/opentelemetry-instrumentation-pg": "0.40.0", - "plugins/node/opentelemetry-instrumentation-pino": "0.37.0", - "plugins/node/opentelemetry-instrumentation-redis": "0.38.0", - "plugins/node/opentelemetry-instrumentation-redis-4": "0.38.0", - "plugins/node/opentelemetry-instrumentation-restify": "0.37.0", - "plugins/node/opentelemetry-instrumentation-router": "0.36.0", - "plugins/node/opentelemetry-instrumentation-winston": "0.36.0", - "plugins/web/opentelemetry-instrumentation-document-load": "0.37.0", - "plugins/web/opentelemetry-instrumentation-long-task": "0.37.0", - "plugins/web/opentelemetry-instrumentation-user-interaction": "0.37.0", - "plugins/web/opentelemetry-plugin-react-load": "0.30.0", - "propagators/opentelemetry-propagator-grpc-census-binary": "0.27.1", - "propagators/opentelemetry-propagator-instana": "0.3.1", - "propagators/opentelemetry-propagator-ot-trace": "0.27.1" + "detectors/node/opentelemetry-resource-detector-alibaba-cloud": "0.28.9", + "detectors/node/opentelemetry-resource-detector-aws": "1.4.2", + "detectors/node/opentelemetry-resource-detector-azure": "0.2.7", + "detectors/node/opentelemetry-resource-detector-container": "0.3.9", + "detectors/node/opentelemetry-resource-detector-gcp": "0.29.9", + "detectors/node/opentelemetry-resource-detector-github": "0.28.2", + "detectors/node/opentelemetry-resource-detector-instana": "0.9.0", + "metapackages/auto-instrumentations-node": "0.45.0", + "metapackages/auto-instrumentations-web": "0.39.0", + "packages/opentelemetry-host-metrics": "0.35.1", + "packages/opentelemetry-id-generator-aws-xray": "1.2.2", + "packages/opentelemetry-propagation-utils": "0.30.9", + "packages/opentelemetry-redis-common": "0.36.2", + "packages/opentelemetry-sql-common": "0.40.1", + "packages/opentelemetry-test-utils": "0.39.0", + "packages/winston-transport": "0.3.0", + "plugins/node/instrumentation-amqplib": "0.37.0", + "plugins/node/instrumentation-cucumber": "0.6.0", + "plugins/node/instrumentation-dataloader": "0.9.0", + "plugins/node/instrumentation-fs": "0.12.0", + "plugins/node/instrumentation-lru-memoizer": "0.37.0", + "plugins/node/instrumentation-mongoose": "0.38.0", + "plugins/node/instrumentation-runtime-node": "0.4.0", + "plugins/node/instrumentation-socket.io": "0.39.0", + "plugins/node/instrumentation-tedious": "0.10.0", + "plugins/node/instrumentation-undici": "0.2.0", + "plugins/node/opentelemetry-instrumentation-aws-lambda": "0.41.0", + "plugins/node/opentelemetry-instrumentation-aws-sdk": "0.41.0", + "plugins/node/opentelemetry-instrumentation-bunyan": "0.38.0", + "plugins/node/opentelemetry-instrumentation-cassandra": "0.38.0", + "plugins/node/opentelemetry-instrumentation-connect": "0.36.0", + "plugins/node/opentelemetry-instrumentation-dns": "0.36.0", + "plugins/node/opentelemetry-instrumentation-express": "0.38.0", + "plugins/node/opentelemetry-instrumentation-fastify": "0.36.0", + "plugins/node/opentelemetry-instrumentation-generic-pool": "0.36.0", + "plugins/node/opentelemetry-instrumentation-graphql": "0.40.0", + "plugins/node/opentelemetry-instrumentation-hapi": "0.37.0", + "plugins/node/opentelemetry-instrumentation-ioredis": "0.40.0", + "plugins/node/opentelemetry-instrumentation-knex": "0.36.0", + "plugins/node/opentelemetry-instrumentation-koa": "0.40.0", + "plugins/node/opentelemetry-instrumentation-memcached": "0.36.0", + "plugins/node/opentelemetry-instrumentation-mongodb": "0.43.0", + "plugins/node/opentelemetry-instrumentation-mysql": "0.38.0", + "plugins/node/opentelemetry-instrumentation-mysql2": "0.38.0", + "plugins/node/opentelemetry-instrumentation-nestjs-core": "0.37.0", + "plugins/node/opentelemetry-instrumentation-net": "0.36.0", + "plugins/node/opentelemetry-instrumentation-pg": "0.41.0", + "plugins/node/opentelemetry-instrumentation-pino": "0.38.0", + "plugins/node/opentelemetry-instrumentation-redis": "0.39.0", + "plugins/node/opentelemetry-instrumentation-redis-4": "0.39.0", + "plugins/node/opentelemetry-instrumentation-restify": "0.38.0", + "plugins/node/opentelemetry-instrumentation-router": "0.37.0", + "plugins/node/opentelemetry-instrumentation-winston": "0.37.0", + "plugins/web/opentelemetry-instrumentation-document-load": "0.38.0", + "plugins/web/opentelemetry-instrumentation-long-task": "0.38.0", + "plugins/web/opentelemetry-instrumentation-user-interaction": "0.38.0", + "plugins/web/opentelemetry-plugin-react-load": "0.30.1", + "propagators/opentelemetry-propagator-grpc-census-binary": "0.27.2", + "propagators/opentelemetry-propagator-instana": "0.3.2", + "propagators/opentelemetry-propagator-ot-trace": "0.27.2" } diff --git a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/CHANGELOG.md b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/CHANGELOG.md index 7036542f0d..ae374d98a6 100644 --- a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/CHANGELOG.md +++ b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/CHANGELOG.md @@ -72,6 +72,20 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.36.0 to ^0.37.0 +## [0.28.9](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-alibaba-cloud-v0.28.8...resource-detector-alibaba-cloud-v0.28.9) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.28.8](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-alibaba-cloud-v0.28.7...resource-detector-alibaba-cloud-v0.28.8) (2024-04-03) diff --git a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/package.json b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/package.json index 6463fc2337..45de2cd410 100644 --- a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/package.json +++ b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-alibaba-cloud", - "version": "0.28.8", + "version": "0.28.9", "description": "OpenTelemetry resource detector for Alibaba Cloud", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -40,7 +40,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", diff --git a/detectors/node/opentelemetry-resource-detector-aws/CHANGELOG.md b/detectors/node/opentelemetry-resource-detector-aws/CHANGELOG.md index 18ac8f2c17..f8199248af 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/CHANGELOG.md +++ b/detectors/node/opentelemetry-resource-detector-aws/CHANGELOG.md @@ -66,6 +66,20 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.35.1 to ^0.36.0 +## [1.4.2](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-aws-v1.4.1...resource-detector-aws-v1.4.2) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [1.4.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-aws-v1.4.0...resource-detector-aws-v1.4.1) (2024-04-03) diff --git a/detectors/node/opentelemetry-resource-detector-aws/package.json b/detectors/node/opentelemetry-resource-detector-aws/package.json index 6b611bc099..86a6aad28b 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/package.json +++ b/detectors/node/opentelemetry-resource-detector-aws/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-aws", - "version": "1.4.1", + "version": "1.4.2", "description": "OpenTelemetry SDK resource detector for AWS", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -39,7 +39,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", diff --git a/detectors/node/opentelemetry-resource-detector-azure/CHANGELOG.md b/detectors/node/opentelemetry-resource-detector-azure/CHANGELOG.md index b8196ebfbf..37556413cb 100644 --- a/detectors/node/opentelemetry-resource-detector-azure/CHANGELOG.md +++ b/detectors/node/opentelemetry-resource-detector-azure/CHANGELOG.md @@ -12,6 +12,20 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.36.0 to ^0.37.0 +## [0.2.7](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-azure-v0.2.6...resource-detector-azure-v0.2.7) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.2.6](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-azure-v0.2.5...resource-detector-azure-v0.2.6) (2024-04-03) diff --git a/detectors/node/opentelemetry-resource-detector-azure/package.json b/detectors/node/opentelemetry-resource-detector-azure/package.json index 7690843f9d..205caeb2cd 100644 --- a/detectors/node/opentelemetry-resource-detector-azure/package.json +++ b/detectors/node/opentelemetry-resource-detector-azure/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-azure", - "version": "0.2.6", + "version": "0.2.7", "description": "OpenTelemetry SDK resource detector for Azure", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -32,7 +32,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", diff --git a/detectors/node/opentelemetry-resource-detector-container/CHANGELOG.md b/detectors/node/opentelemetry-resource-detector-container/CHANGELOG.md index 182be674b8..36aa20bfa8 100644 --- a/detectors/node/opentelemetry-resource-detector-container/CHANGELOG.md +++ b/detectors/node/opentelemetry-resource-detector-container/CHANGELOG.md @@ -60,6 +60,20 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.36.0 to ^0.37.0 +## [0.3.9](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-container-v0.3.8...resource-detector-container-v0.3.9) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.3.8](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-container-v0.3.7...resource-detector-container-v0.3.8) (2024-04-03) diff --git a/detectors/node/opentelemetry-resource-detector-container/package.json b/detectors/node/opentelemetry-resource-detector-container/package.json index a6fa4c9c85..61b3e45616 100644 --- a/detectors/node/opentelemetry-resource-detector-container/package.json +++ b/detectors/node/opentelemetry-resource-detector-container/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-container", - "version": "0.3.8", + "version": "0.3.9", "description": "Opentelemetry resource detector to get container resource attributes", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -34,7 +34,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", diff --git a/detectors/node/opentelemetry-resource-detector-gcp/CHANGELOG.md b/detectors/node/opentelemetry-resource-detector-gcp/CHANGELOG.md index 56b1be8e1c..6037084fb9 100644 --- a/detectors/node/opentelemetry-resource-detector-gcp/CHANGELOG.md +++ b/detectors/node/opentelemetry-resource-detector-gcp/CHANGELOG.md @@ -60,6 +60,20 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.36.0 to ^0.37.0 +## [0.29.9](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-gcp-v0.29.8...resource-detector-gcp-v0.29.9) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.29.8](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-gcp-v0.29.7...resource-detector-gcp-v0.29.8) (2024-04-03) diff --git a/detectors/node/opentelemetry-resource-detector-gcp/package.json b/detectors/node/opentelemetry-resource-detector-gcp/package.json index cc070b0c5b..f44623d65b 100644 --- a/detectors/node/opentelemetry-resource-detector-gcp/package.json +++ b/detectors/node/opentelemetry-resource-detector-gcp/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-gcp", - "version": "0.29.8", + "version": "0.29.9", "description": "OpenTelemetry SDK resource detector for GCP", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -39,7 +39,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/semver": "7.5.3", diff --git a/detectors/node/opentelemetry-resource-detector-github/CHANGELOG.md b/detectors/node/opentelemetry-resource-detector-github/CHANGELOG.md index 989227e51e..02e132ad53 100644 --- a/detectors/node/opentelemetry-resource-detector-github/CHANGELOG.md +++ b/detectors/node/opentelemetry-resource-detector-github/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.28.2](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-github-v0.28.1...resource-detector-github-v0.28.2) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.28.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-github-v0.28.0...resource-detector-github-v0.28.1) (2023-08-14) diff --git a/detectors/node/opentelemetry-resource-detector-github/package.json b/detectors/node/opentelemetry-resource-detector-github/package.json index 0b7fc892fa..b4c45dbba2 100644 --- a/detectors/node/opentelemetry-resource-detector-github/package.json +++ b/detectors/node/opentelemetry-resource-detector-github/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-github", - "version": "0.28.1", + "version": "0.28.2", "description": "OpenTelemetry SDK resource detector for GitHub", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/detectors/node/opentelemetry-resource-detector-instana/CHANGELOG.md b/detectors/node/opentelemetry-resource-detector-instana/CHANGELOG.md index c0bcedff8a..8e06bd069d 100644 --- a/detectors/node/opentelemetry-resource-detector-instana/CHANGELOG.md +++ b/detectors/node/opentelemetry-resource-detector-instana/CHANGELOG.md @@ -6,6 +6,26 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.9.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-instana-v0.8.0...resource-detector-instana-v0.9.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.8.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-instana-v0.7.0...resource-detector-instana-v0.8.0) (2024-04-03) diff --git a/detectors/node/opentelemetry-resource-detector-instana/package.json b/detectors/node/opentelemetry-resource-detector-instana/package.json index e8fc0b716b..f8fa1192b2 100644 --- a/detectors/node/opentelemetry-resource-detector-instana/package.json +++ b/detectors/node/opentelemetry-resource-detector-instana/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-instana", - "version": "0.8.0", + "version": "0.9.0", "description": "OpenTelemetry SDK resource detector for Instana", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -38,7 +38,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-node": "^0.51.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", diff --git a/metapackages/auto-instrumentations-node/CHANGELOG.md b/metapackages/auto-instrumentations-node/CHANGELOG.md index b69ff3972e..51b021f535 100644 --- a/metapackages/auto-instrumentations-node/CHANGELOG.md +++ b/metapackages/auto-instrumentations-node/CHANGELOG.md @@ -152,6 +152,64 @@ * dependencies * @opentelemetry/instrumentation-aws-sdk bumped from ^0.38.0 to ^0.38.1 +## [0.45.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-node-v0.44.0...auto-instrumentations-node-v0.45.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/instrumentation-amqplib bumped from ^0.36.0 to ^0.37.0 + * @opentelemetry/instrumentation-aws-lambda bumped from ^0.40.0 to ^0.41.0 + * @opentelemetry/instrumentation-aws-sdk bumped from ^0.40.0 to ^0.41.0 + * @opentelemetry/instrumentation-bunyan bumped from ^0.37.0 to ^0.38.0 + * @opentelemetry/instrumentation-cassandra-driver bumped from ^0.37.0 to ^0.38.0 + * @opentelemetry/instrumentation-connect bumped from ^0.35.0 to ^0.36.0 + * @opentelemetry/instrumentation-cucumber bumped from ^0.5.0 to ^0.6.0 + * @opentelemetry/instrumentation-dataloader bumped from ^0.8.0 to ^0.9.0 + * @opentelemetry/instrumentation-dns bumped from ^0.35.0 to ^0.36.0 + * @opentelemetry/instrumentation-express bumped from ^0.37.0 to ^0.38.0 + * @opentelemetry/instrumentation-fastify bumped from ^0.35.0 to ^0.36.0 + * @opentelemetry/instrumentation-fs bumped from ^0.11.0 to ^0.12.0 + * @opentelemetry/instrumentation-generic-pool bumped from ^0.35.0 to ^0.36.0 + * @opentelemetry/instrumentation-graphql bumped from ^0.39.0 to ^0.40.0 + * @opentelemetry/instrumentation-hapi bumped from ^0.36.0 to ^0.37.0 + * @opentelemetry/instrumentation-ioredis bumped from ^0.39.0 to ^0.40.0 + * @opentelemetry/instrumentation-knex bumped from ^0.35.0 to ^0.36.0 + * @opentelemetry/instrumentation-koa bumped from ^0.39.0 to ^0.40.0 + * @opentelemetry/instrumentation-lru-memoizer bumped from ^0.36.0 to ^0.37.0 + * @opentelemetry/instrumentation-memcached bumped from ^0.35.0 to ^0.36.0 + * @opentelemetry/instrumentation-mongodb bumped from ^0.42.0 to ^0.43.0 + * @opentelemetry/instrumentation-mongoose bumped from ^0.37.0 to ^0.38.0 + * @opentelemetry/instrumentation-mysql bumped from ^0.37.0 to ^0.38.0 + * @opentelemetry/instrumentation-mysql2 bumped from ^0.37.0 to ^0.38.0 + * @opentelemetry/instrumentation-nestjs-core bumped from ^0.36.0 to ^0.37.0 + * @opentelemetry/instrumentation-net bumped from ^0.35.0 to ^0.36.0 + * @opentelemetry/instrumentation-pg bumped from ^0.40.0 to ^0.41.0 + * @opentelemetry/instrumentation-pino bumped from ^0.37.0 to ^0.38.0 + * @opentelemetry/instrumentation-redis bumped from ^0.38.0 to ^0.39.0 + * @opentelemetry/instrumentation-redis-4 bumped from ^0.38.0 to ^0.39.0 + * @opentelemetry/instrumentation-restify bumped from ^0.37.0 to ^0.38.0 + * @opentelemetry/instrumentation-router bumped from ^0.36.0 to ^0.37.0 + * @opentelemetry/instrumentation-socket.io bumped from ^0.38.0 to ^0.39.0 + * @opentelemetry/instrumentation-tedious bumped from ^0.9.0 to ^0.10.0 + * @opentelemetry/instrumentation-winston bumped from ^0.36.0 to ^0.37.0 + * @opentelemetry/resource-detector-alibaba-cloud bumped from ^0.28.8 to ^0.28.9 + * @opentelemetry/resource-detector-aws bumped from ^1.4.1 to ^1.4.2 + * @opentelemetry/resource-detector-container bumped from ^0.3.8 to ^0.3.9 + * @opentelemetry/resource-detector-gcp bumped from ^0.29.8 to ^0.29.9 + ## [0.44.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-node-v0.43.0...auto-instrumentations-node-v0.44.0) (2024-04-03) diff --git a/metapackages/auto-instrumentations-node/package.json b/metapackages/auto-instrumentations-node/package.json index e1814cf072..47ee58c6b3 100644 --- a/metapackages/auto-instrumentations-node/package.json +++ b/metapackages/auto-instrumentations-node/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/auto-instrumentations-node", - "version": "0.44.0", + "version": "0.45.0", "description": "Metapackage which bundles opentelemetry node core and contrib instrumentations", "author": "OpenTelemetry Authors", "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/metapackages/auto-instrumentations-node#readme", @@ -50,47 +50,47 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/instrumentation-amqplib": "^0.36.0", - "@opentelemetry/instrumentation-aws-lambda": "^0.40.0", - "@opentelemetry/instrumentation-aws-sdk": "^0.40.0", - "@opentelemetry/instrumentation-bunyan": "^0.37.0", - "@opentelemetry/instrumentation-cassandra-driver": "^0.37.0", - "@opentelemetry/instrumentation-connect": "^0.35.0", - "@opentelemetry/instrumentation-cucumber": "^0.5.0", - "@opentelemetry/instrumentation-dataloader": "^0.8.0", - "@opentelemetry/instrumentation-dns": "^0.35.0", - "@opentelemetry/instrumentation-express": "^0.37.0", - "@opentelemetry/instrumentation-fastify": "^0.35.0", - "@opentelemetry/instrumentation-fs": "^0.11.0", - "@opentelemetry/instrumentation-generic-pool": "^0.35.0", - "@opentelemetry/instrumentation-graphql": "^0.39.0", + "@opentelemetry/instrumentation-amqplib": "^0.37.0", + "@opentelemetry/instrumentation-aws-lambda": "^0.41.0", + "@opentelemetry/instrumentation-aws-sdk": "^0.41.0", + "@opentelemetry/instrumentation-bunyan": "^0.38.0", + "@opentelemetry/instrumentation-cassandra-driver": "^0.38.0", + "@opentelemetry/instrumentation-connect": "^0.36.0", + "@opentelemetry/instrumentation-cucumber": "^0.6.0", + "@opentelemetry/instrumentation-dataloader": "^0.9.0", + "@opentelemetry/instrumentation-dns": "^0.36.0", + "@opentelemetry/instrumentation-express": "^0.38.0", + "@opentelemetry/instrumentation-fastify": "^0.36.0", + "@opentelemetry/instrumentation-fs": "^0.12.0", + "@opentelemetry/instrumentation-generic-pool": "^0.36.0", + "@opentelemetry/instrumentation-graphql": "^0.40.0", "@opentelemetry/instrumentation-grpc": "^0.51.0", - "@opentelemetry/instrumentation-hapi": "^0.36.0", + "@opentelemetry/instrumentation-hapi": "^0.37.0", "@opentelemetry/instrumentation-http": "^0.51.0", - "@opentelemetry/instrumentation-ioredis": "^0.39.0", - "@opentelemetry/instrumentation-knex": "^0.35.0", - "@opentelemetry/instrumentation-koa": "^0.39.0", - "@opentelemetry/instrumentation-lru-memoizer": "^0.36.0", - "@opentelemetry/instrumentation-memcached": "^0.35.0", - "@opentelemetry/instrumentation-mongodb": "^0.42.0", - "@opentelemetry/instrumentation-mongoose": "^0.37.0", - "@opentelemetry/instrumentation-mysql": "^0.37.0", - "@opentelemetry/instrumentation-mysql2": "^0.37.0", - "@opentelemetry/instrumentation-nestjs-core": "^0.36.0", - "@opentelemetry/instrumentation-net": "^0.35.0", - "@opentelemetry/instrumentation-pg": "^0.40.0", - "@opentelemetry/instrumentation-pino": "^0.37.0", - "@opentelemetry/instrumentation-redis": "^0.38.0", - "@opentelemetry/instrumentation-redis-4": "^0.38.0", - "@opentelemetry/instrumentation-restify": "^0.37.0", - "@opentelemetry/instrumentation-router": "^0.36.0", - "@opentelemetry/instrumentation-socket.io": "^0.38.0", - "@opentelemetry/instrumentation-tedious": "^0.9.0", - "@opentelemetry/instrumentation-winston": "^0.36.0", - "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.8", - "@opentelemetry/resource-detector-aws": "^1.4.1", - "@opentelemetry/resource-detector-container": "^0.3.8", - "@opentelemetry/resource-detector-gcp": "^0.29.8", + "@opentelemetry/instrumentation-ioredis": "^0.40.0", + "@opentelemetry/instrumentation-knex": "^0.36.0", + "@opentelemetry/instrumentation-koa": "^0.40.0", + "@opentelemetry/instrumentation-lru-memoizer": "^0.37.0", + "@opentelemetry/instrumentation-memcached": "^0.36.0", + "@opentelemetry/instrumentation-mongodb": "^0.43.0", + "@opentelemetry/instrumentation-mongoose": "^0.38.0", + "@opentelemetry/instrumentation-mysql": "^0.38.0", + "@opentelemetry/instrumentation-mysql2": "^0.38.0", + "@opentelemetry/instrumentation-nestjs-core": "^0.37.0", + "@opentelemetry/instrumentation-net": "^0.36.0", + "@opentelemetry/instrumentation-pg": "^0.41.0", + "@opentelemetry/instrumentation-pino": "^0.38.0", + "@opentelemetry/instrumentation-redis": "^0.39.0", + "@opentelemetry/instrumentation-redis-4": "^0.39.0", + "@opentelemetry/instrumentation-restify": "^0.38.0", + "@opentelemetry/instrumentation-router": "^0.37.0", + "@opentelemetry/instrumentation-socket.io": "^0.39.0", + "@opentelemetry/instrumentation-tedious": "^0.10.0", + "@opentelemetry/instrumentation-winston": "^0.37.0", + "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", + "@opentelemetry/resource-detector-aws": "^1.4.2", + "@opentelemetry/resource-detector-container": "^0.3.9", + "@opentelemetry/resource-detector-gcp": "^0.29.9", "@opentelemetry/resources": "^1.12.0", "@opentelemetry/sdk-node": "^0.51.0" }, diff --git a/metapackages/auto-instrumentations-web/CHANGELOG.md b/metapackages/auto-instrumentations-web/CHANGELOG.md index 145883734e..94fc875089 100644 --- a/metapackages/auto-instrumentations-web/CHANGELOG.md +++ b/metapackages/auto-instrumentations-web/CHANGELOG.md @@ -12,6 +12,27 @@ * dependencies * @opentelemetry/instrumentation-document-load bumped from ^0.31.1 to ^0.31.2 +## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-web-v0.38.0...auto-instrumentations-web-v0.39.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/instrumentation-document-load bumped from ^0.37.0 to ^0.38.0 + * @opentelemetry/instrumentation-user-interaction bumped from ^0.37.0 to ^0.38.0 + ## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-web-v0.37.0...auto-instrumentations-web-v0.38.0) (2024-04-03) diff --git a/metapackages/auto-instrumentations-web/package.json b/metapackages/auto-instrumentations-web/package.json index d733b95e2d..4520fe6748 100644 --- a/metapackages/auto-instrumentations-web/package.json +++ b/metapackages/auto-instrumentations-web/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/auto-instrumentations-web", - "version": "0.38.0", + "version": "0.39.0", "description": "Metapackage which bundles opentelemetry node core and contrib instrumentations", "author": "OpenTelemetry Authors", "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/metapackages/auto-instrumentations-web#readme", @@ -62,9 +62,9 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/instrumentation-document-load": "^0.37.0", + "@opentelemetry/instrumentation-document-load": "^0.38.0", "@opentelemetry/instrumentation-fetch": "^0.51.0", - "@opentelemetry/instrumentation-user-interaction": "^0.37.0", + "@opentelemetry/instrumentation-user-interaction": "^0.38.0", "@opentelemetry/instrumentation-xml-http-request": "^0.51.0" }, "files": [ diff --git a/package-lock.json b/package-lock.json index 331b9eaeed..b30e3664a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37,7 +37,7 @@ }, "detectors/node/opentelemetry-resource-detector-alibaba-cloud": { "name": "@opentelemetry/resource-detector-alibaba-cloud", - "version": "0.28.8", + "version": "0.28.9", "license": "Apache-2.0", "dependencies": { "@opentelemetry/resources": "^1.0.0", @@ -45,7 +45,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -72,7 +72,7 @@ }, "detectors/node/opentelemetry-resource-detector-aws": { "name": "@opentelemetry/resource-detector-aws", - "version": "1.4.1", + "version": "1.4.2", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.0.0", @@ -81,7 +81,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -108,7 +108,7 @@ }, "detectors/node/opentelemetry-resource-detector-azure": { "name": "@opentelemetry/resource-detector-azure", - "version": "0.2.6", + "version": "0.2.7", "license": "Apache-2.0", "dependencies": { "@opentelemetry/resources": "^1.10.1", @@ -116,7 +116,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -142,7 +142,7 @@ }, "detectors/node/opentelemetry-resource-detector-container": { "name": "@opentelemetry/resource-detector-container", - "version": "0.3.8", + "version": "0.3.9", "license": "Apache-2.0", "dependencies": { "@opentelemetry/resources": "^1.0.0", @@ -150,7 +150,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -178,7 +178,7 @@ }, "detectors/node/opentelemetry-resource-detector-gcp": { "name": "@opentelemetry/resource-detector-gcp", - "version": "0.29.8", + "version": "0.29.9", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.0.0", @@ -188,7 +188,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/semver": "7.5.3", @@ -214,7 +214,7 @@ }, "detectors/node/opentelemetry-resource-detector-github": { "name": "@opentelemetry/resource-detector-github", - "version": "0.28.1", + "version": "0.28.2", "license": "Apache-2.0", "dependencies": { "@opentelemetry/resources": "^1.0.0" @@ -246,7 +246,7 @@ }, "detectors/node/opentelemetry-resource-detector-instana": { "name": "@opentelemetry/resource-detector-instana", - "version": "0.8.0", + "version": "0.9.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/resources": "^1.0.0", @@ -254,7 +254,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-node": "^0.51.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -281,51 +281,51 @@ }, "metapackages/auto-instrumentations-node": { "name": "@opentelemetry/auto-instrumentations-node", - "version": "0.44.0", + "version": "0.45.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/instrumentation-amqplib": "^0.36.0", - "@opentelemetry/instrumentation-aws-lambda": "^0.40.0", - "@opentelemetry/instrumentation-aws-sdk": "^0.40.0", - "@opentelemetry/instrumentation-bunyan": "^0.37.0", - "@opentelemetry/instrumentation-cassandra-driver": "^0.37.0", - "@opentelemetry/instrumentation-connect": "^0.35.0", - "@opentelemetry/instrumentation-cucumber": "^0.5.0", - "@opentelemetry/instrumentation-dataloader": "^0.8.0", - "@opentelemetry/instrumentation-dns": "^0.35.0", - "@opentelemetry/instrumentation-express": "^0.37.0", - "@opentelemetry/instrumentation-fastify": "^0.35.0", - "@opentelemetry/instrumentation-fs": "^0.11.0", - "@opentelemetry/instrumentation-generic-pool": "^0.35.0", - "@opentelemetry/instrumentation-graphql": "^0.39.0", + "@opentelemetry/instrumentation-amqplib": "^0.37.0", + "@opentelemetry/instrumentation-aws-lambda": "^0.41.0", + "@opentelemetry/instrumentation-aws-sdk": "^0.41.0", + "@opentelemetry/instrumentation-bunyan": "^0.38.0", + "@opentelemetry/instrumentation-cassandra-driver": "^0.38.0", + "@opentelemetry/instrumentation-connect": "^0.36.0", + "@opentelemetry/instrumentation-cucumber": "^0.6.0", + "@opentelemetry/instrumentation-dataloader": "^0.9.0", + "@opentelemetry/instrumentation-dns": "^0.36.0", + "@opentelemetry/instrumentation-express": "^0.38.0", + "@opentelemetry/instrumentation-fastify": "^0.36.0", + "@opentelemetry/instrumentation-fs": "^0.12.0", + "@opentelemetry/instrumentation-generic-pool": "^0.36.0", + "@opentelemetry/instrumentation-graphql": "^0.40.0", "@opentelemetry/instrumentation-grpc": "^0.51.0", - "@opentelemetry/instrumentation-hapi": "^0.36.0", + "@opentelemetry/instrumentation-hapi": "^0.37.0", "@opentelemetry/instrumentation-http": "^0.51.0", - "@opentelemetry/instrumentation-ioredis": "^0.39.0", - "@opentelemetry/instrumentation-knex": "^0.35.0", - "@opentelemetry/instrumentation-koa": "^0.39.0", - "@opentelemetry/instrumentation-lru-memoizer": "^0.36.0", - "@opentelemetry/instrumentation-memcached": "^0.35.0", - "@opentelemetry/instrumentation-mongodb": "^0.42.0", - "@opentelemetry/instrumentation-mongoose": "^0.37.0", - "@opentelemetry/instrumentation-mysql": "^0.37.0", - "@opentelemetry/instrumentation-mysql2": "^0.37.0", - "@opentelemetry/instrumentation-nestjs-core": "^0.36.0", - "@opentelemetry/instrumentation-net": "^0.35.0", - "@opentelemetry/instrumentation-pg": "^0.40.0", - "@opentelemetry/instrumentation-pino": "^0.37.0", - "@opentelemetry/instrumentation-redis": "^0.38.0", - "@opentelemetry/instrumentation-redis-4": "^0.38.0", - "@opentelemetry/instrumentation-restify": "^0.37.0", - "@opentelemetry/instrumentation-router": "^0.36.0", - "@opentelemetry/instrumentation-socket.io": "^0.38.0", - "@opentelemetry/instrumentation-tedious": "^0.9.0", - "@opentelemetry/instrumentation-winston": "^0.36.0", - "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.8", - "@opentelemetry/resource-detector-aws": "^1.4.1", - "@opentelemetry/resource-detector-container": "^0.3.8", - "@opentelemetry/resource-detector-gcp": "^0.29.8", + "@opentelemetry/instrumentation-ioredis": "^0.40.0", + "@opentelemetry/instrumentation-knex": "^0.36.0", + "@opentelemetry/instrumentation-koa": "^0.40.0", + "@opentelemetry/instrumentation-lru-memoizer": "^0.37.0", + "@opentelemetry/instrumentation-memcached": "^0.36.0", + "@opentelemetry/instrumentation-mongodb": "^0.43.0", + "@opentelemetry/instrumentation-mongoose": "^0.38.0", + "@opentelemetry/instrumentation-mysql": "^0.38.0", + "@opentelemetry/instrumentation-mysql2": "^0.38.0", + "@opentelemetry/instrumentation-nestjs-core": "^0.37.0", + "@opentelemetry/instrumentation-net": "^0.36.0", + "@opentelemetry/instrumentation-pg": "^0.41.0", + "@opentelemetry/instrumentation-pino": "^0.38.0", + "@opentelemetry/instrumentation-redis": "^0.39.0", + "@opentelemetry/instrumentation-redis-4": "^0.39.0", + "@opentelemetry/instrumentation-restify": "^0.38.0", + "@opentelemetry/instrumentation-router": "^0.37.0", + "@opentelemetry/instrumentation-socket.io": "^0.39.0", + "@opentelemetry/instrumentation-tedious": "^0.10.0", + "@opentelemetry/instrumentation-winston": "^0.37.0", + "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", + "@opentelemetry/resource-detector-aws": "^1.4.2", + "@opentelemetry/resource-detector-container": "^0.3.9", + "@opentelemetry/resource-detector-gcp": "^0.29.9", "@opentelemetry/resources": "^1.12.0", "@opentelemetry/sdk-node": "^0.51.0" }, @@ -350,13 +350,13 @@ }, "metapackages/auto-instrumentations-web": { "name": "@opentelemetry/auto-instrumentations-web", - "version": "0.38.0", + "version": "0.39.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/instrumentation-document-load": "^0.37.0", + "@opentelemetry/instrumentation-document-load": "^0.38.0", "@opentelemetry/instrumentation-fetch": "^0.51.0", - "@opentelemetry/instrumentation-user-interaction": "^0.37.0", + "@opentelemetry/instrumentation-user-interaction": "^0.38.0", "@opentelemetry/instrumentation-xml-http-request": "^0.51.0" }, "devDependencies": { @@ -36623,7 +36623,7 @@ }, "packages/opentelemetry-host-metrics": { "name": "@opentelemetry/host-metrics", - "version": "0.35.0", + "version": "0.35.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/sdk-metrics": "^1.8.0", @@ -36656,7 +36656,7 @@ }, "packages/opentelemetry-id-generator-aws-xray": { "name": "@opentelemetry/id-generator-aws-xray", - "version": "1.2.1", + "version": "1.2.2", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.0.0" @@ -36698,11 +36698,11 @@ }, "packages/opentelemetry-propagation-utils": { "name": "@opentelemetry/propagation-utils", - "version": "0.30.8", + "version": "0.30.9", "license": "Apache-2.0", "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "^9.1.1", "@types/node": "18.6.5", "@types/sinon": "^10.0.11", @@ -36728,7 +36728,7 @@ }, "packages/opentelemetry-redis-common": { "name": "@opentelemetry/redis-common", - "version": "0.36.1", + "version": "0.36.2", "license": "Apache-2.0", "devDependencies": { "@types/mocha": "^9.1.1", @@ -36750,7 +36750,7 @@ }, "packages/opentelemetry-sql-common": { "name": "@opentelemetry/sql-common", - "version": "0.40.0", + "version": "0.40.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.1.0" @@ -36773,7 +36773,7 @@ }, "packages/opentelemetry-test-utils": { "name": "@opentelemetry/contrib-test-utils", - "version": "0.38.0", + "version": "0.39.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.0.0", @@ -36799,7 +36799,7 @@ }, "packages/winston-transport": { "name": "@opentelemetry/winston-transport", - "version": "0.2.0", + "version": "0.3.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/api-logs": "^0.51.0", @@ -36829,7 +36829,7 @@ }, "plugins/node/instrumentation-amqplib": { "name": "@opentelemetry/instrumentation-amqplib", - "version": "0.36.0", + "version": "0.37.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -36838,7 +36838,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/amqplib": "^0.5.17", "@types/lodash": "4.14.199", "@types/mocha": "8.2.3", @@ -36869,7 +36869,7 @@ }, "plugins/node/instrumentation-cucumber": { "name": "@opentelemetry/instrumentation-cucumber", - "version": "0.5.0", + "version": "0.6.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -36936,7 +36936,7 @@ }, "plugins/node/instrumentation-dataloader": { "name": "@opentelemetry/instrumentation-dataloader", - "version": "0.8.0", + "version": "0.9.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0" @@ -36965,7 +36965,7 @@ }, "plugins/node/instrumentation-fs": { "name": "@opentelemetry/instrumentation-fs", - "version": "0.11.0", + "version": "0.12.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -36996,14 +36996,14 @@ }, "plugins/node/instrumentation-lru-memoizer": { "name": "@opentelemetry/instrumentation-lru-memoizer", - "version": "0.36.0", + "version": "0.37.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/lru-cache": "7.10.9", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -37031,7 +37031,7 @@ }, "plugins/node/instrumentation-mongoose": { "name": "@opentelemetry/instrumentation-mongoose", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -37040,7 +37040,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -37068,7 +37068,7 @@ }, "plugins/node/instrumentation-runtime-node": { "name": "@opentelemetry/instrumentation-runtime-node", - "version": "0.3.0", + "version": "0.4.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0" @@ -37108,7 +37108,7 @@ }, "plugins/node/instrumentation-socket.io": { "name": "@opentelemetry/instrumentation-socket.io", - "version": "0.38.0", + "version": "0.39.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -37116,7 +37116,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -37357,7 +37357,7 @@ }, "plugins/node/instrumentation-tedious": { "name": "@opentelemetry/instrumentation-tedious", - "version": "0.9.0", + "version": "0.10.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -37367,7 +37367,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", @@ -37388,7 +37388,7 @@ }, "plugins/node/instrumentation-undici": { "name": "@opentelemetry/instrumentation-undici", - "version": "0.1.0", + "version": "0.2.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -37420,7 +37420,7 @@ }, "plugins/node/opentelemetry-instrumentation-aws-lambda": { "name": "@opentelemetry/instrumentation-aws-lambda", - "version": "0.40.0", + "version": "0.41.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -37452,12 +37452,12 @@ }, "plugins/node/opentelemetry-instrumentation-aws-sdk": { "name": "@opentelemetry/instrumentation-aws-sdk", - "version": "0.40.0", + "version": "0.41.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/propagation-utils": "^0.30.8", + "@opentelemetry/propagation-utils": "^0.30.9", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { @@ -37468,7 +37468,7 @@ "@aws-sdk/client-sqs": "3.85.0", "@aws-sdk/types": "3.78.0", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -37500,7 +37500,7 @@ }, "plugins/node/opentelemetry-instrumentation-bunyan": { "name": "@opentelemetry/instrumentation-bunyan", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/api-logs": "^0.51.0", @@ -37543,7 +37543,7 @@ }, "plugins/node/opentelemetry-instrumentation-cassandra": { "name": "@opentelemetry/instrumentation-cassandra-driver", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -37552,7 +37552,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -37576,7 +37576,7 @@ }, "plugins/node/opentelemetry-instrumentation-connect": { "name": "@opentelemetry/instrumentation-connect", - "version": "0.35.0", + "version": "0.36.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -37615,7 +37615,7 @@ }, "plugins/node/opentelemetry-instrumentation-dns": { "name": "@opentelemetry/instrumentation-dns", - "version": "0.35.0", + "version": "0.36.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -37648,7 +37648,7 @@ }, "plugins/node/opentelemetry-instrumentation-express": { "name": "@opentelemetry/instrumentation-express", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -37658,7 +37658,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/express": "4.17.18", @@ -37683,7 +37683,7 @@ }, "plugins/node/opentelemetry-instrumentation-fastify": { "name": "@opentelemetry/instrumentation-fastify", - "version": "0.35.0", + "version": "0.36.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -37694,7 +37694,7 @@ "@fastify/express": "^2.0.2", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -37732,7 +37732,7 @@ }, "plugins/node/opentelemetry-instrumentation-generic-pool": { "name": "@opentelemetry/instrumentation-generic-pool", - "version": "0.35.0", + "version": "0.36.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -37797,7 +37797,7 @@ }, "plugins/node/opentelemetry-instrumentation-graphql": { "name": "@opentelemetry/instrumentation-graphql", - "version": "0.39.0", + "version": "0.40.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0" @@ -37831,7 +37831,7 @@ }, "plugins/node/opentelemetry-instrumentation-hapi": { "name": "@opentelemetry/instrumentation-hapi", - "version": "0.36.0", + "version": "0.37.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -37863,17 +37863,17 @@ }, "plugins/node/opentelemetry-instrumentation-ioredis": { "name": "@opentelemetry/instrumentation-ioredis", - "version": "0.39.0", + "version": "0.40.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/redis-common": "^0.36.1", + "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/ioredis4": "npm:@types/ioredis@4.28.10", @@ -37899,7 +37899,7 @@ }, "plugins/node/opentelemetry-instrumentation-knex": { "name": "@opentelemetry/instrumentation-knex", - "version": "0.35.0", + "version": "0.36.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -37929,7 +37929,7 @@ }, "plugins/node/opentelemetry-instrumentation-koa": { "name": "@opentelemetry/instrumentation-koa", - "version": "0.39.0", + "version": "0.40.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -37942,7 +37942,7 @@ "@koa/router": "12.0.0", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -37967,7 +37967,7 @@ }, "plugins/node/opentelemetry-instrumentation-memcached": { "name": "@opentelemetry/instrumentation-memcached", - "version": "0.35.0", + "version": "0.36.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -37977,7 +37977,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -37999,7 +37999,7 @@ }, "plugins/node/opentelemetry-instrumentation-mongodb": { "name": "@opentelemetry/instrumentation-mongodb", - "version": "0.42.0", + "version": "0.43.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -38009,7 +38009,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/bson": "4.0.5", @@ -38193,7 +38193,7 @@ }, "plugins/node/opentelemetry-instrumentation-mysql": { "name": "@opentelemetry/instrumentation-mysql", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -38203,7 +38203,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-metrics": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "7.0.2", @@ -38226,17 +38226,17 @@ }, "plugins/node/opentelemetry-instrumentation-mysql2": { "name": "@opentelemetry/instrumentation-mysql2", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", - "@opentelemetry/sql-common": "^0.40.0" + "@opentelemetry/sql-common": "^0.40.1" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", @@ -38292,7 +38292,7 @@ }, "plugins/node/opentelemetry-instrumentation-nestjs-core": { "name": "@opentelemetry/instrumentation-nestjs-core", - "version": "0.36.0", + "version": "0.37.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -38365,7 +38365,7 @@ }, "plugins/node/opentelemetry-instrumentation-net": { "name": "@opentelemetry/instrumentation-net", - "version": "0.35.0", + "version": "0.36.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -38395,19 +38395,19 @@ }, "plugins/node/opentelemetry-instrumentation-pg": { "name": "@opentelemetry/instrumentation-pg", - "version": "0.40.0", + "version": "0.41.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", - "@opentelemetry/sql-common": "^0.40.0", + "@opentelemetry/sql-common": "^0.40.1", "@types/pg": "8.6.1", "@types/pg-pool": "2.0.4" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -38434,7 +38434,7 @@ }, "plugins/node/opentelemetry-instrumentation-pino": { "name": "@opentelemetry/instrumentation-pino", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0" @@ -38442,7 +38442,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -38501,17 +38501,17 @@ }, "plugins/node/opentelemetry-instrumentation-redis": { "name": "@opentelemetry/instrumentation-redis", - "version": "0.38.0", + "version": "0.39.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/redis-common": "^0.36.1", + "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -38535,17 +38535,17 @@ }, "plugins/node/opentelemetry-instrumentation-redis-4": { "name": "@opentelemetry/instrumentation-redis-4", - "version": "0.38.0", + "version": "0.39.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/redis-common": "^0.36.1", + "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -38583,7 +38583,7 @@ }, "plugins/node/opentelemetry-instrumentation-restify": { "name": "@opentelemetry/instrumentation-restify", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -38650,7 +38650,7 @@ }, "plugins/node/opentelemetry-instrumentation-router": { "name": "@opentelemetry/instrumentation-router", - "version": "0.36.0", + "version": "0.37.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -38679,7 +38679,7 @@ }, "plugins/node/opentelemetry-instrumentation-winston": { "name": "@opentelemetry/instrumentation-winston", - "version": "0.36.0", + "version": "0.37.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/api-logs": "^0.51.0", @@ -38690,7 +38690,7 @@ "@opentelemetry/context-async-hooks": "^1.21.0", "@opentelemetry/sdk-trace-base": "^1.21.0", "@opentelemetry/sdk-trace-node": "^1.21.0", - "@opentelemetry/winston-transport": "^0.2.0", + "@opentelemetry/winston-transport": "^0.3.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -38714,7 +38714,7 @@ }, "plugins/web/opentelemetry-instrumentation-document-load": { "name": "@opentelemetry/instrumentation-document-load", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -38755,7 +38755,7 @@ }, "plugins/web/opentelemetry-instrumentation-long-task": { "name": "@opentelemetry/instrumentation-long-task", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -38801,7 +38801,7 @@ }, "plugins/web/opentelemetry-instrumentation-user-interaction": { "name": "@opentelemetry/instrumentation-user-interaction", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -38850,7 +38850,7 @@ }, "plugins/web/opentelemetry-plugin-react-load": { "name": "@opentelemetry/plugin-react-load", - "version": "0.30.0", + "version": "0.30.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/context-zone": "^1.0.0", @@ -38903,7 +38903,7 @@ }, "propagators/opentelemetry-propagator-grpc-census-binary": { "name": "@opentelemetry/propagator-grpc-census-binary", - "version": "0.27.1", + "version": "0.27.2", "license": "Apache-2.0", "devDependencies": { "@opentelemetry/api": "^1.0.0", @@ -38926,7 +38926,7 @@ }, "propagators/opentelemetry-propagator-instana": { "name": "@opentelemetry/propagator-instana", - "version": "0.3.1", + "version": "0.3.2", "license": "Apache-2.0", "devDependencies": { "@jsdevtools/coverage-istanbul-loader": "3.0.5", @@ -39159,7 +39159,7 @@ }, "propagators/opentelemetry-propagator-ot-trace": { "name": "@opentelemetry/propagator-ot-trace", - "version": "0.27.1", + "version": "0.27.2", "license": "Apache-2.0", "devDependencies": { "@jsdevtools/coverage-istanbul-loader": "3.0.5", @@ -45475,47 +45475,47 @@ "requires": { "@opentelemetry/api": "^1.4.1", "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/instrumentation-amqplib": "^0.36.0", - "@opentelemetry/instrumentation-aws-lambda": "^0.40.0", - "@opentelemetry/instrumentation-aws-sdk": "^0.40.0", - "@opentelemetry/instrumentation-bunyan": "^0.37.0", - "@opentelemetry/instrumentation-cassandra-driver": "^0.37.0", - "@opentelemetry/instrumentation-connect": "^0.35.0", - "@opentelemetry/instrumentation-cucumber": "^0.5.0", - "@opentelemetry/instrumentation-dataloader": "^0.8.0", - "@opentelemetry/instrumentation-dns": "^0.35.0", - "@opentelemetry/instrumentation-express": "^0.37.0", - "@opentelemetry/instrumentation-fastify": "^0.35.0", - "@opentelemetry/instrumentation-fs": "^0.11.0", - "@opentelemetry/instrumentation-generic-pool": "^0.35.0", - "@opentelemetry/instrumentation-graphql": "^0.39.0", + "@opentelemetry/instrumentation-amqplib": "^0.37.0", + "@opentelemetry/instrumentation-aws-lambda": "^0.41.0", + "@opentelemetry/instrumentation-aws-sdk": "^0.41.0", + "@opentelemetry/instrumentation-bunyan": "^0.38.0", + "@opentelemetry/instrumentation-cassandra-driver": "^0.38.0", + "@opentelemetry/instrumentation-connect": "^0.36.0", + "@opentelemetry/instrumentation-cucumber": "^0.6.0", + "@opentelemetry/instrumentation-dataloader": "^0.9.0", + "@opentelemetry/instrumentation-dns": "^0.36.0", + "@opentelemetry/instrumentation-express": "^0.38.0", + "@opentelemetry/instrumentation-fastify": "^0.36.0", + "@opentelemetry/instrumentation-fs": "^0.12.0", + "@opentelemetry/instrumentation-generic-pool": "^0.36.0", + "@opentelemetry/instrumentation-graphql": "^0.40.0", "@opentelemetry/instrumentation-grpc": "^0.51.0", - "@opentelemetry/instrumentation-hapi": "^0.36.0", + "@opentelemetry/instrumentation-hapi": "^0.37.0", "@opentelemetry/instrumentation-http": "^0.51.0", - "@opentelemetry/instrumentation-ioredis": "^0.39.0", - "@opentelemetry/instrumentation-knex": "^0.35.0", - "@opentelemetry/instrumentation-koa": "^0.39.0", - "@opentelemetry/instrumentation-lru-memoizer": "^0.36.0", - "@opentelemetry/instrumentation-memcached": "^0.35.0", - "@opentelemetry/instrumentation-mongodb": "^0.42.0", - "@opentelemetry/instrumentation-mongoose": "^0.37.0", - "@opentelemetry/instrumentation-mysql": "^0.37.0", - "@opentelemetry/instrumentation-mysql2": "^0.37.0", - "@opentelemetry/instrumentation-nestjs-core": "^0.36.0", - "@opentelemetry/instrumentation-net": "^0.35.0", - "@opentelemetry/instrumentation-pg": "^0.40.0", - "@opentelemetry/instrumentation-pino": "^0.37.0", - "@opentelemetry/instrumentation-redis": "^0.38.0", - "@opentelemetry/instrumentation-redis-4": "^0.38.0", - "@opentelemetry/instrumentation-restify": "^0.37.0", - "@opentelemetry/instrumentation-router": "^0.36.0", - "@opentelemetry/instrumentation-socket.io": "^0.38.0", - "@opentelemetry/instrumentation-tedious": "^0.9.0", - "@opentelemetry/instrumentation-winston": "^0.36.0", - "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.8", - "@opentelemetry/resource-detector-aws": "^1.4.1", - "@opentelemetry/resource-detector-container": "^0.3.8", - "@opentelemetry/resource-detector-gcp": "^0.29.8", + "@opentelemetry/instrumentation-ioredis": "^0.40.0", + "@opentelemetry/instrumentation-knex": "^0.36.0", + "@opentelemetry/instrumentation-koa": "^0.40.0", + "@opentelemetry/instrumentation-lru-memoizer": "^0.37.0", + "@opentelemetry/instrumentation-memcached": "^0.36.0", + "@opentelemetry/instrumentation-mongodb": "^0.43.0", + "@opentelemetry/instrumentation-mongoose": "^0.38.0", + "@opentelemetry/instrumentation-mysql": "^0.38.0", + "@opentelemetry/instrumentation-mysql2": "^0.38.0", + "@opentelemetry/instrumentation-nestjs-core": "^0.37.0", + "@opentelemetry/instrumentation-net": "^0.36.0", + "@opentelemetry/instrumentation-pg": "^0.41.0", + "@opentelemetry/instrumentation-pino": "^0.38.0", + "@opentelemetry/instrumentation-redis": "^0.39.0", + "@opentelemetry/instrumentation-redis-4": "^0.39.0", + "@opentelemetry/instrumentation-restify": "^0.38.0", + "@opentelemetry/instrumentation-router": "^0.37.0", + "@opentelemetry/instrumentation-socket.io": "^0.39.0", + "@opentelemetry/instrumentation-tedious": "^0.10.0", + "@opentelemetry/instrumentation-winston": "^0.37.0", + "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", + "@opentelemetry/resource-detector-aws": "^1.4.2", + "@opentelemetry/resource-detector-container": "^0.3.9", + "@opentelemetry/resource-detector-gcp": "^0.29.9", "@opentelemetry/resources": "^1.12.0", "@opentelemetry/sdk-node": "^0.51.0", "@types/mocha": "7.0.2", @@ -45536,9 +45536,9 @@ "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/instrumentation-document-load": "^0.37.0", + "@opentelemetry/instrumentation-document-load": "^0.38.0", "@opentelemetry/instrumentation-fetch": "^0.51.0", - "@opentelemetry/instrumentation-user-interaction": "^0.37.0", + "@opentelemetry/instrumentation-user-interaction": "^0.38.0", "@opentelemetry/instrumentation-xml-http-request": "^0.51.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -45752,7 +45752,7 @@ "version": "file:plugins/node/instrumentation-amqplib", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -45812,10 +45812,10 @@ "@aws-sdk/client-sqs": "3.85.0", "@aws-sdk/types": "3.78.0", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/propagation-utils": "^0.30.8", + "@opentelemetry/propagation-utils": "^0.30.9", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", @@ -45882,7 +45882,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -46061,7 +46061,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", @@ -46087,7 +46087,7 @@ "@fastify/express": "^2.0.2", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/instrumentation-http": "^0.51.0", @@ -46275,9 +46275,9 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/redis-common": "^0.36.1", + "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46322,7 +46322,7 @@ "@koa/router": "12.0.0", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/instrumentation-http": "^0.51.0", @@ -46384,7 +46384,7 @@ "version": "file:plugins/node/instrumentation-lru-memoizer", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", "@types/lru-cache": "7.10.9", "@types/mocha": "8.2.3", @@ -46412,7 +46412,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -46434,7 +46434,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-metrics": "^1.9.1", "@opentelemetry/sdk-trace-base": "^1.8.0", @@ -46563,7 +46563,7 @@ "version": "file:plugins/node/instrumentation-mongoose", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", @@ -46593,7 +46593,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-metrics": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", @@ -46616,11 +46616,11 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", - "@opentelemetry/sql-common": "^0.40.0", + "@opentelemetry/sql-common": "^0.40.1", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/semver": "7.5.3", @@ -46741,12 +46741,12 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", - "@opentelemetry/sql-common": "^0.40.0", + "@opentelemetry/sql-common": "^0.40.1", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/pg": "8.6.1", @@ -46770,7 +46770,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -46820,9 +46820,9 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/redis-common": "^0.36.1", + "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46844,10 +46844,10 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/redis-common": "^0.36.1", + "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46984,7 +46984,7 @@ "version": "file:plugins/node/instrumentation-socket.io", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -47177,7 +47177,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -47262,7 +47262,7 @@ "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.21.0", "@opentelemetry/sdk-trace-node": "^1.21.0", - "@opentelemetry/winston-transport": "^0.2.0", + "@opentelemetry/winston-transport": "^0.3.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -47377,7 +47377,7 @@ "version": "file:packages/opentelemetry-propagation-utils", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "^9.1.1", "@types/node": "18.6.5", "@types/sinon": "^10.0.11", @@ -47660,7 +47660,7 @@ "version": "file:detectors/node/opentelemetry-resource-detector-alibaba-cloud", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/resources": "^1.0.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", @@ -47687,7 +47687,7 @@ "version": "file:detectors/node/opentelemetry-resource-detector-aws", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/core": "^1.0.0", "@opentelemetry/resources": "^1.0.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -47715,7 +47715,7 @@ "version": "file:detectors/node/opentelemetry-resource-detector-azure", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/resources": "^1.10.1", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", @@ -47741,7 +47741,7 @@ "version": "file:detectors/node/opentelemetry-resource-detector-container", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/resources": "^1.0.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", @@ -47769,7 +47769,7 @@ "version": "file:detectors/node/opentelemetry-resource-detector-gcp", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/core": "^1.0.0", "@opentelemetry/resources": "^1.0.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -47821,7 +47821,7 @@ "version": "file:detectors/node/opentelemetry-resource-detector-instana", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/resources": "^1.0.0", "@opentelemetry/sdk-node": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", diff --git a/packages/opentelemetry-host-metrics/CHANGELOG.md b/packages/opentelemetry-host-metrics/CHANGELOG.md index fd1f38dff1..7456803e58 100644 --- a/packages/opentelemetry-host-metrics/CHANGELOG.md +++ b/packages/opentelemetry-host-metrics/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.35.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/host-metrics-v0.35.0...host-metrics-v0.35.1) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/host-metrics-v0.34.1...host-metrics-v0.35.0) (2024-01-29) diff --git a/packages/opentelemetry-host-metrics/package.json b/packages/opentelemetry-host-metrics/package.json index 0337703640..4d0a0e1d6e 100644 --- a/packages/opentelemetry-host-metrics/package.json +++ b/packages/opentelemetry-host-metrics/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/host-metrics", - "version": "0.35.0", + "version": "0.35.1", "description": "OpenTelemetry Host Metrics for Node.js", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/packages/opentelemetry-id-generator-aws-xray/CHANGELOG.md b/packages/opentelemetry-id-generator-aws-xray/CHANGELOG.md index ff50615475..419ff2d330 100644 --- a/packages/opentelemetry-id-generator-aws-xray/CHANGELOG.md +++ b/packages/opentelemetry-id-generator-aws-xray/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.2.2](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/id-generator-aws-xray-v1.2.1...id-generator-aws-xray-v1.2.2) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [1.2.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/id-generator-aws-xray-v1.2.0...id-generator-aws-xray-v1.2.1) (2023-08-14) diff --git a/packages/opentelemetry-id-generator-aws-xray/package.json b/packages/opentelemetry-id-generator-aws-xray/package.json index d4219fa49e..9387f6cb05 100644 --- a/packages/opentelemetry-id-generator-aws-xray/package.json +++ b/packages/opentelemetry-id-generator-aws-xray/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/id-generator-aws-xray", - "version": "1.2.1", + "version": "1.2.2", "description": "AWS X-Ray ID generator for OpenTelemetry", "main": "build/src/index.js", "publishConfig": { diff --git a/packages/opentelemetry-propagation-utils/CHANGELOG.md b/packages/opentelemetry-propagation-utils/CHANGELOG.md index 48fbd04979..0b233f0097 100644 --- a/packages/opentelemetry-propagation-utils/CHANGELOG.md +++ b/packages/opentelemetry-propagation-utils/CHANGELOG.md @@ -60,6 +60,20 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.36.0 to ^0.37.0 +## [0.30.9](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagation-utils-v0.30.8...propagation-utils-v0.30.9) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.30.8](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagation-utils-v0.30.7...propagation-utils-v0.30.8) (2024-04-03) diff --git a/packages/opentelemetry-propagation-utils/package.json b/packages/opentelemetry-propagation-utils/package.json index ed5f41dcef..ce82dd204c 100644 --- a/packages/opentelemetry-propagation-utils/package.json +++ b/packages/opentelemetry-propagation-utils/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/propagation-utils", - "version": "0.30.8", + "version": "0.30.9", "description": "Propagation utilities for opentelemetry instrumentations", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -43,7 +43,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "^9.1.1", "@types/node": "18.6.5", "@types/sinon": "^10.0.11", diff --git a/packages/opentelemetry-redis-common/CHANGELOG.md b/packages/opentelemetry-redis-common/CHANGELOG.md index c7959a4d6c..a140de285a 100644 --- a/packages/opentelemetry-redis-common/CHANGELOG.md +++ b/packages/opentelemetry-redis-common/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.36.2](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/redis-common-v0.36.1...redis-common-v0.36.2) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.36.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/redis-common-v0.36.0...redis-common-v0.36.1) (2023-08-14) diff --git a/packages/opentelemetry-redis-common/package.json b/packages/opentelemetry-redis-common/package.json index c7d6f373ea..57ea62092b 100644 --- a/packages/opentelemetry-redis-common/package.json +++ b/packages/opentelemetry-redis-common/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/redis-common", - "version": "0.36.1", + "version": "0.36.2", "description": "Redis utilities for redis instrumentations", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/packages/opentelemetry-sql-common/CHANGELOG.md b/packages/opentelemetry-sql-common/CHANGELOG.md index ee7f4757ee..37f15f923f 100644 --- a/packages/opentelemetry-sql-common/CHANGELOG.md +++ b/packages/opentelemetry-sql-common/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.40.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/sql-common-v0.40.0...sql-common-v0.40.1) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.40.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/sql-common-v0.39.0...sql-common-v0.40.0) (2023-07-12) diff --git a/packages/opentelemetry-sql-common/package.json b/packages/opentelemetry-sql-common/package.json index 61b79c6ddc..f4ba7ad04a 100644 --- a/packages/opentelemetry-sql-common/package.json +++ b/packages/opentelemetry-sql-common/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sql-common", - "version": "0.40.0", + "version": "0.40.1", "description": "Utilities for SQL instrumentations", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/packages/opentelemetry-test-utils/CHANGELOG.md b/packages/opentelemetry-test-utils/CHANGELOG.md index 1630f64d7c..84094633e1 100644 --- a/packages/opentelemetry-test-utils/CHANGELOG.md +++ b/packages/opentelemetry-test-utils/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/contrib-test-utils-v0.38.0...contrib-test-utils-v0.39.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/contrib-test-utils-v0.37.0...contrib-test-utils-v0.38.0) (2024-04-03) diff --git a/packages/opentelemetry-test-utils/package.json b/packages/opentelemetry-test-utils/package.json index 6b54001eb8..fe0b7c28f7 100644 --- a/packages/opentelemetry-test-utils/package.json +++ b/packages/opentelemetry-test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/contrib-test-utils", - "version": "0.38.0", + "version": "0.39.0", "description": "Test utilities for opentelemetry components", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/packages/winston-transport/CHANGELOG.md b/packages/winston-transport/CHANGELOG.md index e287c877ec..bea588b601 100644 --- a/packages/winston-transport/CHANGELOG.md +++ b/packages/winston-transport/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## [0.3.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/winston-transport-v0.2.0...winston-transport-v0.3.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* **instrumentation-winston:** Allow log level to be configured for log sending ([#2016](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2016)) ([b903bce](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/b903bce15d6ba4fa44daeaf6785abd6ed94cb5ff)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) +* **winston-transport:** Typescript issue with OpenTelemetryTransportV3 not assignable to TransportStream ([#2079](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2079)) ([b006f7f](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/b006f7f4ce466611e437240508b9bc4deb622175)), closes [#2015](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2015) + ## [0.2.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/winston-transport-v0.1.0...winston-transport-v0.2.0) (2024-04-03) diff --git a/packages/winston-transport/package.json b/packages/winston-transport/package.json index d7ffe927ec..f5dc513e8a 100644 --- a/packages/winston-transport/package.json +++ b/packages/winston-transport/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/winston-transport", - "version": "0.2.0", + "version": "0.3.0", "description": "OpenTelemetry Transport for winston", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/instrumentation-amqplib/CHANGELOG.md b/plugins/node/instrumentation-amqplib/CHANGELOG.md index 2a1d51fd81..abe7b56fcc 100644 --- a/plugins/node/instrumentation-amqplib/CHANGELOG.md +++ b/plugins/node/instrumentation-amqplib/CHANGELOG.md @@ -6,6 +6,26 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-amqplib-v0.36.0...instrumentation-amqplib-v0.37.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-amqplib-v0.35.0...instrumentation-amqplib-v0.36.0) (2024-04-03) diff --git a/plugins/node/instrumentation-amqplib/package.json b/plugins/node/instrumentation-amqplib/package.json index 612a6a3aab..6634aad6bd 100644 --- a/plugins/node/instrumentation-amqplib/package.json +++ b/plugins/node/instrumentation-amqplib/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-amqplib", - "version": "0.36.0", + "version": "0.37.0", "description": "OpenTelemetry automatic instrumentation for the `amqplib` package", "keywords": [ "amqplib", @@ -50,7 +50,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/amqplib": "^0.5.17", "@types/lodash": "4.14.199", "@types/mocha": "8.2.3", diff --git a/plugins/node/instrumentation-cucumber/CHANGELOG.md b/plugins/node/instrumentation-cucumber/CHANGELOG.md index 62cbee59f7..40c95823b6 100644 --- a/plugins/node/instrumentation-cucumber/CHANGELOG.md +++ b/plugins/node/instrumentation-cucumber/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.6.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-cucumber-v0.5.0...instrumentation-cucumber-v0.6.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.5.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-cucumber-v0.4.0...instrumentation-cucumber-v0.5.0) (2024-04-03) diff --git a/plugins/node/instrumentation-cucumber/package.json b/plugins/node/instrumentation-cucumber/package.json index b6f31c16ce..76c0e259aa 100644 --- a/plugins/node/instrumentation-cucumber/package.json +++ b/plugins/node/instrumentation-cucumber/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-cucumber", - "version": "0.5.0", + "version": "0.6.0", "description": "OpenTelemetry cucumber automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/instrumentation-dataloader/CHANGELOG.md b/plugins/node/instrumentation-dataloader/CHANGELOG.md index 54109c971e..6e198608a3 100644 --- a/plugins/node/instrumentation-dataloader/CHANGELOG.md +++ b/plugins/node/instrumentation-dataloader/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.9.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-dataloader-v0.8.0...instrumentation-dataloader-v0.9.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.8.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-dataloader-v0.7.0...instrumentation-dataloader-v0.8.0) (2024-04-03) diff --git a/plugins/node/instrumentation-dataloader/package.json b/plugins/node/instrumentation-dataloader/package.json index 8c5ae9eb74..5a4ef1ea76 100644 --- a/plugins/node/instrumentation-dataloader/package.json +++ b/plugins/node/instrumentation-dataloader/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-dataloader", - "version": "0.8.0", + "version": "0.9.0", "description": "OpenTelemetry instrumentation for dataloader", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/instrumentation-fs/CHANGELOG.md b/plugins/node/instrumentation-fs/CHANGELOG.md index e16b52dfbb..b77f34b167 100644 --- a/plugins/node/instrumentation-fs/CHANGELOG.md +++ b/plugins/node/instrumentation-fs/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.12.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-fs-v0.11.0...instrumentation-fs-v0.12.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + ## [0.11.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-fs-v0.10.0...instrumentation-fs-v0.11.0) (2024-04-03) diff --git a/plugins/node/instrumentation-fs/package.json b/plugins/node/instrumentation-fs/package.json index b79344d042..3d41437cbb 100644 --- a/plugins/node/instrumentation-fs/package.json +++ b/plugins/node/instrumentation-fs/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-fs", - "version": "0.11.0", + "version": "0.12.0", "description": "OpenTelemetry automatic instrumentation package for fs", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/instrumentation-lru-memoizer/CHANGELOG.md b/plugins/node/instrumentation-lru-memoizer/CHANGELOG.md index 94ca8ba5f2..0894302e84 100644 --- a/plugins/node/instrumentation-lru-memoizer/CHANGELOG.md +++ b/plugins/node/instrumentation-lru-memoizer/CHANGELOG.md @@ -6,6 +6,26 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-lru-memoizer-v0.36.0...instrumentation-lru-memoizer-v0.37.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-lru-memoizer-v0.35.0...instrumentation-lru-memoizer-v0.36.0) (2024-04-03) diff --git a/plugins/node/instrumentation-lru-memoizer/package.json b/plugins/node/instrumentation-lru-memoizer/package.json index 6ceef239a4..da739ec93e 100644 --- a/plugins/node/instrumentation-lru-memoizer/package.json +++ b/plugins/node/instrumentation-lru-memoizer/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-lru-memoizer", - "version": "0.36.0", + "version": "0.37.0", "description": "OpenTelemetry automatic instrumentation package for lru-memoizer", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -43,7 +43,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/lru-cache": "7.10.9", "@types/mocha": "8.2.3", "@types/node": "18.6.5", diff --git a/plugins/node/instrumentation-mongoose/CHANGELOG.md b/plugins/node/instrumentation-mongoose/CHANGELOG.md index a3bbb65de2..4015c327a4 100644 --- a/plugins/node/instrumentation-mongoose/CHANGELOG.md +++ b/plugins/node/instrumentation-mongoose/CHANGELOG.md @@ -6,6 +6,26 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mongoose-v0.37.0...instrumentation-mongoose-v0.38.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mongoose-v0.36.0...instrumentation-mongoose-v0.37.0) (2024-04-03) diff --git a/plugins/node/instrumentation-mongoose/package.json b/plugins/node/instrumentation-mongoose/package.json index 245fbc756c..ea57263dfd 100644 --- a/plugins/node/instrumentation-mongoose/package.json +++ b/plugins/node/instrumentation-mongoose/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-mongoose", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry automatic instrumentation package for mongoose", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,7 +46,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", diff --git a/plugins/node/instrumentation-runtime-node/CHANGELOG.md b/plugins/node/instrumentation-runtime-node/CHANGELOG.md index 2867662028..75742ee468 100644 --- a/plugins/node/instrumentation-runtime-node/CHANGELOG.md +++ b/plugins/node/instrumentation-runtime-node/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.4.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-runtime-node-v0.3.0...instrumentation-runtime-node-v0.4.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.3.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-runtime-node-v0.2.1...instrumentation-runtime-node-v0.3.0) (2024-04-03) diff --git a/plugins/node/instrumentation-runtime-node/package.json b/plugins/node/instrumentation-runtime-node/package.json index 15b254afc7..1d0759a869 100644 --- a/plugins/node/instrumentation-runtime-node/package.json +++ b/plugins/node/instrumentation-runtime-node/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-runtime-node", - "version": "0.3.0", + "version": "0.4.0", "description": "OpenTelemetry Node.js Performance measurement API automatic instrumentation package", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/instrumentation-socket.io/CHANGELOG.md b/plugins/node/instrumentation-socket.io/CHANGELOG.md index e1787d28a1..ff649a2854 100644 --- a/plugins/node/instrumentation-socket.io/CHANGELOG.md +++ b/plugins/node/instrumentation-socket.io/CHANGELOG.md @@ -6,6 +6,21 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-socket.io-v0.38.0...instrumentation-socket.io-v0.39.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-socket.io-v0.37.0...instrumentation-socket.io-v0.38.0) (2024-04-03) diff --git a/plugins/node/instrumentation-socket.io/package.json b/plugins/node/instrumentation-socket.io/package.json index 8cffebd79a..45557a81e4 100644 --- a/plugins/node/instrumentation-socket.io/package.json +++ b/plugins/node/instrumentation-socket.io/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-socket.io", - "version": "0.38.0", + "version": "0.39.0", "description": "OpenTelemetry automatic instrumentation package for socket.io", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -43,7 +43,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", diff --git a/plugins/node/instrumentation-tedious/CHANGELOG.md b/plugins/node/instrumentation-tedious/CHANGELOG.md index ea50ad6918..875d355bd0 100644 --- a/plugins/node/instrumentation-tedious/CHANGELOG.md +++ b/plugins/node/instrumentation-tedious/CHANGELOG.md @@ -6,6 +6,26 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.10.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-tedious-v0.9.0...instrumentation-tedious-v0.10.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.9.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-tedious-v0.8.0...instrumentation-tedious-v0.9.0) (2024-04-03) diff --git a/plugins/node/instrumentation-tedious/package.json b/plugins/node/instrumentation-tedious/package.json index b03962f166..c123a3a90b 100644 --- a/plugins/node/instrumentation-tedious/package.json +++ b/plugins/node/instrumentation-tedious/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-tedious", - "version": "0.9.0", + "version": "0.10.0", "description": "OpenTelemetry instrumentation for `tedious`", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -49,7 +49,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", diff --git a/plugins/node/instrumentation-undici/CHANGELOG.md b/plugins/node/instrumentation-undici/CHANGELOG.md new file mode 100644 index 0000000000..65d823248a --- /dev/null +++ b/plugins/node/instrumentation-undici/CHANGELOG.md @@ -0,0 +1,10 @@ +# Changelog + +## [0.2.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-undici-v0.1.0...instrumentation-undici-v0.2.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* **instr-undici:** add instrumentation for `undici` versions `>=5 <7` and global `fetch` API ([#1951](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1951)) ([fe18e2f](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fe18e2fbb2a6535cb72f314fdb1550a3a4160403)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) diff --git a/plugins/node/instrumentation-undici/package.json b/plugins/node/instrumentation-undici/package.json index 10ed52a9fd..d644222a56 100644 --- a/plugins/node/instrumentation-undici/package.json +++ b/plugins/node/instrumentation-undici/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-undici", - "version": "0.1.0", + "version": "0.2.0", "description": "OpenTelemetry instrumentation for undici and Node.js fetch().", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-aws-lambda/CHANGELOG.md index 6bfef574ff..10744b46b7 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.41.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-aws-lambda-v0.40.0...instrumentation-aws-lambda-v0.41.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.40.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-aws-lambda-v0.39.0...instrumentation-aws-lambda-v0.40.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json b/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json index 5fb1ef5f20..368ffcd5ef 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-aws-lambda", - "version": "0.40.0", + "version": "0.41.0", "description": "OpenTelemetry AWS Lambda automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-aws-sdk/CHANGELOG.md index 11054375eb..f0fbfb8ae1 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/CHANGELOG.md @@ -1,5 +1,27 @@ # Changelog +## [0.41.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-aws-sdk-v0.40.0...instrumentation-aws-sdk-v0.41.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/propagation-utils bumped from ^0.30.8 to ^0.30.9 + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.40.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-aws-sdk-v0.39.1...instrumentation-aws-sdk-v0.40.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json b/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json index 90154572fa..0500a453ef 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-aws-sdk", - "version": "0.40.0", + "version": "0.41.0", "description": "OpenTelemetry automatic instrumentation for the `aws-sdk` package", "keywords": [ "aws", @@ -46,7 +46,7 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/propagation-utils": "^0.30.8", + "@opentelemetry/propagation-utils": "^0.30.9", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { @@ -57,7 +57,7 @@ "@aws-sdk/client-sqs": "3.85.0", "@aws-sdk/types": "3.78.0", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", diff --git a/plugins/node/opentelemetry-instrumentation-bunyan/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-bunyan/CHANGELOG.md index 48e001d183..22ea9bc8c9 100644 --- a/plugins/node/opentelemetry-instrumentation-bunyan/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-bunyan/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-bunyan-v0.37.0...instrumentation-bunyan-v0.38.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-bunyan-v0.36.0...instrumentation-bunyan-v0.37.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-bunyan/package.json b/plugins/node/opentelemetry-instrumentation-bunyan/package.json index 038e16993e..2392146e10 100644 --- a/plugins/node/opentelemetry-instrumentation-bunyan/package.json +++ b/plugins/node/opentelemetry-instrumentation-bunyan/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-bunyan", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry instrumentation for bunyan", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-cassandra/CHANGELOG.md index 9409eb0758..8f9bcdec60 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-cassandra/CHANGELOG.md @@ -6,6 +6,26 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-cassandra-driver-v0.37.0...instrumentation-cassandra-driver-v0.38.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-cassandra-driver-v0.36.0...instrumentation-cassandra-driver-v0.37.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/package.json b/plugins/node/opentelemetry-instrumentation-cassandra/package.json index aa2c88828d..2529936322 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/package.json +++ b/plugins/node/opentelemetry-instrumentation-cassandra/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-cassandra-driver", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry instrumentation for cassandra-driver", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -45,7 +45,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", diff --git a/plugins/node/opentelemetry-instrumentation-connect/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-connect/CHANGELOG.md index b131149ea0..58957c90b7 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-connect/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-connect-v0.35.0...instrumentation-connect-v0.36.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-connect-v0.34.0...instrumentation-connect-v0.35.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-connect/package.json b/plugins/node/opentelemetry-instrumentation-connect/package.json index 862d3f3823..f0a6053c9d 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/package.json +++ b/plugins/node/opentelemetry-instrumentation-connect/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-connect", - "version": "0.35.0", + "version": "0.36.0", "description": "OpenTelemetry connect automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-dns/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-dns/CHANGELOG.md index 532bace379..0eb643eff4 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-dns/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-dns-v0.35.0...instrumentation-dns-v0.36.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-dns-v0.34.0...instrumentation-dns-v0.35.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-dns/package.json b/plugins/node/opentelemetry-instrumentation-dns/package.json index d40053950b..d7796a9a05 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/package.json +++ b/plugins/node/opentelemetry-instrumentation-dns/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-dns", - "version": "0.35.0", + "version": "0.36.0", "description": "OpenTelemetry dns automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-express/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-express/CHANGELOG.md index 1e48aed920..f236522440 100644 --- a/plugins/node/opentelemetry-instrumentation-express/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-express/CHANGELOG.md @@ -1,5 +1,25 @@ # Changelog +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-express-v0.37.0...instrumentation-express-v0.38.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-express-v0.36.1...instrumentation-express-v0.37.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-express/package.json b/plugins/node/opentelemetry-instrumentation-express/package.json index a53f2967ca..ea404c3154 100644 --- a/plugins/node/opentelemetry-instrumentation-express/package.json +++ b/plugins/node/opentelemetry-instrumentation-express/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-express", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry express automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,7 +46,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/express": "4.17.18", diff --git a/plugins/node/opentelemetry-instrumentation-fastify/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-fastify/CHANGELOG.md index ccca7532ed..7b829e6bd7 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-fastify/CHANGELOG.md @@ -1,5 +1,25 @@ # Changelog +## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-fastify-v0.35.0...instrumentation-fastify-v0.36.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-fastify-v0.34.0...instrumentation-fastify-v0.35.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-fastify/package.json b/plugins/node/opentelemetry-instrumentation-fastify/package.json index e1cd5daa15..4a55548d68 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/package.json +++ b/plugins/node/opentelemetry-instrumentation-fastify/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-fastify", - "version": "0.35.0", + "version": "0.36.0", "description": "OpenTelemetry fastify automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,7 +46,7 @@ "@fastify/express": "^2.0.2", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", diff --git a/plugins/node/opentelemetry-instrumentation-generic-pool/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-generic-pool/CHANGELOG.md index 9d9de9fe99..c8706562c2 100644 --- a/plugins/node/opentelemetry-instrumentation-generic-pool/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-generic-pool/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-generic-pool-v0.35.0...instrumentation-generic-pool-v0.36.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-generic-pool-v0.34.0...instrumentation-generic-pool-v0.35.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-generic-pool/package.json b/plugins/node/opentelemetry-instrumentation-generic-pool/package.json index 15e9f888aa..62f2ac2af7 100644 --- a/plugins/node/opentelemetry-instrumentation-generic-pool/package.json +++ b/plugins/node/opentelemetry-instrumentation-generic-pool/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-generic-pool", - "version": "0.35.0", + "version": "0.36.0", "description": "OpenTelemetry Generic Pool automatic instrumentation package", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-graphql/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-graphql/CHANGELOG.md index 9a52f6e41b..0fa285f9f1 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-graphql/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.40.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-graphql-v0.39.0...instrumentation-graphql-v0.40.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-graphql-v0.38.1...instrumentation-graphql-v0.39.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-graphql/package.json b/plugins/node/opentelemetry-instrumentation-graphql/package.json index e843537130..1ae2a4bdf9 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/package.json +++ b/plugins/node/opentelemetry-instrumentation-graphql/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-graphql", - "version": "0.39.0", + "version": "0.40.0", "description": "OpenTelemetry @opentelemetry/instrumentation-graphql automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-hapi/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-hapi/CHANGELOG.md index 58289a6d2d..b6da07df1d 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-hapi/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-hapi-v0.36.0...instrumentation-hapi-v0.37.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-hapi-v0.35.0...instrumentation-hapi-v0.36.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-hapi/package.json b/plugins/node/opentelemetry-instrumentation-hapi/package.json index 182c9fe968..a39a7e5b9a 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/package.json +++ b/plugins/node/opentelemetry-instrumentation-hapi/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-hapi", - "version": "0.36.0", + "version": "0.37.0", "description": "OpenTelemetry Hapi automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-ioredis/CHANGELOG.md index 6750af082e..9c9b2b3475 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-ioredis/CHANGELOG.md @@ -1,5 +1,28 @@ # Changelog +## [0.40.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-ioredis-v0.39.0...instrumentation-ioredis-v0.40.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* **instrumentation-ioredis:** drop @types/ioredis dependency ([#2069](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2069)) ([a172f8a](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/a172f8affa2d54b13542c3dfc103dd54ccf031ad)) +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/redis-common bumped from ^0.36.1 to ^0.36.2 + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-ioredis-v0.38.0...instrumentation-ioredis-v0.39.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/package.json b/plugins/node/opentelemetry-instrumentation-ioredis/package.json index ccd6a8be2a..84895bca4d 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/package.json +++ b/plugins/node/opentelemetry-instrumentation-ioredis/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-ioredis", - "version": "0.39.0", + "version": "0.40.0", "description": "OpenTelemetry ioredis automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -49,7 +49,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/ioredis4": "npm:@types/ioredis@4.28.10", @@ -68,7 +68,7 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/redis-common": "^0.36.1", + "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/semantic-conventions": "^1.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-ioredis#readme" diff --git a/plugins/node/opentelemetry-instrumentation-knex/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-knex/CHANGELOG.md index edb2d1f024..18f3a52d96 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-knex/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-knex-v0.35.0...instrumentation-knex-v0.36.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-knex-v0.34.0...instrumentation-knex-v0.35.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-knex/package.json b/plugins/node/opentelemetry-instrumentation-knex/package.json index ca283faf29..f14eceee31 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/package.json +++ b/plugins/node/opentelemetry-instrumentation-knex/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-knex", - "version": "0.35.0", + "version": "0.36.0", "description": "OpenTelemetry Knex automatic instrumentation package", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-koa/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-koa/CHANGELOG.md index 07c521997f..37d69e9450 100644 --- a/plugins/node/opentelemetry-instrumentation-koa/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-koa/CHANGELOG.md @@ -1,5 +1,25 @@ # Changelog +## [0.40.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-koa-v0.39.0...instrumentation-koa-v0.40.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-koa-v0.38.0...instrumentation-koa-v0.39.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-koa/package.json b/plugins/node/opentelemetry-instrumentation-koa/package.json index 35eadc1cb8..e9bf3f472e 100644 --- a/plugins/node/opentelemetry-instrumentation-koa/package.json +++ b/plugins/node/opentelemetry-instrumentation-koa/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-koa", - "version": "0.39.0", + "version": "0.40.0", "description": "OpenTelemetry Koa automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -48,7 +48,7 @@ "@koa/router": "12.0.0", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", diff --git a/plugins/node/opentelemetry-instrumentation-memcached/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-memcached/CHANGELOG.md index 017dfd2c73..a33c58408f 100644 --- a/plugins/node/opentelemetry-instrumentation-memcached/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-memcached/CHANGELOG.md @@ -6,6 +6,26 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-memcached-v0.35.0...instrumentation-memcached-v0.36.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-memcached-v0.34.0...instrumentation-memcached-v0.35.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-memcached/package.json b/plugins/node/opentelemetry-instrumentation-memcached/package.json index 85181573fa..d34a39820c 100644 --- a/plugins/node/opentelemetry-instrumentation-memcached/package.json +++ b/plugins/node/opentelemetry-instrumentation-memcached/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-memcached", - "version": "0.35.0", + "version": "0.36.0", "description": "OpenTelemetry memcached automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,7 +46,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-mongodb/CHANGELOG.md index 7d67259001..2357e2c607 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-mongodb/CHANGELOG.md @@ -6,6 +6,26 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.43.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mongodb-v0.42.0...instrumentation-mongodb-v0.43.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.42.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mongodb-v0.41.0...instrumentation-mongodb-v0.42.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/package.json b/plugins/node/opentelemetry-instrumentation-mongodb/package.json index c47dd310a1..a0e9f36e85 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/package.json +++ b/plugins/node/opentelemetry-instrumentation-mongodb/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-mongodb", - "version": "0.42.0", + "version": "0.43.0", "description": "OpenTelemetry mongodb automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -50,7 +50,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/bson": "4.0.5", diff --git a/plugins/node/opentelemetry-instrumentation-mysql/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-mysql/CHANGELOG.md index de5e0cfc06..91143d0b57 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-mysql/CHANGELOG.md @@ -6,6 +6,26 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql-v0.37.0...instrumentation-mysql-v0.38.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql-v0.36.0...instrumentation-mysql-v0.37.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-mysql/package.json b/plugins/node/opentelemetry-instrumentation-mysql/package.json index 47b2ff01a4..ce0277b1c9 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-mysql", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry mysql automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -44,7 +44,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-metrics": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "7.0.2", diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-mysql2/CHANGELOG.md index 2e7ce19c41..71f8a078d8 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-mysql2/CHANGELOG.md @@ -6,6 +6,28 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql2-v0.37.0...instrumentation-mysql2-v0.38.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/sql-common bumped from ^0.40.0 to ^0.40.1 + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql2-v0.36.0...instrumentation-mysql2-v0.37.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/package.json b/plugins/node/opentelemetry-instrumentation-mysql2/package.json index 420184e53a..173fc951ef 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql2/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-mysql2", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry mysql2 automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,7 +46,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", @@ -63,7 +63,7 @@ "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", - "@opentelemetry/sql-common": "^0.40.0" + "@opentelemetry/sql-common": "^0.40.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-mysql2#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-nestjs-core/CHANGELOG.md index 20baee6a63..c66090e0d2 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-nestjs-core-v0.36.0...instrumentation-nestjs-core-v0.37.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-nestjs-core-v0.35.0...instrumentation-nestjs-core-v0.36.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json index ee9a235854..fc46a4da7d 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-nestjs-core", - "version": "0.36.0", + "version": "0.37.0", "description": "OpenTelemetry NestJS automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-net/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-net/CHANGELOG.md index d9b707ccae..ff9a1f694e 100644 --- a/plugins/node/opentelemetry-instrumentation-net/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-net/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-net-v0.35.0...instrumentation-net-v0.36.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-net-v0.34.0...instrumentation-net-v0.35.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-net/package.json b/plugins/node/opentelemetry-instrumentation-net/package.json index 0183bb0615..41eb0902b7 100644 --- a/plugins/node/opentelemetry-instrumentation-net/package.json +++ b/plugins/node/opentelemetry-instrumentation-net/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-net", - "version": "0.35.0", + "version": "0.36.0", "description": "OpenTelemetry net module automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-pg/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-pg/CHANGELOG.md index d7abf286d3..ff4aaae86e 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-pg/CHANGELOG.md @@ -6,6 +6,28 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.41.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-pg-v0.40.0...instrumentation-pg-v0.41.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/sql-common bumped from ^0.40.0 to ^0.40.1 + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.40.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-pg-v0.39.1...instrumentation-pg-v0.40.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-pg/package.json b/plugins/node/opentelemetry-instrumentation-pg/package.json index df71b8f324..d12a2348e5 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/package.json +++ b/plugins/node/opentelemetry-instrumentation-pg/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-pg", - "version": "0.40.0", + "version": "0.41.0", "description": "OpenTelemetry postgres automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -52,7 +52,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -73,7 +73,7 @@ "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", - "@opentelemetry/sql-common": "^0.40.0", + "@opentelemetry/sql-common": "^0.40.1", "@types/pg": "8.6.1", "@types/pg-pool": "2.0.4" }, diff --git a/plugins/node/opentelemetry-instrumentation-pino/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-pino/CHANGELOG.md index 90f157fe24..2b6f08b518 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-pino/CHANGELOG.md @@ -1,5 +1,25 @@ # Changelog +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-pino-v0.37.0...instrumentation-pino-v0.38.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-pino-v0.36.0...instrumentation-pino-v0.37.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-pino/package.json b/plugins/node/opentelemetry-instrumentation-pino/package.json index b23490786c..f8054397cb 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/package.json +++ b/plugins/node/opentelemetry-instrumentation-pino/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-pino", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry instrumentation for pino", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,7 +46,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", diff --git a/plugins/node/opentelemetry-instrumentation-redis-4/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-redis-4/CHANGELOG.md index a8df9ad4aa..6a8dfd06b8 100644 --- a/plugins/node/opentelemetry-instrumentation-redis-4/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-redis-4/CHANGELOG.md @@ -12,6 +12,28 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-redis-4-v0.38.0...instrumentation-redis-4-v0.39.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/redis-common bumped from ^0.36.1 to ^0.36.2 + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-redis-4-v0.37.0...instrumentation-redis-4-v0.38.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-redis-4/package.json b/plugins/node/opentelemetry-instrumentation-redis-4/package.json index 1075413252..23d061c895 100644 --- a/plugins/node/opentelemetry-instrumentation-redis-4/package.json +++ b/plugins/node/opentelemetry-instrumentation-redis-4/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-redis-4", - "version": "0.38.0", + "version": "0.39.0", "description": "Automatic OpenTelemetry instrumentation for redis package version 4", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -50,7 +50,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -67,7 +67,7 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/redis-common": "^0.36.1", + "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-redis-4#readme" diff --git a/plugins/node/opentelemetry-instrumentation-redis/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-redis/CHANGELOG.md index 180b361521..163febd386 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-redis/CHANGELOG.md @@ -12,6 +12,28 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-redis-v0.38.0...instrumentation-redis-v0.39.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/redis-common bumped from ^0.36.1 to ^0.36.2 + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-redis-v0.37.0...instrumentation-redis-v0.38.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-redis/package.json b/plugins/node/opentelemetry-instrumentation-redis/package.json index 463d608c96..2e30c9f96b 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/package.json +++ b/plugins/node/opentelemetry-instrumentation-redis/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-redis", - "version": "0.38.0", + "version": "0.39.0", "description": "Automatic OpenTelemetry instrumentation for redis package version 2 and 3", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -50,7 +50,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -67,7 +67,7 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/redis-common": "^0.36.1", + "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-redis#readme" diff --git a/plugins/node/opentelemetry-instrumentation-restify/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-restify/CHANGELOG.md index 65e7120fbe..a3a982f861 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-restify/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-restify-v0.37.0...instrumentation-restify-v0.38.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-restify-v0.36.0...instrumentation-restify-v0.37.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-restify/package.json b/plugins/node/opentelemetry-instrumentation-restify/package.json index de6c089427..1113783ecc 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/package.json +++ b/plugins/node/opentelemetry-instrumentation-restify/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-restify", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry restify automatic instrumentation package", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-router/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-router/CHANGELOG.md index 45643528b8..f0c10e6024 100644 --- a/plugins/node/opentelemetry-instrumentation-router/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-router/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-router-v0.36.0...instrumentation-router-v0.37.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-router-v0.35.0...instrumentation-router-v0.36.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-router/package.json b/plugins/node/opentelemetry-instrumentation-router/package.json index c0ac50d89b..7ea1a851e9 100644 --- a/plugins/node/opentelemetry-instrumentation-router/package.json +++ b/plugins/node/opentelemetry-instrumentation-router/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-router", - "version": "0.36.0", + "version": "0.37.0", "description": "OpenTelemetry Router automatic instrumentation package", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-winston/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-winston/CHANGELOG.md index 9fbe11524d..3bca394376 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-winston/CHANGELOG.md @@ -1,5 +1,26 @@ # Changelog +## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-winston-v0.36.0...instrumentation-winston-v0.37.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* **instrumentation-winston:** Allow log level to be configured for log sending ([#2016](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2016)) ([b903bce](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/b903bce15d6ba4fa44daeaf6785abd6ed94cb5ff)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/winston-transport bumped from ^0.2.0 to ^0.3.0 + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-winston-v0.35.0...instrumentation-winston-v0.36.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-winston/package.json b/plugins/node/opentelemetry-instrumentation-winston/package.json index 06a1302f03..ecfd90546c 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/package.json +++ b/plugins/node/opentelemetry-instrumentation-winston/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-winston", - "version": "0.36.0", + "version": "0.37.0", "description": "OpenTelemetry instrumentation for winston", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -48,7 +48,7 @@ "@opentelemetry/context-async-hooks": "^1.21.0", "@opentelemetry/sdk-trace-base": "^1.21.0", "@opentelemetry/sdk-trace-node": "^1.21.0", - "@opentelemetry/winston-transport": "^0.2.0", + "@opentelemetry/winston-transport": "^0.3.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", diff --git a/plugins/web/opentelemetry-instrumentation-document-load/CHANGELOG.md b/plugins/web/opentelemetry-instrumentation-document-load/CHANGELOG.md index df45a2651b..d4750f9920 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/CHANGELOG.md +++ b/plugins/web/opentelemetry-instrumentation-document-load/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-document-load-v0.37.0...instrumentation-document-load-v0.38.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-document-load-v0.36.0...instrumentation-document-load-v0.37.0) (2024-04-03) diff --git a/plugins/web/opentelemetry-instrumentation-document-load/package.json b/plugins/web/opentelemetry-instrumentation-document-load/package.json index 5b135a8a41..f849a1de3d 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/package.json +++ b/plugins/web/opentelemetry-instrumentation-document-load/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-document-load", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry document-load automatic instrumentation package.", "main": "build/src/index.js", "module": "build/esm/index.js", diff --git a/plugins/web/opentelemetry-instrumentation-long-task/CHANGELOG.md b/plugins/web/opentelemetry-instrumentation-long-task/CHANGELOG.md index 5e8311cd24..8c28eafded 100644 --- a/plugins/web/opentelemetry-instrumentation-long-task/CHANGELOG.md +++ b/plugins/web/opentelemetry-instrumentation-long-task/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-long-task-v0.37.0...instrumentation-long-task-v0.38.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-long-task-v0.36.0...instrumentation-long-task-v0.37.0) (2024-04-03) diff --git a/plugins/web/opentelemetry-instrumentation-long-task/package.json b/plugins/web/opentelemetry-instrumentation-long-task/package.json index 6720125885..8e74d81397 100644 --- a/plugins/web/opentelemetry-instrumentation-long-task/package.json +++ b/plugins/web/opentelemetry-instrumentation-long-task/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-long-task", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry long task API automatic instrumentation package.", "main": "build/src/index.js", "module": "build/esm/index.js", diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/CHANGELOG.md b/plugins/web/opentelemetry-instrumentation-user-interaction/CHANGELOG.md index 20ecf917d0..729fe2ec9f 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/CHANGELOG.md +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-user-interaction-v0.37.0...instrumentation-user-interaction-v0.38.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-user-interaction-v0.36.0...instrumentation-user-interaction-v0.37.0) (2024-04-03) diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/package.json b/plugins/web/opentelemetry-instrumentation-user-interaction/package.json index 272ede8cd3..d51c3877ea 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/package.json +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-user-interaction", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry UserInteraction automatic instrumentation package.", "main": "build/src/index.js", "module": "build/esm/index.js", diff --git a/plugins/web/opentelemetry-plugin-react-load/CHANGELOG.md b/plugins/web/opentelemetry-plugin-react-load/CHANGELOG.md index 6c1904c9d4..20e4ba31cb 100644 --- a/plugins/web/opentelemetry-plugin-react-load/CHANGELOG.md +++ b/plugins/web/opentelemetry-plugin-react-load/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.30.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/plugin-react-load-v0.30.0...plugin-react-load-v0.30.1) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.30.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/plugin-react-load-v0.29.1...plugin-react-load-v0.30.0) (2023-11-13) diff --git a/plugins/web/opentelemetry-plugin-react-load/package.json b/plugins/web/opentelemetry-plugin-react-load/package.json index 9e5f01403d..686bdcc371 100644 --- a/plugins/web/opentelemetry-plugin-react-load/package.json +++ b/plugins/web/opentelemetry-plugin-react-load/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/plugin-react-load", - "version": "0.30.0", + "version": "0.30.1", "description": "OpenTelemetry React loading automatic instrumentation package.", "main": "build/src/index.js", "module": "build/esm/index.js", diff --git a/propagators/opentelemetry-propagator-grpc-census-binary/CHANGELOG.md b/propagators/opentelemetry-propagator-grpc-census-binary/CHANGELOG.md index 55adb18c00..f6b5c40c3f 100644 --- a/propagators/opentelemetry-propagator-grpc-census-binary/CHANGELOG.md +++ b/propagators/opentelemetry-propagator-grpc-census-binary/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.27.2](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-grpc-census-binary-v0.27.1...propagator-grpc-census-binary-v0.27.2) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.27.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-grpc-census-binary-v0.27.0...propagator-grpc-census-binary-v0.27.1) (2023-08-14) diff --git a/propagators/opentelemetry-propagator-grpc-census-binary/package.json b/propagators/opentelemetry-propagator-grpc-census-binary/package.json index 604e091845..383d1cb1fb 100644 --- a/propagators/opentelemetry-propagator-grpc-census-binary/package.json +++ b/propagators/opentelemetry-propagator-grpc-census-binary/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/propagator-grpc-census-binary", - "version": "0.27.1", + "version": "0.27.2", "description": "OpenTelemetry gRPC Census propagator provides a context propagator for OpenTelemetry that can use the gRPC binary header: 'grpc-trace-bin' for interoperability with OpenCensus", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/propagators/opentelemetry-propagator-instana/CHANGELOG.md b/propagators/opentelemetry-propagator-instana/CHANGELOG.md index 087b0b72f1..3e73530daf 100644 --- a/propagators/opentelemetry-propagator-instana/CHANGELOG.md +++ b/propagators/opentelemetry-propagator-instana/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.3.2](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-instana-v0.3.1...propagator-instana-v0.3.2) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.3.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-instana-v0.3.0...propagator-instana-v0.3.1) (2023-08-14) diff --git a/propagators/opentelemetry-propagator-instana/package.json b/propagators/opentelemetry-propagator-instana/package.json index 3011ba9cc0..7bf4bd036c 100644 --- a/propagators/opentelemetry-propagator-instana/package.json +++ b/propagators/opentelemetry-propagator-instana/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/propagator-instana", - "version": "0.3.1", + "version": "0.3.2", "description": "The OpenTelemetry Instana Propagator implements the propagation format used by IBM Observability by Instana", "main": "build/src/index.js", "module": "build/esm/index.js", diff --git a/propagators/opentelemetry-propagator-ot-trace/CHANGELOG.md b/propagators/opentelemetry-propagator-ot-trace/CHANGELOG.md index 85778a7dec..0ee89eb51e 100644 --- a/propagators/opentelemetry-propagator-ot-trace/CHANGELOG.md +++ b/propagators/opentelemetry-propagator-ot-trace/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.27.2](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-ot-trace-v0.27.1...propagator-ot-trace-v0.27.2) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.27.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-ot-trace-v0.27.0...propagator-ot-trace-v0.27.1) (2023-08-14) diff --git a/propagators/opentelemetry-propagator-ot-trace/package.json b/propagators/opentelemetry-propagator-ot-trace/package.json index f65c0d1ebd..20ceb7a58f 100644 --- a/propagators/opentelemetry-propagator-ot-trace/package.json +++ b/propagators/opentelemetry-propagator-ot-trace/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/propagator-ot-trace", - "version": "0.27.1", + "version": "0.27.2", "description": "The OpenTelemetry OTTracepropagator implements the propagation format used by the \"basic tracer\" implementations from the OpenTracing project", "main": "build/src/index.js", "module": "build/esm/index.js", From 96a87b48934f0afcf1fe637eed6704f35bd8e973 Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Thu, 25 Apr 2024 20:42:36 +0200 Subject: [PATCH 12/39] fix(ci): rollback ##2133 (#2148) --- .github/workflows/release-please.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 6bf4f04da7..1c58cefc06 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -54,15 +54,11 @@ jobs: # get main again - name: Checkout Repository - # only checkout if a release has been created - if: ${{ steps.release.outputs.release_created }} uses: actions/checkout@v4 with: fetch-depth: 0 - name: Rebuild Packages - # only rebuild if a release has been created - if: ${{ steps.release.outputs.release_created }} run: | npm ci npm run compile @@ -71,8 +67,6 @@ jobs: # need to publish all unpublished versions to npm here # See: https://github.com/lerna/lerna/tree/main/commands/publish#bump-from-package - name: Publish to npm - # only publish if a release has been created - if: ${{ steps.release.outputs.release_created }} env: NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} run: npx lerna publish from-package --no-push --no-private --no-git-tag-version --no-verify-access --yes From b0ac2c9d7d96e27ce42b82bb1a152c40f7a92387 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Thu, 25 Apr 2024 18:39:15 -0400 Subject: [PATCH 13/39] chore(examples/redis): use exported strings for attributes (#2128) Use exported strings for Semantic Attributes Refs: #2025 --- examples/redis/package.json | 1 + examples/redis/src/tracer.ts | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/redis/package.json b/examples/redis/package.json index fedef04c8d..5e989b9fd2 100644 --- a/examples/redis/package.json +++ b/examples/redis/package.json @@ -39,6 +39,7 @@ "@opentelemetry/instrumentation-redis": "^0.32.0", "@opentelemetry/sdk-trace-base": "^1.0.0", "@opentelemetry/sdk-trace-node": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "axios": "^1.6.0", "express": "^4.17.1", "redis": "^3.1.1" diff --git a/examples/redis/src/tracer.ts b/examples/redis/src/tracer.ts index e50633493a..de70a60418 100644 --- a/examples/redis/src/tracer.ts +++ b/examples/redis/src/tracer.ts @@ -9,14 +9,14 @@ import { registerInstrumentations } from '@opentelemetry/instrumentation'; import { HttpInstrumentation } from '@opentelemetry/instrumentation-http'; import { RedisInstrumentation } from '@opentelemetry/instrumentation-redis'; import { Resource } from '@opentelemetry/resources'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; const EXPORTER = process.env.EXPORTER || ''; export const setupTracing = (serviceName: string) => { const provider = new NodeTracerProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: serviceName, + [SEMRESATTRS_SERVICE_NAME]: serviceName, }),}); let exporter; From c96293de9528769c0cce610ef6493faee1c6020a Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Thu, 25 Apr 2024 18:39:41 -0400 Subject: [PATCH 14/39] chore(examples/react-load): use exported strings for attributes (#2127) Use exported strings for Semantic Attributes Refs: #2025 --- examples/react-load/react/package.json | 1 + examples/react-load/react/src/web-tracer.js | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/react-load/react/package.json b/examples/react-load/react/package.json index 702f88cfac..9c9ce0281a 100644 --- a/examples/react-load/react/package.json +++ b/examples/react-load/react/package.json @@ -43,6 +43,7 @@ "@opentelemetry/plugin-react-load": "^0.23.0", "@opentelemetry/sdk-trace-base": "^0.25.0", "@opentelemetry/sdk-trace-web": "^0.25.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "react": "^16.13.1", "react-dom": "^16.13.1", "react-router-dom": "^5.2.0", diff --git a/examples/react-load/react/src/web-tracer.js b/examples/react-load/react/src/web-tracer.js index ea1b5ca952..80796da13e 100644 --- a/examples/react-load/react/src/web-tracer.js +++ b/examples/react-load/react/src/web-tracer.js @@ -5,12 +5,12 @@ import { ZoneContextManager } from '@opentelemetry/context-zone'; import { CollectorTraceExporter } from '@opentelemetry/exporter-collector'; import { diag, DiagConsoleLogger } from '@opentelemetry/api'; import { Resource } from '@opentelemetry/resources'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions' +import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions' export default (serviceName) => { const provider = new WebTracerProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: "react-load-example" + [SEMRESATTRS_SERVICE_NAME]: "react-load-example" }), }); From 09c8e428d6d52847176e3dc50d78c36248a1bb62 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Thu, 25 Apr 2024 18:40:01 -0400 Subject: [PATCH 15/39] chore(examples/mysql): use exported strings for attributes (#2126) Use exported strings for Semantic Attributes Signed-off-by: maryliag Refs: #2025 --- examples/mysql/package.json | 1 + examples/mysql/src/tracer.ts | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/mysql/package.json b/examples/mysql/package.json index 3291020209..8455f63678 100644 --- a/examples/mysql/package.json +++ b/examples/mysql/package.json @@ -39,6 +39,7 @@ "@opentelemetry/instrumentation-mysql": "^0.31.0", "@opentelemetry/sdk-trace-base": "^1.0.0", "@opentelemetry/sdk-trace-node": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "@opentelemetry/exporter-metrics-otlp-grpc": "^0.48.0", "mysql": "^2.18.1" }, diff --git a/examples/mysql/src/tracer.ts b/examples/mysql/src/tracer.ts index f37153aa64..b5c2f522cb 100644 --- a/examples/mysql/src/tracer.ts +++ b/examples/mysql/src/tracer.ts @@ -9,7 +9,7 @@ import { registerInstrumentations } from '@opentelemetry/instrumentation'; import { HttpInstrumentation } from '@opentelemetry/instrumentation-http'; import { MySQLInstrumentation } from '@opentelemetry/instrumentation-mysql'; import { Resource } from '@opentelemetry/resources'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; import { MeterProvider, PeriodicExportingMetricReader, @@ -33,7 +33,7 @@ export const setupTracing = (serviceName: string) => { //traces: const tracerProvider = new NodeTracerProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: serviceName, + [SEMRESATTRS_SERVICE_NAME]: serviceName, }),}); if (EXPORTER.toLowerCase().startsWith('z')) { From 4a4a087eff401bb03300184896b55c0de73d0546 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Thu, 25 Apr 2024 18:40:17 -0400 Subject: [PATCH 16/39] chore(examples/mongodb): use exported strings for attributes (#2125) Use exported strings for Semantic Attributes Refs: #2025 --- examples/mongodb/package.json | 1 + examples/mongodb/src/tracer.ts | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/mongodb/package.json b/examples/mongodb/package.json index f96cd0feb2..7bf097e553 100644 --- a/examples/mongodb/package.json +++ b/examples/mongodb/package.json @@ -38,6 +38,7 @@ "@opentelemetry/instrumentation-mongodb": "^0.32.0", "@opentelemetry/sdk-trace-node": "^1.0.0", "@opentelemetry/sdk-trace-base": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "mongodb": "^3.6.11" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib#readme", diff --git a/examples/mongodb/src/tracer.ts b/examples/mongodb/src/tracer.ts index e38075df25..4e63724503 100644 --- a/examples/mongodb/src/tracer.ts +++ b/examples/mongodb/src/tracer.ts @@ -8,13 +8,13 @@ import { ZipkinExporter } from '@opentelemetry/exporter-zipkin'; import { registerInstrumentations } from '@opentelemetry/instrumentation'; import { HttpInstrumentation } from '@opentelemetry/instrumentation-http'; import { MongoDBInstrumentation } from '@opentelemetry/instrumentation-mongodb'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; export const setupTracing = (serviceName: string): api.Tracer => { const provider = new NodeTracerProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: serviceName + [SEMRESATTRS_SERVICE_NAME]: serviceName }) }); From e04362a8ea4d2878d44449f8c14a4d6ee600a70a Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Thu, 25 Apr 2024 18:40:27 -0400 Subject: [PATCH 17/39] chore(examples/memcached): use exported strings for attributes (#2124) Use exported strings for Semantic Attributes Signed-off-by: maryliag Refs: #2025 --- examples/memcached/package.json | 4 +++- examples/memcached/tracer.js | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/examples/memcached/package.json b/examples/memcached/package.json index 73170fe28a..858393ab71 100644 --- a/examples/memcached/package.json +++ b/examples/memcached/package.json @@ -31,8 +31,10 @@ "@opentelemetry/api": "^1.0.2", "@opentelemetry/instrumentation": "^0.25.0", "@opentelemetry/instrumentation-memcached": "^0.23.0", - "@opentelemetry/sdk-trace-node": "^0.25.0", + "@opentelemetry/resources": "^1.23.0", "@opentelemetry/sdk-trace-base": "^0.25.0", + "@opentelemetry/sdk-trace-node": "^0.25.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "memcached": "^2.2.2" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib#readme" diff --git a/examples/memcached/tracer.js b/examples/memcached/tracer.js index 0dbda86a19..285233199a 100644 --- a/examples/memcached/tracer.js +++ b/examples/memcached/tracer.js @@ -9,14 +9,14 @@ const { registerInstrumentations } = require('@opentelemetry/instrumentation'); const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); const { SimpleSpanProcessor, ConsoleSpanExporter } = require('@opentelemetry/sdk-trace-base'); const { Resource } = require('@opentelemetry/resources'); -const { SemanticResourceAttributes } = require('@opentelemetry/semantic-conventions'); +const { SEMRESATTRS_SERVICE_NAME } = require('@opentelemetry/semantic-conventions'); const { MemcachedInstrumentation } = require('@opentelemetry/instrumentation-memcached'); module.exports = (serviceName) => { const provider = new NodeTracerProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: serviceName, + [SEMRESATTRS_SERVICE_NAME]: serviceName, }), }); registerInstrumentations({ From 7f5f20c20aeac4bea80280eaf7fc353a0d96cafd Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Thu, 25 Apr 2024 18:40:42 -0400 Subject: [PATCH 18/39] chore(examples/koa): use exported strings for attributes (#2123) Use exported strings for Semantic Attributes Signed-off-by: maryliag Refs: #2025 --- examples/koa/package.json | 1 + examples/koa/src/tracer.ts | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/koa/package.json b/examples/koa/package.json index a3447a8273..9165d6ebdd 100644 --- a/examples/koa/package.json +++ b/examples/koa/package.json @@ -39,6 +39,7 @@ "@opentelemetry/instrumentation-koa": "^0.31.0", "@opentelemetry/sdk-trace-node": "^1.0.0", "@opentelemetry/sdk-trace-base": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "axios": "^1.6.0", "koa": "^2.13.0" }, diff --git a/examples/koa/src/tracer.ts b/examples/koa/src/tracer.ts index 32bc6b166d..d0a3321a68 100644 --- a/examples/koa/src/tracer.ts +++ b/examples/koa/src/tracer.ts @@ -10,14 +10,14 @@ import { SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base'; import { JaegerExporter } from '@opentelemetry/exporter-jaeger'; import { ZipkinExporter } from '@opentelemetry/exporter-zipkin'; import { Resource } from '@opentelemetry/resources'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions' +import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions' const EXPORTER = process.env.EXPORTER || ''; export const setupTracing = (serviceName: string) => { const provider = new NodeTracerProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: serviceName + [SEMRESATTRS_SERVICE_NAME]: serviceName }) }); From 7822461f53081937594ecf0ebcdecd79c2b08a2e Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Thu, 25 Apr 2024 18:40:57 -0400 Subject: [PATCH 19/39] chore(examples/express): use exported strings for attributes (#2121) Use exported strings for Semantic Resource Attributes Signed-off-by: maryliag Refs: #2025 --- examples/express/package.json | 2 +- examples/express/src/tracer.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/express/package.json b/examples/express/package.json index f3bac84d8e..61442eeac2 100644 --- a/examples/express/package.json +++ b/examples/express/package.json @@ -40,7 +40,7 @@ "@opentelemetry/resources": "^1.18.1", "@opentelemetry/sdk-trace-base": "^1.18.1", "@opentelemetry/sdk-trace-node": "^1.18.1", - "@opentelemetry/semantic-conventions": "^1.18.1", + "@opentelemetry/semantic-conventions": "^1.23.0", "axios": "^1.6.0", "cross-env": "^7.0.3", "express": "^4.17.1" diff --git a/examples/express/src/tracer.ts b/examples/express/src/tracer.ts index 93a1515f69..4ad569644f 100644 --- a/examples/express/src/tracer.ts +++ b/examples/express/src/tracer.ts @@ -14,7 +14,7 @@ import { Sampler, AlwaysOnSampler, SimpleSpanProcessor } from '@opentelemetry/sd import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto'; import { ZipkinExporter } from '@opentelemetry/exporter-zipkin'; import { Resource } from '@opentelemetry/resources'; -import { SemanticAttributes, SemanticResourceAttributes as ResourceAttributesSC } from '@opentelemetry/semantic-conventions'; +import { SEMRESATTRS_SERVICE_NAME, SEMATTRS_HTTP_ROUTE } from '@opentelemetry/semantic-conventions'; const Exporter = (process.env.EXPORTER || '').toLowerCase().startsWith('z') ? ZipkinExporter : OTLPTraceExporter; import { ExpressInstrumentation } from '@opentelemetry/instrumentation-express'; @@ -23,7 +23,7 @@ const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http'); export const setupTracing = (serviceName: string) => { const provider = new NodeTracerProvider({ resource: new Resource({ - [ResourceAttributesSC.SERVICE_NAME]: serviceName, + [SEMRESATTRS_SERVICE_NAME]: serviceName, }), sampler: filterSampler(ignoreHealthCheck, new AlwaysOnSampler()), }); @@ -65,5 +65,5 @@ function filterSampler(filterFn: FilterFunction, parent: Sampler): Sampler { } function ignoreHealthCheck(spanName: string, spanKind: SpanKind, attributes: Attributes) { - return spanKind !== opentelemetry.SpanKind.SERVER || attributes[SemanticAttributes.HTTP_ROUTE] !== "/health"; + return spanKind !== opentelemetry.SpanKind.SERVER || attributes[SEMATTRS_HTTP_ROUTE] !== "/health"; } From 56392f4097dd2632de3275782f4ff49c91c552b7 Mon Sep 17 00:00:00 2001 From: David Luna Date: Mon, 29 Apr 2024 07:36:22 +0200 Subject: [PATCH 20/39] refactor(instr-socket.io): use exported strings for attributes (#2147) * refactor(instr-socket.io): use exported strings for attributes * chore(instr-socket.io): fix lint issues * fix(instr-socket.io): fix missing entries in package-lock.json * fix(instr-socket.io): fix bad entry in package.json --- package-lock.json | 4 +- .../node/instrumentation-socket.io/README.md | 13 +++ .../instrumentation-socket.io/package.json | 2 +- .../src/socket.io.ts | 27 +++--- .../test/socket.io.test.ts | 82 +++++++++---------- 5 files changed, 69 insertions(+), 59 deletions(-) diff --git a/package-lock.json b/package-lock.json index b30e3664a6..4663055e9d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37112,7 +37112,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -46987,7 +46987,7 @@ "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "expect": "27.4.2", diff --git a/plugins/node/instrumentation-socket.io/README.md b/plugins/node/instrumentation-socket.io/README.md index ca242046f9..28370b58f2 100644 --- a/plugins/node/instrumentation-socket.io/README.md +++ b/plugins/node/instrumentation-socket.io/README.md @@ -59,6 +59,19 @@ Few breaking changes were made during porting to the contrib repo: The instrumentation's config `filterHttpTransport` option was removed to decouple this instrumentation from the http instrumentation. if you do not want to trace the socket.io http requests, add the default socket.io route (`/socket.io/`) to the `HttpInstrumentationConfig.ignoreIncomingPaths` array +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | +| ---------------------------- | ------------------------------------------------------------------------------------------------ | +| `messaging.destination` | The message destination name. This might be equal to the span name but is required nevertheless. | +| `messaging.destination_kind` | The kind of message destination. | +| `messaging.operation` | A string identifying the kind of message consumption. | +| `messaging.system` | A string identifying the messaging system. | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/instrumentation-socket.io/package.json b/plugins/node/instrumentation-socket.io/package.json index 45557a81e4..7ec6a4e6b2 100644 --- a/plugins/node/instrumentation-socket.io/package.json +++ b/plugins/node/instrumentation-socket.io/package.json @@ -59,7 +59,7 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-socket.io#readme" } diff --git a/plugins/node/instrumentation-socket.io/src/socket.io.ts b/plugins/node/instrumentation-socket.io/src/socket.io.ts index 51c3d1d962..5ed289c65b 100644 --- a/plugins/node/instrumentation-socket.io/src/socket.io.ts +++ b/plugins/node/instrumentation-socket.io/src/socket.io.ts @@ -28,9 +28,12 @@ import { safeExecuteInTheMiddle, } from '@opentelemetry/instrumentation'; import { - SemanticAttributes, - MessagingOperationValues, - MessagingDestinationKindValues, + SEMATTRS_MESSAGING_DESTINATION, + SEMATTRS_MESSAGING_DESTINATION_KIND, + SEMATTRS_MESSAGING_OPERATION, + SEMATTRS_MESSAGING_SYSTEM, + MESSAGINGOPERATIONVALUES_RECEIVE, + MESSAGINGDESTINATIONKINDVALUES_TOPIC, } from '@opentelemetry/semantic-conventions'; import { SocketIoInstrumentationConfig } from './types'; import { SocketIoInstrumentationAttributes } from './AttributeNames'; @@ -302,14 +305,14 @@ export class SocketIoInstrumentation extends InstrumentationBase { ? eventName : `${namespace} ${eventName}`; const span: Span = self.tracer.startSpan( - `${destination} ${MessagingOperationValues.RECEIVE}`, + `${destination} ${MESSAGINGOPERATIONVALUES_RECEIVE}`, { kind: SpanKind.CONSUMER, attributes: { - [SemanticAttributes.MESSAGING_SYSTEM]: 'socket.io', - [SemanticAttributes.MESSAGING_DESTINATION]: namespace, - [SemanticAttributes.MESSAGING_OPERATION]: - MessagingOperationValues.RECEIVE, + [SEMATTRS_MESSAGING_SYSTEM]: 'socket.io', + [SEMATTRS_MESSAGING_DESTINATION]: namespace, + [SEMATTRS_MESSAGING_OPERATION]: + MESSAGINGOPERATIONVALUES_RECEIVE, [SocketIoInstrumentationAttributes.SOCKET_IO_EVENT_NAME]: eventName, }, @@ -379,9 +382,9 @@ export class SocketIoInstrumentation extends InstrumentationBase { const messagingSystem = 'socket.io'; const eventName = ev; const attributes: any = { - [SemanticAttributes.MESSAGING_SYSTEM]: messagingSystem, - [SemanticAttributes.MESSAGING_DESTINATION_KIND]: - MessagingDestinationKindValues.TOPIC, + [SEMATTRS_MESSAGING_SYSTEM]: messagingSystem, + [SEMATTRS_MESSAGING_DESTINATION_KIND]: + MESSAGINGDESTINATIONKINDVALUES_TOPIC, [SocketIoInstrumentationAttributes.SOCKET_IO_EVENT_NAME]: eventName, }; @@ -394,7 +397,7 @@ export class SocketIoInstrumentation extends InstrumentationBase { if (namespace) { attributes[SocketIoInstrumentationAttributes.SOCKET_IO_NAMESPACE] = namespace; - attributes[SemanticAttributes.MESSAGING_DESTINATION] = namespace; + attributes[SEMATTRS_MESSAGING_DESTINATION] = namespace; } const spanRooms = rooms.length ? `[${rooms.join()}]` : ''; const span = self.tracer.startSpan(`${namespace}${spanRooms} send`, { diff --git a/plugins/node/instrumentation-socket.io/test/socket.io.test.ts b/plugins/node/instrumentation-socket.io/test/socket.io.test.ts index 1b47fd5d73..0b733a438c 100644 --- a/plugins/node/instrumentation-socket.io/test/socket.io.test.ts +++ b/plugins/node/instrumentation-socket.io/test/socket.io.test.ts @@ -14,8 +14,10 @@ * limitations under the License. */ import { - MessagingDestinationKindValues, - SemanticAttributes, + MESSAGINGDESTINATIONKINDVALUES_TOPIC, + SEMATTRS_MESSAGING_DESTINATION, + SEMATTRS_MESSAGING_DESTINATION_KIND, + SEMATTRS_MESSAGING_SYSTEM, } from '@opentelemetry/semantic-conventions'; import { SocketIoInstrumentation, @@ -56,12 +58,10 @@ describe('SocketIoInstrumentation', () => { io.emit('test'); expectSpan('/ send', span => { expect(span.kind).toEqual(SpanKind.PRODUCER); - expect(span.attributes[SemanticAttributes.MESSAGING_SYSTEM]).toEqual( - 'socket.io' + expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual('socket.io'); + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND]).toEqual( + MESSAGINGDESTINATIONKINDVALUES_TOPIC ); - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.TOPIC); }); }); @@ -89,7 +89,7 @@ describe('SocketIoInstrumentation', () => { // only for v2: connect do not throw, but are just ignored return expectSpan('/ send', span => { expect(span.kind).toEqual(SpanKind.PRODUCER); - expect(span.attributes[SemanticAttributes.MESSAGING_SYSTEM]).toEqual( + expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( 'socket.io' ); }); @@ -107,12 +107,10 @@ describe('SocketIoInstrumentation', () => { io.send('test'); expectSpan('/ send', span => { expect(span.kind).toEqual(SpanKind.PRODUCER); - expect(span.attributes[SemanticAttributes.MESSAGING_SYSTEM]).toEqual( - 'socket.io' + expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual('socket.io'); + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND]).toEqual( + MESSAGINGDESTINATIONKINDVALUES_TOPIC ); - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.TOPIC); }); }); @@ -173,9 +171,9 @@ describe('SocketIoInstrumentation', () => { span => { try { expect(span.kind).toEqual(SpanKind.CONSUMER); - expect( - span.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('socket.io'); + expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'socket.io' + ); expect(span.attributes['payload']).toEqual( JSON.stringify([data]) ); @@ -213,9 +211,9 @@ describe('SocketIoInstrumentation', () => { setTimeout(() => { expectSpan('connection receive', span => { expect(span.kind).toEqual(SpanKind.CONSUMER); - expect( - span.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('socket.io'); + expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'socket.io' + ); done(); }); }); @@ -244,9 +242,9 @@ describe('SocketIoInstrumentation', () => { span => { try { expect(span.kind).toEqual(SpanKind.CONSUMER); - expect( - span.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('socket.io'); + expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'socket.io' + ); done(); } catch (e) { done(e); @@ -294,9 +292,7 @@ describe('SocketIoInstrumentation', () => { const sio = createServerInstance(); sio.to(roomName).emit('broadcast', '1234'); expectSpan('/[room] send', span => { - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual('/'); + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual('/'); expect( span.attributes[SocketIoInstrumentationAttributes.SOCKET_IO_ROOMS] ).toEqual([roomName]); @@ -307,9 +303,7 @@ describe('SocketIoInstrumentation', () => { const sio = createServerInstance(); sio.to('room1').to('room2').emit('broadcast', '1234'); expectSpan('/[room1,room2] send', span => { - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual('/'); + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual('/'); expect( span.attributes[SocketIoInstrumentationAttributes.SOCKET_IO_ROOMS] ).toEqual(['room1', 'room2']); @@ -323,9 +317,9 @@ describe('SocketIoInstrumentation', () => { const namespace = io.of('/testing'); namespace.emit('namespace'); expectSpan('/testing send', span => { - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual('/testing'); + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + '/testing' + ); expect( span.attributes[SocketIoInstrumentationAttributes.SOCKET_IO_NAMESPACE] ).toEqual('/testing'); @@ -338,9 +332,9 @@ describe('SocketIoInstrumentation', () => { const namespace = io.of('/testing'); namespace.to(roomName).emit('broadcast', '1234'); expectSpan('/testing[room] send', span => { - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual('/testing'); + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + '/testing' + ); expect( span.attributes[SocketIoInstrumentationAttributes.SOCKET_IO_ROOMS] ).toEqual([roomName]); @@ -355,9 +349,9 @@ describe('SocketIoInstrumentation', () => { const namespace = io.of('/testing'); namespace.to('room1').to('room2').emit('broadcast', '1234'); expectSpan('/testing[room1,room2] send', span => { - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual('/testing'); + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + '/testing' + ); expect( span.attributes[SocketIoInstrumentationAttributes.SOCKET_IO_NAMESPACE] ).toEqual('/testing'); @@ -389,11 +383,11 @@ describe('SocketIoInstrumentation', () => { span => { try { expect(span.kind).toEqual(SpanKind.CONSUMER); + expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'socket.io' + ); expect( - span.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('socket.io'); - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION] + span.attributes[SEMATTRS_MESSAGING_DESTINATION] ).toEqual('/testing'); done(); } catch (e) { @@ -431,9 +425,9 @@ describe('SocketIoInstrumentation', () => { span => { try { expect(span.kind).toEqual(SpanKind.PRODUCER); - expect( - span.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('socket.io'); + expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'socket.io' + ); done(); } catch (e) { done(e); From b40926e9686598a991ed1ca0c4fdf034ae07bec6 Mon Sep 17 00:00:00 2001 From: David Luna Date: Mon, 29 Apr 2024 07:55:19 +0200 Subject: [PATCH 21/39] refactor(instr-tedious): use exported strings for attributes (#2144) Co-authored-by: Amir Blum --- package-lock.json | 4 +- .../node/instrumentation-tedious/README.md | 16 ++++++++ .../node/instrumentation-tedious/package.json | 2 +- .../src/instrumentation.ts | 24 ++++++----- .../test/instrumentation.test.ts | 40 ++++++++----------- 5 files changed, 51 insertions(+), 35 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4663055e9d..3ec369f264 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37361,7 +37361,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/tedious": "^4.0.10" }, "devDependencies": { @@ -47180,7 +47180,7 @@ "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/tedious": "^4.0.10", diff --git a/plugins/node/instrumentation-tedious/README.md b/plugins/node/instrumentation-tedious/README.md index ee8a9ee535..48863d1a3c 100644 --- a/plugins/node/instrumentation-tedious/README.md +++ b/plugins/node/instrumentation-tedious/README.md @@ -40,6 +40,22 @@ registerInstrumentations({ }) ``` +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | +| ----------------------- | ------------------------------------------------------------------------------ | +| `db.name` | This attribute is used to report the name of the database being accessed. | +| `db.sql.table` | The name of the primary table that the operation is acting upon. | +| `db.statement` | The database statement being executed. | +| `db.system` | An identifier for the database management system (DBMS) product being used. | +| `db.user` | Username for accessing the database. | +| `net.peer.name` | Remote hostname or similar. | +| `net.peer.port` | Remote port number. | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/instrumentation-tedious/package.json b/plugins/node/instrumentation-tedious/package.json index c123a3a90b..8d2948bf55 100644 --- a/plugins/node/instrumentation-tedious/package.json +++ b/plugins/node/instrumentation-tedious/package.json @@ -63,7 +63,7 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/tedious": "^4.0.10" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-tedious#readme" diff --git a/plugins/node/instrumentation-tedious/src/instrumentation.ts b/plugins/node/instrumentation-tedious/src/instrumentation.ts index d9c23eeb86..24935a32c3 100644 --- a/plugins/node/instrumentation-tedious/src/instrumentation.ts +++ b/plugins/node/instrumentation-tedious/src/instrumentation.ts @@ -22,8 +22,14 @@ import { isWrapped, } from '@opentelemetry/instrumentation'; import { - DbSystemValues, - SemanticAttributes, + DBSYSTEMVALUES_MSSQL, + SEMATTRS_DB_NAME, + SEMATTRS_DB_SQL_TABLE, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, + SEMATTRS_DB_USER, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, } from '@opentelemetry/semantic-conventions'; import type * as tedious from 'tedious'; import { TediousInstrumentationConfig } from './types'; @@ -155,16 +161,16 @@ export class TediousInstrumentation extends InstrumentationBase { { kind: api.SpanKind.CLIENT, attributes: { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.MSSQL, - [SemanticAttributes.DB_NAME]: databaseName, - [SemanticAttributes.NET_PEER_PORT]: this.config?.options?.port, - [SemanticAttributes.NET_PEER_NAME]: this.config?.server, + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_MSSQL, + [SEMATTRS_DB_NAME]: databaseName, + [SEMATTRS_NET_PEER_PORT]: this.config?.options?.port, + [SEMATTRS_NET_PEER_NAME]: this.config?.server, // >=4 uses `authentication` object, older versions just userName and password pair - [SemanticAttributes.DB_USER]: + [SEMATTRS_DB_USER]: this.config?.userName ?? this.config?.authentication?.options?.userName, - [SemanticAttributes.DB_STATEMENT]: sql, - [SemanticAttributes.DB_SQL_TABLE]: request.table, + [SEMATTRS_DB_STATEMENT]: sql, + [SEMATTRS_DB_SQL_TABLE]: request.table, }, } ); diff --git a/plugins/node/instrumentation-tedious/test/instrumentation.test.ts b/plugins/node/instrumentation-tedious/test/instrumentation.test.ts index 9313281838..5a531e2815 100644 --- a/plugins/node/instrumentation-tedious/test/instrumentation.test.ts +++ b/plugins/node/instrumentation-tedious/test/instrumentation.test.ts @@ -17,8 +17,14 @@ import { context, trace, SpanStatusCode, SpanKind } from '@opentelemetry/api'; import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks'; import { - DbSystemValues, - SemanticAttributes, + DBSYSTEMVALUES_MSSQL, + SEMATTRS_DB_NAME, + SEMATTRS_DB_SQL_TABLE, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, + SEMATTRS_DB_USER, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, } from '@opentelemetry/semantic-conventions'; import * as util from 'util'; import * as testUtils from '@opentelemetry/contrib-test-utils'; @@ -335,17 +341,14 @@ function assertSpan(span: ReadableSpan, expected: any) { assert(span); assert.strictEqual(span.name, expected.name); assert.strictEqual(span.kind, SpanKind.CLIENT); + assert.strictEqual(span.attributes[SEMATTRS_DB_SYSTEM], DBSYSTEMVALUES_MSSQL); assert.strictEqual( - span.attributes[SemanticAttributes.DB_SYSTEM], - DbSystemValues.MSSQL - ); - assert.strictEqual( - span.attributes[SemanticAttributes.DB_NAME], + span.attributes[SEMATTRS_DB_NAME], expected.database ?? database ); - assert.strictEqual(span.attributes[SemanticAttributes.NET_PEER_PORT], port); - assert.strictEqual(span.attributes[SemanticAttributes.NET_PEER_NAME], host); - assert.strictEqual(span.attributes[SemanticAttributes.DB_USER], user); + assert.strictEqual(span.attributes[SEMATTRS_NET_PEER_PORT], port); + assert.strictEqual(span.attributes[SEMATTRS_NET_PEER_NAME], host); + assert.strictEqual(span.attributes[SEMATTRS_DB_USER], user); assert.strictEqual( span.attributes['tedious.procedure_count'], expected.procCount ?? 1, @@ -362,27 +365,18 @@ function assertSpan(span: ReadableSpan, expected: any) { expected.parentSpan.spanContext().spanId ); } - assert.strictEqual( - span.attributes[SemanticAttributes.DB_SQL_TABLE], - expected.table - ); + assert.strictEqual(span.attributes[SEMATTRS_DB_SQL_TABLE], expected.table); if (expected.sql) { if (expected.sql instanceof RegExp) { assertMatch( - span.attributes[SemanticAttributes.DB_STATEMENT] as string | undefined, + span.attributes[SEMATTRS_DB_STATEMENT] as string | undefined, expected.sql ); } else { - assert.strictEqual( - span.attributes[SemanticAttributes.DB_STATEMENT], - expected.sql - ); + assert.strictEqual(span.attributes[SEMATTRS_DB_STATEMENT], expected.sql); } } else { - assert.strictEqual( - span.attributes[SemanticAttributes.DB_STATEMENT], - undefined - ); + assert.strictEqual(span.attributes[SEMATTRS_DB_STATEMENT], undefined); } if (expected.error) { assert( From 2d07c1858bad8461dd7bd411e56f6305664ca331 Mon Sep 17 00:00:00 2001 From: David Luna Date: Mon, 29 Apr 2024 08:12:46 +0200 Subject: [PATCH 22/39] fix(instr-knex): set correct SpanKind for traces (#2157) Co-authored-by: Amir Blum --- .../opentelemetry-instrumentation-knex/src/instrumentation.ts | 1 + .../node/opentelemetry-instrumentation-knex/test/index.test.ts | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts index ce45403efc..40577aa886 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts @@ -160,6 +160,7 @@ export class KnexInstrumentation extends InstrumentationBase { const span = instrumentation.tracer.startSpan( utils.getName(name, operation, table), { + kind: api.SpanKind.CLIENT, attributes, }, parent diff --git a/plugins/node/opentelemetry-instrumentation-knex/test/index.test.ts b/plugins/node/opentelemetry-instrumentation-knex/test/index.test.ts index 1f660cf273..9072465c47 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/test/index.test.ts +++ b/plugins/node/opentelemetry-instrumentation-knex/test/index.test.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { context, trace } from '@opentelemetry/api'; +import { SpanKind, context, trace } from '@opentelemetry/api'; import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks'; import { @@ -471,6 +471,7 @@ const assertSpans = (actualSpans: any[], expectedSpans: any[]) => { try { assert.notStrictEqual(span, undefined); assert.notStrictEqual(expected, undefined); + assert.strictEqual(span.kind, SpanKind.CLIENT); assertMatch(span.name, new RegExp(expected.op)); assertMatch(span.name, new RegExp(':memory:')); assert.strictEqual(span.attributes['db.system'], 'sqlite'); From 49d77cede61188f71f75459eb1ff9c84e4cc3abf Mon Sep 17 00:00:00 2001 From: David Luna Date: Mon, 29 Apr 2024 09:23:58 +0200 Subject: [PATCH 23/39] refactor(instr-cucumber): use exported strings for attributes (#2143) Co-authored-by: Amir Blum --- package-lock.json | 4 ++-- .../node/instrumentation-cucumber/README.md | 13 +++++++++++++ .../instrumentation-cucumber/package.json | 2 +- .../src/instrumentation.ts | 15 ++++++++++----- .../test/cucumber.test.ts | 19 ++++++++++++------- 5 files changed, 38 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3ec369f264..dd02d74395 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36873,7 +36873,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@cucumber/cucumber": "^9.0.0", @@ -45940,7 +45940,7 @@ "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.3.1", "@opentelemetry/sdk-trace-node": "^1.3.1", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "7.0.2", "@types/semver": "7.5.3", "@types/shimmer": "1.0.3", diff --git a/plugins/node/instrumentation-cucumber/README.md b/plugins/node/instrumentation-cucumber/README.md index c3fd434353..acc5466c36 100644 --- a/plugins/node/instrumentation-cucumber/README.md +++ b/plugins/node/instrumentation-cucumber/README.md @@ -43,6 +43,19 @@ Cucumber instrumentation has currently no options. | Options | Type | Description | | ------- | ---- | ----------- | +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | +| ---------------- | -------------------------------------------------------------------------------- | +| `code.filepath` | The source code file name that identifies the code unit as uniquely as possible. | +| `code.function` | The method or function name, or equivalent. | +| `code.lineno` | The line number in `code.filepath` best representing the operation. | +| `code.namespace` | The "namespace" within which `code.function` is defined. | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/instrumentation-cucumber/package.json b/plugins/node/instrumentation-cucumber/package.json index 76c0e259aa..ee4b117fd0 100644 --- a/plugins/node/instrumentation-cucumber/package.json +++ b/plugins/node/instrumentation-cucumber/package.json @@ -63,7 +63,7 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-cucumber#readme" } diff --git a/plugins/node/instrumentation-cucumber/src/instrumentation.ts b/plugins/node/instrumentation-cucumber/src/instrumentation.ts index 29e466cb69..255b2a297c 100644 --- a/plugins/node/instrumentation-cucumber/src/instrumentation.ts +++ b/plugins/node/instrumentation-cucumber/src/instrumentation.ts @@ -21,7 +21,12 @@ import { InstrumentationNodeModuleFile, isWrapped, } from '@opentelemetry/instrumentation'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_CODE_FILEPATH, + SEMATTRS_CODE_FUNCTION, + SEMATTRS_CODE_LINENO, + SEMATTRS_CODE_NAMESPACE, +} from '@opentelemetry/semantic-conventions'; import type * as cucumber from '@cucumber/cucumber'; import type * as messages from '@cucumber/messages'; @@ -174,10 +179,10 @@ export class CucumberInstrumentation extends InstrumentationBase { { kind: SpanKind.CLIENT, attributes: { - [SemanticAttributes.CODE_FILEPATH]: gherkinDocument.uri, - [SemanticAttributes.CODE_LINENO]: scenario.location.line, - [SemanticAttributes.CODE_FUNCTION]: scenario.name, - [SemanticAttributes.CODE_NAMESPACE]: feature.name, + [SEMATTRS_CODE_FILEPATH]: gherkinDocument.uri, + [SEMATTRS_CODE_LINENO]: scenario.location.line, + [SEMATTRS_CODE_FUNCTION]: scenario.name, + [SEMATTRS_CODE_NAMESPACE]: feature.name, [AttributeNames.FEATURE_TAGS]: CucumberInstrumentation.mapTags( feature.tags ), diff --git a/plugins/node/instrumentation-cucumber/test/cucumber.test.ts b/plugins/node/instrumentation-cucumber/test/cucumber.test.ts index 87679cb7bd..deffbef31d 100644 --- a/plugins/node/instrumentation-cucumber/test/cucumber.test.ts +++ b/plugins/node/instrumentation-cucumber/test/cucumber.test.ts @@ -21,9 +21,14 @@ import { InMemorySpanExporter, SimpleSpanProcessor, } from '@opentelemetry/sdk-trace-base'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_CODE_FILEPATH, + SEMATTRS_CODE_FUNCTION, + SEMATTRS_CODE_LINENO, + SEMATTRS_CODE_NAMESPACE, + SEMRESATTRS_SERVICE_NAME, +} from '@opentelemetry/semantic-conventions'; import { Resource } from '@opentelemetry/resources'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; import * as path from 'path'; import * as assert from 'assert'; @@ -50,7 +55,7 @@ import { PassThrough } from 'stream'; describe('CucumberInstrumentation', () => { const provider = new NodeTracerProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: 'CucumberInstrumentation', + [SEMRESATTRS_SERVICE_NAME]: 'CucumberInstrumentation', }), }); const memoryExporter = new InMemorySpanExporter(); @@ -165,10 +170,10 @@ describe('CucumberInstrumentation', () => { assert(parent, 'Expected a parent span'); assert.deepEqual(parent.attributes, { - [SemanticAttributes.CODE_FILEPATH]: 'test/current.feature', - [SemanticAttributes.CODE_LINENO]: 7, - [SemanticAttributes.CODE_FUNCTION]: 'Button pushing', - [SemanticAttributes.CODE_NAMESPACE]: 'Basic', + [SEMATTRS_CODE_FILEPATH]: 'test/current.feature', + [SEMATTRS_CODE_LINENO]: 7, + [SEMATTRS_CODE_FUNCTION]: 'Button pushing', + [SEMATTRS_CODE_NAMESPACE]: 'Basic', [AttributeNames.FEATURE_DESCRIPTION]: ' A very basic feature file with a single scenario', [AttributeNames.FEATURE_LANGUAGE]: 'en', From 86d143aef90f8381a4eb51e1fca70d8114d2e4b9 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 29 Apr 2024 09:44:31 +0200 Subject: [PATCH 24/39] chore(deps): update dependency @fastify/express to v3 (#2117) --- package-lock.json | 16 ++++++++-------- .../package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index dd02d74395..89f33d1864 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5122,9 +5122,9 @@ "dev": true }, "node_modules/@fastify/express": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@fastify/express/-/express-2.3.0.tgz", - "integrity": "sha512-jvvjlPPCfJsSHfF6tQDyARJ3+c3xXiqcxVZu6bi3xMWCWB3fl07vrjFDeaqnwqKhLZ9+m6cog5dw7gIMKEsTnQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@fastify/express/-/express-3.0.0.tgz", + "integrity": "sha512-Ug6aulXCUiHgMyrHVYQqnQbGdsAV0aTad6nZxbOr6w3QjKn1mdQS3Kyzvc+I0xMjZ9yIyMUWHSooHgZ0l7nOng==", "dev": true, "dependencies": { "express": "^4.17.1", @@ -37691,7 +37691,7 @@ "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { - "@fastify/express": "^2.0.2", + "@fastify/express": "^3.0.0", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.39.0", @@ -43079,9 +43079,9 @@ "dev": true }, "@fastify/express": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@fastify/express/-/express-2.3.0.tgz", - "integrity": "sha512-jvvjlPPCfJsSHfF6tQDyARJ3+c3xXiqcxVZu6bi3xMWCWB3fl07vrjFDeaqnwqKhLZ9+m6cog5dw7gIMKEsTnQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@fastify/express/-/express-3.0.0.tgz", + "integrity": "sha512-Ug6aulXCUiHgMyrHVYQqnQbGdsAV0aTad6nZxbOr6w3QjKn1mdQS3Kyzvc+I0xMjZ9yIyMUWHSooHgZ0l7nOng==", "dev": true, "requires": { "express": "^4.17.1", @@ -46084,7 +46084,7 @@ "@opentelemetry/instrumentation-fastify": { "version": "file:plugins/node/opentelemetry-instrumentation-fastify", "requires": { - "@fastify/express": "^2.0.2", + "@fastify/express": "^3.0.0", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.39.0", diff --git a/plugins/node/opentelemetry-instrumentation-fastify/package.json b/plugins/node/opentelemetry-instrumentation-fastify/package.json index 4a55548d68..fe7cf44d17 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/package.json +++ b/plugins/node/opentelemetry-instrumentation-fastify/package.json @@ -43,7 +43,7 @@ "@opentelemetry/api": "^1.3.0" }, "devDependencies": { - "@fastify/express": "^2.0.2", + "@fastify/express": "^3.0.0", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.39.0", From af2f3f1e5a2608900fcea721f08b2e541a17927c Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Mon, 29 Apr 2024 04:08:11 -0400 Subject: [PATCH 25/39] feat(auto-instrumentation-node): add azure detector (#2101) The Azure detectors were not being added to the list of possible detectors. All other cloud providers were possible values, so this commit adds the missing detectors for Azure. Signed-off-by: maryliag Co-authored-by: Amir Blum --- metapackages/auto-instrumentations-node/README.md | 1 + metapackages/auto-instrumentations-node/package.json | 1 + metapackages/auto-instrumentations-node/src/utils.ts | 12 +++++++++++- .../auto-instrumentations-node/test/utils.test.ts | 4 ++-- package-lock.json | 2 ++ 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/metapackages/auto-instrumentations-node/README.md b/metapackages/auto-instrumentations-node/README.md index dccf55a266..ba31c44d9a 100644 --- a/metapackages/auto-instrumentations-node/README.md +++ b/metapackages/auto-instrumentations-node/README.md @@ -65,6 +65,7 @@ By default, all SDK resource detectors are used, but you can use the environment - `container` - `alibaba` - `aws` +- `azure` - `gcp` - `all` - enable all resource detectors - `none` - disable resource detection diff --git a/metapackages/auto-instrumentations-node/package.json b/metapackages/auto-instrumentations-node/package.json index 47ee58c6b3..7704e11d66 100644 --- a/metapackages/auto-instrumentations-node/package.json +++ b/metapackages/auto-instrumentations-node/package.json @@ -89,6 +89,7 @@ "@opentelemetry/instrumentation-winston": "^0.37.0", "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", "@opentelemetry/resource-detector-aws": "^1.4.2", + "@opentelemetry/resource-detector-azure": "^0.2.6", "@opentelemetry/resource-detector-container": "^0.3.9", "@opentelemetry/resource-detector-gcp": "^0.29.9", "@opentelemetry/resources": "^1.12.0", diff --git a/metapackages/auto-instrumentations-node/src/utils.ts b/metapackages/auto-instrumentations-node/src/utils.ts index 67cfa900c8..de7d0c7026 100644 --- a/metapackages/auto-instrumentations-node/src/utils.ts +++ b/metapackages/auto-instrumentations-node/src/utils.ts @@ -73,6 +73,11 @@ import { osDetectorSync, processDetectorSync, } from '@opentelemetry/resources'; +import { + azureAppServiceDetector, + azureFunctionsDetector, + azureVmDetector, +} from '@opentelemetry/resource-detector-azure'; const RESOURCE_DETECTOR_CONTAINER = 'container'; const RESOURCE_DETECTOR_ENVIRONMENT = 'env'; @@ -81,6 +86,7 @@ const RESOURCE_DETECTOR_OS = 'os'; const RESOURCE_DETECTOR_PROCESS = 'process'; const RESOURCE_DETECTOR_ALIBABA = 'alibaba'; const RESOURCE_DETECTOR_AWS = 'aws'; +const RESOURCE_DETECTOR_AZURE = 'azure'; const RESOURCE_DETECTOR_GCP = 'gcp'; const InstrumentationMap = { @@ -196,7 +202,7 @@ function getEnabledInstrumentationsFromEnv() { export function getResourceDetectorsFromEnv(): Array { const resourceDetectors = new Map< string, - Detector | DetectorSync | Detector[] + Detector | DetectorSync | Detector[] | DetectorSync[] >([ [RESOURCE_DETECTOR_CONTAINER, containerDetector], [RESOURCE_DETECTOR_ENVIRONMENT, envDetectorSync], @@ -215,6 +221,10 @@ export function getResourceDetectorsFromEnv(): Array { awsLambdaDetector, ], ], + [ + RESOURCE_DETECTOR_AZURE, + [azureAppServiceDetector, azureFunctionsDetector, azureVmDetector], + ], ]); const resourceDetectorsFromEnv = diff --git a/metapackages/auto-instrumentations-node/test/utils.test.ts b/metapackages/auto-instrumentations-node/test/utils.test.ts index 3a04c01569..29fae3cef2 100644 --- a/metapackages/auto-instrumentations-node/test/utils.test.ts +++ b/metapackages/auto-instrumentations-node/test/utils.test.ts @@ -114,13 +114,13 @@ describe('utils', () => { describe('getResourceDetectorsFromEnv', () => { it('should return all resource detectors by default', () => { - assert.equal(getResourceDetectorsFromEnv().length, 12); + assert.equal(getResourceDetectorsFromEnv().length, 15); }); it('should return all resource detectors when OTEL_NODE_RESOURCE_DETECTORS contains "all"', () => { process.env.OTEL_NODE_RESOURCE_DETECTORS = 'all'; - assert.equal(getResourceDetectorsFromEnv().length, 12); + assert.equal(getResourceDetectorsFromEnv().length, 15); delete process.env.OTEL_NODE_RESOURCE_DETECTORS; }); diff --git a/package-lock.json b/package-lock.json index 89f33d1864..ec53fe1355 100644 --- a/package-lock.json +++ b/package-lock.json @@ -324,6 +324,7 @@ "@opentelemetry/instrumentation-winston": "^0.37.0", "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", "@opentelemetry/resource-detector-aws": "^1.4.2", + "@opentelemetry/resource-detector-azure": "^0.2.6", "@opentelemetry/resource-detector-container": "^0.3.9", "@opentelemetry/resource-detector-gcp": "^0.29.9", "@opentelemetry/resources": "^1.12.0", @@ -45514,6 +45515,7 @@ "@opentelemetry/instrumentation-winston": "^0.37.0", "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", "@opentelemetry/resource-detector-aws": "^1.4.2", + "@opentelemetry/resource-detector-azure": "^0.2.6", "@opentelemetry/resource-detector-container": "^0.3.9", "@opentelemetry/resource-detector-gcp": "^0.29.9", "@opentelemetry/resources": "^1.12.0", From 3ad9fdfe1e18e597f31bb546d9b00824a7d1ffe9 Mon Sep 17 00:00:00 2001 From: Zirak Date: Mon, 29 Apr 2024 08:20:51 +0000 Subject: [PATCH 26/39] fix(instrumentation-redis): Take host and port used for connection (#2072) * fix(instrumentation-redis): Take host and port used for connection The Redis client allows specifying connection options in several ways, with sensible defaults. The following all translate into `127.0.0.1:6379`: ```js createClient('redis://127.0.0.1:6379'); createClient({ host: '127.0.0.1', port: NaN }); createClient({}) createClient() ``` Redis somewhat normalises these separate options into its `options` member, and stores the properties it uses to connect to the server in `connection_options`. Examples of the difference between the two in the examples preceding (slightly redacted for ease of reading): ```js createClient('redis://127.0.0.1:6379'); // options = { port: '6379', host: '127.0.0.1' } // connection_options = { port: 6379, host: '127.0.0.1', family: 4 } createClient({ host: '127.0.0.1', port: NaN }); // options = { host: '127.0.0.1', port: NaN } // connection_options = { port: 6379, host: '127.0.0.1', family: 4 } createClient() // options = { host: undefined } // connection_options = { port: 6379, host: '127.0.0.1', family: 4 } ``` The instrumentation before this commit looks at the `options` property, which contains caller-supplied values before they're fully normalised and smoothed over by Redis. This means that for these weird cases, the instrumentation would populate `NET_PEER_NAME` and `NET_PEER_PORT` with erroneous values. This commit has the instrumentation the values the Redis client uses to connect to the server, mirroring actual use. * test(instrumentation-redis): Explicitly expect for a numeric port --------- Co-authored-by: Amir Blum --- .../src/internal-types.ts | 6 +++--- .../node/opentelemetry-instrumentation-redis/src/utils.ts | 6 +++--- .../opentelemetry-instrumentation-redis/test/redis.test.ts | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/plugins/node/opentelemetry-instrumentation-redis/src/internal-types.ts b/plugins/node/opentelemetry-instrumentation-redis/src/internal-types.ts index 99e2efe829..545a1927e4 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/src/internal-types.ts +++ b/plugins/node/opentelemetry-instrumentation-redis/src/internal-types.ts @@ -14,9 +14,9 @@ * limitations under the License. */ export interface RedisPluginClientTypes { - options?: { - host: string; - port: string; + connection_options?: { + port?: string; + host?: string; }; address?: string; diff --git a/plugins/node/opentelemetry-instrumentation-redis/src/utils.ts b/plugins/node/opentelemetry-instrumentation-redis/src/utils.ts index fed4f769f9..d863089f30 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/src/utils.ts +++ b/plugins/node/opentelemetry-instrumentation-redis/src/utils.ts @@ -111,10 +111,10 @@ export const getTracedInternalSendCommand = ( ); // Set attributes for not explicitly typed RedisPluginClientTypes - if (this.options) { + if (this.connection_options) { span.setAttributes({ - [SEMATTRS_NET_PEER_NAME]: this.options.host, - [SEMATTRS_NET_PEER_PORT]: this.options.port, + [SEMATTRS_NET_PEER_NAME]: this.connection_options.host, + [SEMATTRS_NET_PEER_PORT]: this.connection_options.port, }); } if (this.address) { diff --git a/plugins/node/opentelemetry-instrumentation-redis/test/redis.test.ts b/plugins/node/opentelemetry-instrumentation-redis/test/redis.test.ts index 63ab337e86..13113a2f3d 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/test/redis.test.ts +++ b/plugins/node/opentelemetry-instrumentation-redis/test/redis.test.ts @@ -51,7 +51,7 @@ const memoryExporter = new InMemorySpanExporter(); const CONFIG = { host: process.env.OPENTELEMETRY_REDIS_HOST || 'localhost', - port: process.env.OPENTELEMETRY_REDIS_PORT || '63790', + port: Number(process.env.OPENTELEMETRY_REDIS_PORT || 63790), }; const URL = `redis://${CONFIG.host}:${CONFIG.port}`; From 405472df3b1d218daab79e9caa7c8a51c3d7a7bf Mon Sep 17 00:00:00 2001 From: Ievgen Makukh Date: Mon, 29 Apr 2024 11:36:06 +0300 Subject: [PATCH 27/39] perf(instrumentation-nestjs-core): extract reusable span attributes to outer scope (#2087) Co-authored-by: Amir Blum --- .../src/instrumentation.ts | 36 ++++++++++--------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts index 619c68760f..c480f3a546 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts @@ -148,21 +148,21 @@ function createWrapCreateHandler(tracer: api.Tracer, moduleVersion?: string) { ) { arguments[1] = createWrapHandler(tracer, moduleVersion, callback); const handler = original.apply(this, arguments as any); + const callbackName = callback.name; + const instanceName = + instance.constructor && instance.constructor.name + ? instance.constructor.name + : 'UnnamedInstance'; + const spanName = callbackName + ? `${instanceName}.${callbackName}` + : instanceName; + return function ( this: any, req: any, res: any, next: (...args: any[]) => unknown ) { - const callbackName = callback.name; - const instanceName = - instance.constructor && instance.constructor.name - ? instance.constructor.name - : 'UnnamedInstance'; - const spanName = callbackName - ? `${instanceName}.${callbackName}` - : instanceName; - const span = tracer.startSpan(spanName, { attributes: { ...Instrumentation.COMMON_ATTRIBUTES, @@ -197,15 +197,17 @@ function createWrapHandler( moduleVersion: string | undefined, handler: Function ) { + const spanName = handler.name || 'anonymous nest handler'; + const options = { + attributes: { + ...Instrumentation.COMMON_ATTRIBUTES, + [AttributeNames.VERSION]: moduleVersion, + [AttributeNames.TYPE]: NestType.REQUEST_HANDLER, + [AttributeNames.CALLBACK]: handler.name, + }, + }; const wrappedHandler = function (this: RouterExecutionContext) { - const span = tracer.startSpan(handler.name || 'anonymous nest handler', { - attributes: { - ...Instrumentation.COMMON_ATTRIBUTES, - [AttributeNames.VERSION]: moduleVersion, - [AttributeNames.TYPE]: NestType.REQUEST_HANDLER, - [AttributeNames.CALLBACK]: handler.name, - }, - }); + const span = tracer.startSpan(spanName, options); const spanContext = api.trace.setSpan(api.context.active(), span); return api.context.with(spanContext, async () => { From eb6e8ef6b4c72710a98ed3590392b85c8c3b79e5 Mon Sep 17 00:00:00 2001 From: Niklas Lochschmidt Date: Mon, 29 Apr 2024 13:29:32 +0200 Subject: [PATCH 28/39] feat(instrumentation-hapi): support v21 (#1985) * update hapi bindings to v21 * fix(instrumentation-hapi): restore support for v17 to v20 * fix(instrumentation-hapi): route.options function not patched * fix: update package-lock.json * style: remove newline in test * style: convert ternary to if statements * fix: remove joi devDependency * test: test hapi 21 against node 14 * chore: add joi dev dependency to compile auto-instrumentation-node * chore: remove skipLibCheck in tsconfig.json * chore: fix package-json.lock * chore: insert missing newline Co-authored-by: Marc Pichler --------- Co-authored-by: toddtarsi Co-authored-by: Marc Pichler --- package-lock.json | 1577 ++++++++++++----- .../.tav.yml | 4 + .../README.md | 2 +- .../package.json | 6 +- .../src/instrumentation.ts | 72 +- .../src/internal-types.ts | 10 +- .../src/utils.ts | 13 + .../test/hapi.test.ts | 46 + 8 files changed, 1220 insertions(+), 510 deletions(-) diff --git a/package-lock.json b/package-lock.json index ec53fe1355..cdf76d19ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5186,311 +5186,654 @@ } }, "node_modules/@hapi/accept": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-5.0.2.tgz", - "integrity": "sha512-CmzBx/bXUR8451fnZRuZAJRlzgm0Jgu5dltTX/bszmR2lheb9BpyN47Q1RbaGTsvFzn0PXAEs+lXDKfshccYZw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-6.0.3.tgz", + "integrity": "sha512-p72f9k56EuF0n3MwlBNThyVE5PXX40g+aQh+C/xbKrfzahM2Oispv3AXmOIU51t3j77zay1qrX7IIziZXspMlw==", "dev": true, "dependencies": { - "@hapi/boom": "9.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" } }, - "node_modules/@hapi/ammo": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@hapi/ammo/-/ammo-5.0.1.tgz", - "integrity": "sha512-FbCNwcTbnQP4VYYhLNGZmA76xb2aHg9AMPiy18NZyWMG310P5KdFGyA9v2rm5ujrIny77dEEIkMOwl0Xv+fSSA==", + "node_modules/@hapi/accept/node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", "dev": true, "dependencies": { - "@hapi/hoek": "9.x.x" + "@hapi/hoek": "^11.0.2" } }, - "node_modules/@hapi/b64": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@hapi/b64/-/b64-5.0.0.tgz", - "integrity": "sha512-ngu0tSEmrezoiIaNGG6rRvKOUkUuDdf4XTPnONHGYfSGRmDqPZX5oJL6HAdKTo1UQHECbdB4OzhWrfgVppjHUw==", + "node_modules/@hapi/accept/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "node_modules/@hapi/ammo": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/ammo/-/ammo-6.0.1.tgz", + "integrity": "sha512-pmL+nPod4g58kXrMcsGLp05O2jF4P2Q3GiL8qYV7nKYEh3cGf+rV4P5Jyi2Uq0agGhVU63GtaSAfBEZOlrJn9w==", + "dev": true, "dependencies": { - "@hapi/hoek": "9.x.x" + "@hapi/hoek": "^11.0.2" } }, - "node_modules/@hapi/boom": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.4.tgz", - "integrity": "sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==", + "node_modules/@hapi/ammo/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "node_modules/@hapi/bounce": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@hapi/bounce/-/bounce-3.0.1.tgz", + "integrity": "sha512-G+/Pp9c1Ha4FDP+3Sy/Xwg2O4Ahaw3lIZFSX+BL4uWi64CmiETuZPxhKDUD4xBMOUZbBlzvO8HjiK8ePnhBadA==", + "dev": true, "dependencies": { - "@hapi/hoek": "9.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" } }, - "node_modules/@hapi/bounce": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@hapi/bounce/-/bounce-2.0.0.tgz", - "integrity": "sha512-JesW92uyzOOyuzJKjoLHM1ThiOvHPOLDHw01YV8yh5nCso7sDwJho1h0Ad2N+E62bZyz46TG3xhAi/78Gsct6A==", + "node_modules/@hapi/bounce/node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", "dev": true, "dependencies": { - "@hapi/boom": "9.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/hoek": "^11.0.2" } }, - "node_modules/@hapi/bourne": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.1.0.tgz", - "integrity": "sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q==" + "node_modules/@hapi/bounce/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true }, "node_modules/@hapi/call": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@hapi/call/-/call-8.0.1.tgz", - "integrity": "sha512-bOff6GTdOnoe5b8oXRV3lwkQSb/LAWylvDMae6RgEWWntd0SHtkYbQukDHKlfaYtVnSAgIavJ0kqszF/AIBb6g==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@hapi/call/-/call-9.0.1.tgz", + "integrity": "sha512-uPojQRqEL1GRZR4xXPqcLMujQGaEpyVPRyBlD8Pp5rqgIwLhtveF9PkixiKru2THXvuN8mUrLeet5fqxKAAMGg==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/call/node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", "dev": true, "dependencies": { - "@hapi/boom": "9.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/hoek": "^11.0.2" } }, + "node_modules/@hapi/call/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, "node_modules/@hapi/catbox": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/@hapi/catbox/-/catbox-11.1.1.tgz", - "integrity": "sha512-u/8HvB7dD/6X8hsZIpskSDo4yMKpHxFd7NluoylhGrL6cUfYxdQPnvUp9YU2C6F9hsyBVLGulBd9vBN1ebfXOQ==", + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@hapi/catbox/-/catbox-12.1.1.tgz", + "integrity": "sha512-hDqYB1J+R0HtZg4iPH3LEnldoaBsar6bYp0EonBmNQ9t5CO+1CqgCul2ZtFveW1ReA5SQuze9GPSU7/aecERhw==", "dev": true, "dependencies": { - "@hapi/boom": "9.x.x", - "@hapi/hoek": "9.x.x", - "@hapi/podium": "4.x.x", - "@hapi/validate": "1.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/podium": "^5.0.0", + "@hapi/validate": "^2.0.1" } }, "node_modules/@hapi/catbox-memory": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/catbox-memory/-/catbox-memory-6.0.1.tgz", + "integrity": "sha512-sVb+/ZxbZIvaMtJfAbdyY+QJUQg9oKTwamXpEg/5xnfG5WbJLTjvEn4kIGKz9pN3ENNbIL/bIdctmHmqi/AdGA==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/catbox-memory/node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/catbox-memory/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "node_modules/@hapi/catbox/node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/catbox/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "node_modules/@hapi/catbox/node_modules/@hapi/podium": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@hapi/catbox-memory/-/catbox-memory-5.0.1.tgz", - "integrity": "sha512-QWw9nOYJq5PlvChLWV8i6hQHJYfvdqiXdvTupJFh0eqLZ64Xir7mKNi96d5/ZMUAqXPursfNDIDxjFgoEDUqeQ==", + "resolved": "https://registry.npmjs.org/@hapi/podium/-/podium-5.0.1.tgz", + "integrity": "sha512-eznFTw6rdBhAijXFIlBOMJJd+lXTvqbrBIS4Iu80r2KTVIo4g+7fLy4NKp/8+UnSt5Ox6mJtAlKBU/Sf5080TQ==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/teamwork": "^6.0.0", + "@hapi/validate": "^2.0.1" + } + }, + "node_modules/@hapi/catbox/node_modules/@hapi/teamwork": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@hapi/teamwork/-/teamwork-6.0.0.tgz", + "integrity": "sha512-05HumSy3LWfXpmJ9cr6HzwhAavrHkJ1ZRCmNE2qJMihdM5YcWreWPfyN0yKT2ZjCM92au3ZkuodjBxOibxM67A==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@hapi/catbox/node_modules/@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", "dev": true, "dependencies": { - "@hapi/boom": "9.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/catbox/node_modules/@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" } }, "node_modules/@hapi/content": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@hapi/content/-/content-5.0.2.tgz", - "integrity": "sha512-mre4dl1ygd4ZyOH3tiYBrOUBzV7Pu/EOs8VLGf58vtOEECWed8Uuw6B4iR9AN/8uQt42tB04qpVaMyoMQh0oMw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@hapi/content/-/content-6.0.0.tgz", + "integrity": "sha512-CEhs7j+H0iQffKfe5Htdak5LBOz/Qc8TRh51cF+BFv0qnuph3Em4pjGVzJMkI2gfTDdlJKWJISGWS1rK34POGA==", "dev": true, "dependencies": { - "@hapi/boom": "9.x.x" + "@hapi/boom": "^10.0.0" } }, - "node_modules/@hapi/cryptiles": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/cryptiles/-/cryptiles-5.1.0.tgz", - "integrity": "sha512-fo9+d1Ba5/FIoMySfMqPBR/7Pa29J2RsiPrl7bkwo5W5o+AN1dAYQRi4SPrPwwVxVGKjgLOEWrsvt1BonJSfLA==", + "node_modules/@hapi/content/node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, "dependencies": { - "@hapi/boom": "9.x.x" - }, - "engines": { - "node": ">=12.0.0" + "@hapi/hoek": "^11.0.2" } }, + "node_modules/@hapi/content/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, "node_modules/@hapi/file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@hapi/file/-/file-2.0.0.tgz", - "integrity": "sha512-WSrlgpvEqgPWkI18kkGELEZfXr0bYLtr16iIN4Krh9sRnzBZN6nnWxHFxtsnP684wueEySBbXPDg/WfA9xJdBQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/file/-/file-3.0.0.tgz", + "integrity": "sha512-w+lKW+yRrLhJu620jT3y+5g2mHqnKfepreykvdOcl9/6up8GrQQn+l3FRTsjHTKbkbfQFkuksHpdv2EcpKcJ4Q==", "dev": true }, "node_modules/@hapi/hapi": { - "version": "20.1.5", - "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-20.1.5.tgz", - "integrity": "sha512-BhJ5XFR9uWPUBj/z5pPqXSk8OnvQQU/EbQjwpmjZy0ymNEiq7kIhXkAmzXcntbBHta9o7zpW8XMeXnfV4wudXw==", - "dev": true, - "dependencies": { - "@hapi/accept": "^5.0.1", - "@hapi/ammo": "^5.0.1", - "@hapi/boom": "^9.1.0", - "@hapi/bounce": "^2.0.0", - "@hapi/call": "^8.0.0", - "@hapi/catbox": "^11.1.1", - "@hapi/catbox-memory": "^5.0.0", - "@hapi/heavy": "^7.0.1", - "@hapi/hoek": "^9.0.4", - "@hapi/mimos": "^6.0.0", - "@hapi/podium": "^4.1.1", - "@hapi/shot": "^5.0.5", - "@hapi/somever": "^3.0.0", - "@hapi/statehood": "^7.0.3", - "@hapi/subtext": "^7.0.3", - "@hapi/teamwork": "^5.1.0", - "@hapi/topo": "^5.0.0", - "@hapi/validate": "^1.1.1" + "version": "21.3.3", + "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-21.3.3.tgz", + "integrity": "sha512-6pgwWVl/aSKSNVn86n+mWa06jRqCAKi2adZp/Hti19A0u5x3/6eiKz8UTBPMzfrdGf9WcrYbFBYzWr/qd2s28g==", + "dev": true, + "dependencies": { + "@hapi/accept": "^6.0.1", + "@hapi/ammo": "^6.0.1", + "@hapi/boom": "^10.0.1", + "@hapi/bounce": "^3.0.1", + "@hapi/call": "^9.0.1", + "@hapi/catbox": "^12.1.1", + "@hapi/catbox-memory": "^6.0.1", + "@hapi/heavy": "^8.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/mimos": "^7.0.1", + "@hapi/podium": "^5.0.1", + "@hapi/shot": "^6.0.1", + "@hapi/somever": "^4.1.1", + "@hapi/statehood": "^8.1.1", + "@hapi/subtext": "^8.1.0", + "@hapi/teamwork": "^6.0.0", + "@hapi/topo": "^6.0.1", + "@hapi/validate": "^2.0.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.15.0" } }, - "node_modules/@hapi/heavy": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@hapi/heavy/-/heavy-7.0.1.tgz", - "integrity": "sha512-vJ/vzRQ13MtRzz6Qd4zRHWS3FaUc/5uivV2TIuExGTM9Qk+7Zzqj0e2G7EpE6KztO9SalTbiIkTh7qFKj/33cA==", + "node_modules/@hapi/hapi/node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", "dev": true, "dependencies": { - "@hapi/boom": "9.x.x", - "@hapi/hoek": "9.x.x", - "@hapi/validate": "1.x.x" + "@hapi/hoek": "^11.0.2" } }, - "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + "node_modules/@hapi/hapi/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true }, - "node_modules/@hapi/iron": { + "node_modules/@hapi/hapi/node_modules/@hapi/podium": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@hapi/podium/-/podium-5.0.1.tgz", + "integrity": "sha512-eznFTw6rdBhAijXFIlBOMJJd+lXTvqbrBIS4Iu80r2KTVIo4g+7fLy4NKp/8+UnSt5Ox6mJtAlKBU/Sf5080TQ==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/teamwork": "^6.0.0", + "@hapi/validate": "^2.0.1" + } + }, + "node_modules/@hapi/hapi/node_modules/@hapi/teamwork": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@hapi/iron/-/iron-6.0.0.tgz", - "integrity": "sha512-zvGvWDufiTGpTJPG1Y/McN8UqWBu0k/xs/7l++HVU535NLHXsHhy54cfEMdW7EjwKfbBfM9Xy25FmTiobb7Hvw==", + "resolved": "https://registry.npmjs.org/@hapi/teamwork/-/teamwork-6.0.0.tgz", + "integrity": "sha512-05HumSy3LWfXpmJ9cr6HzwhAavrHkJ1ZRCmNE2qJMihdM5YcWreWPfyN0yKT2ZjCM92au3ZkuodjBxOibxM67A==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@hapi/hapi/node_modules/@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/hapi/node_modules/@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" + } + }, + "node_modules/@hapi/heavy": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@hapi/heavy/-/heavy-8.0.1.tgz", + "integrity": "sha512-gBD/NANosNCOp6RsYTsjo2vhr5eYA3BEuogk6cxY0QdhllkkTaJFYtTXv46xd6qhBVMbMMqcSdtqey+UQU3//w==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/validate": "^2.0.1" + } + }, + "node_modules/@hapi/heavy/node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/heavy/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "node_modules/@hapi/heavy/node_modules/@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "dev": true, "dependencies": { - "@hapi/b64": "5.x.x", - "@hapi/boom": "9.x.x", - "@hapi/bourne": "2.x.x", - "@hapi/cryptiles": "5.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/hoek": "^11.0.2" } }, + "node_modules/@hapi/heavy/node_modules/@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true + }, "node_modules/@hapi/mimos": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@hapi/mimos/-/mimos-6.0.0.tgz", - "integrity": "sha512-Op/67tr1I+JafN3R3XN5DucVSxKRT/Tc+tUszDwENoNpolxeXkhrJ2Czt6B6AAqrespHoivhgZBWYSuANN9QXg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@hapi/mimos/-/mimos-7.0.1.tgz", + "integrity": "sha512-b79V+BrG0gJ9zcRx1VGcCI6r6GEzzZUgiGEJVoq5gwzuB2Ig9Cax8dUuBauQCFKvl2YWSWyOc8mZ8HDaJOtkew==", "dev": true, "dependencies": { - "@hapi/hoek": "9.x.x", - "mime-db": "1.x.x" + "@hapi/hoek": "^11.0.2", + "mime-db": "^1.52.0" } }, + "node_modules/@hapi/mimos/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, "node_modules/@hapi/nigel": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@hapi/nigel/-/nigel-4.0.2.tgz", - "integrity": "sha512-ht2KoEsDW22BxQOEkLEJaqfpoKPXxi7tvabXy7B/77eFtOyG5ZEstfZwxHQcqAiZhp58Ae5vkhEqI03kawkYNw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@hapi/nigel/-/nigel-5.0.1.tgz", + "integrity": "sha512-uv3dtYuB4IsNaha+tigWmN8mQw/O9Qzl5U26Gm4ZcJVtDdB1AVJOwX3X5wOX+A07qzpEZnOMBAm8jjSqGsU6Nw==", "dev": true, "dependencies": { - "@hapi/hoek": "^9.0.4", - "@hapi/vise": "^4.0.0" + "@hapi/hoek": "^11.0.2", + "@hapi/vise": "^5.0.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" } }, + "node_modules/@hapi/nigel/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, "node_modules/@hapi/pez": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/pez/-/pez-5.1.0.tgz", - "integrity": "sha512-YfB0btnkLB3lb6Ry/1KifnMPBm5ZPfaAHWFskzOMAgDgXgcBgA+zjpIynyEiBfWEz22DBT8o1e2tAaBdlt8zbw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@hapi/pez/-/pez-6.1.0.tgz", + "integrity": "sha512-+FE3sFPYuXCpuVeHQ/Qag1b45clR2o54QoonE/gKHv9gukxQ8oJJZPR7o3/ydDTK6racnCJXxOyT1T93FCJMIg==", "dev": true, "dependencies": { - "@hapi/b64": "5.x.x", - "@hapi/boom": "9.x.x", - "@hapi/content": "^5.0.2", - "@hapi/hoek": "9.x.x", - "@hapi/nigel": "4.x.x" + "@hapi/b64": "^6.0.1", + "@hapi/boom": "^10.0.1", + "@hapi/content": "^6.0.0", + "@hapi/hoek": "^11.0.2", + "@hapi/nigel": "^5.0.1" } }, - "node_modules/@hapi/podium": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@hapi/podium/-/podium-4.1.3.tgz", - "integrity": "sha512-ljsKGQzLkFqnQxE7qeanvgGj4dejnciErYd30dbrYzUOF/FyS/DOF97qcrT3bhoVwCYmxa6PEMhxfCPlnUcD2g==", + "node_modules/@hapi/pez/node_modules/@hapi/b64": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/b64/-/b64-6.0.1.tgz", + "integrity": "sha512-ZvjX4JQReUmBheeCq+S9YavcnMMHWqx3S0jHNXWIM1kQDxB9cyfSycpVvjfrKcIS8Mh5N3hmu/YKo4Iag9g2Kw==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/pez/node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, "dependencies": { - "@hapi/hoek": "9.x.x", - "@hapi/teamwork": "5.x.x", - "@hapi/validate": "1.x.x" + "@hapi/hoek": "^11.0.2" } }, + "node_modules/@hapi/pez/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, "node_modules/@hapi/shot": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@hapi/shot/-/shot-5.0.5.tgz", - "integrity": "sha512-x5AMSZ5+j+Paa8KdfCoKh+klB78otxF+vcJR/IoN91Vo2e5ulXIW6HUsFTCU+4W6P/Etaip9nmdAx2zWDimB2A==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/shot/-/shot-6.0.1.tgz", + "integrity": "sha512-s5ynMKZXYoDd3dqPw5YTvOR/vjHvMTxc388+0qL0jZZP1+uwXuUD32o9DuuuLsmTlyXCWi02BJl1pBpwRuUrNA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/validate": "^2.0.1" + } + }, + "node_modules/@hapi/shot/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "node_modules/@hapi/shot/node_modules/@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/shot/node_modules/@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", "dev": true, "dependencies": { - "@hapi/hoek": "9.x.x", - "@hapi/validate": "1.x.x" + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" } }, "node_modules/@hapi/somever": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@hapi/somever/-/somever-3.0.1.tgz", - "integrity": "sha512-4ZTSN3YAHtgpY/M4GOtHUXgi6uZtG9nEZfNI6QrArhK0XN/RDVgijlb9kOmXwCR5VclDSkBul9FBvhSuKXx9+w==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@hapi/somever/-/somever-4.1.1.tgz", + "integrity": "sha512-lt3QQiDDOVRatS0ionFDNrDIv4eXz58IibQaZQDOg4DqqdNme8oa0iPWcE0+hkq/KTeBCPtEOjDOBKBKwDumVg==", "dev": true, "dependencies": { - "@hapi/bounce": "2.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/bounce": "^3.0.1", + "@hapi/hoek": "^11.0.2" } }, + "node_modules/@hapi/somever/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, "node_modules/@hapi/statehood": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@hapi/statehood/-/statehood-7.0.4.tgz", - "integrity": "sha512-Fia6atroOVmc5+2bNOxF6Zv9vpbNAjEXNcUbWXavDqhnJDlchwUUwKS5LCi5mGtCTxRhUKKHwuxuBZJkmLZ7fw==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@hapi/statehood/-/statehood-8.1.1.tgz", + "integrity": "sha512-YbK7PSVUA59NArAW5Np0tKRoIZ5VNYUicOk7uJmWZF6XyH5gGL+k62w77SIJb0AoAJ0QdGQMCQ/WOGL1S3Ydow==", "dev": true, "dependencies": { - "@hapi/boom": "9.x.x", - "@hapi/bounce": "2.x.x", - "@hapi/bourne": "2.x.x", - "@hapi/cryptiles": "5.x.x", - "@hapi/hoek": "9.x.x", - "@hapi/iron": "6.x.x", - "@hapi/validate": "1.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/bounce": "^3.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/cryptiles": "^6.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/iron": "^7.0.1", + "@hapi/validate": "^2.0.1" } }, - "node_modules/@hapi/subtext": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@hapi/subtext/-/subtext-7.1.0.tgz", - "integrity": "sha512-n94cU6hlvsNRIpXaROzBNEJGwxC+HA69q769pChzej84On8vsU14guHDub7Pphr/pqn5b93zV3IkMPDU5AUiXA==", + "node_modules/@hapi/statehood/node_modules/@hapi/b64": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/b64/-/b64-6.0.1.tgz", + "integrity": "sha512-ZvjX4JQReUmBheeCq+S9YavcnMMHWqx3S0jHNXWIM1kQDxB9cyfSycpVvjfrKcIS8Mh5N3hmu/YKo4Iag9g2Kw==", "dev": true, "dependencies": { - "@hapi/boom": "9.x.x", - "@hapi/bourne": "2.x.x", - "@hapi/content": "^5.0.2", - "@hapi/file": "2.x.x", - "@hapi/hoek": "9.x.x", - "@hapi/pez": "^5.1.0", - "@hapi/wreck": "17.x.x" + "@hapi/hoek": "^11.0.2" } }, - "node_modules/@hapi/teamwork": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@hapi/teamwork/-/teamwork-5.1.1.tgz", - "integrity": "sha512-1oPx9AE5TIv+V6Ih54RP9lTZBso3rP8j4Xhb6iSVwPXtAM+sDopl5TFMv5Paw73UnpZJ9gjcrTE1BXrWt9eQrg==", + "node_modules/@hapi/statehood/node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/statehood/node_modules/@hapi/bourne": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", + "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", + "dev": true + }, + "node_modules/@hapi/statehood/node_modules/@hapi/cryptiles": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/cryptiles/-/cryptiles-6.0.1.tgz", + "integrity": "sha512-9GM9ECEHfR8lk5ASOKG4+4ZsEzFqLfhiryIJ2ISePVB92OHLp/yne4m+zn7z9dgvM98TLpiFebjDFQ0UHcqxXQ==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1" + }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" } }, + "node_modules/@hapi/statehood/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "node_modules/@hapi/statehood/node_modules/@hapi/iron": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@hapi/iron/-/iron-7.0.1.tgz", + "integrity": "sha512-tEZnrOujKpS6jLKliyWBl3A9PaE+ppuL/+gkbyPPDb/l2KSKQyH4lhMkVb+sBhwN+qaxxlig01JRqB8dk/mPxQ==", + "dev": true, + "dependencies": { + "@hapi/b64": "^6.0.1", + "@hapi/boom": "^10.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/cryptiles": "^6.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/statehood/node_modules/@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/statehood/node_modules/@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" + } + }, + "node_modules/@hapi/subtext": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@hapi/subtext/-/subtext-8.1.0.tgz", + "integrity": "sha512-PyaN4oSMtqPjjVxLny1k0iYg4+fwGusIhaom9B2StinBclHs7v46mIW706Y+Wo21lcgulGyXbQrmT/w4dus6ww==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/content": "^6.0.0", + "@hapi/file": "^3.0.0", + "@hapi/hoek": "^11.0.2", + "@hapi/pez": "^6.1.0", + "@hapi/wreck": "^18.0.1" + } + }, + "node_modules/@hapi/subtext/node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/subtext/node_modules/@hapi/bourne": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", + "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", + "dev": true + }, + "node_modules/@hapi/subtext/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, "node_modules/@hapi/topo": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, "dependencies": { "@hapi/hoek": "^9.0.0" } }, - "node_modules/@hapi/validate": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-1.1.3.tgz", - "integrity": "sha512-/XMR0N0wjw0Twzq2pQOzPBZlDzkekGcoCtzO314BpIEsbXdYGthQUbxgkGDf4nhk1+IPDAsXqWjMohRQYO06UA==", + "node_modules/@hapi/vise": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@hapi/vise/-/vise-5.0.1.tgz", + "integrity": "sha512-XZYWzzRtINQLedPYlIkSkUr7m5Ddwlu99V9elh8CSygXstfv3UnWIXT0QD+wmR0VAG34d2Vx3olqcEhRRoTu9A==", + "dev": true, "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0" + "@hapi/hoek": "^11.0.2" } }, - "node_modules/@hapi/vise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@hapi/vise/-/vise-4.0.0.tgz", - "integrity": "sha512-eYyLkuUiFZTer59h+SGy7hUm+qE9p+UemePTHLlIWppEd+wExn3Df5jO04bFQTm7nleF5V8CtuYQYb+VFpZ6Sg==", + "node_modules/@hapi/vise/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "node_modules/@hapi/wreck": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-18.1.0.tgz", + "integrity": "sha512-0z6ZRCmFEfV/MQqkQomJ7sl/hyxvcZM7LtuVqN3vdAO4vM9eBbowl0kaqQj9EJJQab+3Uuh1GxbGIBFy4NfJ4w==", "dev": true, "dependencies": { - "@hapi/hoek": "9.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/hoek": "^11.0.2" } }, - "node_modules/@hapi/wreck": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-17.2.0.tgz", - "integrity": "sha512-pJ5kjYoRPYDv+eIuiLQqhGon341fr2bNIYZjuotuPJG/3Ilzr/XtI+JAp0A86E2bYfsS3zBPABuS2ICkaXFT8g==", + "node_modules/@hapi/wreck/node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", "dev": true, "dependencies": { - "@hapi/boom": "9.x.x", - "@hapi/bourne": "2.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/hoek": "^11.0.2" } }, + "node_modules/@hapi/wreck/node_modules/@hapi/bourne": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", + "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", + "dev": true + }, + "node_modules/@hapi/wreck/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, "node_modules/@humanwhocodes/config-array": { "version": "0.9.5", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", @@ -9375,6 +9718,7 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "dev": true, "dependencies": { "@hapi/hoek": "^9.0.0" } @@ -9382,12 +9726,14 @@ "node_modules/@sideway/formula": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "dev": true }, "node_modules/@sideway/pinpoint": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true }, "node_modules/@sigstore/bundle": { "version": "1.1.0", @@ -10534,42 +10880,6 @@ "generic-pool": "*" } }, - "node_modules/@types/hapi__catbox": { - "version": "10.2.6", - "resolved": "https://registry.npmjs.org/@types/hapi__catbox/-/hapi__catbox-10.2.6.tgz", - "integrity": "sha512-qdMHk4fBlwRfnBBDJaoaxb+fU9Ewi2xqkXD3mNjSPl2v/G/8IJbDpVRBuIcF7oXrcE8YebU5M8cCeKh1NXEn0w==" - }, - "node_modules/@types/hapi__hapi": { - "version": "20.0.13", - "resolved": "https://registry.npmjs.org/@types/hapi__hapi/-/hapi__hapi-20.0.13.tgz", - "integrity": "sha512-LP4IPfhIO5ZPVOrJo7H8c8Slc0WYTFAUNQX1U0LBPKyXioXhH5H2TawIgxKujIyOhbwoBbpvOsBf6o5+ToJIrQ==", - "dependencies": { - "@hapi/boom": "^9.0.0", - "@hapi/iron": "^6.0.0", - "@hapi/podium": "^4.1.3", - "@types/hapi__catbox": "*", - "@types/hapi__mimos": "*", - "@types/hapi__shot": "*", - "@types/node": "*", - "joi": "^17.3.0" - } - }, - "node_modules/@types/hapi__mimos": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@types/hapi__mimos/-/hapi__mimos-4.1.4.tgz", - "integrity": "sha512-i9hvJpFYTT/qzB5xKWvDYaSXrIiNqi4ephi+5Lo6+DoQdwqPXQgmVVOZR+s3MBiHoFqsCZCX9TmVWG3HczmTEQ==", - "dependencies": { - "@types/mime-db": "*" - } - }, - "node_modules/@types/hapi__shot": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/hapi__shot/-/hapi__shot-4.1.6.tgz", - "integrity": "sha512-h33NBjx2WyOs/9JgcFeFhkxnioYWQAZxOHdmqDuoJ1Qjxpcs+JGvSjEEoDeWfcrF+1n47kKgqph5IpfmPOnzbg==", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/http-assert": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.5.tgz", @@ -10705,11 +11015,6 @@ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" }, - "node_modules/@types/mime-db": { - "version": "1.43.5", - "resolved": "https://registry.npmjs.org/@types/mime-db/-/mime-db-1.43.5.tgz", - "integrity": "sha512-/bfTiIUTNPUBnwnYvUxXAre5MhD88jgagLEQiQtIASjU+bwxd8kS/ASDA4a8ufd8m0Lheu6eeMJHEUpLHoJ28A==" - }, "node_modules/@types/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", @@ -21330,6 +21635,7 @@ "version": "17.12.2", "resolved": "https://registry.npmjs.org/joi/-/joi-17.12.2.tgz", "integrity": "sha512-RonXAIzCiHLc8ss3Ibuz45u28GOsWE1UpfDXLbN/9NKbL4tCJf8TWYVKsoYuuh+sAUt7fsSNpA+r2+TBA6Wjmw==", + "dev": true, "dependencies": { "@hapi/hoek": "^9.3.0", "@hapi/topo": "^5.1.0", @@ -37837,17 +38143,17 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0", - "@types/hapi__hapi": "20.0.13" + "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { - "@hapi/hapi": "20.1.5", + "@hapi/hapi": "21.3.3", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", + "joi": "17.12.2", "mocha": "7.2.0", "nyc": "15.1.0", "rimraf": "5.0.5", @@ -43134,297 +43440,673 @@ } }, "@hapi/accept": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-5.0.2.tgz", - "integrity": "sha512-CmzBx/bXUR8451fnZRuZAJRlzgm0Jgu5dltTX/bszmR2lheb9BpyN47Q1RbaGTsvFzn0PXAEs+lXDKfshccYZw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-6.0.3.tgz", + "integrity": "sha512-p72f9k56EuF0n3MwlBNThyVE5PXX40g+aQh+C/xbKrfzahM2Oispv3AXmOIU51t3j77zay1qrX7IIziZXspMlw==", "dev": true, "requires": { - "@hapi/boom": "9.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + }, + "dependencies": { + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, "@hapi/ammo": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@hapi/ammo/-/ammo-5.0.1.tgz", - "integrity": "sha512-FbCNwcTbnQP4VYYhLNGZmA76xb2aHg9AMPiy18NZyWMG310P5KdFGyA9v2rm5ujrIny77dEEIkMOwl0Xv+fSSA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/ammo/-/ammo-6.0.1.tgz", + "integrity": "sha512-pmL+nPod4g58kXrMcsGLp05O2jF4P2Q3GiL8qYV7nKYEh3cGf+rV4P5Jyi2Uq0agGhVU63GtaSAfBEZOlrJn9w==", "dev": true, "requires": { - "@hapi/hoek": "9.x.x" - } - }, - "@hapi/b64": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@hapi/b64/-/b64-5.0.0.tgz", - "integrity": "sha512-ngu0tSEmrezoiIaNGG6rRvKOUkUuDdf4XTPnONHGYfSGRmDqPZX5oJL6HAdKTo1UQHECbdB4OzhWrfgVppjHUw==", - "requires": { - "@hapi/hoek": "9.x.x" - } - }, - "@hapi/boom": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.4.tgz", - "integrity": "sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==", - "requires": { - "@hapi/hoek": "9.x.x" + "@hapi/hoek": "^11.0.2" + }, + "dependencies": { + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, "@hapi/bounce": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@hapi/bounce/-/bounce-2.0.0.tgz", - "integrity": "sha512-JesW92uyzOOyuzJKjoLHM1ThiOvHPOLDHw01YV8yh5nCso7sDwJho1h0Ad2N+E62bZyz46TG3xhAi/78Gsct6A==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@hapi/bounce/-/bounce-3.0.1.tgz", + "integrity": "sha512-G+/Pp9c1Ha4FDP+3Sy/Xwg2O4Ahaw3lIZFSX+BL4uWi64CmiETuZPxhKDUD4xBMOUZbBlzvO8HjiK8ePnhBadA==", "dev": true, "requires": { - "@hapi/boom": "9.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + }, + "dependencies": { + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, - "@hapi/bourne": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.1.0.tgz", - "integrity": "sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q==" - }, "@hapi/call": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@hapi/call/-/call-8.0.1.tgz", - "integrity": "sha512-bOff6GTdOnoe5b8oXRV3lwkQSb/LAWylvDMae6RgEWWntd0SHtkYbQukDHKlfaYtVnSAgIavJ0kqszF/AIBb6g==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@hapi/call/-/call-9.0.1.tgz", + "integrity": "sha512-uPojQRqEL1GRZR4xXPqcLMujQGaEpyVPRyBlD8Pp5rqgIwLhtveF9PkixiKru2THXvuN8mUrLeet5fqxKAAMGg==", "dev": true, "requires": { - "@hapi/boom": "9.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + }, + "dependencies": { + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, "@hapi/catbox": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/@hapi/catbox/-/catbox-11.1.1.tgz", - "integrity": "sha512-u/8HvB7dD/6X8hsZIpskSDo4yMKpHxFd7NluoylhGrL6cUfYxdQPnvUp9YU2C6F9hsyBVLGulBd9vBN1ebfXOQ==", + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@hapi/catbox/-/catbox-12.1.1.tgz", + "integrity": "sha512-hDqYB1J+R0HtZg4iPH3LEnldoaBsar6bYp0EonBmNQ9t5CO+1CqgCul2ZtFveW1ReA5SQuze9GPSU7/aecERhw==", "dev": true, "requires": { - "@hapi/boom": "9.x.x", - "@hapi/hoek": "9.x.x", - "@hapi/podium": "4.x.x", - "@hapi/validate": "1.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/podium": "^5.0.0", + "@hapi/validate": "^2.0.1" + }, + "dependencies": { + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "@hapi/podium": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@hapi/podium/-/podium-5.0.1.tgz", + "integrity": "sha512-eznFTw6rdBhAijXFIlBOMJJd+lXTvqbrBIS4Iu80r2KTVIo4g+7fLy4NKp/8+UnSt5Ox6mJtAlKBU/Sf5080TQ==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2", + "@hapi/teamwork": "^6.0.0", + "@hapi/validate": "^2.0.1" + } + }, + "@hapi/teamwork": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@hapi/teamwork/-/teamwork-6.0.0.tgz", + "integrity": "sha512-05HumSy3LWfXpmJ9cr6HzwhAavrHkJ1ZRCmNE2qJMihdM5YcWreWPfyN0yKT2ZjCM92au3ZkuodjBxOibxM67A==", + "dev": true + }, + "@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" + } + } } }, "@hapi/catbox-memory": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@hapi/catbox-memory/-/catbox-memory-5.0.1.tgz", - "integrity": "sha512-QWw9nOYJq5PlvChLWV8i6hQHJYfvdqiXdvTupJFh0eqLZ64Xir7mKNi96d5/ZMUAqXPursfNDIDxjFgoEDUqeQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/catbox-memory/-/catbox-memory-6.0.1.tgz", + "integrity": "sha512-sVb+/ZxbZIvaMtJfAbdyY+QJUQg9oKTwamXpEg/5xnfG5WbJLTjvEn4kIGKz9pN3ENNbIL/bIdctmHmqi/AdGA==", "dev": true, "requires": { - "@hapi/boom": "9.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + }, + "dependencies": { + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, "@hapi/content": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@hapi/content/-/content-5.0.2.tgz", - "integrity": "sha512-mre4dl1ygd4ZyOH3tiYBrOUBzV7Pu/EOs8VLGf58vtOEECWed8Uuw6B4iR9AN/8uQt42tB04qpVaMyoMQh0oMw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@hapi/content/-/content-6.0.0.tgz", + "integrity": "sha512-CEhs7j+H0iQffKfe5Htdak5LBOz/Qc8TRh51cF+BFv0qnuph3Em4pjGVzJMkI2gfTDdlJKWJISGWS1rK34POGA==", "dev": true, "requires": { - "@hapi/boom": "9.x.x" - } - }, - "@hapi/cryptiles": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/cryptiles/-/cryptiles-5.1.0.tgz", - "integrity": "sha512-fo9+d1Ba5/FIoMySfMqPBR/7Pa29J2RsiPrl7bkwo5W5o+AN1dAYQRi4SPrPwwVxVGKjgLOEWrsvt1BonJSfLA==", - "requires": { - "@hapi/boom": "9.x.x" + "@hapi/boom": "^10.0.0" + }, + "dependencies": { + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, "@hapi/file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@hapi/file/-/file-2.0.0.tgz", - "integrity": "sha512-WSrlgpvEqgPWkI18kkGELEZfXr0bYLtr16iIN4Krh9sRnzBZN6nnWxHFxtsnP684wueEySBbXPDg/WfA9xJdBQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/file/-/file-3.0.0.tgz", + "integrity": "sha512-w+lKW+yRrLhJu620jT3y+5g2mHqnKfepreykvdOcl9/6up8GrQQn+l3FRTsjHTKbkbfQFkuksHpdv2EcpKcJ4Q==", "dev": true }, "@hapi/hapi": { - "version": "20.1.5", - "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-20.1.5.tgz", - "integrity": "sha512-BhJ5XFR9uWPUBj/z5pPqXSk8OnvQQU/EbQjwpmjZy0ymNEiq7kIhXkAmzXcntbBHta9o7zpW8XMeXnfV4wudXw==", - "dev": true, - "requires": { - "@hapi/accept": "^5.0.1", - "@hapi/ammo": "^5.0.1", - "@hapi/boom": "^9.1.0", - "@hapi/bounce": "^2.0.0", - "@hapi/call": "^8.0.0", - "@hapi/catbox": "^11.1.1", - "@hapi/catbox-memory": "^5.0.0", - "@hapi/heavy": "^7.0.1", - "@hapi/hoek": "^9.0.4", - "@hapi/mimos": "^6.0.0", - "@hapi/podium": "^4.1.1", - "@hapi/shot": "^5.0.5", - "@hapi/somever": "^3.0.0", - "@hapi/statehood": "^7.0.3", - "@hapi/subtext": "^7.0.3", - "@hapi/teamwork": "^5.1.0", - "@hapi/topo": "^5.0.0", - "@hapi/validate": "^1.1.1" + "version": "21.3.3", + "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-21.3.3.tgz", + "integrity": "sha512-6pgwWVl/aSKSNVn86n+mWa06jRqCAKi2adZp/Hti19A0u5x3/6eiKz8UTBPMzfrdGf9WcrYbFBYzWr/qd2s28g==", + "dev": true, + "requires": { + "@hapi/accept": "^6.0.1", + "@hapi/ammo": "^6.0.1", + "@hapi/boom": "^10.0.1", + "@hapi/bounce": "^3.0.1", + "@hapi/call": "^9.0.1", + "@hapi/catbox": "^12.1.1", + "@hapi/catbox-memory": "^6.0.1", + "@hapi/heavy": "^8.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/mimos": "^7.0.1", + "@hapi/podium": "^5.0.1", + "@hapi/shot": "^6.0.1", + "@hapi/somever": "^4.1.1", + "@hapi/statehood": "^8.1.1", + "@hapi/subtext": "^8.1.0", + "@hapi/teamwork": "^6.0.0", + "@hapi/topo": "^6.0.1", + "@hapi/validate": "^2.0.1" + }, + "dependencies": { + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "@hapi/podium": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@hapi/podium/-/podium-5.0.1.tgz", + "integrity": "sha512-eznFTw6rdBhAijXFIlBOMJJd+lXTvqbrBIS4Iu80r2KTVIo4g+7fLy4NKp/8+UnSt5Ox6mJtAlKBU/Sf5080TQ==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2", + "@hapi/teamwork": "^6.0.0", + "@hapi/validate": "^2.0.1" + } + }, + "@hapi/teamwork": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@hapi/teamwork/-/teamwork-6.0.0.tgz", + "integrity": "sha512-05HumSy3LWfXpmJ9cr6HzwhAavrHkJ1ZRCmNE2qJMihdM5YcWreWPfyN0yKT2ZjCM92au3ZkuodjBxOibxM67A==", + "dev": true + }, + "@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" + } + } } }, "@hapi/heavy": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@hapi/heavy/-/heavy-7.0.1.tgz", - "integrity": "sha512-vJ/vzRQ13MtRzz6Qd4zRHWS3FaUc/5uivV2TIuExGTM9Qk+7Zzqj0e2G7EpE6KztO9SalTbiIkTh7qFKj/33cA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@hapi/heavy/-/heavy-8.0.1.tgz", + "integrity": "sha512-gBD/NANosNCOp6RsYTsjo2vhr5eYA3BEuogk6cxY0QdhllkkTaJFYtTXv46xd6qhBVMbMMqcSdtqey+UQU3//w==", "dev": true, "requires": { - "@hapi/boom": "9.x.x", - "@hapi/hoek": "9.x.x", - "@hapi/validate": "1.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/validate": "^2.0.1" + }, + "dependencies": { + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" + } + } } }, "@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - }, - "@hapi/iron": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@hapi/iron/-/iron-6.0.0.tgz", - "integrity": "sha512-zvGvWDufiTGpTJPG1Y/McN8UqWBu0k/xs/7l++HVU535NLHXsHhy54cfEMdW7EjwKfbBfM9Xy25FmTiobb7Hvw==", - "requires": { - "@hapi/b64": "5.x.x", - "@hapi/boom": "9.x.x", - "@hapi/bourne": "2.x.x", - "@hapi/cryptiles": "5.x.x", - "@hapi/hoek": "9.x.x" - } + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true }, "@hapi/mimos": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@hapi/mimos/-/mimos-6.0.0.tgz", - "integrity": "sha512-Op/67tr1I+JafN3R3XN5DucVSxKRT/Tc+tUszDwENoNpolxeXkhrJ2Czt6B6AAqrespHoivhgZBWYSuANN9QXg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@hapi/mimos/-/mimos-7.0.1.tgz", + "integrity": "sha512-b79V+BrG0gJ9zcRx1VGcCI6r6GEzzZUgiGEJVoq5gwzuB2Ig9Cax8dUuBauQCFKvl2YWSWyOc8mZ8HDaJOtkew==", "dev": true, "requires": { - "@hapi/hoek": "9.x.x", - "mime-db": "1.x.x" + "@hapi/hoek": "^11.0.2", + "mime-db": "^1.52.0" + }, + "dependencies": { + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, "@hapi/nigel": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@hapi/nigel/-/nigel-4.0.2.tgz", - "integrity": "sha512-ht2KoEsDW22BxQOEkLEJaqfpoKPXxi7tvabXy7B/77eFtOyG5ZEstfZwxHQcqAiZhp58Ae5vkhEqI03kawkYNw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@hapi/nigel/-/nigel-5.0.1.tgz", + "integrity": "sha512-uv3dtYuB4IsNaha+tigWmN8mQw/O9Qzl5U26Gm4ZcJVtDdB1AVJOwX3X5wOX+A07qzpEZnOMBAm8jjSqGsU6Nw==", "dev": true, "requires": { - "@hapi/hoek": "^9.0.4", - "@hapi/vise": "^4.0.0" + "@hapi/hoek": "^11.0.2", + "@hapi/vise": "^5.0.1" + }, + "dependencies": { + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, "@hapi/pez": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/pez/-/pez-5.1.0.tgz", - "integrity": "sha512-YfB0btnkLB3lb6Ry/1KifnMPBm5ZPfaAHWFskzOMAgDgXgcBgA+zjpIynyEiBfWEz22DBT8o1e2tAaBdlt8zbw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@hapi/pez/-/pez-6.1.0.tgz", + "integrity": "sha512-+FE3sFPYuXCpuVeHQ/Qag1b45clR2o54QoonE/gKHv9gukxQ8oJJZPR7o3/ydDTK6racnCJXxOyT1T93FCJMIg==", "dev": true, "requires": { - "@hapi/b64": "5.x.x", - "@hapi/boom": "9.x.x", - "@hapi/content": "^5.0.2", - "@hapi/hoek": "9.x.x", - "@hapi/nigel": "4.x.x" - } - }, - "@hapi/podium": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@hapi/podium/-/podium-4.1.3.tgz", - "integrity": "sha512-ljsKGQzLkFqnQxE7qeanvgGj4dejnciErYd30dbrYzUOF/FyS/DOF97qcrT3bhoVwCYmxa6PEMhxfCPlnUcD2g==", - "requires": { - "@hapi/hoek": "9.x.x", - "@hapi/teamwork": "5.x.x", - "@hapi/validate": "1.x.x" + "@hapi/b64": "^6.0.1", + "@hapi/boom": "^10.0.1", + "@hapi/content": "^6.0.0", + "@hapi/hoek": "^11.0.2", + "@hapi/nigel": "^5.0.1" + }, + "dependencies": { + "@hapi/b64": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/b64/-/b64-6.0.1.tgz", + "integrity": "sha512-ZvjX4JQReUmBheeCq+S9YavcnMMHWqx3S0jHNXWIM1kQDxB9cyfSycpVvjfrKcIS8Mh5N3hmu/YKo4Iag9g2Kw==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, "@hapi/shot": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@hapi/shot/-/shot-5.0.5.tgz", - "integrity": "sha512-x5AMSZ5+j+Paa8KdfCoKh+klB78otxF+vcJR/IoN91Vo2e5ulXIW6HUsFTCU+4W6P/Etaip9nmdAx2zWDimB2A==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/shot/-/shot-6.0.1.tgz", + "integrity": "sha512-s5ynMKZXYoDd3dqPw5YTvOR/vjHvMTxc388+0qL0jZZP1+uwXuUD32o9DuuuLsmTlyXCWi02BJl1pBpwRuUrNA==", "dev": true, "requires": { - "@hapi/hoek": "9.x.x", - "@hapi/validate": "1.x.x" + "@hapi/hoek": "^11.0.2", + "@hapi/validate": "^2.0.1" + }, + "dependencies": { + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" + } + } } }, "@hapi/somever": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@hapi/somever/-/somever-3.0.1.tgz", - "integrity": "sha512-4ZTSN3YAHtgpY/M4GOtHUXgi6uZtG9nEZfNI6QrArhK0XN/RDVgijlb9kOmXwCR5VclDSkBul9FBvhSuKXx9+w==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@hapi/somever/-/somever-4.1.1.tgz", + "integrity": "sha512-lt3QQiDDOVRatS0ionFDNrDIv4eXz58IibQaZQDOg4DqqdNme8oa0iPWcE0+hkq/KTeBCPtEOjDOBKBKwDumVg==", "dev": true, "requires": { - "@hapi/bounce": "2.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/bounce": "^3.0.1", + "@hapi/hoek": "^11.0.2" + }, + "dependencies": { + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, "@hapi/statehood": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@hapi/statehood/-/statehood-7.0.4.tgz", - "integrity": "sha512-Fia6atroOVmc5+2bNOxF6Zv9vpbNAjEXNcUbWXavDqhnJDlchwUUwKS5LCi5mGtCTxRhUKKHwuxuBZJkmLZ7fw==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@hapi/statehood/-/statehood-8.1.1.tgz", + "integrity": "sha512-YbK7PSVUA59NArAW5Np0tKRoIZ5VNYUicOk7uJmWZF6XyH5gGL+k62w77SIJb0AoAJ0QdGQMCQ/WOGL1S3Ydow==", "dev": true, "requires": { - "@hapi/boom": "9.x.x", - "@hapi/bounce": "2.x.x", - "@hapi/bourne": "2.x.x", - "@hapi/cryptiles": "5.x.x", - "@hapi/hoek": "9.x.x", - "@hapi/iron": "6.x.x", - "@hapi/validate": "1.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/bounce": "^3.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/cryptiles": "^6.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/iron": "^7.0.1", + "@hapi/validate": "^2.0.1" + }, + "dependencies": { + "@hapi/b64": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/b64/-/b64-6.0.1.tgz", + "integrity": "sha512-ZvjX4JQReUmBheeCq+S9YavcnMMHWqx3S0jHNXWIM1kQDxB9cyfSycpVvjfrKcIS8Mh5N3hmu/YKo4Iag9g2Kw==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/bourne": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", + "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", + "dev": true + }, + "@hapi/cryptiles": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/cryptiles/-/cryptiles-6.0.1.tgz", + "integrity": "sha512-9GM9ECEHfR8lk5ASOKG4+4ZsEzFqLfhiryIJ2ISePVB92OHLp/yne4m+zn7z9dgvM98TLpiFebjDFQ0UHcqxXQ==", + "dev": true, + "requires": { + "@hapi/boom": "^10.0.1" + } + }, + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "@hapi/iron": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@hapi/iron/-/iron-7.0.1.tgz", + "integrity": "sha512-tEZnrOujKpS6jLKliyWBl3A9PaE+ppuL/+gkbyPPDb/l2KSKQyH4lhMkVb+sBhwN+qaxxlig01JRqB8dk/mPxQ==", + "dev": true, + "requires": { + "@hapi/b64": "^6.0.1", + "@hapi/boom": "^10.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/cryptiles": "^6.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" + } + } } }, "@hapi/subtext": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@hapi/subtext/-/subtext-7.1.0.tgz", - "integrity": "sha512-n94cU6hlvsNRIpXaROzBNEJGwxC+HA69q769pChzej84On8vsU14guHDub7Pphr/pqn5b93zV3IkMPDU5AUiXA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@hapi/subtext/-/subtext-8.1.0.tgz", + "integrity": "sha512-PyaN4oSMtqPjjVxLny1k0iYg4+fwGusIhaom9B2StinBclHs7v46mIW706Y+Wo21lcgulGyXbQrmT/w4dus6ww==", "dev": true, "requires": { - "@hapi/boom": "9.x.x", - "@hapi/bourne": "2.x.x", - "@hapi/content": "^5.0.2", - "@hapi/file": "2.x.x", - "@hapi/hoek": "9.x.x", - "@hapi/pez": "^5.1.0", - "@hapi/wreck": "17.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/content": "^6.0.0", + "@hapi/file": "^3.0.0", + "@hapi/hoek": "^11.0.2", + "@hapi/pez": "^6.1.0", + "@hapi/wreck": "^18.0.1" + }, + "dependencies": { + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/bourne": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", + "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", + "dev": true + }, + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, - "@hapi/teamwork": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@hapi/teamwork/-/teamwork-5.1.1.tgz", - "integrity": "sha512-1oPx9AE5TIv+V6Ih54RP9lTZBso3rP8j4Xhb6iSVwPXtAM+sDopl5TFMv5Paw73UnpZJ9gjcrTE1BXrWt9eQrg==" - }, "@hapi/topo": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, "requires": { "@hapi/hoek": "^9.0.0" } }, - "@hapi/validate": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-1.1.3.tgz", - "integrity": "sha512-/XMR0N0wjw0Twzq2pQOzPBZlDzkekGcoCtzO314BpIEsbXdYGthQUbxgkGDf4nhk1+IPDAsXqWjMohRQYO06UA==", - "requires": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0" - } - }, "@hapi/vise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@hapi/vise/-/vise-4.0.0.tgz", - "integrity": "sha512-eYyLkuUiFZTer59h+SGy7hUm+qE9p+UemePTHLlIWppEd+wExn3Df5jO04bFQTm7nleF5V8CtuYQYb+VFpZ6Sg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@hapi/vise/-/vise-5.0.1.tgz", + "integrity": "sha512-XZYWzzRtINQLedPYlIkSkUr7m5Ddwlu99V9elh8CSygXstfv3UnWIXT0QD+wmR0VAG34d2Vx3olqcEhRRoTu9A==", "dev": true, "requires": { - "@hapi/hoek": "9.x.x" + "@hapi/hoek": "^11.0.2" + }, + "dependencies": { + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, "@hapi/wreck": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-17.2.0.tgz", - "integrity": "sha512-pJ5kjYoRPYDv+eIuiLQqhGon341fr2bNIYZjuotuPJG/3Ilzr/XtI+JAp0A86E2bYfsS3zBPABuS2ICkaXFT8g==", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-18.1.0.tgz", + "integrity": "sha512-0z6ZRCmFEfV/MQqkQomJ7sl/hyxvcZM7LtuVqN3vdAO4vM9eBbowl0kaqQj9EJJQab+3Uuh1GxbGIBFy4NfJ4w==", "dev": true, "requires": { - "@hapi/boom": "9.x.x", - "@hapi/bourne": "2.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/hoek": "^11.0.2" + }, + "dependencies": { + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/bourne": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", + "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", + "dev": true + }, + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, "@humanwhocodes/config-array": { @@ -46242,7 +46924,7 @@ "@opentelemetry/instrumentation-hapi": { "version": "file:plugins/node/opentelemetry-instrumentation-hapi", "requires": { - "@hapi/hapi": "20.1.5", + "@hapi/hapi": "21.3.3", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/core": "^1.8.0", @@ -46250,9 +46932,9 @@ "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", - "@types/hapi__hapi": "20.0.13", "@types/mocha": "7.0.2", "@types/node": "18.6.5", + "joi": "17.12.2", "mocha": "7.2.0", "nyc": "15.1.0", "rimraf": "5.0.5", @@ -48284,6 +48966,7 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "dev": true, "requires": { "@hapi/hoek": "^9.0.0" } @@ -48291,12 +48974,14 @@ "@sideway/formula": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "dev": true }, "@sideway/pinpoint": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true }, "@sigstore/bundle": { "version": "1.1.0", @@ -49288,42 +49973,6 @@ "generic-pool": "*" } }, - "@types/hapi__catbox": { - "version": "10.2.6", - "resolved": "https://registry.npmjs.org/@types/hapi__catbox/-/hapi__catbox-10.2.6.tgz", - "integrity": "sha512-qdMHk4fBlwRfnBBDJaoaxb+fU9Ewi2xqkXD3mNjSPl2v/G/8IJbDpVRBuIcF7oXrcE8YebU5M8cCeKh1NXEn0w==" - }, - "@types/hapi__hapi": { - "version": "20.0.13", - "resolved": "https://registry.npmjs.org/@types/hapi__hapi/-/hapi__hapi-20.0.13.tgz", - "integrity": "sha512-LP4IPfhIO5ZPVOrJo7H8c8Slc0WYTFAUNQX1U0LBPKyXioXhH5H2TawIgxKujIyOhbwoBbpvOsBf6o5+ToJIrQ==", - "requires": { - "@hapi/boom": "^9.0.0", - "@hapi/iron": "^6.0.0", - "@hapi/podium": "^4.1.3", - "@types/hapi__catbox": "*", - "@types/hapi__mimos": "*", - "@types/hapi__shot": "*", - "@types/node": "*", - "joi": "^17.3.0" - } - }, - "@types/hapi__mimos": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@types/hapi__mimos/-/hapi__mimos-4.1.4.tgz", - "integrity": "sha512-i9hvJpFYTT/qzB5xKWvDYaSXrIiNqi4ephi+5Lo6+DoQdwqPXQgmVVOZR+s3MBiHoFqsCZCX9TmVWG3HczmTEQ==", - "requires": { - "@types/mime-db": "*" - } - }, - "@types/hapi__shot": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/hapi__shot/-/hapi__shot-4.1.6.tgz", - "integrity": "sha512-h33NBjx2WyOs/9JgcFeFhkxnioYWQAZxOHdmqDuoJ1Qjxpcs+JGvSjEEoDeWfcrF+1n47kKgqph5IpfmPOnzbg==", - "requires": { - "@types/node": "*" - } - }, "@types/http-assert": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.5.tgz", @@ -49458,11 +50107,6 @@ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" }, - "@types/mime-db": { - "version": "1.43.5", - "resolved": "https://registry.npmjs.org/@types/mime-db/-/mime-db-1.43.5.tgz", - "integrity": "sha512-/bfTiIUTNPUBnwnYvUxXAre5MhD88jgagLEQiQtIASjU+bwxd8kS/ASDA4a8ufd8m0Lheu6eeMJHEUpLHoJ28A==" - }, "@types/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", @@ -57793,6 +58437,7 @@ "version": "17.12.2", "resolved": "https://registry.npmjs.org/joi/-/joi-17.12.2.tgz", "integrity": "sha512-RonXAIzCiHLc8ss3Ibuz45u28GOsWE1UpfDXLbN/9NKbL4tCJf8TWYVKsoYuuh+sAUt7fsSNpA+r2+TBA6Wjmw==", + "dev": true, "requires": { "@hapi/hoek": "^9.3.0", "@hapi/topo": "^5.1.0", diff --git a/plugins/node/opentelemetry-instrumentation-hapi/.tav.yml b/plugins/node/opentelemetry-instrumentation-hapi/.tav.yml index 995b6c88d1..c1d07484cb 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/.tav.yml +++ b/plugins/node/opentelemetry-instrumentation-hapi/.tav.yml @@ -5,3 +5,7 @@ - versions: "^20.3.0" node: ">=14" commands: npm test + - versions: "^21.3.3" + node: ">=14.15.0" + commands: npm test + diff --git a/plugins/node/opentelemetry-instrumentation-hapi/README.md b/plugins/node/opentelemetry-instrumentation-hapi/README.md index 5868e6a53c..d3cb9ec9ad 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/README.md +++ b/plugins/node/opentelemetry-instrumentation-hapi/README.md @@ -21,7 +21,7 @@ npm install --save @opentelemetry/instrumentation-hapi ### Supported Versions -- `>=17.0.0 <21` +- `>=17.0.0 <22` ## Usage diff --git a/plugins/node/opentelemetry-instrumentation-hapi/package.json b/plugins/node/opentelemetry-instrumentation-hapi/package.json index a39a7e5b9a..9308e2555a 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/package.json +++ b/plugins/node/opentelemetry-instrumentation-hapi/package.json @@ -43,13 +43,14 @@ "@opentelemetry/api": "^1.3.0" }, "devDependencies": { - "@hapi/hapi": "20.1.5", + "@hapi/hapi": "21.3.3", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", + "joi": "17.12.2", "mocha": "7.2.0", "nyc": "15.1.0", "rimraf": "5.0.5", @@ -60,8 +61,7 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0", - "@types/hapi__hapi": "20.0.13" + "@opentelemetry/semantic-conventions": "^1.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-hapi#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts index 4e3d1d4ce9..2b1988aa69 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts @@ -23,8 +23,7 @@ import { isWrapped, } from '@opentelemetry/instrumentation'; -// types for @hapi/hapi are published under @types/hapi__hapi -import type * as Hapi from 'hapi__hapi'; +import type * as Hapi from '@hapi/hapi'; import { VERSION } from './version'; import { HapiComponentName, @@ -45,6 +44,7 @@ import { getExtMetadata, isDirectExtInput, isPatchableExtMethod, + getPluginFromInput, } from './utils'; /** Hapi instrumentation for OpenTelemetry */ @@ -56,23 +56,21 @@ export class HapiInstrumentation extends InstrumentationBase { protected init() { return new InstrumentationNodeModuleDefinition( HapiComponentName, - ['>=17 <21'], + ['>=17 <22'], (moduleExports: typeof Hapi) => { if (!isWrapped(moduleExports.server)) { - this._wrap(moduleExports, 'server', this._getServerPatch.bind(this)); + this._wrap( + moduleExports, + 'server', + this._getServerPatch.bind(this) as any + ); } - // Casting as any is necessary here due to an issue with the @types/hapi__hapi - // type definition for Hapi.Server. Hapi.Server (note the uppercase) can also function - // as a factory function, similarly to Hapi.server (lowercase), and so should - // also be supported and instrumented. This is an issue with the DefinitelyTyped repo. - // Function is defined at: https://github.com/hapijs/hapi/blob/main/lib/index.js#L9 if (!isWrapped(moduleExports.Server)) { this._wrap( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - moduleExports as any, + moduleExports, 'Server', - this._getServerPatch.bind(this) + this._getServerPatch.bind(this) as any ); } return moduleExports; @@ -145,14 +143,12 @@ export class HapiInstrumentation extends InstrumentationBase { ) { if (Array.isArray(pluginInput)) { for (const pluginObj of pluginInput) { - instrumentation._wrapRegisterHandler( - pluginObj.plugin?.plugin ?? pluginObj.plugin ?? pluginObj - ); + const plugin = getPluginFromInput(pluginObj); + instrumentation._wrapRegisterHandler(plugin); } } else { - instrumentation._wrapRegisterHandler( - pluginInput.plugin?.plugin ?? pluginInput.plugin ?? pluginInput - ); + const plugin = getPluginFromInput(pluginInput); + instrumentation._wrapRegisterHandler(plugin); } return original.apply(this, [pluginInput, options]); }; @@ -272,7 +268,6 @@ export class HapiInstrumentation extends InstrumentationBase { const oldHandler = plugin.register; const self = this; const newRegisterHandler = function (server: Hapi.Server, options: T) { - server.route; self._wrap(server, 'route', original => { return instrumentation._getServerRoutePatch.bind(instrumentation)( original, @@ -312,7 +307,6 @@ export class HapiInstrumentation extends InstrumentationBase { pluginName?: string ): T { const instrumentation: HapiInstrumentation = this; - if (method instanceof Array) { for (let i = 0; i < method.length; i++) { method[i] = instrumentation._wrapExtMethods( @@ -375,13 +369,13 @@ export class HapiInstrumentation extends InstrumentationBase { const instrumentation: HapiInstrumentation = this; if (route[handlerPatched] === true) return route; route[handlerPatched] = true; - const oldHandler = route.options?.handler ?? route.handler; - if (typeof oldHandler === 'function') { - const newHandler: Hapi.Lifecycle.Method = async function ( - ...params: Parameters - ) { + + const wrapHandler: ( + oldHandler: Hapi.Lifecycle.Method + ) => Hapi.Lifecycle.Method = oldHandler => { + return async function (...params: Parameters) { if (api.trace.getSpan(api.context.active()) === undefined) { - return await oldHandler(...params); + return await oldHandler.call(this, ...params); } const rpcMetadata = getRPCMetadata(api.context.active()); if (rpcMetadata?.type === RPCType.HTTP) { @@ -394,7 +388,7 @@ export class HapiInstrumentation extends InstrumentationBase { try { return await api.context.with( api.trace.setSpan(api.context.active(), span), - () => oldHandler(...params) + () => oldHandler.call(this, ...params) ); } catch (err: any) { span.recordException(err); @@ -407,11 +401,25 @@ export class HapiInstrumentation extends InstrumentationBase { span.end(); } }; - if (route.options?.handler) { - route.options.handler = newHandler; - } else { - route.handler = newHandler; - } + }; + + if (typeof route.handler === 'function') { + route.handler = wrapHandler(route.handler as Hapi.Lifecycle.Method); + } else if (typeof route.options === 'function') { + const oldOptions = route.options; + route.options = function (server) { + const options = oldOptions(server); + if (typeof options.handler === 'function') { + options.handler = wrapHandler( + options.handler as Hapi.Lifecycle.Method + ); + } + return options; + }; + } else if (typeof route.options?.handler === 'function') { + route.options.handler = wrapHandler( + route.options.handler as Hapi.Lifecycle.Method + ); } return route; } diff --git a/plugins/node/opentelemetry-instrumentation-hapi/src/internal-types.ts b/plugins/node/opentelemetry-instrumentation-hapi/src/internal-types.ts index 8586d272d9..2c133199cb 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/src/internal-types.ts +++ b/plugins/node/opentelemetry-instrumentation-hapi/src/internal-types.ts @@ -14,8 +14,7 @@ * limitations under the License. */ -// types for @hapi/hapi are published under @types/hapi__hapi -import type * as Hapi from 'hapi__hapi'; +import type * as Hapi from '@hapi/hapi'; export const HapiComponentName = '@hapi/hapi'; @@ -35,14 +34,9 @@ export type HapiServerRouteInput = export type PatchableServerRoute = Hapi.ServerRoute & { [handlerPatched]?: boolean; - options?: { - handler?: Hapi.Lifecycle.Method; - }; }; -export type HapiPluginObject = Hapi.ServerRegisterPluginObject & { - plugin: Hapi.ServerRegisterPluginObject; -}; +export type HapiPluginObject = Hapi.ServerRegisterPluginObject; export type HapiPluginInput = | HapiPluginObject diff --git a/plugins/node/opentelemetry-instrumentation-hapi/src/utils.ts b/plugins/node/opentelemetry-instrumentation-hapi/src/utils.ts index 14de861366..41b794c59e 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/src/utils.ts +++ b/plugins/node/opentelemetry-instrumentation-hapi/src/utils.ts @@ -20,6 +20,7 @@ import type * as Hapi from '@hapi/hapi'; import { HapiLayerType, HapiLifecycleMethodNames, + HapiPluginObject, PatchableExtMethod, ServerExtDirectInput, } from './internal-types'; @@ -119,3 +120,15 @@ export const getExtMetadata = ( name: `ext - ${extPoint}`, }; }; + +export const getPluginFromInput = ( + pluginObj: HapiPluginObject +): Hapi.Plugin => { + if ('plugin' in pluginObj) { + if ('plugin' in pluginObj.plugin) { + return pluginObj.plugin.plugin; + } + return pluginObj.plugin; + } + return pluginObj; +}; diff --git a/plugins/node/opentelemetry-instrumentation-hapi/test/hapi.test.ts b/plugins/node/opentelemetry-instrumentation-hapi/test/hapi.test.ts index 86eb626c76..7ecd84384f 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/test/hapi.test.ts +++ b/plugins/node/opentelemetry-instrumentation-hapi/test/hapi.test.ts @@ -153,6 +153,52 @@ describe('Hapi Instrumentation - Core Tests', () => { }); }); + describe('when handler is returned by route.options function', () => { + it('should create a child span for single routes', async () => { + const rootSpan = tracer.startSpan('rootSpan'); + server.route({ + method: 'GET', + path: '/', + options: () => ({ + handler: (request, h) => { + return 'Hello World!'; + }, + }), + }); + + await server.start(); + assert.strictEqual(memoryExporter.getFinishedSpans().length, 0); + + await context.with( + trace.setSpan(context.active(), rootSpan), + async () => { + const res = await server.inject({ + method: 'GET', + url: '/', + }); + assert.strictEqual(res.statusCode, 200); + + rootSpan.end(); + assert.deepStrictEqual(memoryExporter.getFinishedSpans().length, 2); + + const requestHandlerSpan = memoryExporter + .getFinishedSpans() + .find(span => span.name === 'route - /'); + assert.notStrictEqual(requestHandlerSpan, undefined); + assert.strictEqual( + requestHandlerSpan?.attributes[AttributeNames.HAPI_TYPE], + HapiLayerType.ROUTER + ); + + const exportedRootSpan = memoryExporter + .getFinishedSpans() + .find(span => span.name === 'rootSpan'); + assert.notStrictEqual(exportedRootSpan, undefined); + } + ); + }); + }); + it('should instrument the Hapi.Server (note: uppercase) method', async () => { const rootSpan = tracer.startSpan('rootSpan'); server = new hapi.Server({ From 394bb93ce9badc787ac42f4145c1853254bce40a Mon Sep 17 00:00:00 2001 From: Jamie Danielson Date: Mon, 29 Apr 2024 08:19:41 -0400 Subject: [PATCH 29/39] ci: only publish after releases are created (#2160) * ci: only publish after releases are created * clarify terms, checkout if any release is created * Update .github/workflows/release-please.yml * Update .github/workflows/release-please.yml --------- Co-authored-by: Marc Pichler --- .github/workflows/release-please.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 1c58cefc06..18a14e5130 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -54,11 +54,15 @@ jobs: # get main again - name: Checkout Repository + # only checkout if a release has been created + if: ${{ steps.release.outputs.releases_created }} uses: actions/checkout@v4 with: fetch-depth: 0 - name: Rebuild Packages + # only rebuild if a release has been created + if: ${{ steps.release.outputs.releases_created }} run: | npm ci npm run compile @@ -67,6 +71,8 @@ jobs: # need to publish all unpublished versions to npm here # See: https://github.com/lerna/lerna/tree/main/commands/publish#bump-from-package - name: Publish to npm + # only publish if a release has been created + if: ${{ steps.release.outputs.releases_created }} env: NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} run: npx lerna publish from-package --no-push --no-private --no-git-tag-version --no-verify-access --yes From 379b7571fe3fead239285b503581094f42a79d66 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Mon, 29 Apr 2024 09:07:50 -0400 Subject: [PATCH 30/39] feat(auto-instrumentation-node): add options for `serviceinstance` (#2158) Signed-off-by: maryliag --- .../auto-instrumentations-node/README.md | 3 +- .../auto-instrumentations-node/package.json | 2 +- .../auto-instrumentations-node/src/utils.ts | 3 + .../test/utils.test.ts | 13 +- package-lock.json | 564 +++++++++++++++++- 5 files changed, 576 insertions(+), 9 deletions(-) diff --git a/metapackages/auto-instrumentations-node/README.md b/metapackages/auto-instrumentations-node/README.md index ba31c44d9a..3f79b645d2 100644 --- a/metapackages/auto-instrumentations-node/README.md +++ b/metapackages/auto-instrumentations-node/README.md @@ -50,7 +50,7 @@ export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="https://your-endpoint" export OTEL_EXPORTER_OTLP_HEADERS="x-api-key=your-api-key" export OTEL_EXPORTER_OTLP_TRACES_HEADERS="x-api-key=your-api-key" export OTEL_RESOURCE_ATTRIBUTES="service.namespace=my-namespace" -export OTEL_NODE_RESOURCE_DETECTORS="env,host,os" +export OTEL_NODE_RESOURCE_DETECTORS="env,host,os,serviceinstace" export OTEL_SERVICE_NAME="client" export NODE_OPTIONS="--require @opentelemetry/auto-instrumentations-node/register" node app.js @@ -62,6 +62,7 @@ By default, all SDK resource detectors are used, but you can use the environment - `host` - `os` - `process` +- `serviceinstance` - `container` - `alibaba` - `aws` diff --git a/metapackages/auto-instrumentations-node/package.json b/metapackages/auto-instrumentations-node/package.json index 7704e11d66..a94d199602 100644 --- a/metapackages/auto-instrumentations-node/package.json +++ b/metapackages/auto-instrumentations-node/package.json @@ -92,7 +92,7 @@ "@opentelemetry/resource-detector-azure": "^0.2.6", "@opentelemetry/resource-detector-container": "^0.3.9", "@opentelemetry/resource-detector-gcp": "^0.29.9", - "@opentelemetry/resources": "^1.12.0", + "@opentelemetry/resources": "^1.24.0", "@opentelemetry/sdk-node": "^0.51.0" }, "files": [ diff --git a/metapackages/auto-instrumentations-node/src/utils.ts b/metapackages/auto-instrumentations-node/src/utils.ts index de7d0c7026..faeec6990a 100644 --- a/metapackages/auto-instrumentations-node/src/utils.ts +++ b/metapackages/auto-instrumentations-node/src/utils.ts @@ -72,6 +72,7 @@ import { hostDetectorSync, osDetectorSync, processDetectorSync, + serviceInstanceIdDetectorSync, } from '@opentelemetry/resources'; import { azureAppServiceDetector, @@ -83,6 +84,7 @@ const RESOURCE_DETECTOR_CONTAINER = 'container'; const RESOURCE_DETECTOR_ENVIRONMENT = 'env'; const RESOURCE_DETECTOR_HOST = 'host'; const RESOURCE_DETECTOR_OS = 'os'; +const RESOURCE_DETECTOR_SERVICE_INSTANCE_ID = 'serviceinstance'; const RESOURCE_DETECTOR_PROCESS = 'process'; const RESOURCE_DETECTOR_ALIBABA = 'alibaba'; const RESOURCE_DETECTOR_AWS = 'aws'; @@ -208,6 +210,7 @@ export function getResourceDetectorsFromEnv(): Array { [RESOURCE_DETECTOR_ENVIRONMENT, envDetectorSync], [RESOURCE_DETECTOR_HOST, hostDetectorSync], [RESOURCE_DETECTOR_OS, osDetectorSync], + [RESOURCE_DETECTOR_SERVICE_INSTANCE_ID, serviceInstanceIdDetectorSync], [RESOURCE_DETECTOR_PROCESS, processDetectorSync], [RESOURCE_DETECTOR_ALIBABA, alibabaCloudEcsDetector], [RESOURCE_DETECTOR_GCP, gcpDetector], diff --git a/metapackages/auto-instrumentations-node/test/utils.test.ts b/metapackages/auto-instrumentations-node/test/utils.test.ts index 29fae3cef2..0622022f36 100644 --- a/metapackages/auto-instrumentations-node/test/utils.test.ts +++ b/metapackages/auto-instrumentations-node/test/utils.test.ts @@ -114,25 +114,28 @@ describe('utils', () => { describe('getResourceDetectorsFromEnv', () => { it('should return all resource detectors by default', () => { - assert.equal(getResourceDetectorsFromEnv().length, 15); + assert.equal(getResourceDetectorsFromEnv().length, 16); }); it('should return all resource detectors when OTEL_NODE_RESOURCE_DETECTORS contains "all"', () => { process.env.OTEL_NODE_RESOURCE_DETECTORS = 'all'; - - assert.equal(getResourceDetectorsFromEnv().length, 15); + assert.equal(getResourceDetectorsFromEnv().length, 16); delete process.env.OTEL_NODE_RESOURCE_DETECTORS; }); it('should return specific resource detectors depending on OTEL_NODE_RESOURCE_DETECTORS', () => { - process.env.OTEL_NODE_RESOURCE_DETECTORS = 'env,host'; + process.env.OTEL_NODE_RESOURCE_DETECTORS = 'env,host,serviceinstance'; const resourceDetectors = getResourceDetectorsFromEnv(); - assert.equal(resourceDetectors.length, 2); + assert.equal(resourceDetectors.length, 3); assert.equal(resourceDetectors[0].constructor.name, 'EnvDetectorSync'); assert.equal(resourceDetectors[1].constructor.name, 'HostDetectorSync'); + assert.equal( + resourceDetectors[2].constructor.name, + 'ServiceInstanceIdDetectorSync' + ); delete process.env.OTEL_NODE_RESOURCE_DETECTORS; }); diff --git a/package-lock.json b/package-lock.json index cdf76d19ab..848955b6be 100644 --- a/package-lock.json +++ b/package-lock.json @@ -327,7 +327,7 @@ "@opentelemetry/resource-detector-azure": "^0.2.6", "@opentelemetry/resource-detector-container": "^0.3.9", "@opentelemetry/resource-detector-gcp": "^0.29.9", - "@opentelemetry/resources": "^1.12.0", + "@opentelemetry/resources": "^1.24.0", "@opentelemetry/sdk-node": "^0.51.0" }, "devDependencies": { @@ -349,6 +349,344 @@ "@opentelemetry/api": "^1.4.1" } }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/api-logs": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.51.0.tgz", + "integrity": "sha512-m/jtfBPEIXS1asltl8fPQtO3Sb1qMpuL61unQajUmM8zIxeMF1AlqzWXM3QedcYgTTFiJCew5uJjyhpmqhc0+g==", + "dependencies": { + "@opentelemetry/api": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/context-async-hooks": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.24.0.tgz", + "integrity": "sha512-s7xaQ9ifDpJvwbWRLkZD/J5hY35w+MECm4TQUkg6szRcny9lf6oVhWij4w3JJFQgvHQMXU7oXOpX8Z05HxV/8g==", + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/core": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.0.tgz", + "integrity": "sha512-FP2oN7mVPqcdxJDTTnKExj4mi91EH+DNuArKfHTjPuJWe2K1JfMIVXNfahw1h3onJxQnxS8K0stKkogX05s+Aw==", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/exporter-trace-otlp-grpc": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.51.0.tgz", + "integrity": "sha512-xQpxKzS8ZnxYCa1v+3EKWhwMrSK3+RezpJ+AEKaP2pf2QbLfHt7kKfSn7niR2u3A1Tbe2aC7Ptt9+MafhThOOQ==", + "dependencies": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.51.0", + "@opentelemetry/otlp-transformer": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/exporter-trace-otlp-http": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.51.0.tgz", + "integrity": "sha512-zODqnLZmPOxj9CarFv0TrVlx9mgj0TfCMCiUiTdNi9iA2rgdKVo+bjJjpYF6LCTJOQCR5TScAUCKyzwkgDI+iA==", + "dependencies": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", + "@opentelemetry/otlp-transformer": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/exporter-trace-otlp-proto": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.51.0.tgz", + "integrity": "sha512-Fi7r0iMqGoFCQQ+WY0pYOWp395vdinZJIkYKnNbnreHxAN/kVDBl2FxbV3DeOKuRxEY08Gyb9ggPf+Zrqp7l/w==", + "dependencies": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", + "@opentelemetry/otlp-proto-exporter-base": "0.51.0", + "@opentelemetry/otlp-transformer": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/exporter-zipkin": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.24.0.tgz", + "integrity": "sha512-QeGv0PHONswmu567pf9QliJ6s6DgCu5+ziF+soNS1LTcr1VRRVLViYLmGxmzDFUC48sjNTu7sumcKT0nJXsGBw==", + "dependencies": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.51.0.tgz", + "integrity": "sha512-hR4c9vWVz1QgzCBSyy9zSDkvfTgaK96E6/tfVP6O4dzdZW9HqWimA3lXV/KXadEGqShvM4GToz9EHp2A5RU5bQ==", + "dependencies": { + "@opentelemetry/core": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/otlp-grpc-exporter-base": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.51.0.tgz", + "integrity": "sha512-oTRtDvvB0bTRTBVrvKA/oM1gIAqQ6DVQS07pvqiL1cZS8wBrGgpw+2iTd0nV661Y/MhDn/kNWp8lRhMEIKN9bw==", + "dependencies": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", + "protobufjs": "^7.2.3" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/otlp-proto-exporter-base": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.51.0.tgz", + "integrity": "sha512-WDANDLSUh11Gu5o6iCzmjZraIv5bK8z1L/t6lxQ2NeEKiKUPo5pVOBBQQC/yAQU2yeqkiO1GRCieH+XahZf60A==", + "dependencies": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", + "protobufjs": "^7.2.3" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/otlp-transformer": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.51.0.tgz", + "integrity": "sha512-ylLgx2xumVoSefDHP9GMAU/LG+TU3+8eacVDXV5o1RqWxsdVOaQmCTY0XyDgeRTn6hIOVAq/HHQbRq3iWOrt2A==", + "dependencies": { + "@opentelemetry/api-logs": "0.51.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-logs": "0.51.0", + "@opentelemetry/sdk-metrics": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.9.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/propagator-b3": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.24.0.tgz", + "integrity": "sha512-7TMIDE4+NO5vnkor+zned42wqca+hmhW5gWKhmYjUHC5B5uojo1PvtmBrd7kigFu96XvL4ZUWVzibWRWIQ/++Q==", + "dependencies": { + "@opentelemetry/core": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/propagator-jaeger": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.24.0.tgz", + "integrity": "sha512-r3MX3AmJiUeiWTXSDOdwBeaO+ahvWcFCpuKxmhhsH8Q8LqDnjhNd3krqBh4Qsq9wa0WhWtiQaDs/NOCWoMOlOw==", + "dependencies": { + "@opentelemetry/core": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/resources": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.24.0.tgz", + "integrity": "sha512-mxC7E7ocUS1tLzepnA7O9/G8G6ZTdjCH2pXme1DDDuCuk6n2/53GADX+GWBuyX0dfIxeMInIbJAdjlfN9GNr6A==", + "dependencies": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/sdk-logs": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.51.0.tgz", + "integrity": "sha512-K4fMBRFD8hQ6khk0rvYFuo6L9ymeGgByir6BcuFIgQuQ00OhYwBi9AruZz5V733Ejq7P8ObR3YyubkOUIbeVAw==", + "dependencies": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.9.0", + "@opentelemetry/api-logs": ">=0.39.1" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/sdk-metrics": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.24.0.tgz", + "integrity": "sha512-4tJ+E6N019OZVB/nUW/LoK9xHxfeh88TCoaTqHeLBE9wLYfi6irWW6J9cphMav7J8Qk0D5b7/RM4VEY4dArWOA==", + "dependencies": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "lodash.merge": "^4.6.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.9.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/sdk-node": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.51.0.tgz", + "integrity": "sha512-MrPXDQsTAj3lcY8YUCjb7dvSXVZ5jG6wmjD2LB68V1rsLBdP8j70jsI9GaKijY7QB6psbLq6apO1vYeim5U7aw==", + "dependencies": { + "@opentelemetry/api-logs": "0.51.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.51.0", + "@opentelemetry/exporter-trace-otlp-http": "0.51.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.51.0", + "@opentelemetry/exporter-zipkin": "1.24.0", + "@opentelemetry/instrumentation": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-logs": "0.51.0", + "@opentelemetry/sdk-metrics": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "@opentelemetry/sdk-trace-node": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.9.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/instrumentation": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.51.0.tgz", + "integrity": "sha512-Eg/+Od5bEvzpvZQGhvMyKIkrzB9S7jW+6z9LHEI2VXhl/GrqQ3oBqlzJt4tA6pGtxRmqQWKWGM1wAbwDdW/gUA==", + "dependencies": { + "@opentelemetry/api-logs": "0.51.0", + "@types/shimmer": "^1.0.2", + "import-in-the-middle": "1.7.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.24.0.tgz", + "integrity": "sha512-H9sLETZ4jw9UJ3totV8oM5R0m4CW0ZIOLfp4NV3g0CM8HD5zGZcaW88xqzWDgiYRpctFxd+WmHtGX/Upoa2vRg==", + "dependencies": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/sdk-trace-node": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.24.0.tgz", + "integrity": "sha512-QgByHmM9uloTpcYEEyW9YJEIMKHFSIM677RH9pJPWWwtM2NQFbEp/8HIJw80Ymtaz6cAxg1Kay1ByqIVzq3t5g==", + "dependencies": { + "@opentelemetry/context-async-hooks": "1.24.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/propagator-b3": "1.24.0", + "@opentelemetry/propagator-jaeger": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "semver": "^7.5.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.0.tgz", + "integrity": "sha512-yL0jI6Ltuz8R+Opj7jClGrul6pOoYrdfVmzQS4SITXRPH7I5IRZbrwe/6/v8v4WYMa6MYZG480S1+uc/IGfqsA==", + "engines": { + "node": ">=14" + } + }, "metapackages/auto-instrumentations-web": { "name": "@opentelemetry/auto-instrumentations-web", "version": "0.39.0", @@ -46200,7 +46538,7 @@ "@opentelemetry/resource-detector-azure": "^0.2.6", "@opentelemetry/resource-detector-container": "^0.3.9", "@opentelemetry/resource-detector-gcp": "^0.29.9", - "@opentelemetry/resources": "^1.12.0", + "@opentelemetry/resources": "^1.24.0", "@opentelemetry/sdk-node": "^0.51.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", @@ -46211,6 +46549,228 @@ "sinon": "15.2.0", "ts-mocha": "10.0.0", "typescript": "4.4.4" + }, + "dependencies": { + "@opentelemetry/api-logs": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.51.0.tgz", + "integrity": "sha512-m/jtfBPEIXS1asltl8fPQtO3Sb1qMpuL61unQajUmM8zIxeMF1AlqzWXM3QedcYgTTFiJCew5uJjyhpmqhc0+g==", + "requires": { + "@opentelemetry/api": "^1.0.0" + } + }, + "@opentelemetry/context-async-hooks": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.24.0.tgz", + "integrity": "sha512-s7xaQ9ifDpJvwbWRLkZD/J5hY35w+MECm4TQUkg6szRcny9lf6oVhWij4w3JJFQgvHQMXU7oXOpX8Z05HxV/8g==", + "requires": {} + }, + "@opentelemetry/core": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.0.tgz", + "integrity": "sha512-FP2oN7mVPqcdxJDTTnKExj4mi91EH+DNuArKfHTjPuJWe2K1JfMIVXNfahw1h3onJxQnxS8K0stKkogX05s+Aw==", + "requires": { + "@opentelemetry/semantic-conventions": "1.24.0" + } + }, + "@opentelemetry/exporter-trace-otlp-grpc": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.51.0.tgz", + "integrity": "sha512-xQpxKzS8ZnxYCa1v+3EKWhwMrSK3+RezpJ+AEKaP2pf2QbLfHt7kKfSn7niR2u3A1Tbe2aC7Ptt9+MafhThOOQ==", + "requires": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.51.0", + "@opentelemetry/otlp-transformer": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" + } + }, + "@opentelemetry/exporter-trace-otlp-http": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.51.0.tgz", + "integrity": "sha512-zODqnLZmPOxj9CarFv0TrVlx9mgj0TfCMCiUiTdNi9iA2rgdKVo+bjJjpYF6LCTJOQCR5TScAUCKyzwkgDI+iA==", + "requires": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", + "@opentelemetry/otlp-transformer": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" + } + }, + "@opentelemetry/exporter-trace-otlp-proto": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.51.0.tgz", + "integrity": "sha512-Fi7r0iMqGoFCQQ+WY0pYOWp395vdinZJIkYKnNbnreHxAN/kVDBl2FxbV3DeOKuRxEY08Gyb9ggPf+Zrqp7l/w==", + "requires": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", + "@opentelemetry/otlp-proto-exporter-base": "0.51.0", + "@opentelemetry/otlp-transformer": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" + } + }, + "@opentelemetry/exporter-zipkin": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.24.0.tgz", + "integrity": "sha512-QeGv0PHONswmu567pf9QliJ6s6DgCu5+ziF+soNS1LTcr1VRRVLViYLmGxmzDFUC48sjNTu7sumcKT0nJXsGBw==", + "requires": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" + } + }, + "@opentelemetry/otlp-exporter-base": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.51.0.tgz", + "integrity": "sha512-hR4c9vWVz1QgzCBSyy9zSDkvfTgaK96E6/tfVP6O4dzdZW9HqWimA3lXV/KXadEGqShvM4GToz9EHp2A5RU5bQ==", + "requires": { + "@opentelemetry/core": "1.24.0" + } + }, + "@opentelemetry/otlp-grpc-exporter-base": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.51.0.tgz", + "integrity": "sha512-oTRtDvvB0bTRTBVrvKA/oM1gIAqQ6DVQS07pvqiL1cZS8wBrGgpw+2iTd0nV661Y/MhDn/kNWp8lRhMEIKN9bw==", + "requires": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", + "protobufjs": "^7.2.3" + } + }, + "@opentelemetry/otlp-proto-exporter-base": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.51.0.tgz", + "integrity": "sha512-WDANDLSUh11Gu5o6iCzmjZraIv5bK8z1L/t6lxQ2NeEKiKUPo5pVOBBQQC/yAQU2yeqkiO1GRCieH+XahZf60A==", + "requires": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", + "protobufjs": "^7.2.3" + } + }, + "@opentelemetry/otlp-transformer": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.51.0.tgz", + "integrity": "sha512-ylLgx2xumVoSefDHP9GMAU/LG+TU3+8eacVDXV5o1RqWxsdVOaQmCTY0XyDgeRTn6hIOVAq/HHQbRq3iWOrt2A==", + "requires": { + "@opentelemetry/api-logs": "0.51.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-logs": "0.51.0", + "@opentelemetry/sdk-metrics": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" + } + }, + "@opentelemetry/propagator-b3": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.24.0.tgz", + "integrity": "sha512-7TMIDE4+NO5vnkor+zned42wqca+hmhW5gWKhmYjUHC5B5uojo1PvtmBrd7kigFu96XvL4ZUWVzibWRWIQ/++Q==", + "requires": { + "@opentelemetry/core": "1.24.0" + } + }, + "@opentelemetry/propagator-jaeger": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.24.0.tgz", + "integrity": "sha512-r3MX3AmJiUeiWTXSDOdwBeaO+ahvWcFCpuKxmhhsH8Q8LqDnjhNd3krqBh4Qsq9wa0WhWtiQaDs/NOCWoMOlOw==", + "requires": { + "@opentelemetry/core": "1.24.0" + } + }, + "@opentelemetry/resources": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.24.0.tgz", + "integrity": "sha512-mxC7E7ocUS1tLzepnA7O9/G8G6ZTdjCH2pXme1DDDuCuk6n2/53GADX+GWBuyX0dfIxeMInIbJAdjlfN9GNr6A==", + "requires": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" + } + }, + "@opentelemetry/sdk-logs": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.51.0.tgz", + "integrity": "sha512-K4fMBRFD8hQ6khk0rvYFuo6L9ymeGgByir6BcuFIgQuQ00OhYwBi9AruZz5V733Ejq7P8ObR3YyubkOUIbeVAw==", + "requires": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0" + } + }, + "@opentelemetry/sdk-metrics": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.24.0.tgz", + "integrity": "sha512-4tJ+E6N019OZVB/nUW/LoK9xHxfeh88TCoaTqHeLBE9wLYfi6irWW6J9cphMav7J8Qk0D5b7/RM4VEY4dArWOA==", + "requires": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "lodash.merge": "^4.6.2" + } + }, + "@opentelemetry/sdk-node": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.51.0.tgz", + "integrity": "sha512-MrPXDQsTAj3lcY8YUCjb7dvSXVZ5jG6wmjD2LB68V1rsLBdP8j70jsI9GaKijY7QB6psbLq6apO1vYeim5U7aw==", + "requires": { + "@opentelemetry/api-logs": "0.51.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.51.0", + "@opentelemetry/exporter-trace-otlp-http": "0.51.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.51.0", + "@opentelemetry/exporter-zipkin": "1.24.0", + "@opentelemetry/instrumentation": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-logs": "0.51.0", + "@opentelemetry/sdk-metrics": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "@opentelemetry/sdk-trace-node": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" + }, + "dependencies": { + "@opentelemetry/instrumentation": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.51.0.tgz", + "integrity": "sha512-Eg/+Od5bEvzpvZQGhvMyKIkrzB9S7jW+6z9LHEI2VXhl/GrqQ3oBqlzJt4tA6pGtxRmqQWKWGM1wAbwDdW/gUA==", + "requires": { + "@opentelemetry/api-logs": "0.51.0", + "@types/shimmer": "^1.0.2", + "import-in-the-middle": "1.7.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + } + } + } + }, + "@opentelemetry/sdk-trace-base": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.24.0.tgz", + "integrity": "sha512-H9sLETZ4jw9UJ3totV8oM5R0m4CW0ZIOLfp4NV3g0CM8HD5zGZcaW88xqzWDgiYRpctFxd+WmHtGX/Upoa2vRg==", + "requires": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" + } + }, + "@opentelemetry/sdk-trace-node": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.24.0.tgz", + "integrity": "sha512-QgByHmM9uloTpcYEEyW9YJEIMKHFSIM677RH9pJPWWwtM2NQFbEp/8HIJw80Ymtaz6cAxg1Kay1ByqIVzq3t5g==", + "requires": { + "@opentelemetry/context-async-hooks": "1.24.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/propagator-b3": "1.24.0", + "@opentelemetry/propagator-jaeger": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "semver": "^7.5.2" + } + }, + "@opentelemetry/semantic-conventions": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.0.tgz", + "integrity": "sha512-yL0jI6Ltuz8R+Opj7jClGrul6pOoYrdfVmzQS4SITXRPH7I5IRZbrwe/6/v8v4WYMa6MYZG480S1+uc/IGfqsA==" + } } }, "@opentelemetry/auto-instrumentations-web": { From 4463483515c335de4cbb5b066f92c7ce0336619a Mon Sep 17 00:00:00 2001 From: Jamie Danielson Date: Mon, 29 Apr 2024 23:57:34 -0400 Subject: [PATCH 31/39] feat(auto-instrumentation-node): add undici instrumentation (#2131) * feat(auto-instrumentation-node): add undici instrumentation * add back undici from bad merge --- metapackages/auto-instrumentations-node/README.md | 1 + metapackages/auto-instrumentations-node/package.json | 1 + metapackages/auto-instrumentations-node/src/utils.ts | 2 ++ package-lock.json | 2 ++ 4 files changed, 6 insertions(+) diff --git a/metapackages/auto-instrumentations-node/README.md b/metapackages/auto-instrumentations-node/README.md index 3f79b645d2..181d920386 100644 --- a/metapackages/auto-instrumentations-node/README.md +++ b/metapackages/auto-instrumentations-node/README.md @@ -181,6 +181,7 @@ registerInstrumentations({ - [@opentelemetry/instrumentation-redis](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-redis) - [@opentelemetry/instrumentation-restify](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-restify) - [@opentelemetry/instrumentation-socket.io](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-socket.io) +- [@opentelemetry/instrumentation-undici](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-undici) - [@opentelemetry/instrumentation-winston](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-winston) ## Useful links diff --git a/metapackages/auto-instrumentations-node/package.json b/metapackages/auto-instrumentations-node/package.json index a94d199602..e4b40119a1 100644 --- a/metapackages/auto-instrumentations-node/package.json +++ b/metapackages/auto-instrumentations-node/package.json @@ -86,6 +86,7 @@ "@opentelemetry/instrumentation-router": "^0.37.0", "@opentelemetry/instrumentation-socket.io": "^0.39.0", "@opentelemetry/instrumentation-tedious": "^0.10.0", + "@opentelemetry/instrumentation-undici": "^0.2.0", "@opentelemetry/instrumentation-winston": "^0.37.0", "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", "@opentelemetry/resource-detector-aws": "^1.4.2", diff --git a/metapackages/auto-instrumentations-node/src/utils.ts b/metapackages/auto-instrumentations-node/src/utils.ts index faeec6990a..04f4c1ed50 100644 --- a/metapackages/auto-instrumentations-node/src/utils.ts +++ b/metapackages/auto-instrumentations-node/src/utils.ts @@ -53,6 +53,7 @@ import { RestifyInstrumentation } from '@opentelemetry/instrumentation-restify'; import { RouterInstrumentation } from '@opentelemetry/instrumentation-router'; import { SocketIoInstrumentation } from '@opentelemetry/instrumentation-socket.io'; import { TediousInstrumentation } from '@opentelemetry/instrumentation-tedious'; +import { UndiciInstrumentation } from '@opentelemetry/instrumentation-undici'; import { WinstonInstrumentation } from '@opentelemetry/instrumentation-winston'; import { alibabaCloudEcsDetector } from '@opentelemetry/resource-detector-alibaba-cloud'; @@ -129,6 +130,7 @@ const InstrumentationMap = { '@opentelemetry/instrumentation-router': RouterInstrumentation, '@opentelemetry/instrumentation-socket.io': SocketIoInstrumentation, '@opentelemetry/instrumentation-tedious': TediousInstrumentation, + '@opentelemetry/instrumentation-undici': UndiciInstrumentation, '@opentelemetry/instrumentation-winston': WinstonInstrumentation, }; diff --git a/package-lock.json b/package-lock.json index 848955b6be..4c8e6c2a3b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -321,6 +321,7 @@ "@opentelemetry/instrumentation-router": "^0.37.0", "@opentelemetry/instrumentation-socket.io": "^0.39.0", "@opentelemetry/instrumentation-tedious": "^0.10.0", + "@opentelemetry/instrumentation-undici": "^0.2.0", "@opentelemetry/instrumentation-winston": "^0.37.0", "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", "@opentelemetry/resource-detector-aws": "^1.4.2", @@ -46532,6 +46533,7 @@ "@opentelemetry/instrumentation-router": "^0.37.0", "@opentelemetry/instrumentation-socket.io": "^0.39.0", "@opentelemetry/instrumentation-tedious": "^0.10.0", + "@opentelemetry/instrumentation-undici": "^0.2.0", "@opentelemetry/instrumentation-winston": "^0.37.0", "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", "@opentelemetry/resource-detector-aws": "^1.4.2", From d06685471a3b2ce89ca8c59eb73894629418290f Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Tue, 30 Apr 2024 11:29:47 +0200 Subject: [PATCH 32/39] chore: remove skipLibCheck: true from tsconfigs where it is not necessary (#2165) --- metapackages/auto-instrumentations-web/tsconfig.esm.json | 1 - metapackages/auto-instrumentations-web/tsconfig.esnext.json | 1 - metapackages/auto-instrumentations-web/tsconfig.json | 1 - plugins/node/instrumentation-cucumber/tsconfig.json | 3 +-- plugins/node/instrumentation-mongoose/tsconfig.json | 3 +-- .../node/opentelemetry-instrumentation-mongodb/tsconfig.json | 3 +-- .../tsconfig.esm.json | 1 - .../tsconfig.esnext.json | 1 - .../tsconfig.json | 3 +-- 9 files changed, 4 insertions(+), 13 deletions(-) diff --git a/metapackages/auto-instrumentations-web/tsconfig.esm.json b/metapackages/auto-instrumentations-web/tsconfig.esm.json index 356b6d0307..a94adff6aa 100644 --- a/metapackages/auto-instrumentations-web/tsconfig.esm.json +++ b/metapackages/auto-instrumentations-web/tsconfig.esm.json @@ -3,7 +3,6 @@ "compilerOptions": { "rootDir": "src", "outDir": "build/esm", - "skipLibCheck": true, "tsBuildInfoFile": "build/esm/tsconfig.esm.tsbuildinfo" }, "include": [ diff --git a/metapackages/auto-instrumentations-web/tsconfig.esnext.json b/metapackages/auto-instrumentations-web/tsconfig.esnext.json index d6054d1fb0..ff1191ab29 100644 --- a/metapackages/auto-instrumentations-web/tsconfig.esnext.json +++ b/metapackages/auto-instrumentations-web/tsconfig.esnext.json @@ -3,7 +3,6 @@ "compilerOptions": { "rootDir": "src", "outDir": "build/esnext", - "skipLibCheck": true, "tsBuildInfoFile": "build/esnext/tsconfig.esnext.tsbuildinfo" }, "include": ["src/**/*.ts"] diff --git a/metapackages/auto-instrumentations-web/tsconfig.json b/metapackages/auto-instrumentations-web/tsconfig.json index e1baf4c16d..569e38e289 100644 --- a/metapackages/auto-instrumentations-web/tsconfig.json +++ b/metapackages/auto-instrumentations-web/tsconfig.json @@ -3,7 +3,6 @@ "compilerOptions": { "rootDir": ".", "outDir": "build", - "skipLibCheck": true }, "include": [ "src/**/*.ts", diff --git a/plugins/node/instrumentation-cucumber/tsconfig.json b/plugins/node/instrumentation-cucumber/tsconfig.json index 568e7bb7cb..c87523782b 100644 --- a/plugins/node/instrumentation-cucumber/tsconfig.json +++ b/plugins/node/instrumentation-cucumber/tsconfig.json @@ -2,8 +2,7 @@ "extends": "../../../tsconfig.base", "compilerOptions": { "rootDir": ".", - "outDir": "build", - "skipLibCheck": true + "outDir": "build" }, "include": ["src/**/*.ts", "test/**/*.ts"] } diff --git a/plugins/node/instrumentation-mongoose/tsconfig.json b/plugins/node/instrumentation-mongoose/tsconfig.json index 5c3680dd33..28be80d266 100644 --- a/plugins/node/instrumentation-mongoose/tsconfig.json +++ b/plugins/node/instrumentation-mongoose/tsconfig.json @@ -2,8 +2,7 @@ "extends": "../../../tsconfig.base", "compilerOptions": { "rootDir": ".", - "outDir": "build", - "skipLibCheck": true + "outDir": "build" }, "include": [ "src/**/*.ts", diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/tsconfig.json b/plugins/node/opentelemetry-instrumentation-mongodb/tsconfig.json index 5c3680dd33..28be80d266 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/tsconfig.json +++ b/plugins/node/opentelemetry-instrumentation-mongodb/tsconfig.json @@ -2,8 +2,7 @@ "extends": "../../../tsconfig.base", "compilerOptions": { "rootDir": ".", - "outDir": "build", - "skipLibCheck": true + "outDir": "build" }, "include": [ "src/**/*.ts", diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/tsconfig.esm.json b/plugins/web/opentelemetry-instrumentation-user-interaction/tsconfig.esm.json index 2eb13ff857..379f547a46 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/tsconfig.esm.json +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/tsconfig.esm.json @@ -3,7 +3,6 @@ "compilerOptions": { "rootDir": "src", "outDir": "build/esm", - "skipLibCheck": true, "tsBuildInfoFile": "build/esm/tsconfig.esm.tsbuildinfo" }, "include": [ diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/tsconfig.esnext.json b/plugins/web/opentelemetry-instrumentation-user-interaction/tsconfig.esnext.json index b7a30a41f1..cb78dd6ff3 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/tsconfig.esnext.json +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/tsconfig.esnext.json @@ -3,7 +3,6 @@ "compilerOptions": { "rootDir": "src", "outDir": "build/esnext", - "skipLibCheck": true, "tsBuildInfoFile": "build/esnext/tsconfig.esnext.tsbuildinfo" }, "include": [ diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/tsconfig.json b/plugins/web/opentelemetry-instrumentation-user-interaction/tsconfig.json index 5c3680dd33..28be80d266 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/tsconfig.json +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/tsconfig.json @@ -2,8 +2,7 @@ "extends": "../../../tsconfig.base", "compilerOptions": { "rootDir": ".", - "outDir": "build", - "skipLibCheck": true + "outDir": "build" }, "include": [ "src/**/*.ts", From 59583f240715f29a80776dd6de5a36f2c6341765 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 30 Apr 2024 12:57:49 +0200 Subject: [PATCH 33/39] chore(deps): update postgres docker tag to v16 (#1703) * chore(deps): update postgres docker tag to v16 * fix(test-utils): align postgres docker image --------- Co-authored-by: Amir Blum --- .github/workflows/test-all-versions.yml | 2 +- .github/workflows/unit-test.yml | 2 +- packages/opentelemetry-test-utils/src/test-utils.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test-all-versions.yml b/.github/workflows/test-all-versions.yml index aa0b908342..cc231a5174 100644 --- a/.github/workflows/test-all-versions.yml +++ b/.github/workflows/test-all-versions.yml @@ -53,7 +53,7 @@ jobs: --health-timeout 5s --health-retries 5 postgres: - image: postgres:15-alpine + image: postgres:16-alpine env: POSTGRES_USER: postgres POSTGRES_DB: otel_pg_database diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 025b727e9b..a03af4c942 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -51,7 +51,7 @@ jobs: --health-timeout 5s --health-retries 5 postgres: - image: postgres:15-alpine + image: postgres:16-alpine env: POSTGRES_USER: postgres POSTGRES_DB: otel_pg_database diff --git a/packages/opentelemetry-test-utils/src/test-utils.ts b/packages/opentelemetry-test-utils/src/test-utils.ts index 0020e043fd..aae38f160a 100644 --- a/packages/opentelemetry-test-utils/src/test-utils.ts +++ b/packages/opentelemetry-test-utils/src/test-utils.ts @@ -40,7 +40,7 @@ const dockerRunCmds = { mysql: 'docker run --rm -d --name otel-mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=rootpw -e MYSQL_DATABASE=test_db -e MYSQL_USER=otel -e MYSQL_PASSWORD=secret mysql:5.7 --log_output=TABLE --general_log=ON', postgres: - 'docker run --rm -d --name otel-postgres -p 54320:5432 -e POSTGRES_PASSWORD=postgres postgres:15-alpine', + 'docker run --rm -d --name otel-postgres -p 54320:5432 -e POSTGRES_PASSWORD=postgres postgres:16-alpine', redis: 'docker run --rm -d --name otel-redis -p 63790:6379 redis:alpine', }; From 585b833dc8e911c17b483e871f752ad4988cee5a Mon Sep 17 00:00:00 2001 From: Amir Blum Date: Tue, 30 Apr 2024 16:49:22 +0300 Subject: [PATCH 34/39] feat(pino): support new pino version ^9.0.0 (#2163) Co-authored-by: Marc Pichler --- plugins/node/opentelemetry-instrumentation-pino/.tav.yml | 5 ++++- plugins/node/opentelemetry-instrumentation-pino/README.md | 2 +- .../src/instrumentation.ts | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/plugins/node/opentelemetry-instrumentation-pino/.tav.yml b/plugins/node/opentelemetry-instrumentation-pino/.tav.yml index ca1f8bbabc..94d5d5f97e 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/.tav.yml +++ b/plugins/node/opentelemetry-instrumentation-pino/.tav.yml @@ -1,5 +1,8 @@ pino: - - versions: "^8.16.2 || 8.12.1 || 8.8.0 || 8.4.0 || 8.0.0 || ^7.11.0 || 7.8.0 || 7.2.0 || ^6.13.3 || 5.17.0 || 5.14.0" + - versions: "^9.0.0" + node: ">=18" + commands: npm run test + - versions: "^8.21.0 || 8.20.0 || 8.16.2 || 8.12.1 || 8.8.0 || 8.4.0 || 8.0.0 || ^7.11.0 || 7.8.0 || 7.2.0 || ^6.13.3 || 5.17.0 || 5.14.0" node: ">=14" commands: npm run test - versions: "^7.11.0 || 7.8.0 || 7.2.0 || ^6.13.1 || 5.17.0 || 5.14.0" diff --git a/plugins/node/opentelemetry-instrumentation-pino/README.md b/plugins/node/opentelemetry-instrumentation-pino/README.md index 7d8c7393f1..377ce7aa6e 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/README.md +++ b/plugins/node/opentelemetry-instrumentation-pino/README.md @@ -63,7 +63,7 @@ When no span context is active or the span context is invalid, injection is skip ### Supported versions -`>=5.14.0 <9` +`>=5.14.0 <10` ## Useful links diff --git a/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts index dce1ff3ecc..d5821a2f6f 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts @@ -29,7 +29,7 @@ import { import { PinoInstrumentationConfig } from './types'; import { VERSION } from './version'; -const pinoVersions = ['>=5.14.0 <9']; +const pinoVersions = ['>=5.14.0 <10']; const DEFAULT_LOG_KEYS = { traceId: 'trace_id', From e74cee49a7f8dde2e34a5a6e37d87e3b7d1bd949 Mon Sep 17 00:00:00 2001 From: David Luna Date: Wed, 1 May 2024 05:30:19 +0200 Subject: [PATCH 35/39] refactor(instr-cassandra-driver): use exported strings for attributes (#2139) Also, correct component-label mapping for instrumentation-cassandra-driver package Co-authored-by: Trent Mick Refs: #2025 --- .github/component-label-map.yml | 2 +- package-lock.json | 4 +-- .../README.md | 15 +++++++++++ .../package.json | 2 +- .../src/instrumentation.ts | 25 ++++++++++------- .../test/cassandra-driver.test.ts | 27 +++++++++++-------- 6 files changed, 50 insertions(+), 25 deletions(-) diff --git a/.github/component-label-map.yml b/.github/component-label-map.yml index 5a9fc3af56..c766a864d0 100644 --- a/.github/component-label-map.yml +++ b/.github/component-label-map.yml @@ -71,7 +71,7 @@ pkg:instrumentation-bunyan: - changed-files: - any-glob-to-any-file: - plugins/node/opentelemetry-instrumentation-bunyan/** -pkg:instrumentation-cassandra: +pkg:instrumentation-cassandra-driver: - changed-files: - any-glob-to-any-file: - plugins/node/opentelemetry-instrumentation-cassandra/** diff --git a/package-lock.json b/package-lock.json index 4c8e6c2a3b..72cbe122ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38193,7 +38193,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -47132,7 +47132,7 @@ "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/semver": "7.5.3", diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/README.md b/plugins/node/opentelemetry-instrumentation-cassandra/README.md index 637bcf4fa2..8743ebffaf 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/README.md +++ b/plugins/node/opentelemetry-instrumentation-cassandra/README.md @@ -49,6 +49,21 @@ await client.execute('select * from foo'); `>=4.4 <5.0` +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | +| ----------------------- | ------------------------------------------------------------------------------ | +| `db.name` | This attribute is used to report the name of the database being accessed. | +| `db.statement` | The database statement being executed. | +| `db.system` | An identifier for the database management system (DBMS) product being used. | +| `db.user` | Username for accessing the database. | +| `net.peer.name` | Remote hostname or similar. | +| `net.peer.port` | Remote port number. | + ## Useful links * For more information on OpenTelemetry, visit: diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/package.json b/plugins/node/opentelemetry-instrumentation-cassandra/package.json index 2529936322..73ffc747d6 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/package.json +++ b/plugins/node/opentelemetry-instrumentation-cassandra/package.json @@ -62,7 +62,7 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-cassandra#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-cassandra/src/instrumentation.ts index 754277310f..f11ffab83e 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-cassandra/src/instrumentation.ts @@ -18,7 +18,7 @@ import { context, trace, Span, - SpanAttributes, + Attributes, SpanKind, SpanStatusCode, } from '@opentelemetry/api'; @@ -31,8 +31,13 @@ import { } from '@opentelemetry/instrumentation'; import { CassandraDriverInstrumentationConfig, ResultSet } from './types'; import { - SemanticAttributes, - DbSystemValues, + DBSYSTEMVALUES_CASSANDRA, + SEMATTRS_DB_NAME, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, + SEMATTRS_DB_USER, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, } from '@opentelemetry/semantic-conventions'; import { VERSION } from './version'; import { EventEmitter } from 'events'; @@ -172,10 +177,10 @@ export class CassandraDriverInstrumentation extends InstrumentationBase { if (span !== undefined && conn !== undefined) { const port = parseInt(conn.port, 10); - span.setAttribute(SemanticAttributes.NET_PEER_NAME, conn.address); + span.setAttribute(SEMATTRS_NET_PEER_NAME, conn.address); if (!isNaN(port)) { - span.setAttribute(SemanticAttributes.NET_PEER_PORT, port); + span.setAttribute(SEMATTRS_NET_PEER_PORT, port); } } @@ -302,24 +307,24 @@ export class CassandraDriverInstrumentation extends InstrumentationBase { { op, query }: { op: string; query?: unknown }, client: CassandraDriver.Client ): Span { - const attributes: SpanAttributes = { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.CASSANDRA, + const attributes: Attributes = { + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_CASSANDRA, }; if (this._shouldIncludeDbStatement() && query !== undefined) { const statement = truncateQuery(query, this._getMaxQueryLength()); - attributes[SemanticAttributes.DB_STATEMENT] = statement; + attributes[SEMATTRS_DB_STATEMENT] = statement; } // eslint-disable-next-line @typescript-eslint/no-explicit-any const user = (client as any).options?.credentials?.username; if (user) { - attributes[SemanticAttributes.DB_USER] = user; + attributes[SEMATTRS_DB_USER] = user; } if (client.keyspace) { - attributes[SemanticAttributes.DB_NAME] = client.keyspace; + attributes[SEMATTRS_DB_NAME] = client.keyspace; } return this.tracer.startSpan(`cassandra-driver.${op}`, { diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/test/cassandra-driver.test.ts b/plugins/node/opentelemetry-instrumentation-cassandra/test/cassandra-driver.test.ts index c7a802d4b8..c663ab0abe 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/test/cassandra-driver.test.ts +++ b/plugins/node/opentelemetry-instrumentation-cassandra/test/cassandra-driver.test.ts @@ -30,8 +30,13 @@ import { import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks'; import { - SemanticAttributes, - DbSystemValues, + DBSYSTEMVALUES_CASSANDRA, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, + SEMATTRS_DB_USER, + SEMATTRS_EXCEPTION_MESSAGE, + SEMATTRS_EXCEPTION_STACKTRACE, + SEMATTRS_EXCEPTION_TYPE, } from '@opentelemetry/semantic-conventions'; import * as assert from 'assert'; import * as testUtils from '@opentelemetry/contrib-test-utils'; @@ -60,13 +65,13 @@ function assertSpan( customAttributes?: Attributes ) { const attributes: Attributes = { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.CASSANDRA, - [SemanticAttributes.DB_USER]: 'cassandra', + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_CASSANDRA, + [SEMATTRS_DB_USER]: 'cassandra', ...customAttributes, }; if (query !== undefined) { - attributes[SemanticAttributes.DB_STATEMENT] = query; + attributes[SEMATTRS_DB_STATEMENT] = query; } const spanStatus = @@ -98,12 +103,12 @@ function assertErrorSpan( const [span] = spans; const attributes: Attributes = { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.CASSANDRA, - [SemanticAttributes.DB_USER]: 'cassandra', + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_CASSANDRA, + [SEMATTRS_DB_USER]: 'cassandra', }; if (query !== undefined) { - attributes[SemanticAttributes.DB_STATEMENT] = query; + attributes[SEMATTRS_DB_STATEMENT] = query; } const events = [ @@ -111,9 +116,9 @@ function assertErrorSpan( name: 'exception', droppedAttributesCount: 0, attributes: { - [SemanticAttributes.EXCEPTION_STACKTRACE]: error.stack, - [SemanticAttributes.EXCEPTION_MESSAGE]: error.message, - [SemanticAttributes.EXCEPTION_TYPE]: String(error.code), + [SEMATTRS_EXCEPTION_STACKTRACE]: error.stack, + [SEMATTRS_EXCEPTION_MESSAGE]: error.message, + [SEMATTRS_EXCEPTION_TYPE]: String(error.code), }, time: span.events[0].time, }, From 2ade5ae8da68c3b2e6d0d971ea6bd994d97d872b Mon Sep 17 00:00:00 2001 From: Amir Blum Date: Thu, 2 May 2024 08:18:52 +0300 Subject: [PATCH 36/39] chore: align config constructor pattern across instrumentations (#2162) * chore: align config constructor pattern across instrumentations * fix: unused import * revert: remove diag patch message * fix: align config pattern for mongoose and koa * fix: apply common config handling in setConfig --- plugins/node/instrumentation-amqplib/src/amqplib.ts | 2 +- .../node/instrumentation-dataloader/src/instrumentation.ts | 2 +- plugins/node/instrumentation-fs/src/instrumentation.ts | 2 +- .../instrumentation-lru-memoizer/src/instrumentation.ts | 2 +- plugins/node/instrumentation-mongoose/src/mongoose.ts | 6 +----- plugins/node/instrumentation-tedious/src/instrumentation.ts | 2 +- plugins/node/instrumentation-undici/src/undici.ts | 4 ++-- .../src/instrumentation.ts | 6 ++++-- .../opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts | 6 +----- .../src/instrumentation.ts | 2 +- .../src/instrumentation.ts | 6 +----- .../src/instrumentation.ts | 6 ++++-- .../src/instrumentation.ts | 6 +----- .../src/instrumentation.ts | 6 +----- .../src/instrumentation.ts | 2 +- .../src/instrumentation.ts | 5 +---- .../src/instrumentation.ts | 2 +- .../src/instrumentation.ts | 6 ++++-- .../src/instrumentation.ts | 6 +----- .../src/instrumentation.ts | 6 ++++-- .../src/instrumentation.ts | 2 +- .../src/instrumentation.ts | 2 +- .../src/instrumentation.ts | 2 +- .../src/instrumentation.ts | 4 ++-- .../opentelemetry-instrumentation-pg/src/instrumentation.ts | 6 +----- .../src/instrumentation.ts | 2 +- .../src/instrumentation.ts | 6 ++++-- .../src/instrumentation.ts | 6 ++++-- .../src/instrumentation.ts | 2 +- .../src/instrumentation.ts | 2 +- .../src/instrumentation.ts | 2 +- .../src/instrumentation.ts | 2 +- 32 files changed, 52 insertions(+), 71 deletions(-) diff --git a/plugins/node/instrumentation-amqplib/src/amqplib.ts b/plugins/node/instrumentation-amqplib/src/amqplib.ts index 16224096fc..c81e2b51a3 100644 --- a/plugins/node/instrumentation-amqplib/src/amqplib.ts +++ b/plugins/node/instrumentation-amqplib/src/amqplib.ts @@ -77,7 +77,7 @@ import { VERSION } from './version'; export class AmqplibInstrumentation extends InstrumentationBase { protected override _config!: AmqplibInstrumentationConfig; - constructor(config?: AmqplibInstrumentationConfig) { + constructor(config: AmqplibInstrumentationConfig = {}) { super( '@opentelemetry/instrumentation-amqplib', VERSION, diff --git a/plugins/node/instrumentation-dataloader/src/instrumentation.ts b/plugins/node/instrumentation-dataloader/src/instrumentation.ts index 55d53ece64..adabc3c36d 100644 --- a/plugins/node/instrumentation-dataloader/src/instrumentation.ts +++ b/plugins/node/instrumentation-dataloader/src/instrumentation.ts @@ -76,7 +76,7 @@ export class DataloaderInstrumentation extends InstrumentationBase { return this._config; } - override setConfig(config: DataloaderInstrumentationConfig) { + override setConfig(config: DataloaderInstrumentationConfig = {}) { this._config = config; } diff --git a/plugins/node/instrumentation-fs/src/instrumentation.ts b/plugins/node/instrumentation-fs/src/instrumentation.ts index d3fea1c952..08490f496b 100644 --- a/plugins/node/instrumentation-fs/src/instrumentation.ts +++ b/plugins/node/instrumentation-fs/src/instrumentation.ts @@ -52,7 +52,7 @@ function patchedFunctionWithOriginalProperties< } export default class FsInstrumentation extends InstrumentationBase { - constructor(config?: FsInstrumentationConfig) { + constructor(config: FsInstrumentationConfig = {}) { super('@opentelemetry/instrumentation-fs', VERSION, config); } diff --git a/plugins/node/instrumentation-lru-memoizer/src/instrumentation.ts b/plugins/node/instrumentation-lru-memoizer/src/instrumentation.ts index d11e803973..09112043d2 100644 --- a/plugins/node/instrumentation-lru-memoizer/src/instrumentation.ts +++ b/plugins/node/instrumentation-lru-memoizer/src/instrumentation.ts @@ -23,7 +23,7 @@ import { import { VERSION } from './version'; export default class LruMemoizerInstrumentation extends InstrumentationBase { - constructor(config?: InstrumentationConfig) { + constructor(config: InstrumentationConfig = {}) { super('@opentelemetry/instrumentation-lru-memoizer', VERSION, config); } diff --git a/plugins/node/instrumentation-mongoose/src/mongoose.ts b/plugins/node/instrumentation-mongoose/src/mongoose.ts index 3de0ea33ee..33aa3bf380 100644 --- a/plugins/node/instrumentation-mongoose/src/mongoose.ts +++ b/plugins/node/instrumentation-mongoose/src/mongoose.ts @@ -61,11 +61,7 @@ export class MongooseInstrumentation extends InstrumentationBase { protected override _config!: MongooseInstrumentationConfig; constructor(config: MongooseInstrumentationConfig = {}) { - super( - '@opentelemetry/instrumentation-mongoose', - VERSION, - Object.assign({}, config) - ); + super('@opentelemetry/instrumentation-mongoose', VERSION, config); } override setConfig(config: MongooseInstrumentationConfig = {}) { diff --git a/plugins/node/instrumentation-tedious/src/instrumentation.ts b/plugins/node/instrumentation-tedious/src/instrumentation.ts index 24935a32c3..ba63ce1eae 100644 --- a/plugins/node/instrumentation-tedious/src/instrumentation.ts +++ b/plugins/node/instrumentation-tedious/src/instrumentation.ts @@ -70,7 +70,7 @@ function setDatabase(this: ApproxConnection, databaseName: string) { export class TediousInstrumentation extends InstrumentationBase { static readonly COMPONENT = 'tedious'; - constructor(config?: TediousInstrumentationConfig) { + constructor(config: TediousInstrumentationConfig = {}) { super('@opentelemetry/instrumentation-tedious', VERSION, config); } diff --git a/plugins/node/instrumentation-undici/src/undici.ts b/plugins/node/instrumentation-undici/src/undici.ts index 0fa07f97a3..ececad63c7 100644 --- a/plugins/node/instrumentation-undici/src/undici.ts +++ b/plugins/node/instrumentation-undici/src/undici.ts @@ -66,7 +66,7 @@ export class UndiciInstrumentation extends InstrumentationBase { private _recordFromReq = new WeakMap(); private _httpClientDurationHistogram!: Histogram; - constructor(config?: UndiciInstrumentationConfig) { + constructor(config: UndiciInstrumentationConfig = {}) { super('@opentelemetry/instrumentation-undici', VERSION, config); this.setConfig(config); } @@ -111,7 +111,7 @@ export class UndiciInstrumentation extends InstrumentationBase { this.subscribeToChannel('undici:request:error', this.onError.bind(this)); } - override setConfig(config?: UndiciInstrumentationConfig): void { + override setConfig(config: UndiciInstrumentationConfig = {}): void { super.setConfig(config); if (config?.enabled) { diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts index 0b88aeec75..6d475f91dc 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts @@ -77,8 +77,10 @@ export class AwsLambdaInstrumentation extends InstrumentationBase { private _traceForceFlusher?: () => Promise; private _metricForceFlusher?: () => Promise; - constructor(protected override _config: AwsLambdaInstrumentationConfig = {}) { - super('@opentelemetry/instrumentation-aws-lambda', VERSION, _config); + protected override _config!: AwsLambdaInstrumentationConfig; + + constructor(config: AwsLambdaInstrumentationConfig = {}) { + super('@opentelemetry/instrumentation-aws-lambda', VERSION, config); if (this._config.disableAwsContextPropagation == null) { if ( typeof env['OTEL_LAMBDA_DISABLE_AWS_CONTEXT_PROPAGATION'] === diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts index 7203010630..d20d480180 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts @@ -78,11 +78,7 @@ export class AwsInstrumentation extends InstrumentationBase { private servicesExtensions: ServicesExtensions = new ServicesExtensions(); constructor(config: AwsSdkInstrumentationConfig = {}) { - super( - '@opentelemetry/instrumentation-aws-sdk', - VERSION, - Object.assign({}, config) - ); + super('@opentelemetry/instrumentation-aws-sdk', VERSION, config); } override setConfig(config: AwsSdkInstrumentationConfig = {}) { diff --git a/plugins/node/opentelemetry-instrumentation-bunyan/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-bunyan/src/instrumentation.ts index 571cbc992e..0f218787ea 100644 --- a/plugins/node/opentelemetry-instrumentation-bunyan/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-bunyan/src/instrumentation.ts @@ -103,7 +103,7 @@ export class BunyanInstrumentation extends InstrumentationBase { return this._config; } - override setConfig(config: BunyanInstrumentationConfig) { + override setConfig(config: BunyanInstrumentationConfig = {}) { this._config = Object.assign({}, DEFAULT_CONFIG, config); } diff --git a/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts index f1d13bb575..63264490bc 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts @@ -43,11 +43,7 @@ export const ANONYMOUS_NAME = 'anonymous'; /** Connect instrumentation for OpenTelemetry */ export class ConnectInstrumentation extends InstrumentationBase { constructor(config: InstrumentationConfig = {}) { - super( - '@opentelemetry/instrumentation-connect', - VERSION, - Object.assign({}, config) - ); + super('@opentelemetry/instrumentation-connect', VERSION, config); } init() { diff --git a/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts index 37ad2822fb..f408f7f17b 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts @@ -37,8 +37,10 @@ import { * Dns instrumentation for Opentelemetry */ export class DnsInstrumentation extends InstrumentationBase { - constructor(protected override _config: DnsInstrumentationConfig = {}) { - super('@opentelemetry/instrumentation-dns', VERSION, _config); + protected override _config!: DnsInstrumentationConfig; + + constructor(config: DnsInstrumentationConfig = {}) { + super('@opentelemetry/instrumentation-dns', VERSION, config); } init(): ( diff --git a/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts index b20121b304..45a07f7446 100644 --- a/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts @@ -51,11 +51,7 @@ import { /** Express instrumentation for OpenTelemetry */ export class ExpressInstrumentation extends InstrumentationBase { constructor(config: ExpressInstrumentationConfig = {}) { - super( - '@opentelemetry/instrumentation-express', - VERSION, - Object.assign({}, config) - ); + super('@opentelemetry/instrumentation-express', VERSION, config); } override setConfig(config: ExpressInstrumentationConfig = {}) { diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts index aebf1bf721..914b608fd8 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts @@ -48,11 +48,7 @@ export const ANONYMOUS_NAME = 'anonymous'; /** Fastify instrumentation for OpenTelemetry */ export class FastifyInstrumentation extends InstrumentationBase { constructor(config: FastifyInstrumentationConfig = {}) { - super( - '@opentelemetry/instrumentation-fastify', - VERSION, - Object.assign({}, config) - ); + super('@opentelemetry/instrumentation-fastify', VERSION, config); } override setConfig(config: FastifyInstrumentationConfig = {}) { diff --git a/plugins/node/opentelemetry-instrumentation-generic-pool/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-generic-pool/src/instrumentation.ts index 29f3671688..adefe5a7be 100644 --- a/plugins/node/opentelemetry-instrumentation-generic-pool/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-generic-pool/src/instrumentation.ts @@ -33,7 +33,7 @@ export default class Instrumentation extends InstrumentationBase { private _isDisabled = false; constructor(config: InstrumentationConfig = {}) { - super(`@opentelemetry/instrumentation-${MODULE_NAME}`, VERSION); + super(`@opentelemetry/instrumentation-${MODULE_NAME}`, VERSION, config); } init() { diff --git a/plugins/node/opentelemetry-instrumentation-graphql/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-graphql/src/instrumentation.ts index ddae6e3ddb..32fc2f4507 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-graphql/src/instrumentation.ts @@ -18,7 +18,6 @@ import { context, trace } from '@opentelemetry/api'; import { isWrapped, InstrumentationBase, - InstrumentationConfig, InstrumentationNodeModuleDefinition, InstrumentationNodeModuleFile, safeExecuteInTheMiddle, @@ -65,9 +64,7 @@ const DEFAULT_CONFIG: GraphQLInstrumentationConfig = { const supportedVersions = ['>=14 <17']; export class GraphQLInstrumentation extends InstrumentationBase { - constructor( - config: GraphQLInstrumentationConfig & InstrumentationConfig = {} - ) { + constructor(config: GraphQLInstrumentationConfig = {}) { super( '@opentelemetry/instrumentation-graphql', VERSION, diff --git a/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts index 2b1988aa69..af550b137c 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts @@ -49,7 +49,7 @@ import { /** Hapi instrumentation for OpenTelemetry */ export class HapiInstrumentation extends InstrumentationBase { - constructor(config?: InstrumentationConfig) { + constructor(config: InstrumentationConfig = {}) { super('@opentelemetry/instrumentation-hapi', VERSION, config); } diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts index 26b671ab1f..00e3257ed4 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts @@ -36,11 +36,13 @@ const DEFAULT_CONFIG: IORedisInstrumentationConfig = { }; export class IORedisInstrumentation extends InstrumentationBase { - constructor(_config: IORedisInstrumentationConfig = {}) { + protected override _config!: IORedisInstrumentationConfig; + + constructor(config: IORedisInstrumentationConfig = {}) { super( '@opentelemetry/instrumentation-ioredis', VERSION, - Object.assign({}, DEFAULT_CONFIG, _config) + Object.assign({}, DEFAULT_CONFIG, config) ); } diff --git a/plugins/node/opentelemetry-instrumentation-koa/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-koa/src/instrumentation.ts index 742e500122..ab6c2927be 100644 --- a/plugins/node/opentelemetry-instrumentation-koa/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-koa/src/instrumentation.ts @@ -36,11 +36,7 @@ import { /** Koa instrumentation for OpenTelemetry */ export class KoaInstrumentation extends InstrumentationBase { constructor(config: KoaInstrumentationConfig = {}) { - super( - '@opentelemetry/instrumentation-koa', - VERSION, - Object.assign({}, config) - ); + super('@opentelemetry/instrumentation-koa', VERSION, config); } override setConfig(config: KoaInstrumentationConfig = {}) { diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts index f7c9e99d3a..7f9fa8e9c3 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts @@ -58,8 +58,10 @@ export class MongoDBInstrumentation extends InstrumentationBase { private _connectionsUsage!: UpDownCounter; private _poolName!: string; - constructor(protected override _config: MongoDBInstrumentationConfig = {}) { - super('@opentelemetry/instrumentation-mongodb', VERSION, _config); + protected override _config!: MongoDBInstrumentationConfig; + + constructor(config: MongoDBInstrumentationConfig = {}) { + super('@opentelemetry/instrumentation-mongodb', VERSION, config); } override _updateMetricInstruments() { diff --git a/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts index 2e4ba8675e..f4de0bc36a 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts @@ -57,7 +57,7 @@ export class MySQLInstrumentation extends InstrumentationBase { }; private _connectionsUsage!: UpDownCounter; - constructor(config?: MySQLInstrumentationConfig) { + constructor(config: MySQLInstrumentationConfig = {}) { super('@opentelemetry/instrumentation-mysql', VERSION, config); this._setMetricInstruments(); } diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts index e693488de0..18cb1681e0 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts @@ -44,7 +44,7 @@ export class MySQL2Instrumentation extends InstrumentationBase { [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_MYSQL, }; - constructor(config?: MySQL2InstrumentationConfig) { + constructor(config: MySQL2InstrumentationConfig = {}) { super('@opentelemetry/instrumentation-mysql2', VERSION, config); } diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts index c480f3a546..29b86aadba 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts @@ -36,7 +36,7 @@ export class Instrumentation extends InstrumentationBase { }; constructor(config: InstrumentationConfig = {}) { - super('@opentelemetry/instrumentation-nestjs-core', VERSION); + super('@opentelemetry/instrumentation-nestjs-core', VERSION, config); } init() { diff --git a/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts index 49611da87c..b832473ef4 100644 --- a/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts @@ -35,8 +35,8 @@ import { TLSSocket } from 'tls'; import type * as net from 'net'; export class NetInstrumentation extends InstrumentationBase { - constructor(_config?: InstrumentationConfig) { - super('@opentelemetry/instrumentation-net', VERSION, _config); + constructor(config: InstrumentationConfig = {}) { + super('@opentelemetry/instrumentation-net', VERSION, config); } init(): InstrumentationNodeModuleDefinition[] { diff --git a/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts index d8043af302..38ccad0fe4 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts @@ -44,11 +44,7 @@ import { SpanNames } from './enums/SpanNames'; export class PgInstrumentation extends InstrumentationBase { constructor(config: PgInstrumentationConfig = {}) { - super( - '@opentelemetry/instrumentation-pg', - VERSION, - Object.assign({}, config) - ); + super('@opentelemetry/instrumentation-pg', VERSION, config); } protected init() { diff --git a/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts index d5821a2f6f..96a0796cc5 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts @@ -97,7 +97,7 @@ export class PinoInstrumentation extends InstrumentationBase { return this._config; } - override setConfig(config: PinoInstrumentationConfig) { + override setConfig(config: PinoInstrumentationConfig = {}) { this._config = config; } diff --git a/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts index a431fd76ca..75ae380965 100644 --- a/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts @@ -54,8 +54,10 @@ const DEFAULT_CONFIG: RedisInstrumentationConfig = { export class RedisInstrumentation extends InstrumentationBase { static readonly COMPONENT = 'redis'; - constructor(protected override _config: RedisInstrumentationConfig = {}) { - super('@opentelemetry/instrumentation-redis-4', VERSION, _config); + protected override _config!: RedisInstrumentationConfig; + + constructor(config: RedisInstrumentationConfig = {}) { + super('@opentelemetry/instrumentation-redis-4', VERSION, config); } override setConfig(config: RedisInstrumentationConfig = {}) { diff --git a/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts index 09ee03e6ad..85bb908c07 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts @@ -35,8 +35,10 @@ const DEFAULT_CONFIG: RedisInstrumentationConfig = { export class RedisInstrumentation extends InstrumentationBase { static readonly COMPONENT = 'redis'; - constructor(protected override _config: RedisInstrumentationConfig = {}) { - super('@opentelemetry/instrumentation-redis', VERSION, _config); + protected override _config!: RedisInstrumentationConfig; + + constructor(config: RedisInstrumentationConfig = {}) { + super('@opentelemetry/instrumentation-redis', VERSION, config); } override setConfig(config: RedisInstrumentationConfig = {}) { diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts index 73b8b8f5e7..a00c24ba98 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts @@ -40,7 +40,7 @@ export class RestifyInstrumentation extends InstrumentationBase { super( `@opentelemetry/instrumentation-${constants.MODULE_NAME}`, VERSION, - Object.assign({}, config) + config ); } diff --git a/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts index 02e01d287e..fb02262e30 100644 --- a/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts @@ -35,7 +35,7 @@ import AttributeNames from './enums/AttributeNames'; import LayerType from './enums/LayerType'; export default class RouterInstrumentation extends InstrumentationBase { - constructor(config?: InstrumentationConfig) { + constructor(config: InstrumentationConfig = {}) { super( `@opentelemetry/instrumentation-${constants.MODULE_NAME}`, VERSION, diff --git a/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts index 2e75400741..4d4b1cfcc5 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts @@ -116,7 +116,7 @@ export class WinstonInstrumentation extends InstrumentationBase { return this._config; } - override setConfig(config: WinstonInstrumentationConfig) { + override setConfig(config: WinstonInstrumentationConfig = {}) { this._config = config; } diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/src/instrumentation.ts b/plugins/web/opentelemetry-instrumentation-user-interaction/src/instrumentation.ts index bba10b2ff9..ea05bddbf1 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/src/instrumentation.ts +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/src/instrumentation.ts @@ -67,7 +67,7 @@ export class UserInteractionInstrumentation extends InstrumentationBase { private _eventNames: Set; private _shouldPreventSpanCreation: ShouldPreventSpanCreation; - constructor(config?: UserInteractionInstrumentationConfig) { + constructor(config: UserInteractionInstrumentationConfig = {}) { super('@opentelemetry/instrumentation-user-interaction', VERSION, config); this._eventNames = new Set(config?.eventNames ?? DEFAULT_EVENT_NAMES); this._shouldPreventSpanCreation = From 34f56e0e28a0873b69a499c9e91798b19fea8e96 Mon Sep 17 00:00:00 2001 From: Amir Blum Date: Thu, 2 May 2024 09:10:48 +0300 Subject: [PATCH 37/39] fix: remove unuseful patch message from instrumentations (#2161) * chore(mongoose): remove diag prints in patch * chore(tedious): remove diag prints in patch * chore(dns): remove diag prints in patch * chore(fastify): remove diag prints in patch * chore(hapi): remove diag prints in patch * chore(knex): remove diag prints in patch * chore(mysql): remove diag prints in patch * chore(pg): remove diag prints in patch * chore(redis): remove diag prints in patch * docs: document when to use diag for patch * chore: lint markdown * fix: unused import * chore: remove unused import * Update GUIDELINES.md Co-authored-by: Jamie Danielson * Update GUIDELINES.md Co-authored-by: Jamie Danielson * Update GUIDELINES.md Co-authored-by: Jamie Danielson * Update GUIDELINES.md Co-authored-by: Jamie Danielson * Update GUIDELINES.md Co-authored-by: Jamie Danielson * Update GUIDELINES.md Co-authored-by: Trent Mick * fix: name of diag in CHANGELOG --------- Co-authored-by: Jamie Danielson Co-authored-by: Trent Mick --- GUIDELINES.md | 33 +++++++++++++++++++ .../instrumentation-mongoose/src/mongoose.ts | 5 --- .../src/instrumentation.ts | 3 -- .../src/instrumentation.ts | 1 - .../src/instrumentation.ts | 1 - .../src/instrumentation.ts | 3 -- .../src/instrumentation.ts | 5 +-- .../src/instrumentation.ts | 13 -------- .../src/instrumentation.ts | 3 -- .../src/instrumentation.ts | 4 --- 10 files changed, 34 insertions(+), 37 deletions(-) diff --git a/GUIDELINES.md b/GUIDELINES.md index b67f294370..04bc219b14 100644 --- a/GUIDELINES.md +++ b/GUIDELINES.md @@ -164,3 +164,36 @@ To support this use case, you can choose one of the following options: }; ... ``` + +## Diag Logging + +The OpenTelemetry diagnostic logging channel can be used to troubleshoot issues with instrumentation packages. + +### Patching Messages + +When OpenTelemetry is installed in a user application, and expected spans are missing from generated traces, it is often useful to differentiate between the following scenarios: + +- The instrumentation is not auto loaded - due to issue with the require/import interception, an unsupported version of the instrumented package, or some other issue. This knowledge can pin-point the issue to the instrumentation package. +- The instrumentation patch was applied but expected spans are missing -- this can suggest an issue with instrumented package logic, configuration, limits, otel sdk, or other issues. + +It can also be useful to know when the instrumentation is loaded and patched, to understand the order of operations in the application. + +Instrumentation packages should use the `@opentelemetry/instrumentation` package `InstrumentationBase` class to register patches and unpatch callbacks for specific require/import of the instrumented package, it's dependency or an internal module file. When this mechanism is used, the base class will automatically emit a debug message on instrumentation diag component logger, looking like this: + +```shell +@opentelemetry/instrumentation-foo Applying instrumentation patch for module on require hook { + module: 'foo', + version: '1.2.3', + baseDir: '/node_modules/foo' +} +``` + +Instrumentation should not add additional debug messages for triggering the patching and unpatching callbacks, as the base class will handle this. + +Instrumentation may add additional patch/unpatch messages for specific functions if it is expected to help in troubleshooting issues with the instrumentation. Few examples: + +- If the patch logic is conditional, and user can benefit from ensuring the condition is met and the patch happened. `koa` patching logic examine an object and branch between patching it as router vs middleware, which is applied at runtime. `aws-lambda` will abort patching if the environment is not configured properly. +- When the patch is not applied directly on a `moduleExports` object in the `InstrumentationBase` callbacks, but rather from an event in the package, like creating new client instance, registering a listener, etc. `fastify` instrumentation applies a patch when a hook is added to the fastify app instance, which is patched from `moduleExports`. +- In situations where the patch logic is not trivial and it helps to specify patch events in the right context and nuances. `aws-lambda` logs additional properties extracted from the lambda framework and exposes them for troubleshooting. + +The cases above are not covered by the base class and offer additional context to the user troubleshooting an issue with the instrumentation. diff --git a/plugins/node/instrumentation-mongoose/src/mongoose.ts b/plugins/node/instrumentation-mongoose/src/mongoose.ts index 33aa3bf380..ff76b33735 100644 --- a/plugins/node/instrumentation-mongoose/src/mongoose.ts +++ b/plugins/node/instrumentation-mongoose/src/mongoose.ts @@ -137,7 +137,6 @@ export class MongooseInstrumentation extends InstrumentationBase { private patchAggregateExec(moduleVersion: string | undefined) { const self = this; - this._diag.debug('patched mongoose Aggregate exec function'); return (originalAggregate: Function) => { return function exec(this: any, callback?: Function) { if ( @@ -179,7 +178,6 @@ export class MongooseInstrumentation extends InstrumentationBase { private patchQueryExec(moduleVersion: string | undefined) { const self = this; - this._diag.debug('patched mongoose Query exec function'); return (originalExec: Function) => { return function exec(this: any, callback?: Function) { if ( @@ -222,7 +220,6 @@ export class MongooseInstrumentation extends InstrumentationBase { private patchOnModelMethods(op: string, moduleVersion: string | undefined) { const self = this; - this._diag.debug(`patching mongoose Model '${op}' operation`); return (originalOnModelFunction: Function) => { return function method(this: any, options?: any, callback?: Function) { if ( @@ -271,7 +268,6 @@ export class MongooseInstrumentation extends InstrumentationBase { // the aggregate of Model, and set the context on the Aggregate object private patchModelAggregate() { const self = this; - this._diag.debug('patched mongoose model aggregate function'); return (original: Function) => { return function captureSpanContext(this: any) { const currentSpan = trace.getSpan(context.active()); @@ -286,7 +282,6 @@ export class MongooseInstrumentation extends InstrumentationBase { private patchAndCaptureSpanContext(funcName: string) { const self = this; - this._diag.debug(`patching mongoose query ${funcName} function`); return (original: Function) => { return function captureSpanContext(this: any) { this[_STORED_PARENT_SPAN] = trace.getSpan(context.active()); diff --git a/plugins/node/instrumentation-tedious/src/instrumentation.ts b/plugins/node/instrumentation-tedious/src/instrumentation.ts index ba63ce1eae..78b11de517 100644 --- a/plugins/node/instrumentation-tedious/src/instrumentation.ts +++ b/plugins/node/instrumentation-tedious/src/instrumentation.ts @@ -129,9 +129,6 @@ export class TediousInstrumentation extends InstrumentationBase { private _patchQuery(operation: string) { return (originalMethod: UnknownFunction): UnknownFunction => { const thisPlugin = this; - this._diag.debug( - `TediousInstrumentation: patched Connection.prototype.${operation}` - ); function patchedMethod(this: ApproxConnection, request: ApproxRequest) { if (!(request instanceof EventEmitter)) { diff --git a/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts index f408f7f17b..0be1211a60 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts @@ -105,7 +105,6 @@ export class DnsInstrumentation extends InstrumentationBase { private _getPatchLookupFunction( original: (hostname: string, ...args: unknown[]) => void ) { - diag.debug('patch lookup function'); const plugin = this; return function patchedLookup( this: {}, diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts index 914b608fd8..208a2e09a5 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts @@ -194,7 +194,6 @@ export class FastifyInstrumentation extends InstrumentationBase { fastify: () => FastifyInstance; }): () => FastifyInstance { const instrumentation = this; - this._diag.debug('Patching fastify constructor function'); function fastify(this: FastifyInstance, ...args: any) { const app: FastifyInstance = moduleExports.fastify.apply(this, args); diff --git a/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts index af550b137c..ac930ffa68 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts @@ -135,7 +135,6 @@ export class HapiInstrumentation extends InstrumentationBase { original: RegisterFunction ): RegisterFunction { const instrumentation: HapiInstrumentation = this; - api.diag.debug('Patching Hapi.Server register function'); return function register( this: Hapi.Server, pluginInput: HapiPluginInput, @@ -169,7 +168,6 @@ export class HapiInstrumentation extends InstrumentationBase { pluginName?: string ) { const instrumentation: HapiInstrumentation = this; - api.diag.debug('Patching Hapi.Server ext function'); return function ext( this: ThisParameterType, @@ -231,7 +229,6 @@ export class HapiInstrumentation extends InstrumentationBase { pluginName?: string ) { const instrumentation: HapiInstrumentation = this; - api.diag.debug('Patching Hapi.Server route function'); return function route( this: Hapi.Server, route: HapiServerRouteInput diff --git a/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts index 40577aa886..762b9d1455 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts @@ -109,10 +109,7 @@ export class KnexInstrumentation extends InstrumentationBase { ); return Client; }, - (Client: any, moduleVersion) => { - api.diag.debug( - `Removing ${basePath}/client.js patch for ${constants.MODULE_NAME}@${moduleVersion}` - ); + (Client: any) => { this._unwrap(Client.prototype, 'queryBuilder'); this._unwrap(Client.prototype, 'schemaBuilder'); this._unwrap(Client.prototype, 'raw'); diff --git a/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts index f4de0bc36a..cf43c406e6 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts @@ -17,7 +17,6 @@ import { context, Context, - diag, trace, Span, SpanKind, @@ -84,7 +83,6 @@ export class MySQLInstrumentation extends InstrumentationBase { 'mysql', ['2.*'], (moduleExports: typeof mysqlTypes) => { - diag.debug('Patching mysql.createConnection'); if (isWrapped(moduleExports.createConnection)) { this._unwrap(moduleExports, 'createConnection'); } @@ -94,7 +92,6 @@ export class MySQLInstrumentation extends InstrumentationBase { this._patchCreateConnection() as any ); - diag.debug('Patching mysql.createPool'); if (isWrapped(moduleExports.createPool)) { this._unwrap(moduleExports, 'createPool'); } @@ -104,7 +101,6 @@ export class MySQLInstrumentation extends InstrumentationBase { this._patchCreatePool() as any ); - diag.debug('Patching mysql.createPoolCluster'); if (isWrapped(moduleExports.createPoolCluster)) { this._unwrap(moduleExports, 'createPoolCluster'); } @@ -130,7 +126,6 @@ export class MySQLInstrumentation extends InstrumentationBase { private _patchCreateConnection() { return (originalCreateConnection: Function) => { const thisPlugin = this; - diag.debug('MySQLInstrumentation#patch: patched mysql createConnection'); return function createConnection( _connectionUri: string | mysqlTypes.ConnectionConfig @@ -153,7 +148,6 @@ export class MySQLInstrumentation extends InstrumentationBase { private _patchCreatePool() { return (originalCreatePool: Function) => { const thisPlugin = this; - diag.debug('MySQLInstrumentation#patch: patched mysql createPool'); return function createPool(_config: string | mysqlTypes.PoolConfig) { const pool = originalCreatePool(...arguments); @@ -173,7 +167,6 @@ export class MySQLInstrumentation extends InstrumentationBase { private _patchPoolEnd(pool: any) { return (originalPoolEnd: Function) => { const thisPlugin = this; - diag.debug('MySQLInstrumentation#patch: patched mysql pool end'); return function end(callback?: unknown) { const nAll = (pool as any)._allConnections.length; const nFree = (pool as any)._freeConnections.length; @@ -196,7 +189,6 @@ export class MySQLInstrumentation extends InstrumentationBase { private _patchCreatePoolCluster() { return (originalCreatePoolCluster: Function) => { const thisPlugin = this; - diag.debug('MySQLInstrumentation#patch: patched mysql createPoolCluster'); return function createPool(_config: string | mysqlTypes.PoolConfig) { const cluster = originalCreatePoolCluster(...arguments); @@ -215,7 +207,6 @@ export class MySQLInstrumentation extends InstrumentationBase { private _patchAdd(cluster: mysqlTypes.PoolCluster) { return (originalAdd: Function) => { const thisPlugin = this; - diag.debug('MySQLInstrumentation#patch: patched mysql pool cluster add'); return function add(id: string, config: unknown) { // Unwrap if unpatch has been called if (!thisPlugin['_enabled']) { @@ -241,9 +232,6 @@ export class MySQLInstrumentation extends InstrumentationBase { private _patchGetConnection(pool: mysqlTypes.Pool | mysqlTypes.PoolCluster) { return (originalGetConnection: Function) => { const thisPlugin = this; - diag.debug( - 'MySQLInstrumentation#patch: patched mysql pool getConnection' - ); return function getConnection( arg1?: unknown, @@ -308,7 +296,6 @@ export class MySQLInstrumentation extends InstrumentationBase { private _patchQuery(connection: mysqlTypes.Connection | mysqlTypes.Pool) { return (originalQuery: Function): mysqlTypes.QueryFunction => { const thisPlugin = this; - diag.debug('MySQLInstrumentation: patched mysql query'); return function query( query: string | mysqlTypes.Query | mysqlTypes.QueryOptions, diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts index 18cb1681e0..ade7fd117f 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts @@ -56,7 +56,6 @@ export class MySQL2Instrumentation extends InstrumentationBase { (moduleExports: any) => { const ConnectionPrototype: mysqlTypes.Connection = moduleExports.Connection.prototype; - api.diag.debug('Patching Connection.prototype.query'); if (isWrapped(ConnectionPrototype.query)) { this._unwrap(ConnectionPrototype, 'query'); } @@ -91,8 +90,6 @@ export class MySQL2Instrumentation extends InstrumentationBase { private _patchQuery(format: formatType, isPrepared: boolean) { return (originalQuery: Function): Function => { const thisPlugin = this; - api.diag.debug('MySQL2Instrumentation: patched mysql query/execute'); - return function query( this: mysqlTypes.Connection, query: string | mysqlTypes.Query | mysqlTypes.QueryOptions, diff --git a/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts index 85bb908c07..8d6f2ba88d 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { diag } from '@opentelemetry/api'; import { isWrapped, InstrumentationBase, @@ -51,7 +50,6 @@ export class RedisInstrumentation extends InstrumentationBase { 'redis', ['^2.6.0', '^3.0.0'], moduleExports => { - diag.debug('Patching redis.RedisClient.internal_send_command'); if ( isWrapped( moduleExports.RedisClient.prototype['internal_send_command'] @@ -68,7 +66,6 @@ export class RedisInstrumentation extends InstrumentationBase { this._getPatchInternalSendCommand() ); - diag.debug('patching redis.RedisClient.create_stream'); if (isWrapped(moduleExports.RedisClient.prototype['create_stream'])) { this._unwrap(moduleExports.RedisClient.prototype, 'create_stream'); } @@ -78,7 +75,6 @@ export class RedisInstrumentation extends InstrumentationBase { this._getPatchCreateStream() ); - diag.debug('patching redis.createClient'); if (isWrapped(moduleExports.createClient)) { this._unwrap(moduleExports, 'createClient'); } From a2e2b5a1aa2910b903829d215184c43d2107b9ac Mon Sep 17 00:00:00 2001 From: Daniel Dyla Date: Thu, 2 May 2024 03:51:55 -0400 Subject: [PATCH 38/39] chore: release main (#2164) * chore: release main * chore: sync package-lock.json --------- Co-authored-by: opentelemetrybot <107717825+opentelemetrybot@users.noreply.github.com> --- .release-please-manifest.json | 24 +++---- .../auto-instrumentations-node/CHANGELOG.md | 26 +++++++ .../auto-instrumentations-node/package.json | 24 +++---- package-lock.json | 68 +++++++++---------- .../instrumentation-mongoose/CHANGELOG.md | 7 ++ .../instrumentation-mongoose/package.json | 2 +- .../node/instrumentation-tedious/CHANGELOG.md | 7 ++ .../node/instrumentation-tedious/package.json | 2 +- .../CHANGELOG.md | 7 ++ .../package.json | 2 +- .../CHANGELOG.md | 7 ++ .../package.json | 2 +- .../CHANGELOG.md | 12 ++++ .../package.json | 2 +- .../CHANGELOG.md | 8 +++ .../package.json | 2 +- .../CHANGELOG.md | 7 ++ .../package.json | 2 +- .../CHANGELOG.md | 7 ++ .../package.json | 2 +- .../CHANGELOG.md | 7 ++ .../package.json | 2 +- .../CHANGELOG.md | 7 ++ .../package.json | 2 +- .../CHANGELOG.md | 8 +++ .../package.json | 2 +- 26 files changed, 179 insertions(+), 69 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index ea3c50877d..eb6cd74761 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -6,7 +6,7 @@ "detectors/node/opentelemetry-resource-detector-gcp": "0.29.9", "detectors/node/opentelemetry-resource-detector-github": "0.28.2", "detectors/node/opentelemetry-resource-detector-instana": "0.9.0", - "metapackages/auto-instrumentations-node": "0.45.0", + "metapackages/auto-instrumentations-node": "0.46.0", "metapackages/auto-instrumentations-web": "0.39.0", "packages/opentelemetry-host-metrics": "0.35.1", "packages/opentelemetry-id-generator-aws-xray": "1.2.2", @@ -20,34 +20,34 @@ "plugins/node/instrumentation-dataloader": "0.9.0", "plugins/node/instrumentation-fs": "0.12.0", "plugins/node/instrumentation-lru-memoizer": "0.37.0", - "plugins/node/instrumentation-mongoose": "0.38.0", + "plugins/node/instrumentation-mongoose": "0.38.1", "plugins/node/instrumentation-runtime-node": "0.4.0", "plugins/node/instrumentation-socket.io": "0.39.0", - "plugins/node/instrumentation-tedious": "0.10.0", + "plugins/node/instrumentation-tedious": "0.10.1", "plugins/node/instrumentation-undici": "0.2.0", "plugins/node/opentelemetry-instrumentation-aws-lambda": "0.41.0", "plugins/node/opentelemetry-instrumentation-aws-sdk": "0.41.0", "plugins/node/opentelemetry-instrumentation-bunyan": "0.38.0", "plugins/node/opentelemetry-instrumentation-cassandra": "0.38.0", "plugins/node/opentelemetry-instrumentation-connect": "0.36.0", - "plugins/node/opentelemetry-instrumentation-dns": "0.36.0", + "plugins/node/opentelemetry-instrumentation-dns": "0.36.1", "plugins/node/opentelemetry-instrumentation-express": "0.38.0", - "plugins/node/opentelemetry-instrumentation-fastify": "0.36.0", + "plugins/node/opentelemetry-instrumentation-fastify": "0.36.1", "plugins/node/opentelemetry-instrumentation-generic-pool": "0.36.0", "plugins/node/opentelemetry-instrumentation-graphql": "0.40.0", - "plugins/node/opentelemetry-instrumentation-hapi": "0.37.0", + "plugins/node/opentelemetry-instrumentation-hapi": "0.38.0", "plugins/node/opentelemetry-instrumentation-ioredis": "0.40.0", - "plugins/node/opentelemetry-instrumentation-knex": "0.36.0", + "plugins/node/opentelemetry-instrumentation-knex": "0.36.1", "plugins/node/opentelemetry-instrumentation-koa": "0.40.0", "plugins/node/opentelemetry-instrumentation-memcached": "0.36.0", "plugins/node/opentelemetry-instrumentation-mongodb": "0.43.0", - "plugins/node/opentelemetry-instrumentation-mysql": "0.38.0", - "plugins/node/opentelemetry-instrumentation-mysql2": "0.38.0", - "plugins/node/opentelemetry-instrumentation-nestjs-core": "0.37.0", + "plugins/node/opentelemetry-instrumentation-mysql": "0.38.1", + "plugins/node/opentelemetry-instrumentation-mysql2": "0.38.1", + "plugins/node/opentelemetry-instrumentation-nestjs-core": "0.37.1", "plugins/node/opentelemetry-instrumentation-net": "0.36.0", "plugins/node/opentelemetry-instrumentation-pg": "0.41.0", - "plugins/node/opentelemetry-instrumentation-pino": "0.38.0", - "plugins/node/opentelemetry-instrumentation-redis": "0.39.0", + "plugins/node/opentelemetry-instrumentation-pino": "0.39.0", + "plugins/node/opentelemetry-instrumentation-redis": "0.39.1", "plugins/node/opentelemetry-instrumentation-redis-4": "0.39.0", "plugins/node/opentelemetry-instrumentation-restify": "0.38.0", "plugins/node/opentelemetry-instrumentation-router": "0.37.0", diff --git a/metapackages/auto-instrumentations-node/CHANGELOG.md b/metapackages/auto-instrumentations-node/CHANGELOG.md index 51b021f535..31f144fd3d 100644 --- a/metapackages/auto-instrumentations-node/CHANGELOG.md +++ b/metapackages/auto-instrumentations-node/CHANGELOG.md @@ -152,6 +152,32 @@ * dependencies * @opentelemetry/instrumentation-aws-sdk bumped from ^0.38.0 to ^0.38.1 +## [0.46.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-node-v0.45.0...auto-instrumentations-node-v0.46.0) (2024-05-02) + + +### Features + +* **auto-instrumentation-node:** add azure detector ([#2101](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2101)) ([af2f3f1](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/af2f3f1e5a2608900fcea721f08b2e541a17927c)) +* **auto-instrumentation-node:** add options for `serviceinstance` ([#2158](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2158)) ([379b757](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/379b7571fe3fead239285b503581094f42a79d66)) +* **auto-instrumentation-node:** add undici instrumentation ([#2131](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2131)) ([4463483](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4463483515c335de4cbb5b066f92c7ce0336619a)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/instrumentation-dns bumped from ^0.36.0 to ^0.36.1 + * @opentelemetry/instrumentation-fastify bumped from ^0.36.0 to ^0.36.1 + * @opentelemetry/instrumentation-hapi bumped from ^0.37.0 to ^0.38.0 + * @opentelemetry/instrumentation-knex bumped from ^0.36.0 to ^0.36.1 + * @opentelemetry/instrumentation-mongoose bumped from ^0.38.0 to ^0.38.1 + * @opentelemetry/instrumentation-mysql bumped from ^0.38.0 to ^0.38.1 + * @opentelemetry/instrumentation-mysql2 bumped from ^0.38.0 to ^0.38.1 + * @opentelemetry/instrumentation-nestjs-core bumped from ^0.37.0 to ^0.37.1 + * @opentelemetry/instrumentation-pino bumped from ^0.38.0 to ^0.39.0 + * @opentelemetry/instrumentation-redis bumped from ^0.39.0 to ^0.39.1 + * @opentelemetry/instrumentation-tedious bumped from ^0.10.0 to ^0.10.1 + ## [0.45.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-node-v0.44.0...auto-instrumentations-node-v0.45.0) (2024-04-25) diff --git a/metapackages/auto-instrumentations-node/package.json b/metapackages/auto-instrumentations-node/package.json index e4b40119a1..0a3ae85cc1 100644 --- a/metapackages/auto-instrumentations-node/package.json +++ b/metapackages/auto-instrumentations-node/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/auto-instrumentations-node", - "version": "0.45.0", + "version": "0.46.0", "description": "Metapackage which bundles opentelemetry node core and contrib instrumentations", "author": "OpenTelemetry Authors", "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/metapackages/auto-instrumentations-node#readme", @@ -58,34 +58,34 @@ "@opentelemetry/instrumentation-connect": "^0.36.0", "@opentelemetry/instrumentation-cucumber": "^0.6.0", "@opentelemetry/instrumentation-dataloader": "^0.9.0", - "@opentelemetry/instrumentation-dns": "^0.36.0", + "@opentelemetry/instrumentation-dns": "^0.36.1", "@opentelemetry/instrumentation-express": "^0.38.0", - "@opentelemetry/instrumentation-fastify": "^0.36.0", + "@opentelemetry/instrumentation-fastify": "^0.36.1", "@opentelemetry/instrumentation-fs": "^0.12.0", "@opentelemetry/instrumentation-generic-pool": "^0.36.0", "@opentelemetry/instrumentation-graphql": "^0.40.0", "@opentelemetry/instrumentation-grpc": "^0.51.0", - "@opentelemetry/instrumentation-hapi": "^0.37.0", + "@opentelemetry/instrumentation-hapi": "^0.38.0", "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/instrumentation-ioredis": "^0.40.0", - "@opentelemetry/instrumentation-knex": "^0.36.0", + "@opentelemetry/instrumentation-knex": "^0.36.1", "@opentelemetry/instrumentation-koa": "^0.40.0", "@opentelemetry/instrumentation-lru-memoizer": "^0.37.0", "@opentelemetry/instrumentation-memcached": "^0.36.0", "@opentelemetry/instrumentation-mongodb": "^0.43.0", - "@opentelemetry/instrumentation-mongoose": "^0.38.0", - "@opentelemetry/instrumentation-mysql": "^0.38.0", - "@opentelemetry/instrumentation-mysql2": "^0.38.0", - "@opentelemetry/instrumentation-nestjs-core": "^0.37.0", + "@opentelemetry/instrumentation-mongoose": "^0.38.1", + "@opentelemetry/instrumentation-mysql": "^0.38.1", + "@opentelemetry/instrumentation-mysql2": "^0.38.1", + "@opentelemetry/instrumentation-nestjs-core": "^0.37.1", "@opentelemetry/instrumentation-net": "^0.36.0", "@opentelemetry/instrumentation-pg": "^0.41.0", - "@opentelemetry/instrumentation-pino": "^0.38.0", - "@opentelemetry/instrumentation-redis": "^0.39.0", + "@opentelemetry/instrumentation-pino": "^0.39.0", + "@opentelemetry/instrumentation-redis": "^0.39.1", "@opentelemetry/instrumentation-redis-4": "^0.39.0", "@opentelemetry/instrumentation-restify": "^0.38.0", "@opentelemetry/instrumentation-router": "^0.37.0", "@opentelemetry/instrumentation-socket.io": "^0.39.0", - "@opentelemetry/instrumentation-tedious": "^0.10.0", + "@opentelemetry/instrumentation-tedious": "^0.10.1", "@opentelemetry/instrumentation-undici": "^0.2.0", "@opentelemetry/instrumentation-winston": "^0.37.0", "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", diff --git a/package-lock.json b/package-lock.json index 72cbe122ef..a5edc671e2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -281,7 +281,7 @@ }, "metapackages/auto-instrumentations-node": { "name": "@opentelemetry/auto-instrumentations-node", - "version": "0.45.0", + "version": "0.46.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -293,34 +293,34 @@ "@opentelemetry/instrumentation-connect": "^0.36.0", "@opentelemetry/instrumentation-cucumber": "^0.6.0", "@opentelemetry/instrumentation-dataloader": "^0.9.0", - "@opentelemetry/instrumentation-dns": "^0.36.0", + "@opentelemetry/instrumentation-dns": "^0.36.1", "@opentelemetry/instrumentation-express": "^0.38.0", - "@opentelemetry/instrumentation-fastify": "^0.36.0", + "@opentelemetry/instrumentation-fastify": "^0.36.1", "@opentelemetry/instrumentation-fs": "^0.12.0", "@opentelemetry/instrumentation-generic-pool": "^0.36.0", "@opentelemetry/instrumentation-graphql": "^0.40.0", "@opentelemetry/instrumentation-grpc": "^0.51.0", - "@opentelemetry/instrumentation-hapi": "^0.37.0", + "@opentelemetry/instrumentation-hapi": "^0.38.0", "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/instrumentation-ioredis": "^0.40.0", - "@opentelemetry/instrumentation-knex": "^0.36.0", + "@opentelemetry/instrumentation-knex": "^0.36.1", "@opentelemetry/instrumentation-koa": "^0.40.0", "@opentelemetry/instrumentation-lru-memoizer": "^0.37.0", "@opentelemetry/instrumentation-memcached": "^0.36.0", "@opentelemetry/instrumentation-mongodb": "^0.43.0", - "@opentelemetry/instrumentation-mongoose": "^0.38.0", - "@opentelemetry/instrumentation-mysql": "^0.38.0", - "@opentelemetry/instrumentation-mysql2": "^0.38.0", - "@opentelemetry/instrumentation-nestjs-core": "^0.37.0", + "@opentelemetry/instrumentation-mongoose": "^0.38.1", + "@opentelemetry/instrumentation-mysql": "^0.38.1", + "@opentelemetry/instrumentation-mysql2": "^0.38.1", + "@opentelemetry/instrumentation-nestjs-core": "^0.37.1", "@opentelemetry/instrumentation-net": "^0.36.0", "@opentelemetry/instrumentation-pg": "^0.41.0", - "@opentelemetry/instrumentation-pino": "^0.38.0", - "@opentelemetry/instrumentation-redis": "^0.39.0", + "@opentelemetry/instrumentation-pino": "^0.39.0", + "@opentelemetry/instrumentation-redis": "^0.39.1", "@opentelemetry/instrumentation-redis-4": "^0.39.0", "@opentelemetry/instrumentation-restify": "^0.38.0", "@opentelemetry/instrumentation-router": "^0.37.0", "@opentelemetry/instrumentation-socket.io": "^0.39.0", - "@opentelemetry/instrumentation-tedious": "^0.10.0", + "@opentelemetry/instrumentation-tedious": "^0.10.1", "@opentelemetry/instrumentation-undici": "^0.2.0", "@opentelemetry/instrumentation-winston": "^0.37.0", "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", @@ -37677,7 +37677,7 @@ }, "plugins/node/instrumentation-mongoose": { "name": "@opentelemetry/instrumentation-mongoose", - "version": "0.38.0", + "version": "0.38.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -38003,7 +38003,7 @@ }, "plugins/node/instrumentation-tedious": { "name": "@opentelemetry/instrumentation-tedious", - "version": "0.10.0", + "version": "0.10.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -38261,7 +38261,7 @@ }, "plugins/node/opentelemetry-instrumentation-dns": { "name": "@opentelemetry/instrumentation-dns", - "version": "0.36.0", + "version": "0.36.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -38329,7 +38329,7 @@ }, "plugins/node/opentelemetry-instrumentation-fastify": { "name": "@opentelemetry/instrumentation-fastify", - "version": "0.36.0", + "version": "0.36.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -38477,7 +38477,7 @@ }, "plugins/node/opentelemetry-instrumentation-hapi": { "name": "@opentelemetry/instrumentation-hapi", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -38545,7 +38545,7 @@ }, "plugins/node/opentelemetry-instrumentation-knex": { "name": "@opentelemetry/instrumentation-knex", - "version": "0.36.0", + "version": "0.36.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -38839,7 +38839,7 @@ }, "plugins/node/opentelemetry-instrumentation-mysql": { "name": "@opentelemetry/instrumentation-mysql", - "version": "0.38.0", + "version": "0.38.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -38872,7 +38872,7 @@ }, "plugins/node/opentelemetry-instrumentation-mysql2": { "name": "@opentelemetry/instrumentation-mysql2", - "version": "0.38.0", + "version": "0.38.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -38938,7 +38938,7 @@ }, "plugins/node/opentelemetry-instrumentation-nestjs-core": { "name": "@opentelemetry/instrumentation-nestjs-core", - "version": "0.37.0", + "version": "0.37.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -39080,7 +39080,7 @@ }, "plugins/node/opentelemetry-instrumentation-pino": { "name": "@opentelemetry/instrumentation-pino", - "version": "0.38.0", + "version": "0.39.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0" @@ -39147,7 +39147,7 @@ }, "plugins/node/opentelemetry-instrumentation-redis": { "name": "@opentelemetry/instrumentation-redis", - "version": "0.39.0", + "version": "0.39.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -46505,34 +46505,34 @@ "@opentelemetry/instrumentation-connect": "^0.36.0", "@opentelemetry/instrumentation-cucumber": "^0.6.0", "@opentelemetry/instrumentation-dataloader": "^0.9.0", - "@opentelemetry/instrumentation-dns": "^0.36.0", + "@opentelemetry/instrumentation-dns": "^0.36.1", "@opentelemetry/instrumentation-express": "^0.38.0", - "@opentelemetry/instrumentation-fastify": "^0.36.0", + "@opentelemetry/instrumentation-fastify": "^0.36.1", "@opentelemetry/instrumentation-fs": "^0.12.0", "@opentelemetry/instrumentation-generic-pool": "^0.36.0", "@opentelemetry/instrumentation-graphql": "^0.40.0", "@opentelemetry/instrumentation-grpc": "^0.51.0", - "@opentelemetry/instrumentation-hapi": "^0.37.0", + "@opentelemetry/instrumentation-hapi": "^0.38.0", "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/instrumentation-ioredis": "^0.40.0", - "@opentelemetry/instrumentation-knex": "^0.36.0", + "@opentelemetry/instrumentation-knex": "^0.36.1", "@opentelemetry/instrumentation-koa": "^0.40.0", "@opentelemetry/instrumentation-lru-memoizer": "^0.37.0", "@opentelemetry/instrumentation-memcached": "^0.36.0", "@opentelemetry/instrumentation-mongodb": "^0.43.0", - "@opentelemetry/instrumentation-mongoose": "^0.38.0", - "@opentelemetry/instrumentation-mysql": "^0.38.0", - "@opentelemetry/instrumentation-mysql2": "^0.38.0", - "@opentelemetry/instrumentation-nestjs-core": "^0.37.0", + "@opentelemetry/instrumentation-mongoose": "^0.38.1", + "@opentelemetry/instrumentation-mysql": "^0.38.1", + "@opentelemetry/instrumentation-mysql2": "^0.38.1", + "@opentelemetry/instrumentation-nestjs-core": "^0.37.1", "@opentelemetry/instrumentation-net": "^0.36.0", "@opentelemetry/instrumentation-pg": "^0.41.0", - "@opentelemetry/instrumentation-pino": "^0.38.0", - "@opentelemetry/instrumentation-redis": "^0.39.0", + "@opentelemetry/instrumentation-pino": "^0.39.0", + "@opentelemetry/instrumentation-redis": "^0.39.1", "@opentelemetry/instrumentation-redis-4": "^0.39.0", "@opentelemetry/instrumentation-restify": "^0.38.0", "@opentelemetry/instrumentation-router": "^0.37.0", "@opentelemetry/instrumentation-socket.io": "^0.39.0", - "@opentelemetry/instrumentation-tedious": "^0.10.0", + "@opentelemetry/instrumentation-tedious": "^0.10.1", "@opentelemetry/instrumentation-undici": "^0.2.0", "@opentelemetry/instrumentation-winston": "^0.37.0", "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", diff --git a/plugins/node/instrumentation-mongoose/CHANGELOG.md b/plugins/node/instrumentation-mongoose/CHANGELOG.md index 4015c327a4..3ecd94b550 100644 --- a/plugins/node/instrumentation-mongoose/CHANGELOG.md +++ b/plugins/node/instrumentation-mongoose/CHANGELOG.md @@ -6,6 +6,13 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.38.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mongoose-v0.38.0...instrumentation-mongoose-v0.38.1) (2024-05-02) + + +### Bug Fixes + +* remove unuseful patch message from instrumentations ([#2161](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2161)) ([34f56e0](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/34f56e0e28a0873b69a499c9e91798b19fea8e96)) + ## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mongoose-v0.37.0...instrumentation-mongoose-v0.38.0) (2024-04-25) diff --git a/plugins/node/instrumentation-mongoose/package.json b/plugins/node/instrumentation-mongoose/package.json index ea57263dfd..e67c4b4aa5 100644 --- a/plugins/node/instrumentation-mongoose/package.json +++ b/plugins/node/instrumentation-mongoose/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-mongoose", - "version": "0.38.0", + "version": "0.38.1", "description": "OpenTelemetry automatic instrumentation package for mongoose", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/instrumentation-tedious/CHANGELOG.md b/plugins/node/instrumentation-tedious/CHANGELOG.md index 875d355bd0..455ad22ac5 100644 --- a/plugins/node/instrumentation-tedious/CHANGELOG.md +++ b/plugins/node/instrumentation-tedious/CHANGELOG.md @@ -6,6 +6,13 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.10.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-tedious-v0.10.0...instrumentation-tedious-v0.10.1) (2024-05-02) + + +### Bug Fixes + +* remove unuseful patch message from instrumentations ([#2161](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2161)) ([34f56e0](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/34f56e0e28a0873b69a499c9e91798b19fea8e96)) + ## [0.10.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-tedious-v0.9.0...instrumentation-tedious-v0.10.0) (2024-04-25) diff --git a/plugins/node/instrumentation-tedious/package.json b/plugins/node/instrumentation-tedious/package.json index 8d2948bf55..4474df3657 100644 --- a/plugins/node/instrumentation-tedious/package.json +++ b/plugins/node/instrumentation-tedious/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-tedious", - "version": "0.10.0", + "version": "0.10.1", "description": "OpenTelemetry instrumentation for `tedious`", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-dns/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-dns/CHANGELOG.md index 0eb643eff4..ff4e23d5ae 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-dns/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.36.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-dns-v0.36.0...instrumentation-dns-v0.36.1) (2024-05-02) + + +### Bug Fixes + +* remove unuseful patch message from instrumentations ([#2161](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2161)) ([34f56e0](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/34f56e0e28a0873b69a499c9e91798b19fea8e96)) + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-dns-v0.35.0...instrumentation-dns-v0.36.0) (2024-04-25) diff --git a/plugins/node/opentelemetry-instrumentation-dns/package.json b/plugins/node/opentelemetry-instrumentation-dns/package.json index d7796a9a05..f22e99e808 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/package.json +++ b/plugins/node/opentelemetry-instrumentation-dns/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-dns", - "version": "0.36.0", + "version": "0.36.1", "description": "OpenTelemetry dns automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-fastify/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-fastify/CHANGELOG.md index 7b829e6bd7..e74deb3ea1 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-fastify/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.36.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-fastify-v0.36.0...instrumentation-fastify-v0.36.1) (2024-05-02) + + +### Bug Fixes + +* remove unuseful patch message from instrumentations ([#2161](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2161)) ([34f56e0](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/34f56e0e28a0873b69a499c9e91798b19fea8e96)) + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-fastify-v0.35.0...instrumentation-fastify-v0.36.0) (2024-04-25) diff --git a/plugins/node/opentelemetry-instrumentation-fastify/package.json b/plugins/node/opentelemetry-instrumentation-fastify/package.json index fe7cf44d17..f8ab73c62d 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/package.json +++ b/plugins/node/opentelemetry-instrumentation-fastify/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-fastify", - "version": "0.36.0", + "version": "0.36.1", "description": "OpenTelemetry fastify automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-hapi/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-hapi/CHANGELOG.md index b6da07df1d..7bf0defa8b 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-hapi/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-hapi-v0.37.0...instrumentation-hapi-v0.38.0) (2024-05-02) + + +### Features + +* **instrumentation-hapi:** support v21 ([#1985](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1985)) ([eb6e8ef](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/eb6e8ef6b4c72710a98ed3590392b85c8c3b79e5)) + + +### Bug Fixes + +* remove unuseful patch message from instrumentations ([#2161](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2161)) ([34f56e0](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/34f56e0e28a0873b69a499c9e91798b19fea8e96)) + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-hapi-v0.36.0...instrumentation-hapi-v0.37.0) (2024-04-25) diff --git a/plugins/node/opentelemetry-instrumentation-hapi/package.json b/plugins/node/opentelemetry-instrumentation-hapi/package.json index 9308e2555a..0f3bda5fb2 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/package.json +++ b/plugins/node/opentelemetry-instrumentation-hapi/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-hapi", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry Hapi automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-knex/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-knex/CHANGELOG.md index 18f3a52d96..3236c252cd 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-knex/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.36.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-knex-v0.36.0...instrumentation-knex-v0.36.1) (2024-05-02) + + +### Bug Fixes + +* **instr-knex:** set correct SpanKind for traces ([#2157](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2157)) ([2d07c18](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/2d07c1858bad8461dd7bd411e56f6305664ca331)) +* remove unuseful patch message from instrumentations ([#2161](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2161)) ([34f56e0](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/34f56e0e28a0873b69a499c9e91798b19fea8e96)) + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-knex-v0.35.0...instrumentation-knex-v0.36.0) (2024-04-25) diff --git a/plugins/node/opentelemetry-instrumentation-knex/package.json b/plugins/node/opentelemetry-instrumentation-knex/package.json index f14eceee31..b88ab6dc6e 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/package.json +++ b/plugins/node/opentelemetry-instrumentation-knex/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-knex", - "version": "0.36.0", + "version": "0.36.1", "description": "OpenTelemetry Knex automatic instrumentation package", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-mysql/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-mysql/CHANGELOG.md index 91143d0b57..8ca1ed7f1e 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-mysql/CHANGELOG.md @@ -6,6 +6,13 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.38.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql-v0.38.0...instrumentation-mysql-v0.38.1) (2024-05-02) + + +### Bug Fixes + +* remove unuseful patch message from instrumentations ([#2161](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2161)) ([34f56e0](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/34f56e0e28a0873b69a499c9e91798b19fea8e96)) + ## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql-v0.37.0...instrumentation-mysql-v0.38.0) (2024-04-25) diff --git a/plugins/node/opentelemetry-instrumentation-mysql/package.json b/plugins/node/opentelemetry-instrumentation-mysql/package.json index ce0277b1c9..7c8a6bec9e 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-mysql", - "version": "0.38.0", + "version": "0.38.1", "description": "OpenTelemetry mysql automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-mysql2/CHANGELOG.md index 71f8a078d8..54125f5ba2 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-mysql2/CHANGELOG.md @@ -6,6 +6,13 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.38.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql2-v0.38.0...instrumentation-mysql2-v0.38.1) (2024-05-02) + + +### Bug Fixes + +* remove unuseful patch message from instrumentations ([#2161](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2161)) ([34f56e0](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/34f56e0e28a0873b69a499c9e91798b19fea8e96)) + ## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql2-v0.37.0...instrumentation-mysql2-v0.38.0) (2024-04-25) diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/package.json b/plugins/node/opentelemetry-instrumentation-mysql2/package.json index 173fc951ef..7ae9310af3 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql2/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-mysql2", - "version": "0.38.0", + "version": "0.38.1", "description": "OpenTelemetry mysql2 automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-nestjs-core/CHANGELOG.md index c66090e0d2..3419f0bc3b 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.37.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-nestjs-core-v0.37.0...instrumentation-nestjs-core-v0.37.1) (2024-05-02) + + +### Performance Improvements + +* **instrumentation-nestjs-core:** extract reusable span attributes to outer scope ([#2087](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2087)) ([405472d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/405472df3b1d218daab79e9caa7c8a51c3d7a7bf)) + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-nestjs-core-v0.36.0...instrumentation-nestjs-core-v0.37.0) (2024-04-25) diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json index fc46a4da7d..d6b7964932 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-nestjs-core", - "version": "0.37.0", + "version": "0.37.1", "description": "OpenTelemetry NestJS automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-pino/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-pino/CHANGELOG.md index 2b6f08b518..c5027eb721 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-pino/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-pino-v0.38.0...instrumentation-pino-v0.39.0) (2024-05-02) + + +### Features + +* **pino:** support new pino version ^9.0.0 ([#2163](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2163)) ([585b833](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/585b833dc8e911c17b483e871f752ad4988cee5a)) + ## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-pino-v0.37.0...instrumentation-pino-v0.38.0) (2024-04-25) diff --git a/plugins/node/opentelemetry-instrumentation-pino/package.json b/plugins/node/opentelemetry-instrumentation-pino/package.json index f8054397cb..7cf0afeec6 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/package.json +++ b/plugins/node/opentelemetry-instrumentation-pino/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-pino", - "version": "0.38.0", + "version": "0.39.0", "description": "OpenTelemetry instrumentation for pino", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-redis/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-redis/CHANGELOG.md index 163febd386..cd856dc0a7 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-redis/CHANGELOG.md @@ -12,6 +12,14 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.39.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-redis-v0.39.0...instrumentation-redis-v0.39.1) (2024-05-02) + + +### Bug Fixes + +* **instrumentation-redis:** Take host and port used for connection ([#2072](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2072)) ([3ad9fdf](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/3ad9fdfe1e18e597f31bb546d9b00824a7d1ffe9)) +* remove unuseful patch message from instrumentations ([#2161](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2161)) ([34f56e0](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/34f56e0e28a0873b69a499c9e91798b19fea8e96)) + ## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-redis-v0.38.0...instrumentation-redis-v0.39.0) (2024-04-25) diff --git a/plugins/node/opentelemetry-instrumentation-redis/package.json b/plugins/node/opentelemetry-instrumentation-redis/package.json index 2e30c9f96b..4515a23f3d 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/package.json +++ b/plugins/node/opentelemetry-instrumentation-redis/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-redis", - "version": "0.39.0", + "version": "0.39.1", "description": "Automatic OpenTelemetry instrumentation for redis package version 2 and 3", "main": "build/src/index.js", "types": "build/src/index.d.ts", From 6e6ef624dde33ca943d95bacc1d1abafd125e90b Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Thu, 2 May 2024 14:00:05 +0200 Subject: [PATCH 39/39] fix: remove postgres example (security) (#2171) --- examples/postgres/README.md | 109 ---------------------------- examples/postgres/client.js | 33 --------- examples/postgres/images/jaeger.png | Bin 139647 -> 0 bytes examples/postgres/images/zipkin.png | Bin 109072 -> 0 bytes examples/postgres/package.json | 48 ------------ examples/postgres/server.js | 54 -------------- examples/postgres/setupPsql.js | 32 -------- examples/postgres/tracer.js | 43 ----------- 8 files changed, 319 deletions(-) delete mode 100644 examples/postgres/README.md delete mode 100644 examples/postgres/client.js delete mode 100644 examples/postgres/images/jaeger.png delete mode 100644 examples/postgres/images/zipkin.png delete mode 100644 examples/postgres/package.json delete mode 100644 examples/postgres/server.js delete mode 100644 examples/postgres/setupPsql.js delete mode 100644 examples/postgres/tracer.js diff --git a/examples/postgres/README.md b/examples/postgres/README.md deleted file mode 100644 index 4b29d482c8..0000000000 --- a/examples/postgres/README.md +++ /dev/null @@ -1,109 +0,0 @@ -# Overview - -OpenTelemetry PostgreSQL Instrumentation allows the user to automatically collect trace data and export them to the backend of choice (we can use Zipkin or Jaeger for this example), to give observability to distributed systems. - -This is a simple example that demonstrates tracing HTTP request from client to server. The example -shows key aspects of tracing such as - -- Root Span (on Client) -- Child Span (on Client) -- Child Span from a Remote Parent (on Server) -- SpanContext Propagation (from Client to Server) -- Span Events -- Span Attributes - -## Installation - -```sh -# from this directory -npm install -``` - -Setup [Zipkin Tracing](https://zipkin.io/pages/quickstart.html) -or -Setup [Jaeger Tracing](https://www.jaegertracing.io/docs/latest/getting-started/#all-in-one) - -## Run the Application - -### Zipkin - -- Start postgres via docker - - ```sh - # from this directory - npm run docker:start - ``` - -- Run the server - - ```sh - # from this directory - npm run zipkin:server - ``` - -- Run the client - - ```sh - # from this directory - npm run zipkin:client - ``` - -- Cleanup docker - - ```sh - # from this directory - npm run docker:stop - ``` - -#### Zipkin UI - -`zipkin:server` script should output the `traceid` in the terminal (e.g `traceid: 4815c3d576d930189725f1f1d1bdfcc6`). -Go to Zipkin with your browser (e.g ) - -

- -### Jaeger - -- Start postgres via docker - - ```sh - # from this directory - npm run docker:start - ``` - -- Run the server - - ```sh - # from this directory - npm run jaeger:server - ``` - -- Run the client - - ```sh - # from this directory - npm run jaeger:client - ``` - -- Cleanup docker - - ```sh - # from this directory - npm run docker:stop - ``` - -#### Jaeger UI - -`jaeger:server` script should output the `traceid` in the terminal (e.g `traceid: 4815c3d576d930189725f1f1d1bdfcc6`). -Go to Jaeger with your browser (e.g ) - -

- -## Useful links - -- For more information on OpenTelemetry, visit: -- For more information on OpenTelemetry for Node.js, visit: - -## LICENSE - -Apache License 2.0 diff --git a/examples/postgres/client.js b/examples/postgres/client.js deleted file mode 100644 index 86e96ad263..0000000000 --- a/examples/postgres/client.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -const api = require('@opentelemetry/api'); -const tracer = require('./tracer')('postgres-client-service'); -// eslint-disable-next-line import/order -const http = require('http'); - -function makeRequest() { - const span = tracer.startSpan('makeRequest'); - const randomId = Math.floor(Math.random() * 10); - api.context.with(api.trace.setSpan(api.ROOT_CONTEXT, span), () => { - console.log('Client traceId ', span.spanContext().traceId); - http.get({ - host: 'localhost', - port: 3000, - path: `/insert?id=${randomId}&text=randomstring`, - }); - - http.get({ - host: 'localhost', - port: 3000, - path: `/get?id=${randomId}`, - }); - }); - - // The process must live for at least the interval past any traces that - // must be exported, or some risk being lost if they are recorded after the - // last export. - console.log('Sleeping 5 seconds before shutdown to ensure all records are flushed.'); - setTimeout(() => { console.log('Completed.'); }, 5000); -} - -makeRequest(); diff --git a/examples/postgres/images/jaeger.png b/examples/postgres/images/jaeger.png deleted file mode 100644 index aaecd50a56fa92395a2291edb8151a5f7e6724c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139647 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ð|y9YCf&p9XM`T?1hn#mEkstz$AM3I~Z;x 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%0Du?zwFHvUN?qiLI8E97ZwO1-qRUez$_W&C2a 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≫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 diff --git a/examples/postgres/images/zipkin.png b/examples/postgres/images/zipkin.png deleted file mode 100644 index ea907ae04786b78d9ec559852ec4f4031c485803..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109072 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�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 z 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 Q2QS?7boFyt=akR{0OhjGp#T5? diff --git a/examples/postgres/package.json b/examples/postgres/package.json deleted file mode 100644 index 0197d15772..0000000000 --- a/examples/postgres/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "postgres-example", - "private": true, - "version": "0.23.0", - "description": "Example of Postgres integration with OpenTelemetry", - "main": "index.js", - "scripts": { - "zipkin:server": "cross-env EXPORTER=zipkin node ./server.js", - "zipkin:client": "cross-env EXPORTER=zipkin node ./client.js", - "jaeger:server": "cross-env EXPORTER=jaeger node ./server.js", - "jaeger:client": "cross-env EXPORTER=jaeger node ./client.js", - "docker:start": "docker run -d -p 54320:5432 -e POSTGRES_PASSWORD=postgres --name otpostgres postgres:alpine", - "docker:stop": "docker stop otpostgres & docker rm otpostgres" - }, - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/open-telemetry/opentelemetry-js.git" - }, - "keywords": [ - "opentelemetry", - "postgres", - "tracing" - ], - "engines": { - "node": ">=8.5.0" - }, - "author": "OpenTelemetry Authors", - "license": "Apache-2.0", - "bugs": { - "url": "https://github.com/open-telemetry/opentelemetry-js/issues" - }, - "dependencies": { - "@opentelemetry/api": "^1.0.2", - "@opentelemetry/exporter-jaeger": "^0.25.0", - "@opentelemetry/exporter-zipkin": "^0.25.0", - "@opentelemetry/instrumentation": "^0.25.0", - "@opentelemetry/instrumentation-http": "^0.25.0", - "@opentelemetry/instrumentation-pg": "^0.23.0", - "@opentelemetry/sdk-trace-node": "^0.25.0", - "@opentelemetry/sdk-trace-base": "^0.25.0", - "express": "^4.17.1", - "pg": "^8.6.0" - }, - "homepage": "https://github.com/open-telemetry/opentelemetry-js#readme", - "devDependencies": { - "cross-env": "^6.0.0" - } -} diff --git a/examples/postgres/server.js b/examples/postgres/server.js deleted file mode 100644 index 1c2ac91c54..0000000000 --- a/examples/postgres/server.js +++ /dev/null @@ -1,54 +0,0 @@ -'use strict'; - -const api = require('@opentelemetry/api'); -// eslint-disable-next-line import/order -const tracer = require('./tracer')('postgres-server-service'); -const { SpanKind, SpanStatusCode } = require('@opentelemetry/api'); -const express = require('express'); -const setupPg = require('./setupPsql'); - -const pool = setupPg.startPsql(); - -const app = express(); - -app.get('/:cmd', (req, res) => { - const cmd = req.path.slice(1); - if (!req.query.id) { - res.status(400).send('No id provided'); - return; - } - let queryText = `SELECT id, text FROM test WHERE id = ${req.query.id}`; - if (cmd === 'insert') { - if (!req.query.text) { - res.status(400).send('No text provided'); - return; - } - queryText = { - text: 'INSERT INTO test (id, text) VALUES($1, $2) ON CONFLICT(id) DO UPDATE SET text=$2', - values: [req.query.id, req.query.text], - }; - } - const currentSpan = api.trace.getSpan(api.context.active()); - console.log(`traceid: ${currentSpan.spanContext().traceId}`); - const span = tracer.startSpan(cmd, { - kind: SpanKind.SERVER, - }); - api.context.with(api.trace.setSpan(api.ROOT_CONTEXT, span), () => { - try { - pool.query(queryText, (err, ret) => { - if (err) throw err; - res.send(ret.rows); - }); - } catch (e) { - res.status(400).send({ message: e.message }); - span.setStatus(SpanStatusCode.ERROR); - } - span.end(); - }); -}); - -// start server -const port = 3000; -app.listen(port, () => { - console.log(`Node HTTP listening on ${port}`); -}); diff --git a/examples/postgres/setupPsql.js b/examples/postgres/setupPsql.js deleted file mode 100644 index e07ae2604c..0000000000 --- a/examples/postgres/setupPsql.js +++ /dev/null @@ -1,32 +0,0 @@ -'use strict'; - -const { Pool } = require('pg'); - -// create new pool for psql -const CONFIG = { - password: process.env.POSTGRES_USER || 'postgres', - user: process.env.POSTGRES_USER || 'postgres', - database: process.env.POSTGRES_DB || 'postgres', - host: process.env.POSTGRES_HOST || 'localhost', - port: process.env.POSTGRES_PORT - ? parseInt(process.env.POSTGRES_PORT, 10) - : 54320, -}; - -function startPsql() { - const pool = new Pool(CONFIG); - - pool.connect((connectErr, client, release) => { - if (connectErr) throw connectErr; - release(); - const queryText = 'CREATE TABLE IF NOT EXISTS test(id SERIAL PRIMARY KEY, text VARCHAR(40) not null)'; - client.query(queryText, (err, res) => { - if (err) throw err; - console.log(res.rows[0]); - }); - }); - - return pool; -} - -exports.startPsql = startPsql; diff --git a/examples/postgres/tracer.js b/examples/postgres/tracer.js deleted file mode 100644 index 3f1c5f7e66..0000000000 --- a/examples/postgres/tracer.js +++ /dev/null @@ -1,43 +0,0 @@ -'use strict'; - -const opentelemetry = require('@opentelemetry/api'); -const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); -const { SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base'); -const { JaegerExporter } = require('@opentelemetry/exporter-jaeger'); -const { ZipkinExporter } = require('@opentelemetry/exporter-zipkin'); -const { registerInstrumentations } = require('@opentelemetry/instrumentation'); -const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http'); -const { PgInstrumentation } = require('@opentelemetry/instrumentation-pg'); - -const EXPORTER = process.env.EXPORTER || ''; - -module.exports = (serviceName) => { - const provider = new NodeTracerProvider(); - - let exporter; - if (EXPORTER.toLowerCase().startsWith('z')) { - exporter = new ZipkinExporter({ - serviceName, - }); - } else { - exporter = new JaegerExporter({ - serviceName, - // The default flush interval is 5 seconds. - flushInterval: 2000, - }); - } - - provider.addSpanProcessor(new SimpleSpanProcessor(exporter)); - - // Initialize the OpenTelemetry APIs to use the BasicTracer bindings - provider.register(); - - registerInstrumentations({ - instrumentations: [ - new PgInstrumentation(), - new HttpInstrumentation(), - ], - }); - - return opentelemetry.trace.getTracer('example-postgres'); -};