diff --git a/.github/workflows/test-all-versions.yml b/.github/workflows/test-all-versions.yml index 2433cf5c9f..f53511b560 100644 --- a/.github/workflows/test-all-versions.yml +++ b/.github/workflows/test-all-versions.yml @@ -46,7 +46,7 @@ jobs: strategy: fail-fast: false matrix: - node: ["14", "16", "18", "20", "22"] + node: ["18", "20", "22"] runs-on: ubuntu-latest services: mongo: @@ -143,9 +143,6 @@ jobs: node-version: ${{ matrix.node }} - name: Set MySQL variables run: mysql --user=root --password=${MYSQL_ROOT_PASSWORD} --host=${MYSQL_HOST} --port=${MYSQL_PORT} -e "SET GLOBAL log_output='TABLE'; SET GLOBAL general_log = 1;" mysql - - name: Update npm to a version that supports workspaces (v7 or later) - if: ${{ matrix.node < 16 }} - run: npm install -g npm@9 # npm@9 supports node >=14.17.0 - name: Install run: npm ci - name: Download Build Artifacts diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index ec028afa7c..b08c06bab4 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -37,7 +37,12 @@ jobs: strategy: fail-fast: false matrix: - node: ["14", "16", "18", "20", "22"] + node: + - "18.19.0" + - "18" + - "20.6.0" + - "20" + - "22" include: - node: 18 code-coverage: true @@ -151,9 +156,6 @@ jobs: node-version: ${{ matrix.node }} - name: Set MySQL variables run: mysql --user=root --password=${MYSQL_ROOT_PASSWORD} --host=${MYSQL_HOST} --port=${MYSQL_PORT} -e "SET GLOBAL log_output='TABLE'; SET GLOBAL general_log = 1;" mysql - - name: Update npm to a version that supports workspaces (v7 or later) - if: ${{ matrix.node < 16 }} - run: npm install -g npm@9 # npm@9 supports node >=14.17.0 - name: Install run: npm ci - name: Download Build Artifacts diff --git a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/package.json b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/package.json index 53c63fd8dc..eb2de68c3b 100644 --- a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/package.json +++ b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/package.json @@ -28,7 +28,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -44,6 +44,7 @@ "devDependencies": { "@opentelemetry/api": "^1.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -51,14 +52,14 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "^1.26.0", - "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/detectors/node/opentelemetry-resource-detector-alibaba-cloud#readme", diff --git a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/src/detectors/AlibabaCloudEcsDetector.ts b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/src/detectors/AlibabaCloudEcsDetector.ts index 10420186a8..106b4acac0 100644 --- a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/src/detectors/AlibabaCloudEcsDetector.ts +++ b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/src/detectors/AlibabaCloudEcsDetector.ts @@ -14,14 +14,12 @@ * limitations under the License. */ -import { context } from '@opentelemetry/api'; +import { context, diag } from '@opentelemetry/api'; import { suppressTracing } from '@opentelemetry/core'; import { - DetectorSync, - IResource, - Resource, - ResourceAttributes, - ResourceDetectionConfig, + ResourceDetector, + DetectedResource, + DetectedResourceAttributes, } from '@opentelemetry/resources'; import { CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS, @@ -43,7 +41,7 @@ import * as http from 'http'; * AlibabaCloud ECS and return a {@link Resource} populated with metadata about * the ECS instance. Returns an empty Resource if detection fails. */ -class AlibabaCloudEcsDetector implements DetectorSync { +class AlibabaCloudEcsDetector implements ResourceDetector { /** * See https://www.alibabacloud.com/help/doc-detail/67254.htm for * documentation about the AlibabaCloud instance identity document. @@ -62,36 +60,59 @@ class AlibabaCloudEcsDetector implements DetectorSync { * * @param config (unused) The resource detection config */ - detect(_config?: ResourceDetectionConfig): IResource { - const attributes = context.with(suppressTracing(context.active()), () => - this._getAttributes() + detect(): DetectedResource { + const dataPromise = context.with(suppressTracing(context.active()), () => + this._gatherData() ); - return new Resource({}, attributes); + + const attrNames = [ + SEMRESATTRS_CLOUD_PROVIDER, + SEMRESATTRS_CLOUD_PLATFORM, + SEMRESATTRS_CLOUD_ACCOUNT_ID, + SEMRESATTRS_CLOUD_REGION, + SEMRESATTRS_CLOUD_AVAILABILITY_ZONE, + SEMRESATTRS_HOST_ID, + SEMRESATTRS_HOST_TYPE, + SEMRESATTRS_HOST_NAME, + ]; + + const attributes = {} as DetectedResourceAttributes; + attrNames.forEach(name => { + // Each resource attribute is determined asynchronously in _gatherData(). + attributes[name] = dataPromise.then(data => data[name]); + }); + + return { attributes }; } /** Gets identity and host info and returns them as attribs. Empty object if fails */ - async _getAttributes( - _config?: ResourceDetectionConfig - ): Promise { - const { - 'owner-account-id': accountId, - 'instance-id': instanceId, - 'instance-type': instanceType, - 'region-id': region, - 'zone-id': availabilityZone, - } = await this._fetchIdentity(); - const hostname = await this._fetchHost(); + async _gatherData(): Promise { + try { + const { + 'owner-account-id': accountId, + 'instance-id': instanceId, + 'instance-type': instanceType, + 'region-id': region, + 'zone-id': availabilityZone, + } = await this._fetchIdentity(); + const hostname = await this._fetchHost(); - return { - [SEMRESATTRS_CLOUD_PROVIDER]: CLOUDPROVIDERVALUES_ALIBABA_CLOUD, - [SEMRESATTRS_CLOUD_PLATFORM]: CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS, - [SEMRESATTRS_CLOUD_ACCOUNT_ID]: accountId, - [SEMRESATTRS_CLOUD_REGION]: region, - [SEMRESATTRS_CLOUD_AVAILABILITY_ZONE]: availabilityZone, - [SEMRESATTRS_HOST_ID]: instanceId, - [SEMRESATTRS_HOST_TYPE]: instanceType, - [SEMRESATTRS_HOST_NAME]: hostname, - }; + return { + [SEMRESATTRS_CLOUD_PROVIDER]: CLOUDPROVIDERVALUES_ALIBABA_CLOUD, + [SEMRESATTRS_CLOUD_PLATFORM]: CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS, + [SEMRESATTRS_CLOUD_ACCOUNT_ID]: accountId, + [SEMRESATTRS_CLOUD_REGION]: region, + [SEMRESATTRS_CLOUD_AVAILABILITY_ZONE]: availabilityZone, + [SEMRESATTRS_HOST_ID]: instanceId, + [SEMRESATTRS_HOST_TYPE]: instanceType, + [SEMRESATTRS_HOST_NAME]: hostname, + }; + } catch (err: any) { + diag.debug( + `${this.constructor.name}: did not detect resource: ${err?.message}` + ); + return {}; + } } /** diff --git a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/test/detectors/AlibabaCloudEcsDetector.test.ts b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/test/detectors/AlibabaCloudEcsDetector.test.ts index 15cd13dd99..7ef6ccf57f 100644 --- a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/test/detectors/AlibabaCloudEcsDetector.test.ts +++ b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/test/detectors/AlibabaCloudEcsDetector.test.ts @@ -14,9 +14,10 @@ * limitations under the License. */ +import { setTimeout as setTimeoutP } from 'timers/promises'; import * as nock from 'nock'; import * as assert from 'assert'; -import { Resource } from '@opentelemetry/resources'; +import { detectResources } from '@opentelemetry/resources'; import { CLOUDPROVIDERVALUES_ALIBABA_CLOUD } from '@opentelemetry/semantic-conventions'; import { assertCloudResource, @@ -63,7 +64,9 @@ describe('alibabaCloudEcsDetector', () => { .get(ALIYUN_HOST_PATH) .reply(200, () => mockedHostResponse); - const resource: Resource = await alibabaCloudEcsDetector.detect(); + const resource = detectResources({ + detectors: [alibabaCloudEcsDetector], + }); await resource.waitForAsyncAttributes?.(); scope.done(); @@ -93,7 +96,9 @@ describe('alibabaCloudEcsDetector', () => { .get(ALIYUN_HOST_PATH) .reply(404, () => new Error()); - const resource = await alibabaCloudEcsDetector.detect(); + const resource = detectResources({ + detectors: [alibabaCloudEcsDetector], + }); await resource.waitForAsyncAttributes?.(); assert.deepStrictEqual(resource.attributes, {}); @@ -109,7 +114,9 @@ describe('alibabaCloudEcsDetector', () => { .delayConnection(2000) .reply(200, () => mockedHostResponse); - const resource = await alibabaCloudEcsDetector.detect(); + const resource = detectResources({ + detectors: [alibabaCloudEcsDetector], + }); await resource.waitForAsyncAttributes?.(); assert.deepStrictEqual(resource.attributes, {}); @@ -122,10 +129,46 @@ describe('alibabaCloudEcsDetector', () => { .get(ALIYUN_IDENTITY_PATH) .replyWithError('NOT FOUND'); - const resource = await alibabaCloudEcsDetector.detect(); + const resource = detectResources({ + detectors: [alibabaCloudEcsDetector], + }); + await resource.waitForAsyncAttributes?.(); + + assert.deepStrictEqual(resource.attributes, {}); + + scope.done(); + }); + }); + + describe('with delay in calling .waitForAsyncAttributes()', () => { + // Note any `unhandledRejection` process events during the test run. + let gotUnhandledRejections: Error[]; + const unhandleRejectionHandler = (err: any) => { + gotUnhandledRejections.push(err); + }; + beforeEach(() => { + gotUnhandledRejections = []; + process.on('unhandledRejection', unhandleRejectionHandler); + }); + afterEach(() => { + process.removeListener('unhandledRejection', unhandleRejectionHandler); + }); + + it('should return empty resource when receiving error', async () => { + const scope = nock(ALIYUN_HOST) + .get(ALIYUN_IDENTITY_PATH) + .replyWithError('NOT FOUND'); + + const resource = detectResources({ + detectors: [alibabaCloudEcsDetector], + }); + // This pause simulates the delay between `detectResources` and + // `waitForAsyncAttributes` typically called later in an exporter. + await setTimeoutP(200); // Hope this is enough time to get error response. await resource.waitForAsyncAttributes?.(); assert.deepStrictEqual(resource.attributes, {}); + assert.deepStrictEqual(gotUnhandledRejections, []); scope.done(); }); diff --git a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/test/detectors/AlibabaCloudEcsDetectorIntegration.test.ts b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/test/detectors/AlibabaCloudEcsDetectorIntegration.test.ts index d523dc1533..825a693a13 100644 --- a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/test/detectors/AlibabaCloudEcsDetectorIntegration.test.ts +++ b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/test/detectors/AlibabaCloudEcsDetectorIntegration.test.ts @@ -22,7 +22,7 @@ import { SimpleSpanProcessor, } from '@opentelemetry/sdk-trace-base'; import { NodeSDK } from '@opentelemetry/sdk-node'; -import { IResource } from '@opentelemetry/resources'; +import { detectResources } from '@opentelemetry/resources'; describe('[Integration] AlibabaCloudEcsDetector', () => { it('should not start spans for detector requests', async () => { @@ -47,7 +47,7 @@ describe('[Integration] AlibabaCloudEcsDetector', () => { const { alibabaCloudEcsDetector, } = require('../../build/src/detectors/AlibabaCloudEcsDetector'); - const resource = alibabaCloudEcsDetector.detect() as IResource; + const resource = detectResources({ detectors: [alibabaCloudEcsDetector] }); await resource.waitForAsyncAttributes?.(); // Wait for the next loop to let the span close properly diff --git a/detectors/node/opentelemetry-resource-detector-aws/package.json b/detectors/node/opentelemetry-resource-detector-aws/package.json index 8e32949a55..ae05813ec5 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/package.json +++ b/detectors/node/opentelemetry-resource-detector-aws/package.json @@ -27,7 +27,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -44,7 +44,8 @@ "@opentelemetry/api": "^1.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", "@opentelemetry/instrumentation-fs": "^0.19.1", - "@opentelemetry/instrumentation-http": "^0.57.2", + "@opentelemetry/instrumentation-http": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -52,14 +53,14 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "^1.0.0", - "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/detectors/node/opentelemetry-resource-detector-aws#readme", diff --git a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsBeanstalkDetector.ts b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsBeanstalkDetector.ts index 02b044d0d9..f3c19a5f52 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsBeanstalkDetector.ts +++ b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsBeanstalkDetector.ts @@ -14,13 +14,28 @@ * limitations under the License. */ +import { context, diag } from '@opentelemetry/api'; +import { suppressTracing } from '@opentelemetry/core'; + import { - Detector, - IResource, - ResourceDetectionConfig, + ResourceDetector, + DetectedResource, + DetectedResourceAttributes, } from '@opentelemetry/resources'; - -import { awsBeanstalkDetectorSync } from './AwsBeanstalkDetectorSync'; +import { + ATTR_SERVICE_NAME, + ATTR_SERVICE_VERSION, +} from '@opentelemetry/semantic-conventions'; +import { + ATTR_CLOUD_PROVIDER, + ATTR_CLOUD_PLATFORM, + ATTR_SERVICE_NAMESPACE, + ATTR_SERVICE_INSTANCE_ID, + CLOUD_PROVIDER_VALUE_AWS, + CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK, +} from '../semconv'; +import * as fs from 'fs'; +import * as util from 'util'; /** * The AwsBeanstalkDetector can be used to detect if a process is running in AWS Elastic @@ -29,13 +44,76 @@ import { awsBeanstalkDetectorSync } from './AwsBeanstalkDetectorSync'; * * See https://docs.amazonaws.cn/en_us/xray/latest/devguide/xray-guide.pdf * for more details about detecting information of Elastic Beanstalk plugins - * - * @deprecated Use {@link AwsBeanstalkDetectorSync} class instead. */ -export class AwsBeanstalkDetector implements Detector { - detect(config?: ResourceDetectionConfig): Promise { - return Promise.resolve(awsBeanstalkDetectorSync.detect(config)); +const DEFAULT_BEANSTALK_CONF_PATH = + '/var/elasticbeanstalk/xray/environment.conf'; +const WIN_OS_BEANSTALK_CONF_PATH = + 'C:\\Program Files\\Amazon\\XRay\\environment.conf'; + +export class AwsBeanstalkDetector implements ResourceDetector { + BEANSTALK_CONF_PATH: string; + private static readFileAsync = util.promisify(fs.readFile); + private static fileAccessAsync = util.promisify(fs.access); + + constructor() { + if (process.platform === 'win32') { + this.BEANSTALK_CONF_PATH = WIN_OS_BEANSTALK_CONF_PATH; + } else { + this.BEANSTALK_CONF_PATH = DEFAULT_BEANSTALK_CONF_PATH; + } + } + + detect(): DetectedResource { + const dataPromise = context.with(suppressTracing(context.active()), () => + this._gatherData() + ); + + const attrNames = [ + ATTR_CLOUD_PROVIDER, + ATTR_CLOUD_PLATFORM, + ATTR_SERVICE_NAME, + ATTR_SERVICE_NAMESPACE, + ATTR_SERVICE_VERSION, + ATTR_SERVICE_INSTANCE_ID, + ]; + + const attributes = {} as DetectedResourceAttributes; + attrNames.forEach(name => { + // Each resource attribute is determined asynchronously in _gatherData(). + attributes[name] = dataPromise.then(data => data[name]); + }); + + return { attributes }; + } + /** + * Async resource attributes for AWS Beanstalk configuration read from file. + */ + async _gatherData(): Promise { + try { + await AwsBeanstalkDetector.fileAccessAsync( + this.BEANSTALK_CONF_PATH, + fs.constants.R_OK + ); + + const rawData = await AwsBeanstalkDetector.readFileAsync( + this.BEANSTALK_CONF_PATH, + 'utf8' + ); + const parsedData = JSON.parse(rawData); + + return { + [ATTR_CLOUD_PROVIDER]: CLOUD_PROVIDER_VALUE_AWS, + [ATTR_CLOUD_PLATFORM]: CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK, + [ATTR_SERVICE_NAME]: CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK, + [ATTR_SERVICE_NAMESPACE]: parsedData.environment_name, + [ATTR_SERVICE_VERSION]: parsedData.version_label, + [ATTR_SERVICE_INSTANCE_ID]: parsedData.deployment_id, + }; + } catch (e: any) { + diag.debug(`AwsBeanstalkDetector: did not detect resource: ${e.message}`); + return {}; + } } } diff --git a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsBeanstalkDetectorSync.ts b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsBeanstalkDetectorSync.ts deleted file mode 100644 index 47b279738a..0000000000 --- a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsBeanstalkDetectorSync.ts +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { context, diag } from '@opentelemetry/api'; -import { suppressTracing } from '@opentelemetry/core'; - -import { - DetectorSync, - IResource, - Resource, - ResourceAttributes, - ResourceDetectionConfig, -} from '@opentelemetry/resources'; -import { - ATTR_SERVICE_NAME, - ATTR_SERVICE_VERSION, -} from '@opentelemetry/semantic-conventions'; -import { - ATTR_CLOUD_PROVIDER, - ATTR_CLOUD_PLATFORM, - ATTR_SERVICE_NAMESPACE, - ATTR_SERVICE_INSTANCE_ID, - CLOUD_PROVIDER_VALUE_AWS, - CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK, -} from '../semconv'; -import * as fs from 'fs'; -import * as util from 'util'; - -/** - * The AwsBeanstalkDetector can be used to detect if a process is running in AWS Elastic - * Beanstalk and return a {@link Resource} populated with data about the beanstalk - * plugins of AWS X-Ray. Returns an empty Resource if detection fails. - * - * See https://docs.amazonaws.cn/en_us/xray/latest/devguide/xray-guide.pdf - * for more details about detecting information of Elastic Beanstalk plugins - */ - -const DEFAULT_BEANSTALK_CONF_PATH = - '/var/elasticbeanstalk/xray/environment.conf'; -const WIN_OS_BEANSTALK_CONF_PATH = - 'C:\\Program Files\\Amazon\\XRay\\environment.conf'; - -export class AwsBeanstalkDetectorSync implements DetectorSync { - BEANSTALK_CONF_PATH: string; - private static readFileAsync = util.promisify(fs.readFile); - private static fileAccessAsync = util.promisify(fs.access); - - constructor() { - if (process.platform === 'win32') { - this.BEANSTALK_CONF_PATH = WIN_OS_BEANSTALK_CONF_PATH; - } else { - this.BEANSTALK_CONF_PATH = DEFAULT_BEANSTALK_CONF_PATH; - } - } - - detect(config?: ResourceDetectionConfig): IResource { - const attributes = context.with(suppressTracing(context.active()), () => - this._getAttributes() - ); - return new Resource({}, attributes); - } - - /** - * Attempts to obtain AWS Beanstalk configuration from the file - * system. If file is accesible and read succesfully it returns - * a promise containing a {@link ResourceAttributes} - * object with instance metadata. Returns a promise containing an - * empty {@link ResourceAttributes} if the file is not accesible or - * fails in the reading process. - */ - async _getAttributes( - _config?: ResourceDetectionConfig - ): Promise { - try { - await AwsBeanstalkDetectorSync.fileAccessAsync( - this.BEANSTALK_CONF_PATH, - fs.constants.R_OK - ); - - const rawData = await AwsBeanstalkDetectorSync.readFileAsync( - this.BEANSTALK_CONF_PATH, - 'utf8' - ); - const parsedData = JSON.parse(rawData); - - return { - [ATTR_CLOUD_PROVIDER]: CLOUD_PROVIDER_VALUE_AWS, - [ATTR_CLOUD_PLATFORM]: CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK, - [ATTR_SERVICE_NAME]: CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK, - [ATTR_SERVICE_NAMESPACE]: parsedData.environment_name, - [ATTR_SERVICE_VERSION]: parsedData.version_label, - [ATTR_SERVICE_INSTANCE_ID]: parsedData.deployment_id, - }; - } catch (e: any) { - diag.debug(`AwsBeanstalkDetectorSync failed: ${e.message}`); - return {}; - } - } -} - -export const awsBeanstalkDetectorSync = new AwsBeanstalkDetectorSync(); diff --git a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEc2Detector.ts b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEc2Detector.ts index 3014fa5844..66cb20262b 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEc2Detector.ts +++ b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEc2Detector.ts @@ -14,24 +14,175 @@ * limitations under the License. */ +import { context } from '@opentelemetry/api'; +import { suppressTracing } from '@opentelemetry/core'; import { - Detector, - IResource, - ResourceDetectionConfig, + ResourceDetector, + DetectedResource, + DetectedResourceAttributes, } from '@opentelemetry/resources'; - -import { awsEc2DetectorSync } from './AwsEc2DetectorSync'; +import { + ATTR_CLOUD_PROVIDER, + ATTR_CLOUD_PLATFORM, + ATTR_CLOUD_REGION, + ATTR_CLOUD_ACCOUNT_ID, + ATTR_CLOUD_AVAILABILITY_ZONE, + ATTR_HOST_ID, + ATTR_HOST_TYPE, + ATTR_HOST_NAME, + CLOUD_PROVIDER_VALUE_AWS, + CLOUD_PLATFORM_VALUE_AWS_EC2, +} from '../semconv'; +import * as http from 'http'; /** * The AwsEc2Detector can be used to detect if a process is running in AWS EC2 - * and return a {@link Resource} populated with metadata about the EC2 - * instance. - * - * @deprecated Use {@link AwsEc2DetectorSync} class instead. + * and return resource attributes with metadata about the EC2 instance. */ -class AwsEc2Detector implements Detector { - detect(_config?: ResourceDetectionConfig): Promise { - return Promise.resolve(awsEc2DetectorSync.detect(_config)); +class AwsEc2Detector implements ResourceDetector { + /** + * See https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-identity-documents.html + * for documentation about the AWS instance identity document + * and standard of IMDSv2. + */ + readonly AWS_IDMS_ENDPOINT = '169.254.169.254'; + readonly AWS_INSTANCE_TOKEN_DOCUMENT_PATH = '/latest/api/token'; + readonly AWS_INSTANCE_IDENTITY_DOCUMENT_PATH = + '/latest/dynamic/instance-identity/document'; + readonly AWS_INSTANCE_HOST_DOCUMENT_PATH = '/latest/meta-data/hostname'; + readonly AWS_METADATA_TTL_HEADER = 'X-aws-ec2-metadata-token-ttl-seconds'; + readonly AWS_METADATA_TOKEN_HEADER = 'X-aws-ec2-metadata-token'; + readonly MILLISECOND_TIME_OUT = 5000; + + detect(): DetectedResource { + const dataPromise = context.with(suppressTracing(context.active()), () => + this._gatherData() + ); + + const attrNames = [ + ATTR_CLOUD_PROVIDER, + ATTR_CLOUD_PLATFORM, + ATTR_CLOUD_ACCOUNT_ID, + ATTR_CLOUD_REGION, + ATTR_CLOUD_AVAILABILITY_ZONE, + ATTR_HOST_ID, + ATTR_HOST_TYPE, + ATTR_HOST_NAME, + ]; + + const attributes = {} as DetectedResourceAttributes; + attrNames.forEach(name => { + // Each resource attribute is determined asynchronously in _gatherData(). + attributes[name] = dataPromise.then(data => data[name]); + }); + + return { attributes }; + } + + /** + * Attempts to connect and obtain an AWS instance Identity document. + */ + async _gatherData(): Promise { + try { + const token = await this._fetchToken(); + const { accountId, instanceId, instanceType, region, availabilityZone } = + await this._fetchIdentity(token); + const hostname = await this._fetchHost(token); + + return { + [ATTR_CLOUD_PROVIDER]: CLOUD_PROVIDER_VALUE_AWS, + [ATTR_CLOUD_PLATFORM]: CLOUD_PLATFORM_VALUE_AWS_EC2, + [ATTR_CLOUD_ACCOUNT_ID]: accountId, + [ATTR_CLOUD_REGION]: region, + [ATTR_CLOUD_AVAILABILITY_ZONE]: availabilityZone, + [ATTR_HOST_ID]: instanceId, + [ATTR_HOST_TYPE]: instanceType, + [ATTR_HOST_NAME]: hostname, + }; + } catch { + return {}; + } + } + + private async _fetchToken(): Promise { + const options = { + host: this.AWS_IDMS_ENDPOINT, + path: this.AWS_INSTANCE_TOKEN_DOCUMENT_PATH, + method: 'PUT', + timeout: this.MILLISECOND_TIME_OUT, + headers: { + [this.AWS_METADATA_TTL_HEADER]: '60', + }, + }; + return await this._fetchString(options); + } + + private async _fetchIdentity(token: string): Promise { + const options = { + host: this.AWS_IDMS_ENDPOINT, + path: this.AWS_INSTANCE_IDENTITY_DOCUMENT_PATH, + method: 'GET', + timeout: this.MILLISECOND_TIME_OUT, + headers: { + [this.AWS_METADATA_TOKEN_HEADER]: token, + }, + }; + const identity = await this._fetchString(options); + return JSON.parse(identity); + } + + private async _fetchHost(token: string): Promise { + const options = { + host: this.AWS_IDMS_ENDPOINT, + path: this.AWS_INSTANCE_HOST_DOCUMENT_PATH, + method: 'GET', + timeout: this.MILLISECOND_TIME_OUT, + headers: { + [this.AWS_METADATA_TOKEN_HEADER]: token, + }, + }; + return await this._fetchString(options); + } + + /** + * Establishes an HTTP connection to AWS instance document url. + * If the application is running on an EC2 instance, we should be able + * to get back a valid JSON document. Parses that document and stores + * the identity properties in a local map. + */ + private async _fetchString(options: http.RequestOptions): Promise { + return new Promise((resolve, reject) => { + const timeoutId = setTimeout(() => { + req.abort(); + reject(new Error('EC2 metadata api request timed out.')); + }, this.MILLISECOND_TIME_OUT); + + const req = http.request(options, res => { + clearTimeout(timeoutId); + const { statusCode } = res; + res.setEncoding('utf8'); + let rawData = ''; + res.on('data', chunk => (rawData += chunk)); + res.on('end', () => { + if (statusCode && statusCode >= 200 && statusCode < 300) { + try { + resolve(rawData); + } catch (e) { + reject(e); + } + } else { + reject( + new Error('Failed to load page, status code: ' + statusCode) + ); + } + }); + }); + req.on('error', err => { + clearTimeout(timeoutId); + reject(err); + }); + req.end(); + }); } } diff --git a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEc2DetectorSync.ts b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEc2DetectorSync.ts deleted file mode 100644 index 5b91d51b10..0000000000 --- a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEc2DetectorSync.ts +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { context } from '@opentelemetry/api'; -import { suppressTracing } from '@opentelemetry/core'; -import { - DetectorSync, - IResource, - Resource, - ResourceAttributes, - ResourceDetectionConfig, -} from '@opentelemetry/resources'; -import { - ATTR_CLOUD_PROVIDER, - ATTR_CLOUD_PLATFORM, - ATTR_CLOUD_REGION, - ATTR_CLOUD_ACCOUNT_ID, - ATTR_CLOUD_AVAILABILITY_ZONE, - ATTR_HOST_ID, - ATTR_HOST_TYPE, - ATTR_HOST_NAME, - CLOUD_PROVIDER_VALUE_AWS, - CLOUD_PLATFORM_VALUE_AWS_EC2, -} from '../semconv'; -import * as http from 'http'; - -/** - * The AwsEc2DetectorSync can be used to detect if a process is running in AWS EC2 - * and return a {@link Resource} populated with metadata about the EC2 - * instance. Returns an empty Resource if detection fails. - */ -class AwsEc2DetectorSync implements DetectorSync { - /** - * See https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-identity-documents.html - * for documentation about the AWS instance identity document - * and standard of IMDSv2. - */ - readonly AWS_IDMS_ENDPOINT = '169.254.169.254'; - readonly AWS_INSTANCE_TOKEN_DOCUMENT_PATH = '/latest/api/token'; - readonly AWS_INSTANCE_IDENTITY_DOCUMENT_PATH = - '/latest/dynamic/instance-identity/document'; - readonly AWS_INSTANCE_HOST_DOCUMENT_PATH = '/latest/meta-data/hostname'; - readonly AWS_METADATA_TTL_HEADER = 'X-aws-ec2-metadata-token-ttl-seconds'; - readonly AWS_METADATA_TOKEN_HEADER = 'X-aws-ec2-metadata-token'; - readonly MILLISECOND_TIME_OUT = 5000; - - detect(_config?: ResourceDetectionConfig): IResource { - const attributes = context.with(suppressTracing(context.active()), () => - this._getAttributes() - ); - return new Resource({}, attributes); - } - - /** - * Attempts to connect and obtain an AWS instance Identity document. If the - * connection is successful it returns a promise containing a {@link ResourceAttributes} - * object with instance metadata. Returns a promise containing an - * empty {@link ResourceAttributes} if the connection or parsing of the identity - * document fails. - */ - async _getAttributes(): Promise { - try { - const token = await this._fetchToken(); - const { accountId, instanceId, instanceType, region, availabilityZone } = - await this._fetchIdentity(token); - const hostname = await this._fetchHost(token); - - return { - [ATTR_CLOUD_PROVIDER]: CLOUD_PROVIDER_VALUE_AWS, - [ATTR_CLOUD_PLATFORM]: CLOUD_PLATFORM_VALUE_AWS_EC2, - [ATTR_CLOUD_ACCOUNT_ID]: accountId, - [ATTR_CLOUD_REGION]: region, - [ATTR_CLOUD_AVAILABILITY_ZONE]: availabilityZone, - [ATTR_HOST_ID]: instanceId, - [ATTR_HOST_TYPE]: instanceType, - [ATTR_HOST_NAME]: hostname, - }; - } catch { - return {}; - } - } - - private async _fetchToken(): Promise { - const options = { - host: this.AWS_IDMS_ENDPOINT, - path: this.AWS_INSTANCE_TOKEN_DOCUMENT_PATH, - method: 'PUT', - timeout: this.MILLISECOND_TIME_OUT, - headers: { - [this.AWS_METADATA_TTL_HEADER]: '60', - }, - }; - return await this._fetchString(options); - } - - private async _fetchIdentity(token: string): Promise { - const options = { - host: this.AWS_IDMS_ENDPOINT, - path: this.AWS_INSTANCE_IDENTITY_DOCUMENT_PATH, - method: 'GET', - timeout: this.MILLISECOND_TIME_OUT, - headers: { - [this.AWS_METADATA_TOKEN_HEADER]: token, - }, - }; - const identity = await this._fetchString(options); - return JSON.parse(identity); - } - - private async _fetchHost(token: string): Promise { - const options = { - host: this.AWS_IDMS_ENDPOINT, - path: this.AWS_INSTANCE_HOST_DOCUMENT_PATH, - method: 'GET', - timeout: this.MILLISECOND_TIME_OUT, - headers: { - [this.AWS_METADATA_TOKEN_HEADER]: token, - }, - }; - return await this._fetchString(options); - } - - /** - * Establishes an HTTP connection to AWS instance document url. - * If the application is running on an EC2 instance, we should be able - * to get back a valid JSON document. Parses that document and stores - * the identity properties in a local map. - */ - private async _fetchString(options: http.RequestOptions): Promise { - return new Promise((resolve, reject) => { - const timeoutId = setTimeout(() => { - req.abort(); - reject(new Error('EC2 metadata api request timed out.')); - }, this.MILLISECOND_TIME_OUT); - - const req = http.request(options, res => { - clearTimeout(timeoutId); - const { statusCode } = res; - res.setEncoding('utf8'); - let rawData = ''; - res.on('data', chunk => (rawData += chunk)); - res.on('end', () => { - if (statusCode && statusCode >= 200 && statusCode < 300) { - try { - resolve(rawData); - } catch (e) { - reject(e); - } - } else { - reject( - new Error('Failed to load page, status code: ' + statusCode) - ); - } - }); - }); - req.on('error', err => { - clearTimeout(timeoutId); - reject(err); - }); - req.end(); - }); - } -} - -export const awsEc2DetectorSync = new AwsEc2DetectorSync(); diff --git a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEcsDetector.ts b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEcsDetector.ts index fb67ec9bff..45a5b74dab 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEcsDetector.ts +++ b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEcsDetector.ts @@ -14,19 +14,288 @@ * limitations under the License. */ -import { Detector, IResource } from '@opentelemetry/resources'; -import { awsEcsDetectorSync } from './AwsEcsDetectorSync'; +import { context, diag } from '@opentelemetry/api'; +import { suppressTracing } from '@opentelemetry/core'; +import { + ResourceDetector, + DetectedResource, + DetectedResourceAttributes, +} from '@opentelemetry/resources'; +import { + ATTR_AWS_ECS_CLUSTER_ARN, + ATTR_AWS_ECS_CONTAINER_ARN, + ATTR_AWS_ECS_LAUNCHTYPE, + ATTR_AWS_ECS_TASK_ARN, + ATTR_AWS_ECS_TASK_FAMILY, + ATTR_AWS_ECS_TASK_REVISION, + ATTR_AWS_LOG_GROUP_ARNS, + ATTR_AWS_LOG_GROUP_NAMES, + ATTR_AWS_LOG_STREAM_ARNS, + ATTR_AWS_LOG_STREAM_NAMES, + ATTR_CLOUD_ACCOUNT_ID, + ATTR_CLOUD_AVAILABILITY_ZONE, + ATTR_CLOUD_PLATFORM, + ATTR_CLOUD_PROVIDER, + ATTR_CLOUD_REGION, + ATTR_CLOUD_RESOURCE_ID, + ATTR_CONTAINER_ID, + ATTR_CONTAINER_NAME, + CLOUD_PROVIDER_VALUE_AWS, + CLOUD_PLATFORM_VALUE_AWS_ECS, +} from '../semconv'; +import * as http from 'http'; +import * as util from 'util'; +import * as fs from 'fs'; +import * as os from 'os'; + +const HTTP_TIMEOUT_IN_MS = 1000; + +interface AwsLogOptions { + readonly 'awslogs-region'?: string; + readonly 'awslogs-group'?: string; + readonly 'awslogs-stream'?: string; +} /** * The AwsEcsDetector can be used to detect if a process is running in AWS * ECS and return a {@link Resource} populated with data about the ECS - * plugins of AWS X-Ray. - * - * @deprecated Use {@link AwsEcsDetectorSync} class instead. + * plugins of AWS X-Ray. Returns an empty Resource if detection fails. */ -export class AwsEcsDetector implements Detector { - detect(): Promise { - return Promise.resolve(awsEcsDetectorSync.detect()); +export class AwsEcsDetector implements ResourceDetector { + static readonly CONTAINER_ID_LENGTH = 64; + static readonly DEFAULT_CGROUP_PATH = '/proc/self/cgroup'; + + private static readFileAsync = util.promisify(fs.readFile); + + detect(): DetectedResource { + const attributes = context.with(suppressTracing(context.active()), () => + this._getAttributes() + ); + return { attributes }; + } + + private _getAttributes(): DetectedResourceAttributes { + if ( + !process.env.ECS_CONTAINER_METADATA_URI_V4 && + !process.env.ECS_CONTAINER_METADATA_URI + ) { + diag.debug('AwsEcsDetector: Process is not on ECS'); + return {}; + } + + const dataPromise = this._gatherData(); + + const attrNames = [ + ATTR_CLOUD_PROVIDER, + ATTR_CLOUD_PLATFORM, + ATTR_CONTAINER_NAME, + ATTR_CONTAINER_ID, + + // Added in _addMetadataV4Attrs + ATTR_AWS_ECS_CONTAINER_ARN, + ATTR_AWS_ECS_CLUSTER_ARN, + ATTR_AWS_ECS_LAUNCHTYPE, + ATTR_AWS_ECS_TASK_ARN, + ATTR_AWS_ECS_TASK_FAMILY, + ATTR_AWS_ECS_TASK_REVISION, + ATTR_CLOUD_ACCOUNT_ID, + ATTR_CLOUD_REGION, + ATTR_CLOUD_RESOURCE_ID, + ATTR_CLOUD_AVAILABILITY_ZONE, + + // Added in _addLogAttrs + ATTR_AWS_LOG_GROUP_NAMES, + ATTR_AWS_LOG_GROUP_ARNS, + ATTR_AWS_LOG_STREAM_NAMES, + ATTR_AWS_LOG_STREAM_ARNS, + ]; + + const attributes = {} as DetectedResourceAttributes; + attrNames.forEach(name => { + // Each resource attribute is determined asynchronously in _gatherData(). + attributes[name] = dataPromise.then(data => data[name]); + }); + return attributes; + } + + private async _gatherData(): Promise { + try { + const data = { + [ATTR_CLOUD_PROVIDER]: CLOUD_PROVIDER_VALUE_AWS, + [ATTR_CLOUD_PLATFORM]: CLOUD_PLATFORM_VALUE_AWS_ECS, + [ATTR_CONTAINER_NAME]: os.hostname(), + [ATTR_CONTAINER_ID]: await this._getContainerId(), + }; + + const metadataUrl = process.env.ECS_CONTAINER_METADATA_URI_V4; + if (metadataUrl) { + const [containerMetadata, taskMetadata] = await Promise.all([ + AwsEcsDetector._getUrlAsJson(metadataUrl), + AwsEcsDetector._getUrlAsJson(`${metadataUrl}/task`), + ]); + + AwsEcsDetector._addMetadataV4Attrs( + data, + containerMetadata, + taskMetadata + ); + AwsEcsDetector._addLogAttrs(data, containerMetadata); + } + return data; + } catch { + return {}; + } + } + + /** + * Read container ID from cgroup file + * In ECS, even if we fail to find target file + * or target file does not contain container ID + * we do not throw an error but throw warning message + * and then return undefined. + */ + private async _getContainerId(): Promise { + let containerId = undefined; + try { + const rawData = await AwsEcsDetector.readFileAsync( + AwsEcsDetector.DEFAULT_CGROUP_PATH, + 'utf8' + ); + const splitData = rawData.trim().split('\n'); + for (const str of splitData) { + if (str.length > AwsEcsDetector.CONTAINER_ID_LENGTH) { + containerId = str.substring( + str.length - AwsEcsDetector.CONTAINER_ID_LENGTH + ); + break; + } + } + } catch (e) { + diag.debug('AwsEcsDetector failed to read container ID', e); + } + return containerId; + } + + /** + * Add metadata-v4-related resource attributes to `data` (in-place) + */ + private static _addMetadataV4Attrs( + data: DetectedResourceAttributes, + containerMetadata: any, + taskMetadata: any + ) { + const launchType: string = taskMetadata['LaunchType']; + const taskArn: string = taskMetadata['TaskARN']; + + const baseArn: string = taskArn.substring(0, taskArn.lastIndexOf(':')); + const cluster: string = taskMetadata['Cluster']; + + const accountId: string = AwsEcsDetector._getAccountFromArn(taskArn); + const region: string = AwsEcsDetector._getRegionFromArn(taskArn); + const availabilityZone: string | undefined = taskMetadata?.AvailabilityZone; + + const clusterArn = cluster.startsWith('arn:') + ? cluster + : `${baseArn}:cluster/${cluster}`; + + const containerArn: string = containerMetadata['ContainerARN']; + + // https://github.com/open-telemetry/semantic-conventions/blob/main/semantic_conventions/resource/cloud_provider/aws/ecs.yaml + data[ATTR_AWS_ECS_CONTAINER_ARN] = containerArn; + data[ATTR_AWS_ECS_CLUSTER_ARN] = clusterArn; + data[ATTR_AWS_ECS_LAUNCHTYPE] = launchType?.toLowerCase(); + data[ATTR_AWS_ECS_TASK_ARN] = taskArn; + data[ATTR_AWS_ECS_TASK_FAMILY] = taskMetadata['Family']; + data[ATTR_AWS_ECS_TASK_REVISION] = taskMetadata['Revision']; + + data[ATTR_CLOUD_ACCOUNT_ID] = accountId; + data[ATTR_CLOUD_REGION] = region; + data[ATTR_CLOUD_RESOURCE_ID] = containerArn; + + // The availability zone is not available in all Fargate runtimes + if (availabilityZone) { + data[ATTR_CLOUD_AVAILABILITY_ZONE] = availabilityZone; + } + } + + private static _addLogAttrs( + data: DetectedResourceAttributes, + containerMetadata: any + ) { + if ( + containerMetadata['LogDriver'] !== 'awslogs' || + !containerMetadata['LogOptions'] + ) { + return; + } + + const containerArn = containerMetadata['ContainerARN']!; + const logOptions = containerMetadata['LogOptions'] as AwsLogOptions; + + const logsRegion = + logOptions['awslogs-region'] || + AwsEcsDetector._getRegionFromArn(containerArn); + + const awsAccount = AwsEcsDetector._getAccountFromArn(containerArn); + + const logsGroupName = logOptions['awslogs-group']!; + const logsGroupArn = `arn:aws:logs:${logsRegion}:${awsAccount}:log-group:${logsGroupName}`; + const logsStreamName = logOptions['awslogs-stream']!; + const logsStreamArn = `arn:aws:logs:${logsRegion}:${awsAccount}:log-group:${logsGroupName}:log-stream:${logsStreamName}`; + + data[ATTR_AWS_LOG_GROUP_NAMES] = [logsGroupName]; + data[ATTR_AWS_LOG_GROUP_ARNS] = [logsGroupArn]; + data[ATTR_AWS_LOG_STREAM_NAMES] = [logsStreamName]; + data[ATTR_AWS_LOG_STREAM_ARNS] = [logsStreamArn]; + } + + private static _getAccountFromArn(containerArn: string): string { + const match = /arn:aws:ecs:[^:]+:([^:]+):.*/.exec(containerArn); + return match![1]; + } + + private static _getRegionFromArn(containerArn: string): string { + const match = /arn:aws:ecs:([^:]+):.*/.exec(containerArn); + return match![1]; + } + + private static _getUrlAsJson(url: string): Promise { + return new Promise((resolve, reject) => { + const request = http.get(url, (response: http.IncomingMessage) => { + if (response.statusCode && response.statusCode >= 400) { + reject( + new Error( + `Request to '${url}' failed with status ${response.statusCode}` + ) + ); + } + /* + * Concatenate the response out of chunks: + * https://nodejs.org/api/stream.html#stream_event_data + */ + let responseBody = ''; + response.on( + 'data', + (chunk: Buffer) => (responseBody += chunk.toString()) + ); + // All the data has been read, resolve the Promise + response.on('end', () => resolve(responseBody)); + /* + * https://nodejs.org/api/http.html#httprequesturl-options-callback, see the + * 'In the case of a premature connection close after the response is received' + * case + */ + request.on('error', reject); + }); + + // Set an aggressive timeout to prevent lock-ups + request.setTimeout(HTTP_TIMEOUT_IN_MS, () => { + request.destroy(); + }); + // Connection error, disconnection, etc. + request.on('error', reject); + request.end(); + }).then(responseBodyRaw => JSON.parse(responseBodyRaw)); } } diff --git a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEcsDetectorSync.ts b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEcsDetectorSync.ts deleted file mode 100644 index a6244a5e2d..0000000000 --- a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEcsDetectorSync.ts +++ /dev/null @@ -1,281 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { context, diag } from '@opentelemetry/api'; -import { suppressTracing } from '@opentelemetry/core'; -import { - DetectorSync, - IResource, - Resource, - ResourceAttributes, -} from '@opentelemetry/resources'; -import { - ATTR_AWS_ECS_CLUSTER_ARN, - ATTR_AWS_ECS_CONTAINER_ARN, - ATTR_AWS_ECS_LAUNCHTYPE, - ATTR_AWS_ECS_TASK_ARN, - ATTR_AWS_ECS_TASK_FAMILY, - ATTR_AWS_ECS_TASK_REVISION, - ATTR_AWS_LOG_GROUP_ARNS, - ATTR_AWS_LOG_GROUP_NAMES, - ATTR_AWS_LOG_STREAM_ARNS, - ATTR_AWS_LOG_STREAM_NAMES, - ATTR_CLOUD_ACCOUNT_ID, - ATTR_CLOUD_AVAILABILITY_ZONE, - ATTR_CLOUD_PLATFORM, - ATTR_CLOUD_PROVIDER, - ATTR_CLOUD_REGION, - ATTR_CLOUD_RESOURCE_ID, - ATTR_CONTAINER_ID, - ATTR_CONTAINER_NAME, - CLOUD_PROVIDER_VALUE_AWS, - CLOUD_PLATFORM_VALUE_AWS_ECS, -} from '../semconv'; -import * as http from 'http'; -import * as util from 'util'; -import * as fs from 'fs'; -import * as os from 'os'; - -const HTTP_TIMEOUT_IN_MS = 1000; - -interface AwsLogOptions { - readonly 'awslogs-region'?: string; - readonly 'awslogs-group'?: string; - readonly 'awslogs-stream'?: string; -} - -/** - * The AwsEcsDetector can be used to detect if a process is running in AWS - * ECS and return a {@link Resource} populated with data about the ECS - * plugins of AWS X-Ray. Returns an empty Resource if detection fails. - */ -export class AwsEcsDetectorSync implements DetectorSync { - static readonly CONTAINER_ID_LENGTH = 64; - static readonly DEFAULT_CGROUP_PATH = '/proc/self/cgroup'; - - private static readFileAsync = util.promisify(fs.readFile); - - detect(): IResource { - const attributes = context.with(suppressTracing(context.active()), () => - this._getAttributes() - ); - return new Resource({}, attributes); - } - - private async _getAttributes(): Promise { - if ( - !process.env.ECS_CONTAINER_METADATA_URI_V4 && - !process.env.ECS_CONTAINER_METADATA_URI - ) { - diag.debug('AwsEcsDetector failed: Process is not on ECS'); - return {}; - } - - try { - let resource = new Resource({ - [ATTR_CLOUD_PROVIDER]: CLOUD_PROVIDER_VALUE_AWS, - [ATTR_CLOUD_PLATFORM]: CLOUD_PLATFORM_VALUE_AWS_ECS, - }).merge(await AwsEcsDetectorSync._getContainerIdAndHostnameResource()); - - const metadataUrl = process.env.ECS_CONTAINER_METADATA_URI_V4; - if (metadataUrl) { - const [containerMetadata, taskMetadata] = await Promise.all([ - AwsEcsDetectorSync._getUrlAsJson(metadataUrl), - AwsEcsDetectorSync._getUrlAsJson(`${metadataUrl}/task`), - ]); - - const metadatav4Resource = - await AwsEcsDetectorSync._getMetadataV4Resource( - containerMetadata, - taskMetadata - ); - const logsResource = await AwsEcsDetectorSync._getLogResource( - containerMetadata - ); - - resource = resource.merge(metadatav4Resource).merge(logsResource); - } - - return resource.attributes; - } catch { - return {}; - } - } - - /** - * Read container ID from cgroup file - * In ECS, even if we fail to find target file - * or target file does not contain container ID - * we do not throw an error but throw warning message - * and then return null string - */ - private static async _getContainerIdAndHostnameResource(): Promise { - const hostName = os.hostname(); - - let containerId = ''; - try { - const rawData = await AwsEcsDetectorSync.readFileAsync( - AwsEcsDetectorSync.DEFAULT_CGROUP_PATH, - 'utf8' - ); - const splitData = rawData.trim().split('\n'); - for (const str of splitData) { - if (str.length > AwsEcsDetectorSync.CONTAINER_ID_LENGTH) { - containerId = str.substring( - str.length - AwsEcsDetectorSync.CONTAINER_ID_LENGTH - ); - break; - } - } - } catch (e) { - diag.debug('AwsEcsDetector failed to read container ID', e); - } - - if (hostName || containerId) { - return new Resource({ - [ATTR_CONTAINER_NAME]: hostName || '', - [ATTR_CONTAINER_ID]: containerId || '', - }); - } - - return Resource.empty(); - } - - private static async _getMetadataV4Resource( - containerMetadata: any, - taskMetadata: any - ): Promise { - const launchType: string = taskMetadata['LaunchType']; - const taskArn: string = taskMetadata['TaskARN']; - - const baseArn: string = taskArn.substring(0, taskArn.lastIndexOf(':')); - const cluster: string = taskMetadata['Cluster']; - - const accountId: string = AwsEcsDetectorSync._getAccountFromArn(taskArn); - const region: string = AwsEcsDetectorSync._getRegionFromArn(taskArn); - const availabilityZone: string | undefined = taskMetadata?.AvailabilityZone; - - const clusterArn = cluster.startsWith('arn:') - ? cluster - : `${baseArn}:cluster/${cluster}`; - - const containerArn: string = containerMetadata['ContainerARN']; - - // https://github.com/open-telemetry/semantic-conventions/blob/main/semantic_conventions/resource/cloud_provider/aws/ecs.yaml - const attributes: ResourceAttributes = { - [ATTR_AWS_ECS_CONTAINER_ARN]: containerArn, - [ATTR_AWS_ECS_CLUSTER_ARN]: clusterArn, - [ATTR_AWS_ECS_LAUNCHTYPE]: launchType?.toLowerCase(), - [ATTR_AWS_ECS_TASK_ARN]: taskArn, - [ATTR_AWS_ECS_TASK_FAMILY]: taskMetadata['Family'], - [ATTR_AWS_ECS_TASK_REVISION]: taskMetadata['Revision'], - - [ATTR_CLOUD_ACCOUNT_ID]: accountId, - [ATTR_CLOUD_REGION]: region, - [ATTR_CLOUD_RESOURCE_ID]: containerArn, - }; - - // The availability zone is not available in all Fargate runtimes - if (availabilityZone) { - attributes[ATTR_CLOUD_AVAILABILITY_ZONE] = availabilityZone; - } - - return new Resource(attributes); - } - - private static async _getLogResource( - containerMetadata: any - ): Promise { - if ( - containerMetadata['LogDriver'] !== 'awslogs' || - !containerMetadata['LogOptions'] - ) { - return Resource.EMPTY; - } - - const containerArn = containerMetadata['ContainerARN']!; - const logOptions = containerMetadata['LogOptions'] as AwsLogOptions; - - const logsRegion = - logOptions['awslogs-region'] || - AwsEcsDetectorSync._getRegionFromArn(containerArn); - - const awsAccount = AwsEcsDetectorSync._getAccountFromArn(containerArn); - - const logsGroupName = logOptions['awslogs-group']!; - const logsGroupArn = `arn:aws:logs:${logsRegion}:${awsAccount}:log-group:${logsGroupName}`; - const logsStreamName = logOptions['awslogs-stream']!; - const logsStreamArn = `arn:aws:logs:${logsRegion}:${awsAccount}:log-group:${logsGroupName}:log-stream:${logsStreamName}`; - - return new Resource({ - [ATTR_AWS_LOG_GROUP_NAMES]: [logsGroupName], - [ATTR_AWS_LOG_GROUP_ARNS]: [logsGroupArn], - [ATTR_AWS_LOG_STREAM_NAMES]: [logsStreamName], - [ATTR_AWS_LOG_STREAM_ARNS]: [logsStreamArn], - }); - } - - private static _getAccountFromArn(containerArn: string): string { - const match = /arn:aws:ecs:[^:]+:([^:]+):.*/.exec(containerArn); - return match![1]; - } - - private static _getRegionFromArn(containerArn: string): string { - const match = /arn:aws:ecs:([^:]+):.*/.exec(containerArn); - return match![1]; - } - - private static _getUrlAsJson(url: string): Promise { - return new Promise((resolve, reject) => { - const request = http.get(url, (response: http.IncomingMessage) => { - if (response.statusCode && response.statusCode >= 400) { - reject( - new Error( - `Request to '${url}' failed with status ${response.statusCode}` - ) - ); - } - /* - * Concatenate the response out of chunks: - * https://nodejs.org/api/stream.html#stream_event_data - */ - let responseBody = ''; - response.on( - 'data', - (chunk: Buffer) => (responseBody += chunk.toString()) - ); - // All the data has been read, resolve the Promise - response.on('end', () => resolve(responseBody)); - /* - * https://nodejs.org/api/http.html#httprequesturl-options-callback, see the - * 'In the case of a premature connection close after the response is received' - * case - */ - request.on('error', reject); - }); - - // Set an aggressive timeout to prevent lock-ups - request.setTimeout(HTTP_TIMEOUT_IN_MS, () => { - request.destroy(); - }); - // Connection error, disconnection, etc. - request.on('error', reject); - request.end(); - }).then(responseBodyRaw => JSON.parse(responseBodyRaw)); - } -} - -export const awsEcsDetectorSync = new AwsEcsDetectorSync(); diff --git a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEksDetector.ts b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEksDetector.ts index fdf7d626db..5e289c7470 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEksDetector.ts +++ b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEksDetector.ts @@ -14,13 +14,25 @@ * limitations under the License. */ +import { context } from '@opentelemetry/api'; +import { suppressTracing } from '@opentelemetry/core'; import { - Detector, - IResource, - ResourceDetectionConfig, + ResourceDetector, + DetectedResource, + DetectedResourceAttributes, } from '@opentelemetry/resources'; - -import { awsEksDetectorSync } from './AwsEksDetectorSync'; +import { + ATTR_CLOUD_PROVIDER, + ATTR_CLOUD_PLATFORM, + ATTR_K8S_CLUSTER_NAME, + ATTR_CONTAINER_ID, + CLOUD_PROVIDER_VALUE_AWS, + CLOUD_PLATFORM_VALUE_AWS_EKS, +} from '../semconv'; +import * as https from 'https'; +import * as fs from 'fs'; +import * as util from 'util'; +import { diag } from '@opentelemetry/api'; /** * The AwsEksDetector can be used to detect if a process is running in AWS Elastic @@ -29,20 +41,212 @@ import { awsEksDetectorSync } from './AwsEksDetectorSync'; * * See https://docs.amazonaws.cn/en_us/xray/latest/devguide/xray-guide.pdf * for more details about detecting information for Elastic Kubernetes plugins - * - * @deprecated Use the new {@link AwsEksDetectorSync} class instead. */ -export class AwsEksDetector implements Detector { - // NOTE: these readonly props are kept for testing purposes + +export class AwsEksDetector implements ResourceDetector { readonly K8S_SVC_URL = 'kubernetes.default.svc'; + readonly K8S_TOKEN_PATH = + '/var/run/secrets/kubernetes.io/serviceaccount/token'; + readonly K8S_CERT_PATH = + '/var/run/secrets/kubernetes.io/serviceaccount/ca.crt'; readonly AUTH_CONFIGMAP_PATH = '/api/v1/namespaces/kube-system/configmaps/aws-auth'; readonly CW_CONFIGMAP_PATH = '/api/v1/namespaces/amazon-cloudwatch/configmaps/cluster-info'; + readonly CONTAINER_ID_LENGTH = 64; + readonly DEFAULT_CGROUP_PATH = '/proc/self/cgroup'; readonly TIMEOUT_MS = 2000; + readonly UTF8_UNICODE = 'utf8'; + + private static readFileAsync = util.promisify(fs.readFile); + private static fileAccessAsync = util.promisify(fs.access); + + detect(): DetectedResource { + const dataPromise = context.with(suppressTracing(context.active()), () => + this._gatherData() + ); + + const attrNames = [ + ATTR_CLOUD_PROVIDER, + ATTR_CLOUD_PLATFORM, + ATTR_K8S_CLUSTER_NAME, + ATTR_CONTAINER_ID, + ]; + + const attributes = {} as DetectedResourceAttributes; + attrNames.forEach(name => { + // Each resource attribute is determined asynchronously in _gatherData(). + attributes[name] = dataPromise.then(data => data[name]); + }); + + return { attributes }; + } + + /** + * The AwsEksDetector can be used to detect if a process is running on Amazon + * Elastic Kubernetes and returns a promise containing resource attributes + * determined from with instance metadata, or empty if the connection to + * kubernetes process or aws config maps fails. + */ + private async _gatherData(): Promise { + try { + await AwsEksDetector.fileAccessAsync(this.K8S_TOKEN_PATH); + const k8scert = await AwsEksDetector.readFileAsync(this.K8S_CERT_PATH); + + if (!(await this._isEks(k8scert))) { + return {}; + } + + const containerId = await this._getContainerId(); + const clusterName = await this._getClusterName(k8scert); + + return !containerId && !clusterName + ? {} + : { + [ATTR_CLOUD_PROVIDER]: CLOUD_PROVIDER_VALUE_AWS, + [ATTR_CLOUD_PLATFORM]: CLOUD_PLATFORM_VALUE_AWS_EKS, + [ATTR_K8S_CLUSTER_NAME]: clusterName || '', + [ATTR_CONTAINER_ID]: containerId || '', + }; + } catch (e: any) { + diag.debug('AwsEksDetector: Process is not running on K8S:', e.message); + return {}; + } + } + + /** + * Attempts to make a connection to AWS Config map which will + * determine whether the process is running on an EKS + * process if the config map is empty or not + */ + private async _isEks(cert: Buffer): Promise { + const options = { + ca: cert, + headers: { + Authorization: await this._getK8sCredHeader(), + }, + hostname: this.K8S_SVC_URL, + method: 'GET', + path: this.AUTH_CONFIGMAP_PATH, + timeout: this.TIMEOUT_MS, + }; + return !!(await this._fetchString(options)); + } + + /** + * Attempts to make a connection to Amazon Cloudwatch + * Config Maps to grab cluster name + */ + private async _getClusterName(cert: Buffer): Promise { + const options = { + ca: cert, + headers: { + Authorization: await this._getK8sCredHeader(), + }, + host: this.K8S_SVC_URL, + method: 'GET', + path: this.CW_CONFIGMAP_PATH, + timeout: this.TIMEOUT_MS, + }; + const response = await this._fetchString(options); + try { + return JSON.parse(response).data['cluster.name']; + } catch (e) { + diag.debug('Cannot get cluster name on EKS', e); + } + return ''; + } + /** + * Reads the Kubernetes token path and returns kubernetes + * credential header + */ + private async _getK8sCredHeader(): Promise { + try { + const content = await AwsEksDetector.readFileAsync( + this.K8S_TOKEN_PATH, + this.UTF8_UNICODE + ); + return 'Bearer ' + content; + } catch (e) { + diag.debug('Unable to read Kubernetes client token.', e); + } + return ''; + } + + /** + * Read container ID from cgroup file generated from docker which lists the full + * untruncated docker container ID at the end of each line. + * + * The predefined structure of calling /proc/self/cgroup when in a docker container has the structure: + * + * #:xxxxxx:/ + * + * or + * + * #:xxxxxx:/docker/64characterID + * + * This function takes advantage of that fact by just reading the 64-character ID from the end of the + * first line. In EKS, even if we fail to find target file or target file does + * not contain container ID we do not throw an error but throw warning message + * and then return null string + */ + private async _getContainerId(): Promise { + try { + const rawData = await AwsEksDetector.readFileAsync( + this.DEFAULT_CGROUP_PATH, + this.UTF8_UNICODE + ); + const splitData = rawData.trim().split('\n'); + for (const str of splitData) { + if (str.length > this.CONTAINER_ID_LENGTH) { + return str.substring(str.length - this.CONTAINER_ID_LENGTH); + } + } + } catch (e: any) { + diag.debug(`AwsEksDetector failed to read container ID: ${e.message}`); + } + return undefined; + } + + /** + * Establishes an HTTP connection to AWS instance document url. + * If the application is running on an EKS instance, we should be able + * to get back a valid JSON document. Parses that document and stores + * the identity properties in a local map. + */ + private async _fetchString(options: https.RequestOptions): Promise { + return await new Promise((resolve, reject) => { + const timeoutId = setTimeout(() => { + req.abort(); + reject(new Error('EKS metadata api request timed out.')); + }, 2000); - detect(_config?: ResourceDetectionConfig): Promise { - return Promise.resolve(awsEksDetectorSync.detect()); + const req = https.request(options, res => { + clearTimeout(timeoutId); + const { statusCode } = res; + res.setEncoding(this.UTF8_UNICODE); + let rawData = ''; + res.on('data', chunk => (rawData += chunk)); + res.on('end', () => { + if (statusCode && statusCode >= 200 && statusCode < 300) { + try { + resolve(rawData); + } catch (e) { + reject(e); + } + } else { + reject( + new Error('Failed to load page, status code: ' + statusCode) + ); + } + }); + }); + req.on('error', err => { + clearTimeout(timeoutId); + reject(err); + }); + req.end(); + }); } } diff --git a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEksDetectorSync.ts b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEksDetectorSync.ts deleted file mode 100644 index 244bf50247..0000000000 --- a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEksDetectorSync.ts +++ /dev/null @@ -1,244 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { context } from '@opentelemetry/api'; -import { suppressTracing } from '@opentelemetry/core'; -import { - DetectorSync, - IResource, - Resource, - ResourceAttributes, - ResourceDetectionConfig, -} from '@opentelemetry/resources'; -import { - ATTR_CLOUD_PROVIDER, - ATTR_CLOUD_PLATFORM, - ATTR_K8S_CLUSTER_NAME, - ATTR_CONTAINER_ID, - CLOUD_PROVIDER_VALUE_AWS, - CLOUD_PLATFORM_VALUE_AWS_EKS, -} from '../semconv'; -import * as https from 'https'; -import * as fs from 'fs'; -import * as util from 'util'; -import { diag } from '@opentelemetry/api'; - -/** - * The AwsEksDetectorSync can be used to detect if a process is running in AWS Elastic - * Kubernetes and return a {@link Resource} populated with data about the Kubernetes - * plugins of AWS X-Ray. Returns an empty Resource if detection fails. - * - * See https://docs.amazonaws.cn/en_us/xray/latest/devguide/xray-guide.pdf - * for more details about detecting information for Elastic Kubernetes plugins - */ - -export class AwsEksDetectorSync implements DetectorSync { - readonly K8S_SVC_URL = 'kubernetes.default.svc'; - readonly K8S_TOKEN_PATH = - '/var/run/secrets/kubernetes.io/serviceaccount/token'; - readonly K8S_CERT_PATH = - '/var/run/secrets/kubernetes.io/serviceaccount/ca.crt'; - readonly AUTH_CONFIGMAP_PATH = - '/api/v1/namespaces/kube-system/configmaps/aws-auth'; - readonly CW_CONFIGMAP_PATH = - '/api/v1/namespaces/amazon-cloudwatch/configmaps/cluster-info'; - readonly CONTAINER_ID_LENGTH = 64; - readonly DEFAULT_CGROUP_PATH = '/proc/self/cgroup'; - readonly TIMEOUT_MS = 2000; - readonly UTF8_UNICODE = 'utf8'; - - private static readFileAsync = util.promisify(fs.readFile); - private static fileAccessAsync = util.promisify(fs.access); - - detect(_config?: ResourceDetectionConfig): IResource { - const attributes = context.with(suppressTracing(context.active()), () => - this._getAttributes() - ); - return new Resource({}, attributes); - } - - /** - * The AwsEksDetector can be used to detect if a process is running on Amazon - * Elastic Kubernetes and returns a promise containing a {@link ResourceAttributes} - * object with instance metadata. Returns a promise containing an - * empty {@link ResourceAttributes} if the connection to kubernetes process - * or aws config maps fails - */ - private async _getAttributes(): Promise { - try { - await AwsEksDetectorSync.fileAccessAsync(this.K8S_TOKEN_PATH); - const k8scert = await AwsEksDetectorSync.readFileAsync( - this.K8S_CERT_PATH - ); - - if (!(await this._isEks(k8scert))) { - return {}; - } - - const containerId = await this._getContainerId(); - const clusterName = await this._getClusterName(k8scert); - - return !containerId && !clusterName - ? {} - : { - [ATTR_CLOUD_PROVIDER]: CLOUD_PROVIDER_VALUE_AWS, - [ATTR_CLOUD_PLATFORM]: CLOUD_PLATFORM_VALUE_AWS_EKS, - [ATTR_K8S_CLUSTER_NAME]: clusterName || '', - [ATTR_CONTAINER_ID]: containerId || '', - }; - } catch (e) { - diag.debug('Process is not running on K8S', e); - return {}; - } - } - - /** - * Attempts to make a connection to AWS Config map which will - * determine whether the process is running on an EKS - * process if the config map is empty or not - */ - private async _isEks(cert: Buffer): Promise { - const options = { - ca: cert, - headers: { - Authorization: await this._getK8sCredHeader(), - }, - hostname: this.K8S_SVC_URL, - method: 'GET', - path: this.AUTH_CONFIGMAP_PATH, - timeout: this.TIMEOUT_MS, - }; - return !!(await this._fetchString(options)); - } - - /** - * Attempts to make a connection to Amazon Cloudwatch - * Config Maps to grab cluster name - */ - private async _getClusterName(cert: Buffer): Promise { - const options = { - ca: cert, - headers: { - Authorization: await this._getK8sCredHeader(), - }, - host: this.K8S_SVC_URL, - method: 'GET', - path: this.CW_CONFIGMAP_PATH, - timeout: this.TIMEOUT_MS, - }; - const response = await this._fetchString(options); - try { - return JSON.parse(response).data['cluster.name']; - } catch (e) { - diag.debug('Cannot get cluster name on EKS', e); - } - return ''; - } - /** - * Reads the Kubernetes token path and returns kubernetes - * credential header - */ - private async _getK8sCredHeader(): Promise { - try { - const content = await AwsEksDetectorSync.readFileAsync( - this.K8S_TOKEN_PATH, - this.UTF8_UNICODE - ); - return 'Bearer ' + content; - } catch (e) { - diag.debug('Unable to read Kubernetes client token.', e); - } - return ''; - } - - /** - * Read container ID from cgroup file generated from docker which lists the full - * untruncated docker container ID at the end of each line. - * - * The predefined structure of calling /proc/self/cgroup when in a docker container has the structure: - * - * #:xxxxxx:/ - * - * or - * - * #:xxxxxx:/docker/64characterID - * - * This function takes advantage of that fact by just reading the 64-character ID from the end of the - * first line. In EKS, even if we fail to find target file or target file does - * not contain container ID we do not throw an error but throw warning message - * and then return null string - */ - private async _getContainerId(): Promise { - try { - const rawData = await AwsEksDetectorSync.readFileAsync( - this.DEFAULT_CGROUP_PATH, - this.UTF8_UNICODE - ); - const splitData = rawData.trim().split('\n'); - for (const str of splitData) { - if (str.length > this.CONTAINER_ID_LENGTH) { - return str.substring(str.length - this.CONTAINER_ID_LENGTH); - } - } - } catch (e: any) { - diag.debug(`AwsEksDetector failed to read container ID: ${e.message}`); - } - return undefined; - } - - /** - * Establishes an HTTP connection to AWS instance document url. - * If the application is running on an EKS instance, we should be able - * to get back a valid JSON document. Parses that document and stores - * the identity properties in a local map. - */ - private async _fetchString(options: https.RequestOptions): Promise { - return await new Promise((resolve, reject) => { - const timeoutId = setTimeout(() => { - req.abort(); - reject(new Error('EKS metadata api request timed out.')); - }, 2000); - - const req = https.request(options, res => { - clearTimeout(timeoutId); - const { statusCode } = res; - res.setEncoding(this.UTF8_UNICODE); - let rawData = ''; - res.on('data', chunk => (rawData += chunk)); - res.on('end', () => { - if (statusCode && statusCode >= 200 && statusCode < 300) { - try { - resolve(rawData); - } catch (e) { - reject(e); - } - } else { - reject( - new Error('Failed to load page, status code: ' + statusCode) - ); - } - }); - }); - req.on('error', err => { - clearTimeout(timeoutId); - reject(err); - }); - req.end(); - }); - } -} - -export const awsEksDetectorSync = new AwsEksDetectorSync(); diff --git a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsLambdaDetector.ts b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsLambdaDetector.ts index 529ebeff61..2a96aa963a 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsLambdaDetector.ts +++ b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsLambdaDetector.ts @@ -15,21 +15,64 @@ */ import { - Detector, - IResource, - ResourceDetectionConfig, + ResourceDetector, + DetectedResource, + DetectedResourceAttributes, } from '@opentelemetry/resources'; -import { awsLambdaDetectorSync } from './AwsLambdaDetectorSync'; +import { + ATTR_AWS_LOG_GROUP_NAMES, + ATTR_CLOUD_PLATFORM, + ATTR_CLOUD_PROVIDER, + ATTR_CLOUD_REGION, + ATTR_FAAS_INSTANCE, + ATTR_FAAS_NAME, + ATTR_FAAS_MAX_MEMORY, + ATTR_FAAS_VERSION, + CLOUD_PROVIDER_VALUE_AWS, + CLOUD_PLATFORM_VALUE_AWS_LAMBDA, +} from '../semconv'; /** * The AwsLambdaDetector can be used to detect if a process is running in AWS Lambda * and return a {@link Resource} populated with data about the environment. - * - * @deprecated Use {@link AwsLambdaDetectorSync} class instead + * Returns an empty Resource if detection fails. */ -export class AwsLambdaDetector implements Detector { - detect(_config?: ResourceDetectionConfig): Promise { - return Promise.resolve(awsLambdaDetectorSync.detect(_config)); +export class AwsLambdaDetector implements ResourceDetector { + detect(): DetectedResource { + // Check if running inside AWS Lambda environment + const executionEnv = process.env.AWS_EXECUTION_ENV; + if (!executionEnv?.startsWith('AWS_Lambda_')) { + return {}; + } + + // These environment variables are guaranteed to be present in Lambda environment + // https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-runtime + const region = process.env.AWS_REGION; + const functionName = process.env.AWS_LAMBDA_FUNCTION_NAME; + const functionVersion = process.env.AWS_LAMBDA_FUNCTION_VERSION; + const memorySize = process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE; + + // These environment variables are not available in Lambda SnapStart functions + const logGroupName = process.env.AWS_LAMBDA_LOG_GROUP_NAME; + const logStreamName = process.env.AWS_LAMBDA_LOG_STREAM_NAME; + + const attributes: DetectedResourceAttributes = { + [ATTR_CLOUD_PROVIDER]: CLOUD_PROVIDER_VALUE_AWS, + [ATTR_CLOUD_PLATFORM]: CLOUD_PLATFORM_VALUE_AWS_LAMBDA, + [ATTR_CLOUD_REGION]: region, + [ATTR_FAAS_NAME]: functionName, + [ATTR_FAAS_VERSION]: functionVersion, + [ATTR_FAAS_MAX_MEMORY]: parseInt(memorySize!) * 1024 * 1024, + }; + + if (logGroupName) { + attributes[ATTR_AWS_LOG_GROUP_NAMES] = [logGroupName]; + } + if (logStreamName) { + attributes[ATTR_FAAS_INSTANCE] = logStreamName; + } + + return { attributes }; } } diff --git a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsLambdaDetectorSync.ts b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsLambdaDetectorSync.ts deleted file mode 100644 index 3f6a74c62f..0000000000 --- a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsLambdaDetectorSync.ts +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { - DetectorSync, - IResource, - Resource, - ResourceAttributes, - ResourceDetectionConfig, -} from '@opentelemetry/resources'; -import { - ATTR_AWS_LOG_GROUP_NAMES, - ATTR_CLOUD_PLATFORM, - ATTR_CLOUD_PROVIDER, - ATTR_CLOUD_REGION, - ATTR_FAAS_INSTANCE, - ATTR_FAAS_NAME, - ATTR_FAAS_MAX_MEMORY, - ATTR_FAAS_VERSION, - CLOUD_PROVIDER_VALUE_AWS, - CLOUD_PLATFORM_VALUE_AWS_LAMBDA, -} from '../semconv'; - -/** - * The AwsLambdaDetector can be used to detect if a process is running in AWS Lambda - * and return a {@link Resource} populated with data about the environment. - * Returns an empty Resource if detection fails. - */ -export class AwsLambdaDetectorSync implements DetectorSync { - detect(_config?: ResourceDetectionConfig): IResource { - // Check if running inside AWS Lambda environment - const executionEnv = process.env.AWS_EXECUTION_ENV; - if (!executionEnv?.startsWith('AWS_Lambda_')) { - return Resource.empty(); - } - - // These environment variables are guaranteed to be present in Lambda environment - // https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-runtime - const region = process.env.AWS_REGION; - const functionName = process.env.AWS_LAMBDA_FUNCTION_NAME; - const functionVersion = process.env.AWS_LAMBDA_FUNCTION_VERSION; - const memorySize = process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE; - - // These environment variables are not available in Lambda SnapStart functions - const logGroupName = process.env.AWS_LAMBDA_LOG_GROUP_NAME; - const logStreamName = process.env.AWS_LAMBDA_LOG_STREAM_NAME; - - const attributes: ResourceAttributes = { - [ATTR_CLOUD_PROVIDER]: CLOUD_PROVIDER_VALUE_AWS, - [ATTR_CLOUD_PLATFORM]: CLOUD_PLATFORM_VALUE_AWS_LAMBDA, - [ATTR_CLOUD_REGION]: region, - [ATTR_FAAS_NAME]: functionName, - [ATTR_FAAS_VERSION]: functionVersion, - [ATTR_FAAS_MAX_MEMORY]: parseInt(memorySize!) * 1024 * 1024, - }; - - if (logGroupName) { - attributes[ATTR_AWS_LOG_GROUP_NAMES] = [logGroupName]; - } - if (logStreamName) { - attributes[ATTR_FAAS_INSTANCE] = logStreamName; - } - - return new Resource(attributes); - } -} - -export const awsLambdaDetectorSync = new AwsLambdaDetectorSync(); diff --git a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/index.ts b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/index.ts index 08a7f232bf..c84f2916c0 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/index.ts +++ b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/index.ts @@ -14,22 +14,8 @@ * limitations under the License. */ -export { - AwsBeanstalkDetector, - awsBeanstalkDetector, -} from './AwsBeanstalkDetector'; -export { - AwsBeanstalkDetectorSync, - awsBeanstalkDetectorSync, -} from './AwsBeanstalkDetectorSync'; +export { awsBeanstalkDetector } from './AwsBeanstalkDetector'; export { awsEc2Detector } from './AwsEc2Detector'; -export { awsEc2DetectorSync } from './AwsEc2DetectorSync'; -export { AwsEcsDetector, awsEcsDetector } from './AwsEcsDetector'; -export { AwsEcsDetectorSync, awsEcsDetectorSync } from './AwsEcsDetectorSync'; -export { AwsEksDetector, awsEksDetector } from './AwsEksDetector'; -export { AwsEksDetectorSync, awsEksDetectorSync } from './AwsEksDetectorSync'; -export { AwsLambdaDetector, awsLambdaDetector } from './AwsLambdaDetector'; -export { - AwsLambdaDetectorSync, - awsLambdaDetectorSync, -} from './AwsLambdaDetectorSync'; +export { awsEcsDetector } from './AwsEcsDetector'; +export { awsEksDetector } from './AwsEksDetector'; +export { awsLambdaDetector } from './AwsLambdaDetector'; diff --git a/detectors/node/opentelemetry-resource-detector-aws/src/index.ts b/detectors/node/opentelemetry-resource-detector-aws/src/index.ts index 0acba8788c..e194befa1d 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/src/index.ts +++ b/detectors/node/opentelemetry-resource-detector-aws/src/index.ts @@ -14,4 +14,10 @@ * limitations under the License. */ -export * from './detectors'; +export { + awsBeanstalkDetector, + awsEc2Detector, + awsEcsDetector, + awsEksDetector, + awsLambdaDetector, +} from './detectors'; diff --git a/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsBeanstalkDetector.test.ts b/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsBeanstalkDetector.test.ts index 9b00ed3548..afab807f6f 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsBeanstalkDetector.test.ts +++ b/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsBeanstalkDetector.test.ts @@ -16,12 +16,14 @@ import * as assert from 'assert'; import * as sinon from 'sinon'; -import { awsBeanstalkDetector, AwsBeanstalkDetectorSync } from '../../src'; import { assertEmptyResource, assertServiceResource, } from '@opentelemetry/contrib-test-utils'; +import { detectResources } from '@opentelemetry/resources'; import { CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK } from '@opentelemetry/semantic-conventions'; +import { awsBeanstalkDetector } from '../../src'; +import { AwsBeanstalkDetector } from '../../src/detectors/AwsBeanstalkDetector'; describe('BeanstalkResourceDetector', () => { const err = new Error('failed to read config file'); @@ -45,14 +47,14 @@ describe('BeanstalkResourceDetector', () => { it('should successfully return resource data', async () => { fileStub = sinon - .stub(AwsBeanstalkDetectorSync, 'fileAccessAsync' as any) + .stub(AwsBeanstalkDetector, 'fileAccessAsync' as any) .resolves(); readStub = sinon - .stub(AwsBeanstalkDetectorSync, 'readFileAsync' as any) + .stub(AwsBeanstalkDetector, 'readFileAsync' as any) .resolves(JSON.stringify(data)); sinon.stub(JSON, 'parse').returns(data); - const resource = await awsBeanstalkDetector.detect(); + const resource = detectResources({ detectors: [awsBeanstalkDetector] }); await resource.waitForAsyncAttributes?.(); sinon.assert.calledOnce(fileStub); @@ -68,14 +70,14 @@ describe('BeanstalkResourceDetector', () => { it('should successfully return resource data with noise', async () => { fileStub = sinon - .stub(AwsBeanstalkDetectorSync, 'fileAccessAsync' as any) + .stub(AwsBeanstalkDetector, 'fileAccessAsync' as any) .resolves(); readStub = sinon - .stub(AwsBeanstalkDetectorSync, 'readFileAsync' as any) + .stub(AwsBeanstalkDetector, 'readFileAsync' as any) .resolves(JSON.stringify(noisyData)); sinon.stub(JSON, 'parse').returns(noisyData); - const resource = await awsBeanstalkDetector.detect(); + const resource = detectResources({ detectors: [awsBeanstalkDetector] }); await resource.waitForAsyncAttributes?.(); sinon.assert.calledOnce(fileStub); @@ -91,13 +93,13 @@ describe('BeanstalkResourceDetector', () => { it('should return empty resource when failing to read file', async () => { fileStub = sinon - .stub(AwsBeanstalkDetectorSync, 'fileAccessAsync' as any) + .stub(AwsBeanstalkDetector, 'fileAccessAsync' as any) .resolves(); readStub = sinon - .stub(AwsBeanstalkDetectorSync, 'readFileAsync' as any) + .stub(AwsBeanstalkDetector, 'readFileAsync' as any) .rejects(err); - const resource = await awsBeanstalkDetector.detect(); + const resource = detectResources({ detectors: [awsBeanstalkDetector] }); await resource.waitForAsyncAttributes?.(); sinon.assert.calledOnce(fileStub); @@ -108,13 +110,13 @@ describe('BeanstalkResourceDetector', () => { it('should return empty resource when config file does not exist', async () => { fileStub = sinon - .stub(AwsBeanstalkDetectorSync, 'fileAccessAsync' as any) + .stub(AwsBeanstalkDetector, 'fileAccessAsync' as any) .rejects(err); readStub = sinon - .stub(AwsBeanstalkDetectorSync, 'readFileAsync' as any) + .stub(AwsBeanstalkDetector, 'readFileAsync' as any) .resolves(JSON.stringify(data)); - const resource = await awsBeanstalkDetector.detect(); + const resource = detectResources({ detectors: [awsBeanstalkDetector] }); await resource.waitForAsyncAttributes?.(); sinon.assert.calledOnce(fileStub); diff --git a/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsBeanstalkDetectorSync.test.ts b/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsBeanstalkDetectorSync.test.ts deleted file mode 100644 index 76096c4bee..0000000000 --- a/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsBeanstalkDetectorSync.test.ts +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import * as assert from 'assert'; -import * as sinon from 'sinon'; -import { awsBeanstalkDetectorSync, AwsBeanstalkDetectorSync } from '../../src'; -import { - assertEmptyResource, - assertServiceResource, -} from '@opentelemetry/contrib-test-utils'; -import { CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK } from '@opentelemetry/semantic-conventions'; - -describe('BeanstalkResourceDetectorSync', () => { - const err = new Error('failed to read config file'); - const data = { - version_label: 'app-5a56-170119_190650-stage-170119_190650', - deployment_id: '32', - environment_name: 'scorekeep', - }; - const noisyData = { - noise: 'noise', - version_label: 'app-5a56-170119_190650-stage-170119_190650', - deployment_id: '32', - environment_name: 'scorekeep', - }; - - let readStub, fileStub; - - afterEach(() => { - sinon.restore(); - }); - - it('should successfully return resource data', async () => { - fileStub = sinon - .stub(AwsBeanstalkDetectorSync, 'fileAccessAsync' as any) - .resolves(); - readStub = sinon - .stub(AwsBeanstalkDetectorSync, 'readFileAsync' as any) - .resolves(JSON.stringify(data)); - sinon.stub(JSON, 'parse').returns(data); - - const resource = awsBeanstalkDetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - sinon.assert.calledOnce(fileStub); - sinon.assert.calledOnce(readStub); - assert.ok(resource); - assertServiceResource(resource, { - name: CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK, - namespace: 'scorekeep', - version: 'app-5a56-170119_190650-stage-170119_190650', - instanceId: '32', - }); - }); - - it('should successfully return resource data with noise', async () => { - fileStub = sinon - .stub(AwsBeanstalkDetectorSync, 'fileAccessAsync' as any) - .resolves(); - readStub = sinon - .stub(AwsBeanstalkDetectorSync, 'readFileAsync' as any) - .resolves(JSON.stringify(noisyData)); - sinon.stub(JSON, 'parse').returns(noisyData); - - const resource = awsBeanstalkDetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - sinon.assert.calledOnce(fileStub); - sinon.assert.calledOnce(readStub); - assert.ok(resource); - assertServiceResource(resource, { - name: CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK, - namespace: 'scorekeep', - version: 'app-5a56-170119_190650-stage-170119_190650', - instanceId: '32', - }); - }); - - it('should return empty resource when failing to read file', async () => { - fileStub = sinon - .stub(AwsBeanstalkDetectorSync, 'fileAccessAsync' as any) - .resolves(); - readStub = sinon - .stub(AwsBeanstalkDetectorSync, 'readFileAsync' as any) - .rejects(err); - - const resource = awsBeanstalkDetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - sinon.assert.calledOnce(fileStub); - sinon.assert.calledOnce(readStub); - assert.ok(resource); - assertEmptyResource(resource); - }); - - it('should return empty resource when config file does not exist', async () => { - fileStub = sinon - .stub(AwsBeanstalkDetectorSync, 'fileAccessAsync' as any) - .rejects(err); - readStub = sinon - .stub(AwsBeanstalkDetectorSync, 'readFileAsync' as any) - .resolves(JSON.stringify(data)); - - const resource = awsBeanstalkDetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - sinon.assert.calledOnce(fileStub); - sinon.assert.notCalled(readStub); - assert.ok(resource); - assertEmptyResource(resource); - }); -}); diff --git a/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsEc2Detector.test.ts b/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsEc2Detector.test.ts index c837f4c6ed..3d3b1c1201 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsEc2Detector.test.ts +++ b/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsEc2Detector.test.ts @@ -17,19 +17,19 @@ import * as nock from 'nock'; import * as assert from 'assert'; -import { awsEc2Detector, awsEc2DetectorSync } from '../../src'; +import { detectResources } from '@opentelemetry/resources'; import { assertCloudResource, assertHostResource, } from '@opentelemetry/contrib-test-utils'; +import { awsEc2Detector } from '../../src'; -const AWS_HOST = 'http://' + awsEc2DetectorSync.AWS_IDMS_ENDPOINT; -const AWS_TOKEN_PATH = awsEc2DetectorSync.AWS_INSTANCE_TOKEN_DOCUMENT_PATH; -const AWS_IDENTITY_PATH = - awsEc2DetectorSync.AWS_INSTANCE_IDENTITY_DOCUMENT_PATH; -const AWS_HOST_PATH = awsEc2DetectorSync.AWS_INSTANCE_HOST_DOCUMENT_PATH; -const AWS_METADATA_TTL_HEADER = awsEc2DetectorSync.AWS_METADATA_TTL_HEADER; -const AWS_METADATA_TOKEN_HEADER = awsEc2DetectorSync.AWS_METADATA_TOKEN_HEADER; +const AWS_HOST = 'http://' + awsEc2Detector.AWS_IDMS_ENDPOINT; +const AWS_TOKEN_PATH = awsEc2Detector.AWS_INSTANCE_TOKEN_DOCUMENT_PATH; +const AWS_IDENTITY_PATH = awsEc2Detector.AWS_INSTANCE_IDENTITY_DOCUMENT_PATH; +const AWS_HOST_PATH = awsEc2Detector.AWS_INSTANCE_HOST_DOCUMENT_PATH; +const AWS_METADATA_TTL_HEADER = awsEc2Detector.AWS_METADATA_TTL_HEADER; +const AWS_METADATA_TOKEN_HEADER = awsEc2Detector.AWS_METADATA_TOKEN_HEADER; const mockedTokenResponse = 'my-token'; const mockedIdentityResponse = { @@ -65,7 +65,7 @@ describe('awsEc2Detector', () => { .matchHeader(AWS_METADATA_TOKEN_HEADER, mockedTokenResponse) .reply(200, () => mockedHostResponse); - const resource = await awsEc2Detector.detect(); + const resource = detectResources({ detectors: [awsEc2Detector] }); await resource.waitForAsyncAttributes?.(); scope.done(); @@ -100,7 +100,7 @@ describe('awsEc2Detector', () => { .matchHeader(AWS_METADATA_TOKEN_HEADER, mockedTokenResponse) .reply(404, () => new Error()); - const resource = await awsEc2Detector.detect(); + const resource = detectResources({ detectors: [awsEc2Detector] }); await resource.waitForAsyncAttributes?.(); assert.deepStrictEqual(resource.attributes, {}); @@ -122,7 +122,7 @@ describe('awsEc2Detector', () => { .delayConnection(5000) .reply(200, () => mockedHostResponse); - const resource = await awsEc2Detector.detect(); + const resource = detectResources({ detectors: [awsEc2Detector] }); await resource.waitForAsyncAttributes?.(); assert.deepStrictEqual(resource.attributes, {}); @@ -140,7 +140,7 @@ describe('awsEc2Detector', () => { .matchHeader(AWS_METADATA_TOKEN_HEADER, mockedTokenResponse) .replyWithError(expectedError.message); - const resource = await awsEc2Detector.detect(); + const resource = detectResources({ detectors: [awsEc2Detector] }); await resource.waitForAsyncAttributes?.(); assert.deepStrictEqual(resource.attributes, {}); diff --git a/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsEc2DetectorSync.test.ts b/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsEc2DetectorSync.test.ts deleted file mode 100644 index 4f309d5ec5..0000000000 --- a/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsEc2DetectorSync.test.ts +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import * as nock from 'nock'; -import * as assert from 'assert'; - -import { - assertCloudResource, - assertHostResource, -} from '@opentelemetry/contrib-test-utils'; - -import { awsEc2DetectorSync } from '../../src'; - -const AWS_HOST = 'http://' + awsEc2DetectorSync.AWS_IDMS_ENDPOINT; -const AWS_TOKEN_PATH = awsEc2DetectorSync.AWS_INSTANCE_TOKEN_DOCUMENT_PATH; -const AWS_IDENTITY_PATH = - awsEc2DetectorSync.AWS_INSTANCE_IDENTITY_DOCUMENT_PATH; -const AWS_HOST_PATH = awsEc2DetectorSync.AWS_INSTANCE_HOST_DOCUMENT_PATH; -const AWS_METADATA_TTL_HEADER = awsEc2DetectorSync.AWS_METADATA_TTL_HEADER; -const AWS_METADATA_TOKEN_HEADER = awsEc2DetectorSync.AWS_METADATA_TOKEN_HEADER; - -const mockedTokenResponse = 'my-token'; -const mockedIdentityResponse = { - instanceId: 'my-instance-id', - instanceType: 'my-instance-type', - accountId: 'my-account-id', - region: 'my-region', - availabilityZone: 'my-zone', -}; -const mockedHostResponse = 'my-hostname'; - -describe('awsEc2DetectorSync', () => { - beforeEach(() => { - nock.disableNetConnect(); - nock.cleanAll(); - }); - - afterEach(() => { - nock.enableNetConnect(); - }); - - describe('with successful request', () => { - it('should return aws_ec2_instance resource', async () => { - const scope = nock(AWS_HOST) - .persist() - .put(AWS_TOKEN_PATH) - .matchHeader(AWS_METADATA_TTL_HEADER, '60') - .reply(200, () => mockedTokenResponse) - .get(AWS_IDENTITY_PATH) - .matchHeader(AWS_METADATA_TOKEN_HEADER, mockedTokenResponse) - .reply(200, () => mockedIdentityResponse) - .get(AWS_HOST_PATH) - .matchHeader(AWS_METADATA_TOKEN_HEADER, mockedTokenResponse) - .reply(200, () => mockedHostResponse); - - const resource = awsEc2DetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - scope.done(); - - assert.ok(resource); - - assertCloudResource(resource, { - provider: 'aws', - accountId: 'my-account-id', - region: 'my-region', - zone: 'my-zone', - }); - assertHostResource(resource, { - id: 'my-instance-id', - hostType: 'my-instance-type', - name: 'my-hostname', - }); - }); - }); - - describe('with unsuccessful request', () => { - it('should return empty resource when receiving error response code', async () => { - const scope = nock(AWS_HOST) - .persist() - .put(AWS_TOKEN_PATH) - .matchHeader(AWS_METADATA_TTL_HEADER, '60') - .reply(200, () => mockedTokenResponse) - .get(AWS_IDENTITY_PATH) - .matchHeader(AWS_METADATA_TOKEN_HEADER, mockedTokenResponse) - .reply(200, () => mockedIdentityResponse) - .get(AWS_HOST_PATH) - .matchHeader(AWS_METADATA_TOKEN_HEADER, mockedTokenResponse) - .reply(404, () => new Error()); - - const resource = awsEc2DetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - assert.deepStrictEqual(resource.attributes, {}); - - scope.done(); - }); - - it('should return empty resource when timed out', async function () { - this.timeout(6000); - const scope = nock(AWS_HOST) - .put(AWS_TOKEN_PATH) - .matchHeader(AWS_METADATA_TTL_HEADER, '60') - .reply(200, () => mockedTokenResponse) - .get(AWS_IDENTITY_PATH) - .matchHeader(AWS_METADATA_TOKEN_HEADER, mockedTokenResponse) - .reply(200, () => mockedIdentityResponse) - .get(AWS_HOST_PATH) - .matchHeader(AWS_METADATA_TOKEN_HEADER, mockedTokenResponse) - .delayConnection(5000) - .reply(200, () => mockedHostResponse); - - const resource = awsEc2DetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - assert.deepStrictEqual(resource.attributes, {}); - - scope.done(); - }); - - it('should return empty resource when replied with an Error', async () => { - const expectedError = new Error('NOT FOUND'); - const scope = nock(AWS_HOST) - .put(AWS_TOKEN_PATH) - .matchHeader(AWS_METADATA_TTL_HEADER, '60') - .reply(200, () => mockedTokenResponse) - .get(AWS_IDENTITY_PATH) - .matchHeader(AWS_METADATA_TOKEN_HEADER, mockedTokenResponse) - .replyWithError(expectedError.message); - - const resource = awsEc2DetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - assert.deepStrictEqual(resource.attributes, {}); - - scope.done(); - }); - }); -}); diff --git a/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsEcsDetector.test.ts b/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsEcsDetector.test.ts index 97df2a3f38..1258de46a6 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsEcsDetector.test.ts +++ b/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsEcsDetector.test.ts @@ -17,12 +17,11 @@ import * as assert from 'assert'; import * as nock from 'nock'; import * as sinon from 'sinon'; -import { awsEcsDetector, AwsEcsDetectorSync } from '../../src'; import { assertEmptyResource, assertContainerResource, } from '@opentelemetry/contrib-test-utils'; -import { Resource } from '@opentelemetry/resources'; +import { Resource, detectResources } from '@opentelemetry/resources'; import { ATTR_AWS_ECS_CLUSTER_ARN, ATTR_AWS_ECS_CONTAINER_ARN, @@ -47,6 +46,9 @@ import { readFileSync } from 'fs'; import * as os from 'os'; import { join } from 'path'; +import { awsEcsDetector } from '../../src'; +import { AwsEcsDetector } from '../../src/detectors/AwsEcsDetector'; + interface EcsResourceAttributes { readonly accountId?: string; readonly region?: string; @@ -187,10 +189,10 @@ describe('AwsEcsResourceDetector', () => { process.env.ECS_CONTAINER_METADATA_URI = 'ecs_metadata_v3_uri'; sinon.stub(os, 'hostname').returns(hostNameData); readStub = sinon - .stub(AwsEcsDetectorSync, 'readFileAsync' as any) + .stub(AwsEcsDetector, 'readFileAsync' as any) .resolves(noisyCgroupData); - const resource = await awsEcsDetector.detect(); + const resource = detectResources({ detectors: [awsEcsDetector] }); await resource.waitForAsyncAttributes?.(); sinon.assert.calledOnce(readStub); @@ -206,10 +208,10 @@ describe('AwsEcsResourceDetector', () => { process.env.ECS_CONTAINER_METADATA_URI = 'ecs_metadata_v3_uri'; sinon.stub(os, 'hostname').returns(hostNameData); readStub = sinon - .stub(AwsEcsDetectorSync, 'readFileAsync' as any) + .stub(AwsEcsDetector, 'readFileAsync' as any) .resolves(multiValidCgroupData); - const resource = await awsEcsDetector.detect(); + const resource = detectResources({ detectors: [awsEcsDetector] }); await resource.waitForAsyncAttributes?.(); sinon.assert.calledOnce(readStub); @@ -224,10 +226,10 @@ describe('AwsEcsResourceDetector', () => { it('should empty resource without accessing files', async () => { sinon.stub(os, 'hostname').returns(hostNameData); readStub = sinon - .stub(AwsEcsDetectorSync, 'readFileAsync' as any) + .stub(AwsEcsDetector, 'readFileAsync' as any) .resolves(correctCgroupData); - const resource = await awsEcsDetector.detect(); + const resource = detectResources({ detectors: [awsEcsDetector] }); await resource.waitForAsyncAttributes?.(); sinon.assert.notCalled(readStub); @@ -284,10 +286,10 @@ describe('AwsEcsResourceDetector', () => { it('should successfully return resource data', async () => { sinon.stub(os, 'hostname').returns(hostNameData); readStub = sinon - .stub(AwsEcsDetectorSync, 'readFileAsync' as any) + .stub(AwsEcsDetector, 'readFileAsync' as any) .resolves(correctCgroupData); - const resource = await awsEcsDetector.detect(); + const resource = detectResources({ detectors: [awsEcsDetector] }); await resource.waitForAsyncAttributes?.(); sinon.assert.calledOnce(readStub); @@ -302,10 +304,10 @@ describe('AwsEcsResourceDetector', () => { it('should return resource only with hostname attribute without cgroup file', async () => { sinon.stub(os, 'hostname').returns(hostNameData); readStub = sinon - .stub(AwsEcsDetectorSync, 'readFileAsync' as any) + .stub(AwsEcsDetector, 'readFileAsync' as any) .rejects(errorMsg.fileNotFoundError); - const resource = await awsEcsDetector.detect(); + const resource = detectResources({ detectors: [awsEcsDetector] }); await resource.waitForAsyncAttributes?.(); sinon.assert.calledOnce(readStub); @@ -319,10 +321,10 @@ describe('AwsEcsResourceDetector', () => { it('should return resource only with hostname attribute when cgroup file does not contain valid container ID', async () => { sinon.stub(os, 'hostname').returns(hostNameData); readStub = sinon - .stub(AwsEcsDetectorSync, 'readFileAsync' as any) + .stub(AwsEcsDetector, 'readFileAsync' as any) .resolves(''); - const resource = await awsEcsDetector.detect(); + const resource = detectResources({ detectors: [awsEcsDetector] }); await resource.waitForAsyncAttributes?.(); sinon.assert.calledOnce(readStub); @@ -336,10 +338,10 @@ describe('AwsEcsResourceDetector', () => { it('should return resource only with container ID attribute without hostname', async () => { sinon.stub(os, 'hostname').returns(''); readStub = sinon - .stub(AwsEcsDetectorSync, 'readFileAsync' as any) + .stub(AwsEcsDetector, 'readFileAsync' as any) .resolves(correctCgroupData); - const resource = await awsEcsDetector.detect(); + const resource = detectResources({ detectors: [awsEcsDetector] }); await resource.waitForAsyncAttributes?.(); sinon.assert.calledOnce(readStub); @@ -353,10 +355,10 @@ describe('AwsEcsResourceDetector', () => { it('should return metadata v4 resource attributes when both hostname and container ID are invalid', async () => { sinon.stub(os, 'hostname').returns(''); readStub = sinon - .stub(AwsEcsDetectorSync, 'readFileAsync' as any) + .stub(AwsEcsDetector, 'readFileAsync' as any) .rejects(errorMsg.fileNotFoundError); - const resource = await awsEcsDetector.detect(); + const resource = detectResources({ detectors: [awsEcsDetector] }); await resource.waitForAsyncAttributes?.(); sinon.assert.calledOnce(readStub); @@ -439,11 +441,11 @@ describe('AwsEcsResourceDetector', () => { const error = new Error('ERROR'); beforeEach(() => { - sinon.stub(AwsEcsDetectorSync, '_getUrlAsJson' as any).rejects(error); + sinon.stub(AwsEcsDetector, '_getUrlAsJson' as any).rejects(error); }); it('should return empty resource if when there is an error', async () => { - const resource = await awsEcsDetector.detect(); + const resource = detectResources({ detectors: [awsEcsDetector] }); await resource.waitForAsyncAttributes?.(); assert.deepStrictEqual(resource.attributes, {}); diff --git a/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsEcsDetectorSync.test.ts b/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsEcsDetectorSync.test.ts deleted file mode 100644 index 95f05b1404..0000000000 --- a/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsEcsDetectorSync.test.ts +++ /dev/null @@ -1,453 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import * as assert from 'assert'; -import * as nock from 'nock'; -import * as sinon from 'sinon'; -import { awsEcsDetectorSync, AwsEcsDetectorSync } from '../../src'; -import { - assertEmptyResource, - assertContainerResource, -} from '@opentelemetry/contrib-test-utils'; -import { Resource } from '@opentelemetry/resources'; -import { - ATTR_AWS_ECS_CLUSTER_ARN, - ATTR_AWS_ECS_CONTAINER_ARN, - ATTR_AWS_ECS_LAUNCHTYPE, - ATTR_AWS_ECS_TASK_ARN, - ATTR_AWS_ECS_TASK_FAMILY, - ATTR_AWS_ECS_TASK_REVISION, - ATTR_AWS_LOG_GROUP_ARNS, - ATTR_AWS_LOG_GROUP_NAMES, - ATTR_AWS_LOG_STREAM_ARNS, - ATTR_AWS_LOG_STREAM_NAMES, - ATTR_CLOUD_ACCOUNT_ID, - ATTR_CLOUD_AVAILABILITY_ZONE, - ATTR_CLOUD_PLATFORM, - ATTR_CLOUD_PROVIDER, - ATTR_CLOUD_REGION, - ATTR_CLOUD_RESOURCE_ID, - CLOUD_PROVIDER_VALUE_AWS, - CLOUD_PLATFORM_VALUE_AWS_ECS, -} from '../../src/semconv'; -import { readFileSync } from 'fs'; -import * as os from 'os'; -import { join } from 'path'; - -interface EcsResourceAttributes { - readonly accountId?: string; - readonly region?: string; - readonly zone?: string; - readonly clusterArn?: string; - readonly containerArn?: string; - readonly launchType?: 'ec2' | 'fargate'; - readonly taskArn?: string; - readonly taskFamily?: string; - readonly taskRevision?: string; - readonly logGroupNames?: Array; - readonly logGroupArns?: Array; - readonly logStreamNames?: Array; - readonly logStreamArns?: Array; -} - -const assertEcsResource = ( - resource: Resource, - validations: EcsResourceAttributes -) => { - assert.strictEqual( - resource.attributes[ATTR_CLOUD_PROVIDER], - CLOUD_PROVIDER_VALUE_AWS - ); - assert.strictEqual( - resource.attributes[ATTR_CLOUD_PLATFORM], - CLOUD_PLATFORM_VALUE_AWS_ECS - ); - if (validations.accountId) { - assert.strictEqual( - resource.attributes[ATTR_CLOUD_ACCOUNT_ID], - validations.accountId - ); - } - if (validations.region) { - assert.strictEqual( - resource.attributes[ATTR_CLOUD_REGION], - validations.region - ); - } - if (validations.zone) { - assert.strictEqual( - resource.attributes[ATTR_CLOUD_AVAILABILITY_ZONE], - validations.zone - ); - } - if (validations.containerArn) { - assert.strictEqual( - resource.attributes[ATTR_AWS_ECS_CONTAINER_ARN], - validations.containerArn - ); - assert.strictEqual( - resource.attributes[ATTR_CLOUD_RESOURCE_ID], - validations.containerArn - ); - } - if (validations.clusterArn) { - assert.strictEqual( - resource.attributes[ATTR_AWS_ECS_CLUSTER_ARN], - validations.clusterArn - ); - } - if (validations.launchType) { - assert.strictEqual( - resource.attributes[ATTR_AWS_ECS_LAUNCHTYPE], - validations.launchType - ); - } - if (validations.taskArn) { - assert.strictEqual( - resource.attributes[ATTR_AWS_ECS_TASK_ARN], - validations.taskArn - ); - } - if (validations.taskFamily) { - assert.strictEqual( - resource.attributes[ATTR_AWS_ECS_TASK_FAMILY], - validations.taskFamily - ); - } - if (validations.taskRevision) { - assert.strictEqual( - resource.attributes[ATTR_AWS_ECS_TASK_REVISION], - validations.taskRevision - ); - } - if (validations.logGroupNames) { - assert.deepEqual( - resource.attributes[ATTR_AWS_LOG_GROUP_NAMES], - validations.logGroupNames - ); - } - if (validations.logGroupArns) { - assert.deepEqual( - resource.attributes[ATTR_AWS_LOG_GROUP_ARNS], - validations.logGroupArns - ); - } - if (validations.logStreamNames) { - assert.deepEqual( - resource.attributes[ATTR_AWS_LOG_STREAM_NAMES], - validations.logStreamNames - ); - } - if (validations.logStreamArns) { - assert.deepEqual( - resource.attributes[ATTR_AWS_LOG_STREAM_ARNS], - validations.logStreamArns - ); - } -}; - -describe('AwsEcsResourceDetectorSync', () => { - const errorMsg = { - fileNotFoundError: new Error('cannot find cgroup file'), - }; - - const correctCgroupData = - 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklm'; - const unexpectedCgroupdata = - 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'; - const noisyCgroupData = `\n\n\n abcdefghijklmnopqrstuvwxyz \n ${correctCgroupData}`; - const multiValidCgroupData = `${unexpectedCgroupdata}\n${correctCgroupData}\nbcd${unexpectedCgroupdata}`; - const hostNameData = 'abcd.test.testing.com'; - - let readStub; - - beforeEach(() => { - process.env.ECS_CONTAINER_METADATA_URI_V4 = ''; - process.env.ECS_CONTAINER_METADATA_URI = ''; - }); - - afterEach(() => { - sinon.restore(); - }); - - it('should successfully return resource data with noisy cgroup file', async () => { - process.env.ECS_CONTAINER_METADATA_URI = 'ecs_metadata_v3_uri'; - sinon.stub(os, 'hostname').returns(hostNameData); - readStub = sinon - .stub(AwsEcsDetectorSync, 'readFileAsync' as any) - .resolves(noisyCgroupData); - - const resource = awsEcsDetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - sinon.assert.calledOnce(readStub); - assert.ok(resource); - assertEcsResource(resource, {}); - assertContainerResource(resource, { - name: 'abcd.test.testing.com', - id: 'bcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklm', - }); - }); - - it('should always return first valid line of data', async () => { - process.env.ECS_CONTAINER_METADATA_URI = 'ecs_metadata_v3_uri'; - sinon.stub(os, 'hostname').returns(hostNameData); - readStub = sinon - .stub(AwsEcsDetectorSync, 'readFileAsync' as any) - .resolves(multiValidCgroupData); - - const resource = awsEcsDetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - sinon.assert.calledOnce(readStub); - assert.ok(resource); - assertEcsResource(resource, {}); - assertContainerResource(resource, { - name: 'abcd.test.testing.com', - id: 'bcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklm', - }); - }); - - it('should empty resource without accessing files', async () => { - sinon.stub(os, 'hostname').returns(hostNameData); - readStub = sinon - .stub(AwsEcsDetectorSync, 'readFileAsync' as any) - .resolves(correctCgroupData); - - const resource = awsEcsDetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - sinon.assert.notCalled(readStub); - assert.ok(resource); - assertEmptyResource(resource); - }); - - describe('with Metadata URI v4 available', () => { - const ECS_CONTAINER_METADATA_URI_V4 = - 'http://169.254.170.2/v4/96d36db6cf2942269b2c2c0c9540c444-4190541037'; - - beforeEach(() => { - process.env.ECS_CONTAINER_METADATA_URI_V4 = ECS_CONTAINER_METADATA_URI_V4; - }); - - describe('when successfully retrieving the data', () => { - function generateLaunchTypeTests( - resourceAttributes: EcsResourceAttributes, - suffix = '' - ) { - let nockScope: nock.Scope; - - beforeEach(() => { - function readTestFileName(testFileName: string) { - const testResource = join( - __dirname, - `test-resources/${testFileName}` - ); - - return readFileSync(testResource, 'utf-8'); - } - - const containerResponseBody = readTestFileName( - `metadatav4-response-container-${resourceAttributes.launchType!}${suffix}.json` - ); - const taskResponseBody = readTestFileName( - `metadatav4-response-task-${resourceAttributes.launchType!}${suffix}.json` - ); - - nockScope = nock('http://169.254.170.2:80') - .persist(false) - .get('/v4/96d36db6cf2942269b2c2c0c9540c444-4190541037') - .reply(200, () => containerResponseBody) - .get('/v4/96d36db6cf2942269b2c2c0c9540c444-4190541037/task') - .reply(200, () => taskResponseBody); - }); - - afterEach(() => { - if (nockScope) { - nockScope.done(); - } - }); - - it('should successfully return resource data', async () => { - sinon.stub(os, 'hostname').returns(hostNameData); - readStub = sinon - .stub(AwsEcsDetectorSync, 'readFileAsync' as any) - .resolves(correctCgroupData); - - const resource = awsEcsDetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - sinon.assert.calledOnce(readStub); - assert.ok(resource); - assertEcsResource(resource, resourceAttributes); - assertContainerResource(resource, { - name: 'abcd.test.testing.com', - id: 'bcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklm', - }); - }); - - it('should return resource only with hostname attribute without cgroup file', async () => { - sinon.stub(os, 'hostname').returns(hostNameData); - readStub = sinon - .stub(AwsEcsDetectorSync, 'readFileAsync' as any) - .rejects(errorMsg.fileNotFoundError); - - const resource = awsEcsDetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - sinon.assert.calledOnce(readStub); - assert.ok(resource); - assertEcsResource(resource, resourceAttributes); - assertContainerResource(resource, { - name: 'abcd.test.testing.com', - }); - }); - - it('should return resource only with hostname attribute when cgroup file does not contain valid container ID', async () => { - sinon.stub(os, 'hostname').returns(hostNameData); - readStub = sinon - .stub(AwsEcsDetectorSync, 'readFileAsync' as any) - .resolves(''); - - const resource = awsEcsDetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - sinon.assert.calledOnce(readStub); - assert.ok(resource); - assertEcsResource(resource, resourceAttributes); - assertContainerResource(resource, { - name: 'abcd.test.testing.com', - }); - }); - - it('should return resource only with container ID attribute without hostname', async () => { - sinon.stub(os, 'hostname').returns(''); - readStub = sinon - .stub(AwsEcsDetectorSync, 'readFileAsync' as any) - .resolves(correctCgroupData); - - const resource = awsEcsDetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - sinon.assert.calledOnce(readStub); - assert.ok(resource); - assertEcsResource(resource, resourceAttributes); - assertContainerResource(resource, { - id: 'bcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklm', - }); - }); - - it('should return metadata v4 resource attributes when both hostname and container ID are invalid', async () => { - sinon.stub(os, 'hostname').returns(''); - readStub = sinon - .stub(AwsEcsDetectorSync, 'readFileAsync' as any) - .rejects(errorMsg.fileNotFoundError); - - const resource = awsEcsDetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - sinon.assert.calledOnce(readStub); - assert.ok(resource); - assertEcsResource(resource, resourceAttributes); - }); - } - - describe('on Ec2', () => { - describe('with AWS CloudWatch as log driver', () => { - generateLaunchTypeTests({ - clusterArn: 'arn:aws:ecs:us-west-2:111122223333:cluster/default', - containerArn: - 'arn:aws:ecs:us-west-2:111122223333:container/0206b271-b33f-47ab-86c6-a0ba208a70a9', - launchType: 'ec2', - taskArn: - 'arn:aws:ecs:us-west-2:111122223333:task/default/158d1c8083dd49d6b527399fd6414f5c', - taskFamily: 'curltest', - taskRevision: '26', - logGroupNames: ['/ecs/metadata'], - logGroupArns: [ - 'arn:aws:logs:us-west-2:111122223333:log-group:/ecs/metadata', - ], - logStreamNames: ['ecs/curl/8f03e41243824aea923aca126495f665'], - logStreamArns: [ - 'arn:aws:logs:us-west-2:111122223333:log-group:/ecs/metadata:log-stream:ecs/curl/8f03e41243824aea923aca126495f665', - ], - }); - }); - }); - - describe('on Fargate', () => { - describe('with AWS CloudWatch as log driver', () => { - generateLaunchTypeTests({ - accountId: '111122223333', - region: 'us-west-2', - zone: 'us-west-2a', - clusterArn: 'arn:aws:ecs:us-west-2:111122223333:cluster/default', - containerArn: - 'arn:aws:ecs:us-west-2:111122223333:container/05966557-f16c-49cb-9352-24b3a0dcd0e1', - launchType: 'fargate', - taskArn: - 'arn:aws:ecs:us-west-2:111122223333:task/default/e9028f8d5d8e4f258373e7b93ce9a3c3', - taskFamily: 'curltest', - taskRevision: '3', - logGroupNames: ['/ecs/containerlogs'], - logGroupArns: [ - 'arn:aws:logs:us-west-2:111122223333:log-group:/ecs/containerlogs', - ], - logStreamNames: ['ecs/curl/cd189a933e5849daa93386466019ab50'], - logStreamArns: [ - 'arn:aws:logs:us-west-2:111122223333:log-group:/ecs/containerlogs:log-stream:ecs/curl/cd189a933e5849daa93386466019ab50', - ], - }); - }); - - describe('with AWS Firelens as log driver', () => { - generateLaunchTypeTests( - { - clusterArn: 'arn:aws:ecs:us-west-2:111122223333:cluster/default', - containerArn: - 'arn:aws:ecs:us-west-2:111122223333:container/05966557-f16c-49cb-9352-24b3a0dcd0e1', - launchType: 'fargate', - taskArn: - 'arn:aws:ecs:us-west-2:111122223333:task/default/e9028f8d5d8e4f258373e7b93ce9a3c3', - taskFamily: 'curltest', - taskRevision: '3', - logGroupNames: undefined, - logGroupArns: undefined, - logStreamNames: undefined, - logStreamArns: undefined, - }, - '-logsfirelens' - ); - }); - }); - }); - - describe('when failing to fetch metadata', async () => { - const error = new Error('ERROR'); - - beforeEach(() => { - sinon.stub(AwsEcsDetectorSync, '_getUrlAsJson' as any).rejects(error); - }); - - it('should return empty resource if when there is an error', async () => { - const resource = awsEcsDetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - assert.deepStrictEqual(resource.attributes, {}); - }); - }); - }); -}); diff --git a/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsEksDetector.test.ts b/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsEksDetector.test.ts index ab743dc3b5..ff2e268051 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsEksDetector.test.ts +++ b/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsEksDetector.test.ts @@ -17,18 +17,16 @@ import * as nock from 'nock'; import * as sinon from 'sinon'; import * as assert from 'assert'; -import { Resource } from '@opentelemetry/resources'; -import { - awsEksDetector, - awsEksDetectorSync, - AwsEksDetectorSync, -} from '../../src'; +import { detectResources } from '@opentelemetry/resources'; import { assertK8sResource, assertContainerResource, assertEmptyResource, } from '@opentelemetry/contrib-test-utils'; +import { awsEksDetector } from '../../src'; +import { AwsEksDetector } from '../../src/detectors/AwsEksDetector'; + const K8S_SVC_URL = awsEksDetector.K8S_SVC_URL; const AUTH_CONFIGMAP_PATH = awsEksDetector.AUTH_CONFIGMAP_PATH; const CW_CONFIGMAP_PATH = awsEksDetector.CW_CONFIGMAP_PATH; @@ -58,13 +56,13 @@ describe('awsEksDetector', () => { describe('on successful request', () => { it('should return an aws_eks_instance_resource', async () => { fileStub = sinon - .stub(AwsEksDetectorSync, 'fileAccessAsync' as any) + .stub(AwsEksDetector, 'fileAccessAsync' as any) .resolves(); readStub = sinon - .stub(AwsEksDetectorSync, 'readFileAsync' as any) + .stub(AwsEksDetector, 'readFileAsync' as any) .resolves(correctCgroupData); getCredStub = sinon - .stub(awsEksDetectorSync, '_getK8sCredHeader' as any) + .stub(awsEksDetector, '_getK8sCredHeader' as any) .resolves(k8s_token); const scope = nock('https://' + K8S_SVC_URL) .persist() @@ -75,7 +73,7 @@ describe('awsEksDetector', () => { .matchHeader('Authorization', k8s_token) .reply(200, () => mockedClusterResponse); - const resource = await awsEksDetector.detect(); + const resource = detectResources({ detectors: [awsEksDetector] }); await resource.waitForAsyncAttributes?.(); scope.done(); @@ -95,14 +93,14 @@ describe('awsEksDetector', () => { it('should return a resource with clusterName attribute without cgroup file', async () => { fileStub = sinon - .stub(AwsEksDetectorSync, 'fileAccessAsync' as any) + .stub(AwsEksDetector, 'fileAccessAsync' as any) .resolves(); readStub = sinon - .stub(AwsEksDetectorSync, 'readFileAsync' as any) + .stub(AwsEksDetector, 'readFileAsync' as any) .onSecondCall() .rejects(errorMsg.fileNotFoundError); getCredStub = sinon - .stub(awsEksDetectorSync, '_getK8sCredHeader' as any) + .stub(awsEksDetector, '_getK8sCredHeader' as any) .resolves(k8s_token); const scope = nock('https://' + K8S_SVC_URL) .persist() @@ -113,7 +111,7 @@ describe('awsEksDetector', () => { .matchHeader('Authorization', k8s_token) .reply(200, () => mockedClusterResponse); - const resource = await awsEksDetector.detect(); + const resource = detectResources({ detectors: [awsEksDetector] }); await resource.waitForAsyncAttributes?.(); scope.done(); @@ -126,13 +124,13 @@ describe('awsEksDetector', () => { it('should return a resource with container ID attribute without a clusterName', async () => { fileStub = sinon - .stub(AwsEksDetectorSync, 'fileAccessAsync' as any) + .stub(AwsEksDetector, 'fileAccessAsync' as any) .resolves(); readStub = sinon - .stub(AwsEksDetectorSync, 'readFileAsync' as any) + .stub(AwsEksDetector, 'readFileAsync' as any) .resolves(correctCgroupData); getCredStub = sinon - .stub(awsEksDetectorSync, '_getK8sCredHeader' as any) + .stub(awsEksDetector, '_getK8sCredHeader' as any) .resolves(k8s_token); const scope = nock('https://' + K8S_SVC_URL) .persist() @@ -143,7 +141,7 @@ describe('awsEksDetector', () => { .matchHeader('Authorization', k8s_token) .reply(200, () => ''); - const resource = await awsEksDetector.detect(); + const resource = detectResources({ detectors: [awsEksDetector] }); await resource.waitForAsyncAttributes?.(); scope.done(); @@ -156,14 +154,14 @@ describe('awsEksDetector', () => { it('should return a resource with clusterName attribute when cgroup file does not contain valid Container ID', async () => { fileStub = sinon - .stub(AwsEksDetectorSync, 'fileAccessAsync' as any) + .stub(AwsEksDetector, 'fileAccessAsync' as any) .resolves(); readStub = sinon - .stub(AwsEksDetectorSync, 'readFileAsync' as any) + .stub(AwsEksDetector, 'readFileAsync' as any) .onSecondCall() .resolves(''); getCredStub = sinon - .stub(awsEksDetectorSync, '_getK8sCredHeader' as any) + .stub(awsEksDetector, '_getK8sCredHeader' as any) .resolves(k8s_token); const scope = nock('https://' + K8S_SVC_URL) .persist() @@ -174,7 +172,7 @@ describe('awsEksDetector', () => { .matchHeader('Authorization', k8s_token) .reply(200, () => mockedClusterResponse); - const resource = await awsEksDetector.detect(); + const resource = detectResources({ detectors: [awsEksDetector] }); await resource.waitForAsyncAttributes?.(); scope.done(); @@ -188,13 +186,13 @@ describe('awsEksDetector', () => { it('should return an empty resource when not running on Eks', async () => { fileStub = sinon - .stub(AwsEksDetectorSync, 'fileAccessAsync' as any) + .stub(AwsEksDetector, 'fileAccessAsync' as any) .resolves(''); readStub = sinon - .stub(AwsEksDetectorSync, 'readFileAsync' as any) + .stub(AwsEksDetector, 'readFileAsync' as any) .resolves(correctCgroupData); getCredStub = sinon - .stub(awsEksDetectorSync, '_getK8sCredHeader' as any) + .stub(awsEksDetector, '_getK8sCredHeader' as any) .resolves(k8s_token); const scope = nock('https://' + K8S_SVC_URL) .persist() @@ -202,7 +200,7 @@ describe('awsEksDetector', () => { .matchHeader('Authorization', k8s_token) .reply(200, () => ''); - const resource = await awsEksDetector.detect(); + const resource = detectResources({ detectors: [awsEksDetector] }); await resource.waitForAsyncAttributes?.(); scope.done(); @@ -216,10 +214,10 @@ describe('awsEksDetector', () => { fileNotFoundError: new Error('cannot file k8s token file'), }; fileStub = sinon - .stub(AwsEksDetectorSync, 'fileAccessAsync' as any) + .stub(AwsEksDetector, 'fileAccessAsync' as any) .rejects(errorMsg.fileNotFoundError); - const resource: Resource = await awsEksDetector.detect(); + const resource = detectResources({ detectors: [awsEksDetector] }); assert.ok(resource); assertEmptyResource(resource); @@ -227,15 +225,15 @@ describe('awsEksDetector', () => { it('should return an empty resource when containerId and clusterName are invalid', async () => { fileStub = sinon - .stub(AwsEksDetectorSync, 'fileAccessAsync' as any) + .stub(AwsEksDetector, 'fileAccessAsync' as any) .resolves(''); readStub = sinon - .stub(AwsEksDetectorSync, 'readFileAsync' as any) + .stub(AwsEksDetector, 'readFileAsync' as any) .onSecondCall() .rejects(errorMsg.fileNotFoundError); getCredStub = sinon - .stub(awsEksDetectorSync, '_getK8sCredHeader' as any) + .stub(awsEksDetector, '_getK8sCredHeader' as any) .resolves(k8s_token); const scope = nock('https://' + K8S_SVC_URL) .persist() @@ -246,7 +244,7 @@ describe('awsEksDetector', () => { .matchHeader('Authorization', k8s_token) .reply(200, () => ''); - const resource = await awsEksDetector.detect(); + const resource = detectResources({ detectors: [awsEksDetector] }); await resource.waitForAsyncAttributes?.(); scope.isDone(); @@ -259,13 +257,13 @@ describe('awsEksDetector', () => { describe('on unsuccessful request', () => { it('should return an empty resource when timed out', async () => { fileStub = sinon - .stub(AwsEksDetectorSync, 'fileAccessAsync' as any) + .stub(AwsEksDetector, 'fileAccessAsync' as any) .resolves(); readStub = sinon - .stub(AwsEksDetectorSync, 'readFileAsync' as any) + .stub(AwsEksDetector, 'readFileAsync' as any) .resolves(correctCgroupData); getCredStub = sinon - .stub(awsEksDetectorSync, '_getK8sCredHeader' as any) + .stub(awsEksDetector, '_getK8sCredHeader' as any) .resolves(k8s_token); const scope = nock('https://' + K8S_SVC_URL) .persist() @@ -274,7 +272,7 @@ describe('awsEksDetector', () => { .delayConnection(2500) .reply(200, () => mockedAwsAuth); - const resource = await awsEksDetector.detect(); + const resource = detectResources({ detectors: [awsEksDetector] }); await resource.waitForAsyncAttributes?.(); scope.done(); @@ -285,13 +283,13 @@ describe('awsEksDetector', () => { it('should return an empty resource when receiving error response code', async () => { fileStub = sinon - .stub(AwsEksDetectorSync, 'fileAccessAsync' as any) + .stub(AwsEksDetector, 'fileAccessAsync' as any) .resolves(); readStub = sinon - .stub(AwsEksDetectorSync, 'readFileAsync' as any) + .stub(AwsEksDetector, 'readFileAsync' as any) .resolves(correctCgroupData); getCredStub = sinon - .stub(awsEksDetectorSync, '_getK8sCredHeader' as any) + .stub(awsEksDetector, '_getK8sCredHeader' as any) .resolves(k8s_token); const scope = nock('https://' + K8S_SVC_URL) .persist() @@ -299,7 +297,7 @@ describe('awsEksDetector', () => { .matchHeader('Authorization', k8s_token) .reply(404, () => new Error()); - const resource = await awsEksDetector.detect(); + const resource = detectResources({ detectors: [awsEksDetector] }); await resource.waitForAsyncAttributes?.(); scope.done(); diff --git a/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsEksDetectorSync.test.ts b/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsEksDetectorSync.test.ts deleted file mode 100644 index 432e113464..0000000000 --- a/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsEksDetectorSync.test.ts +++ /dev/null @@ -1,307 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import * as nock from 'nock'; -import * as sinon from 'sinon'; -import * as assert from 'assert'; -import { Resource } from '@opentelemetry/resources'; -import { awsEksDetectorSync, AwsEksDetectorSync } from '../../src'; -import { - assertK8sResource, - assertContainerResource, - assertEmptyResource, -} from '@opentelemetry/contrib-test-utils'; - -const K8S_SVC_URL = awsEksDetectorSync.K8S_SVC_URL; -const AUTH_CONFIGMAP_PATH = awsEksDetectorSync.AUTH_CONFIGMAP_PATH; -const CW_CONFIGMAP_PATH = awsEksDetectorSync.CW_CONFIGMAP_PATH; - -describe('awsEksDetectorSync', () => { - const errorMsg = { - fileNotFoundError: new Error('cannot find cgroup file'), - }; - - const correctCgroupData = - 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklm'; - const mockedClusterResponse = '{"data":{"cluster.name":"my-cluster"}}'; - const mockedAwsAuth = 'my-auth'; - const k8s_token = 'Bearer 31ada4fd-adec-460c-809a-9e56ceb75269'; - let readStub, fileStub, getCredStub; - - beforeEach(() => { - nock.disableNetConnect(); - nock.cleanAll(); - }); - - afterEach(() => { - sinon.restore(); - nock.enableNetConnect(); - }); - - describe('on successful request', () => { - it('should return an aws_eks_instance_resource', async () => { - fileStub = sinon - .stub(AwsEksDetectorSync, 'fileAccessAsync' as any) - .resolves(); - readStub = sinon - .stub(AwsEksDetectorSync, 'readFileAsync' as any) - .resolves(correctCgroupData); - getCredStub = sinon - .stub(awsEksDetectorSync, '_getK8sCredHeader' as any) - .resolves(k8s_token); - const scope = nock('https://' + K8S_SVC_URL) - .persist() - .get(AUTH_CONFIGMAP_PATH) - .matchHeader('Authorization', k8s_token) - .reply(200, () => mockedAwsAuth) - .get(CW_CONFIGMAP_PATH) - .matchHeader('Authorization', k8s_token) - .reply(200, () => mockedClusterResponse); - - const resource = awsEksDetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - scope.done(); - - sinon.assert.calledOnce(fileStub); - sinon.assert.calledTwice(readStub); - sinon.assert.calledTwice(getCredStub); - - assert.ok(resource); - assertK8sResource(resource, { - clusterName: 'my-cluster', - }); - assertContainerResource(resource, { - id: 'bcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklm', - }); - }); - - it('should return a resource with clusterName attribute without cgroup file', async () => { - fileStub = sinon - .stub(AwsEksDetectorSync, 'fileAccessAsync' as any) - .resolves(); - readStub = sinon - .stub(AwsEksDetectorSync, 'readFileAsync' as any) - .onSecondCall() - .rejects(errorMsg.fileNotFoundError); - getCredStub = sinon - .stub(awsEksDetectorSync, '_getK8sCredHeader' as any) - .resolves(k8s_token); - const scope = nock('https://' + K8S_SVC_URL) - .persist() - .get(AUTH_CONFIGMAP_PATH) - .matchHeader('Authorization', k8s_token) - .reply(200, () => mockedAwsAuth) - .get(CW_CONFIGMAP_PATH) - .matchHeader('Authorization', k8s_token) - .reply(200, () => mockedClusterResponse); - - const resource = awsEksDetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - scope.done(); - - assert.ok(resource); - assertK8sResource(resource, { - clusterName: 'my-cluster', - }); - }); - - it('should return a resource with container ID attribute without a clusterName', async () => { - fileStub = sinon - .stub(AwsEksDetectorSync, 'fileAccessAsync' as any) - .resolves(); - readStub = sinon - .stub(AwsEksDetectorSync, 'readFileAsync' as any) - .resolves(correctCgroupData); - getCredStub = sinon - .stub(awsEksDetectorSync, '_getK8sCredHeader' as any) - .resolves(k8s_token); - const scope = nock('https://' + K8S_SVC_URL) - .persist() - .get(AUTH_CONFIGMAP_PATH) - .matchHeader('Authorization', k8s_token) - .reply(200, () => mockedAwsAuth) - .get(CW_CONFIGMAP_PATH) - .matchHeader('Authorization', k8s_token) - .reply(200, () => ''); - - const resource = awsEksDetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - scope.done(); - - assert.ok(resource); - assertContainerResource(resource, { - id: 'bcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklm', - }); - }); - - it('should return a resource with clusterName attribute when cgroup file does not contain valid Container ID', async () => { - fileStub = sinon - .stub(AwsEksDetectorSync, 'fileAccessAsync' as any) - .resolves(); - readStub = sinon - .stub(AwsEksDetectorSync, 'readFileAsync' as any) - .onSecondCall() - .resolves(''); - getCredStub = sinon - .stub(awsEksDetectorSync, '_getK8sCredHeader' as any) - .resolves(k8s_token); - const scope = nock('https://' + K8S_SVC_URL) - .persist() - .get(AUTH_CONFIGMAP_PATH) - .matchHeader('Authorization', k8s_token) - .reply(200, () => mockedAwsAuth) - .get(CW_CONFIGMAP_PATH) - .matchHeader('Authorization', k8s_token) - .reply(200, () => mockedClusterResponse); - - const resource = awsEksDetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - scope.done(); - - assert.ok(resource); - assert.ok(resource); - assertK8sResource(resource, { - clusterName: 'my-cluster', - }); - }); - - it('should return an empty resource when not running on Eks', async () => { - fileStub = sinon - .stub(AwsEksDetectorSync, 'fileAccessAsync' as any) - .resolves(''); - readStub = sinon - .stub(AwsEksDetectorSync, 'readFileAsync' as any) - .resolves(correctCgroupData); - getCredStub = sinon - .stub(awsEksDetectorSync, '_getK8sCredHeader' as any) - .resolves(k8s_token); - const scope = nock('https://' + K8S_SVC_URL) - .persist() - .get(AUTH_CONFIGMAP_PATH) - .matchHeader('Authorization', k8s_token) - .reply(200, () => ''); - - const resource = awsEksDetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - scope.done(); - - assert.ok(resource); - assertEmptyResource(resource); - }); - - it('should return an empty resource when k8s token file does not exist', async () => { - const errorMsg = { - fileNotFoundError: new Error('cannot file k8s token file'), - }; - fileStub = sinon - .stub(AwsEksDetectorSync, 'fileAccessAsync' as any) - .rejects(errorMsg.fileNotFoundError); - - const resource: Resource = await awsEksDetectorSync.detect(); - - assert.ok(resource); - assertEmptyResource(resource); - }); - - it('should return an empty resource when containerId and clusterName are invalid', async () => { - fileStub = sinon - .stub(AwsEksDetectorSync, 'fileAccessAsync' as any) - .resolves(''); - readStub = sinon - .stub(AwsEksDetectorSync, 'readFileAsync' as any) - .onSecondCall() - .rejects(errorMsg.fileNotFoundError); - - getCredStub = sinon - .stub(awsEksDetectorSync, '_getK8sCredHeader' as any) - .resolves(k8s_token); - const scope = nock('https://' + K8S_SVC_URL) - .persist() - .get(AUTH_CONFIGMAP_PATH) - .matchHeader('Authorization', k8s_token) - .reply(200, () => mockedAwsAuth) - .get(CW_CONFIGMAP_PATH) - .matchHeader('Authorization', k8s_token) - .reply(200, () => ''); - - const resource = awsEksDetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - scope.isDone(); - - assert.ok(resource); - assertEmptyResource(resource); - }); - }); - - describe('on unsuccessful request', () => { - it('should return an empty resource when timed out', async () => { - fileStub = sinon - .stub(AwsEksDetectorSync, 'fileAccessAsync' as any) - .resolves(); - readStub = sinon - .stub(AwsEksDetectorSync, 'readFileAsync' as any) - .resolves(correctCgroupData); - getCredStub = sinon - .stub(awsEksDetectorSync, '_getK8sCredHeader' as any) - .resolves(k8s_token); - const scope = nock('https://' + K8S_SVC_URL) - .persist() - .get(AUTH_CONFIGMAP_PATH) - .matchHeader('Authorization', k8s_token) - .delayConnection(2500) - .reply(200, () => mockedAwsAuth); - - const resource = awsEksDetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - scope.done(); - - assert.ok(resource); - assertEmptyResource(resource); - }).timeout(awsEksDetectorSync.TIMEOUT_MS + 100); - - it('should return an empty resource when receiving error response code', async () => { - fileStub = sinon - .stub(AwsEksDetectorSync, 'fileAccessAsync' as any) - .resolves(); - readStub = sinon - .stub(AwsEksDetectorSync, 'readFileAsync' as any) - .resolves(correctCgroupData); - getCredStub = sinon - .stub(awsEksDetectorSync, '_getK8sCredHeader' as any) - .resolves(k8s_token); - const scope = nock('https://' + K8S_SVC_URL) - .persist() - .get(AUTH_CONFIGMAP_PATH) - .matchHeader('Authorization', k8s_token) - .reply(404, () => new Error()); - - const resource = awsEksDetectorSync.detect(); - await resource.waitForAsyncAttributes?.(); - - scope.done(); - - assert.ok(resource); - assertEmptyResource(resource); - }); - }); -}); diff --git a/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsLambdaDetector.test.ts b/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsLambdaDetector.test.ts index f4ba622fae..a5ebec748b 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsLambdaDetector.test.ts +++ b/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsLambdaDetector.test.ts @@ -15,12 +15,21 @@ */ import * as assert from 'assert'; -import { - assertCloudResource, - assertEmptyResource, -} from '@opentelemetry/contrib-test-utils'; - +import { detectResources } from '@opentelemetry/resources'; +import { assertEmptyResource } from '@opentelemetry/contrib-test-utils'; import { awsLambdaDetector } from '../../src'; +import { + ATTR_AWS_LOG_GROUP_NAMES, + ATTR_CLOUD_PLATFORM, + ATTR_CLOUD_PROVIDER, + ATTR_CLOUD_REGION, + ATTR_FAAS_INSTANCE, + ATTR_FAAS_NAME, + ATTR_FAAS_MAX_MEMORY, + ATTR_FAAS_VERSION, + CLOUD_PROVIDER_VALUE_AWS, + CLOUD_PLATFORM_VALUE_AWS_LAMBDA, +} from '../../src/semconv'; describe('awsLambdaDetector', () => { let oldEnv: NodeJS.ProcessEnv; @@ -36,28 +45,56 @@ describe('awsLambdaDetector', () => { describe('on lambda', () => { it('fills resource', async () => { process.env.AWS_EXECUTION_ENV = 'AWS_Lambda_nodejs22.x'; + process.env.AWS_REGION = 'us-east-1'; process.env.AWS_LAMBDA_FUNCTION_NAME = 'name'; process.env.AWS_LAMBDA_FUNCTION_VERSION = 'v1'; - process.env.AWS_REGION = 'us-east-1'; - - const resource = await awsLambdaDetector.detect(); + process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE = '128'; + process.env.AWS_LAMBDA_LOG_GROUP_NAME = '/aws/lambda/name'; + process.env.AWS_LAMBDA_LOG_STREAM_NAME = '2024/03/14/[$LATEST]123456'; - assertCloudResource(resource, { - provider: 'aws', - region: 'us-east-1', - }); + const resource = detectResources({ detectors: [awsLambdaDetector] }); - assert.strictEqual(resource.attributes['faas.name'], 'name'); - assert.strictEqual(resource.attributes['faas.version'], 'v1'); + assert.strictEqual( + resource.attributes[ATTR_CLOUD_PROVIDER], + CLOUD_PROVIDER_VALUE_AWS + ); + assert.strictEqual( + resource.attributes[ATTR_CLOUD_PLATFORM], + CLOUD_PLATFORM_VALUE_AWS_LAMBDA + ); + assert.strictEqual(resource.attributes[ATTR_CLOUD_REGION], 'us-east-1'); + assert.strictEqual(resource.attributes[ATTR_FAAS_NAME], 'name'); + assert.strictEqual(resource.attributes[ATTR_FAAS_VERSION], 'v1'); + assert.strictEqual( + resource.attributes[ATTR_FAAS_INSTANCE], + '2024/03/14/[$LATEST]123456' + ); + assert.strictEqual( + resource.attributes[ATTR_FAAS_MAX_MEMORY], + 128 * 1024 * 1024 + ); + assert.deepStrictEqual(resource.attributes[ATTR_AWS_LOG_GROUP_NAMES], [ + '/aws/lambda/name', + ]); }); }); describe('not on lambda', () => { - it('returns empty resource', async () => { - process.env.AWS_LAMBDA_FUNCTION_VERSION = 'v1'; + it('returns empty resource if AWS_EXECUTION_ENV is not set', async () => { + process.env.AWS_LAMBDA_FUNCTION_NAME = 'name'; + process.env.AWS_REGION = 'us-east-1'; + + const resource = detectResources({ detectors: [awsLambdaDetector] }); + + assertEmptyResource(resource); + }); + + it('returns empty resource if AWS_EXECUTION_ENV is not Lambda', async () => { + process.env.AWS_EXECUTION_ENV = 'AWS_ECS_EC2'; + process.env.AWS_LAMBDA_FUNCTION_NAME = 'name'; process.env.AWS_REGION = 'us-east-1'; - const resource = await awsLambdaDetector.detect(); + const resource = detectResources({ detectors: [awsLambdaDetector] }); assertEmptyResource(resource); }); diff --git a/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsLambdaDetectorSync.test.ts b/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsLambdaDetectorSync.test.ts deleted file mode 100644 index ba7099506b..0000000000 --- a/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsLambdaDetectorSync.test.ts +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import * as assert from 'assert'; -import { assertEmptyResource } from '@opentelemetry/contrib-test-utils'; -import { awsLambdaDetectorSync } from '../../src'; -import { - ATTR_AWS_LOG_GROUP_NAMES, - ATTR_CLOUD_PLATFORM, - ATTR_CLOUD_PROVIDER, - ATTR_CLOUD_REGION, - ATTR_FAAS_INSTANCE, - ATTR_FAAS_NAME, - ATTR_FAAS_MAX_MEMORY, - ATTR_FAAS_VERSION, - CLOUD_PROVIDER_VALUE_AWS, - CLOUD_PLATFORM_VALUE_AWS_LAMBDA, -} from '../../src/semconv'; - -describe('awsLambdaDetectorSync', () => { - let oldEnv: NodeJS.ProcessEnv; - - beforeEach(() => { - oldEnv = { ...process.env }; - }); - - afterEach(() => { - process.env = oldEnv; - }); - - describe('on lambda', () => { - it('fills resource', async () => { - process.env.AWS_EXECUTION_ENV = 'AWS_Lambda_nodejs22.x'; - process.env.AWS_REGION = 'us-east-1'; - process.env.AWS_LAMBDA_FUNCTION_NAME = 'name'; - process.env.AWS_LAMBDA_FUNCTION_VERSION = 'v1'; - process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE = '128'; - process.env.AWS_LAMBDA_LOG_GROUP_NAME = '/aws/lambda/name'; - process.env.AWS_LAMBDA_LOG_STREAM_NAME = '2024/03/14/[$LATEST]123456'; - - const resource = awsLambdaDetectorSync.detect(); - - assert.strictEqual( - resource.attributes[ATTR_CLOUD_PROVIDER], - CLOUD_PROVIDER_VALUE_AWS - ); - assert.strictEqual( - resource.attributes[ATTR_CLOUD_PLATFORM], - CLOUD_PLATFORM_VALUE_AWS_LAMBDA - ); - assert.strictEqual(resource.attributes[ATTR_CLOUD_REGION], 'us-east-1'); - assert.strictEqual(resource.attributes[ATTR_FAAS_NAME], 'name'); - assert.strictEqual(resource.attributes[ATTR_FAAS_VERSION], 'v1'); - assert.strictEqual( - resource.attributes[ATTR_FAAS_INSTANCE], - '2024/03/14/[$LATEST]123456' - ); - assert.strictEqual( - resource.attributes[ATTR_FAAS_MAX_MEMORY], - 128 * 1024 * 1024 - ); - assert.deepStrictEqual(resource.attributes[ATTR_AWS_LOG_GROUP_NAMES], [ - '/aws/lambda/name', - ]); - }); - }); - - describe('not on lambda', () => { - it('returns empty resource if AWS_EXECUTION_ENV is not set', async () => { - process.env.AWS_LAMBDA_FUNCTION_NAME = 'name'; - process.env.AWS_REGION = 'us-east-1'; - - const resource = awsLambdaDetectorSync.detect(); - - assertEmptyResource(resource); - }); - - it('returns empty resource if AWS_EXECUTION_ENV is not Lambda', async () => { - process.env.AWS_EXECUTION_ENV = 'AWS_ECS_EC2'; - process.env.AWS_LAMBDA_FUNCTION_NAME = 'name'; - process.env.AWS_REGION = 'us-east-1'; - - const resource = awsLambdaDetectorSync.detect(); - - assertEmptyResource(resource); - }); - }); -}); diff --git a/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsSuppressTracing.test.ts b/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsSuppressTracing.test.ts index e5b9d39b5a..b80e603d08 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsSuppressTracing.test.ts +++ b/detectors/node/opentelemetry-resource-detector-aws/test/detectors/AwsSuppressTracing.test.ts @@ -23,7 +23,7 @@ import { SimpleSpanProcessor, } from '@opentelemetry/sdk-trace-base'; import { NodeSDK } from '@opentelemetry/sdk-node'; -import { DetectorSync } from '@opentelemetry/resources'; +import { ResourceDetector, detectResources } from '@opentelemetry/resources'; describe('[Integration] Internal tracing', () => { it('should not start spans for any network or fs operation in any detector', async () => { @@ -50,11 +50,11 @@ describe('[Integration] Internal tracing', () => { // tracing being exported. We do the detection outside the SDK constructor to have such // scenario. const { - awsBeanstalkDetectorSync, - awsEc2DetectorSync, - awsEcsDetectorSync, - awsEksDetectorSync, - awsLambdaDetectorSync, + awsBeanstalkDetector, + awsEc2Detector, + awsEcsDetector, + awsEksDetector, + awsLambdaDetector, } = require('../../build/src'); // NOTE: the require process makes use of the fs API so spans are being exported. @@ -63,15 +63,15 @@ describe('[Integration] Internal tracing', () => { memoryExporter.reset(); const detectors = [ - awsBeanstalkDetectorSync, - awsEc2DetectorSync, - awsEcsDetectorSync, - awsEksDetectorSync, - awsLambdaDetectorSync, - ] as DetectorSync[]; + awsBeanstalkDetector, + awsEc2Detector, + awsEcsDetector, + awsEksDetector, + awsLambdaDetector, + ] as ResourceDetector[]; for (const d of detectors) { - const r = d.detect(); + const r = detectResources({ detectors: [d] }); await r.waitForAsyncAttributes?.(); } diff --git a/detectors/node/opentelemetry-resource-detector-azure/README.md b/detectors/node/opentelemetry-resource-detector-azure/README.md index cd0a85832d..8c5a6fe21d 100644 --- a/detectors/node/opentelemetry-resource-detector-azure/README.md +++ b/detectors/node/opentelemetry-resource-detector-azure/README.md @@ -18,7 +18,7 @@ npm install --save @opentelemetry/resource-detector-azure ```typescript import { detectResources } from '@opentelemetry/resources'; import { azureAppServiceDetector } from '@opentelemetry/resource-detector-azure'; -const resource = detectResourcesSync({ +const resource = detectResources({ detectors: [azureAppServiceDetector], }); diff --git a/detectors/node/opentelemetry-resource-detector-azure/package.json b/detectors/node/opentelemetry-resource-detector-azure/package.json index 3f8b48422b..1409cfc252 100644 --- a/detectors/node/opentelemetry-resource-detector-azure/package.json +++ b/detectors/node/opentelemetry-resource-detector-azure/package.json @@ -20,7 +20,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -36,21 +36,22 @@ "devDependencies": { "@opentelemetry/api": "^1.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/instrumentation-http": "^0.57.2", + "@opentelemetry/instrumentation-http": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", "nock": "13.3.3", "nyc": "15.1.0", "rimraf": "5.0.10", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "^1.25.1", - "@opentelemetry/resources": "^1.10.1", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/detectors/node/opentelemetry-resource-detector-azure#readme", diff --git a/detectors/node/opentelemetry-resource-detector-azure/src/detectors/AzureAppServiceDetector.ts b/detectors/node/opentelemetry-resource-detector-azure/src/detectors/AzureAppServiceDetector.ts index 09c66ea7ca..06d4ee9e6b 100644 --- a/detectors/node/opentelemetry-resource-detector-azure/src/detectors/AzureAppServiceDetector.ts +++ b/detectors/node/opentelemetry-resource-detector-azure/src/detectors/AzureAppServiceDetector.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { DetectorSync, IResource, Resource } from '@opentelemetry/resources'; +import { ResourceDetector, DetectedResource } from '@opentelemetry/resources'; import { AZURE_APP_SERVICE_STAMP_RESOURCE_ATTRIBUTE, REGION_NAME, @@ -50,8 +50,8 @@ const APP_SERVICE_ATTRIBUTE_ENV_VARS = { * The AzureAppServiceDetector can be used to detect if a process is running in an Azure App Service * @returns a {@link Resource} populated with data about the environment or an empty Resource if detection fails. */ -class AzureAppServiceDetector implements DetectorSync { - detect(): IResource { +class AzureAppServiceDetector implements ResourceDetector { + detect(): DetectedResource { let attributes = {}; const websiteSiteName = process.env[WEBSITE_SITE_NAME]; if (websiteSiteName && !isAzureFunction()) { @@ -85,7 +85,7 @@ class AzureAppServiceDetector implements DetectorSync { } } } - return new Resource(attributes); + return { attributes }; } } diff --git a/detectors/node/opentelemetry-resource-detector-azure/src/detectors/AzureFunctionsDetector.ts b/detectors/node/opentelemetry-resource-detector-azure/src/detectors/AzureFunctionsDetector.ts index acd214bea0..ca157d283a 100644 --- a/detectors/node/opentelemetry-resource-detector-azure/src/detectors/AzureFunctionsDetector.ts +++ b/detectors/node/opentelemetry-resource-detector-azure/src/detectors/AzureFunctionsDetector.ts @@ -14,8 +14,7 @@ * limitations under the License. */ -import { DetectorSync, IResource, Resource } from '@opentelemetry/resources'; - +import { ResourceDetector, DetectedResource } from '@opentelemetry/resources'; import { SEMRESATTRS_FAAS_MAX_MEMORY, SEMRESATTRS_FAAS_INSTANCE, @@ -46,8 +45,8 @@ const AZURE_FUNCTIONS_ATTRIBUTE_ENV_VARS = { * The AzureFunctionsDetector can be used to detect if a process is running in Azure Functions * @returns a {@link Resource} populated with data about the environment or an empty Resource if detection fails. */ -class AzureFunctionsDetector implements DetectorSync { - detect(): IResource { +class AzureFunctionsDetector implements ResourceDetector { + detect(): DetectedResource { let attributes = {}; const serviceName = process.env[WEBSITE_SITE_NAME]; @@ -102,7 +101,7 @@ class AzureFunctionsDetector implements DetectorSync { } } } - return new Resource(attributes); + return { attributes }; } } diff --git a/detectors/node/opentelemetry-resource-detector-azure/src/detectors/AzureVmDetector.ts b/detectors/node/opentelemetry-resource-detector-azure/src/detectors/AzureVmDetector.ts index c644e7a4b4..86a0a41051 100644 --- a/detectors/node/opentelemetry-resource-detector-azure/src/detectors/AzureVmDetector.ts +++ b/detectors/node/opentelemetry-resource-detector-azure/src/detectors/AzureVmDetector.ts @@ -16,13 +16,12 @@ import * as http from 'http'; -import { context } from '@opentelemetry/api'; +import { context, diag } from '@opentelemetry/api'; import { suppressTracing } from '@opentelemetry/core'; import { - DetectorSync, - IResource, - Resource, - ResourceAttributes, + ResourceDetector, + DetectedResource, + DetectedResourceAttributes, } from '@opentelemetry/resources'; import { CLOUDPLATFORMVALUES_AZURE_VM, @@ -48,70 +47,98 @@ import { * The AzureVmDetector can be used to detect if a process is running in an Azure VM. * @returns a {@link Resource} populated with data about the environment or an empty Resource if detection fails. */ -class AzureVmResourceDetector implements DetectorSync { - detect(): IResource { - const attributes = context.with(suppressTracing(context.active()), () => +class AzureVmResourceDetector implements ResourceDetector { + detect(): DetectedResource { + const dataPromise = context.with(suppressTracing(context.active()), () => this.getAzureVmMetadata() ); - return new Resource({}, attributes); + + const attrNames = [ + AZURE_VM_SCALE_SET_NAME_ATTRIBUTE, + AZURE_VM_SKU_ATTRIBUTE, + SEMRESATTRS_CLOUD_PLATFORM, + SEMRESATTRS_CLOUD_PROVIDER, + SEMRESATTRS_CLOUD_REGION, + CLOUD_RESOURCE_ID_RESOURCE_ATTRIBUTE, + SEMRESATTRS_HOST_ID, + SEMRESATTRS_HOST_NAME, + SEMRESATTRS_HOST_TYPE, + SEMRESATTRS_OS_VERSION, + ]; + + const attributes = {} as DetectedResourceAttributes; + attrNames.forEach(name => { + // Each resource attribute is determined asynchronously in _gatherData(). + attributes[name] = dataPromise.then(data => data[name]); + }); + + return { attributes }; } - async getAzureVmMetadata(): Promise { - const options = { - host: AZURE_VM_METADATA_HOST, - path: AZURE_VM_METADATA_PATH, - method: 'GET', - timeout: 5000, - headers: { - Metadata: 'True', - }, - }; - const metadata: AzureVmMetadata = await new Promise((resolve, reject) => { - const timeoutId = setTimeout(() => { - req.destroy(); - reject(new Error('Azure metadata service request timed out.')); - }, 1000); + async getAzureVmMetadata(): Promise { + try { + const options = { + host: AZURE_VM_METADATA_HOST, + path: AZURE_VM_METADATA_PATH, + method: 'GET', + timeout: 5000, + headers: { + Metadata: 'True', + }, + }; + const metadata: AzureVmMetadata = await new Promise((resolve, reject) => { + const timeoutId = setTimeout(() => { + req.destroy(); + reject(new Error('Azure metadata service request timed out.')); + }, 1000); - const req = http.request(options, res => { - clearTimeout(timeoutId); - const { statusCode } = res; - res.setEncoding('utf8'); - let rawData = ''; - res.on('data', chunk => (rawData += chunk)); - res.on('end', () => { - if (statusCode && statusCode >= 200 && statusCode < 300) { - try { - resolve(JSON.parse(rawData)); - } catch (error) { - reject(error); + const req = http.request(options, res => { + clearTimeout(timeoutId); + const { statusCode } = res; + res.setEncoding('utf8'); + let rawData = ''; + res.on('data', chunk => (rawData += chunk)); + res.on('end', () => { + if (statusCode && statusCode >= 200 && statusCode < 300) { + try { + resolve(JSON.parse(rawData)); + } catch (error) { + reject(error); + } + } else { + reject( + new Error('Failed to load page, status code: ' + statusCode) + ); } - } else { - reject( - new Error('Failed to load page, status code: ' + statusCode) - ); - } + }); }); + req.on('error', err => { + clearTimeout(timeoutId); + reject(err); + }); + req.end(); }); - req.on('error', err => { - clearTimeout(timeoutId); - reject(err); - }); - req.end(); - }); - const attributes = { - [AZURE_VM_SCALE_SET_NAME_ATTRIBUTE]: metadata['vmScaleSetName'], - [AZURE_VM_SKU_ATTRIBUTE]: metadata['sku'], - [SEMRESATTRS_CLOUD_PLATFORM]: CLOUDPLATFORMVALUES_AZURE_VM, - [SEMRESATTRS_CLOUD_PROVIDER]: CLOUDPROVIDERVALUES_AZURE, - [SEMRESATTRS_CLOUD_REGION]: metadata['location'], - [CLOUD_RESOURCE_ID_RESOURCE_ATTRIBUTE]: metadata['resourceId'], - [SEMRESATTRS_HOST_ID]: metadata['vmId'], - [SEMRESATTRS_HOST_NAME]: metadata['name'], - [SEMRESATTRS_HOST_TYPE]: metadata['vmSize'], - [SEMRESATTRS_OS_VERSION]: metadata['version'], - }; - return attributes; + const attributes = { + [AZURE_VM_SCALE_SET_NAME_ATTRIBUTE]: metadata['vmScaleSetName'], + [AZURE_VM_SKU_ATTRIBUTE]: metadata['sku'], + [SEMRESATTRS_CLOUD_PLATFORM]: CLOUDPLATFORMVALUES_AZURE_VM, + [SEMRESATTRS_CLOUD_PROVIDER]: CLOUDPROVIDERVALUES_AZURE, + [SEMRESATTRS_CLOUD_REGION]: metadata['location'], + [CLOUD_RESOURCE_ID_RESOURCE_ATTRIBUTE]: metadata['resourceId'], + [SEMRESATTRS_HOST_ID]: metadata['vmId'], + [SEMRESATTRS_HOST_NAME]: metadata['name'], + [SEMRESATTRS_HOST_TYPE]: metadata['vmSize'], + [SEMRESATTRS_OS_VERSION]: metadata['version'], + }; + return attributes; + } catch (err: any) { + diag.debug( + 'AzureVmResourceDetector: not running in an Azure VM:', + err.message + ); + return {}; + } } } diff --git a/detectors/node/opentelemetry-resource-detector-azure/test/detectors/AzureAppServiceDetector.test.ts b/detectors/node/opentelemetry-resource-detector-azure/test/detectors/AzureAppServiceDetector.test.ts index c178106f32..a7fd035e54 100644 --- a/detectors/node/opentelemetry-resource-detector-azure/test/detectors/AzureAppServiceDetector.test.ts +++ b/detectors/node/opentelemetry-resource-detector-azure/test/detectors/AzureAppServiceDetector.test.ts @@ -26,7 +26,7 @@ import { SEMRESATTRS_SERVICE_NAME, } from '@opentelemetry/semantic-conventions'; import { azureFunctionsDetector } from '../../src'; -import { detectResourcesSync } from '@opentelemetry/resources'; +import { detectResources } from '@opentelemetry/resources'; describe('AzureAppServiceDetector', () => { let originalEnv: NodeJS.ProcessEnv; @@ -48,7 +48,7 @@ describe('AzureAppServiceDetector', () => { process.env.WEBSITE_RESOURCE_GROUP = 'test-resource-group'; process.env.WEBSITE_OWNER_NAME = 'test-owner-name'; - const resource = detectResourcesSync({ + const resource = detectResources({ detectors: [azureFunctionsDetector, azureAppServiceDetector], }); assert.ok(resource); @@ -88,7 +88,7 @@ describe('AzureAppServiceDetector', () => { process.env.WEBSITE_HOME_STAMPNAME = 'test-home-stamp'; process.env.WEBSITE_OWNER_NAME = 'test-owner-name'; - const resource = detectResourcesSync({ + const resource = detectResources({ detectors: [azureFunctionsDetector, azureAppServiceDetector], }); assert.ok(resource); @@ -119,7 +119,7 @@ describe('AzureAppServiceDetector', () => { process.env.WEBSITE_RESOURCE_GROUP = 'test-resource-group'; delete process.env.WEBSITE_OWNER_NAME; - const resource = detectResourcesSync({ + const resource = detectResources({ detectors: [azureFunctionsDetector, azureAppServiceDetector], }); assert.ok(resource); diff --git a/detectors/node/opentelemetry-resource-detector-azure/test/detectors/AzureFunctionsDetector.test.ts b/detectors/node/opentelemetry-resource-detector-azure/test/detectors/AzureFunctionsDetector.test.ts index 4c5710958c..5822dcdd05 100644 --- a/detectors/node/opentelemetry-resource-detector-azure/test/detectors/AzureFunctionsDetector.test.ts +++ b/detectors/node/opentelemetry-resource-detector-azure/test/detectors/AzureFunctionsDetector.test.ts @@ -27,7 +27,7 @@ import { SEMRESATTRS_SERVICE_INSTANCE_ID, SEMRESATTRS_SERVICE_NAME, } from '@opentelemetry/semantic-conventions'; -import { detectResourcesSync } from '@opentelemetry/resources'; +import { detectResources } from '@opentelemetry/resources'; import { AZURE_APP_SERVICE_STAMP_RESOURCE_ATTRIBUTE } from '../../src/types'; describe('AzureFunctionsDetector', () => { @@ -49,7 +49,7 @@ describe('AzureFunctionsDetector', () => { process.env.WEBSITE_OWNER_NAME = 'test-owner-name'; process.env.WEBSITE_RESOURCE_GROUP = 'test-resource-group'; - const resource = detectResourcesSync({ + const resource = detectResources({ detectors: [azureFunctionsDetector, azureAppServiceDetector], }); assert.ok(resource); @@ -91,7 +91,7 @@ describe('AzureFunctionsDetector', () => { process.env.WEBSITE_RESOURCE_GROUP = 'test-resource-group'; const expectedWebsiteOwnerName = 'test-owner-name'; - const resource = detectResourcesSync({ + const resource = detectResources({ detectors: [azureFunctionsDetector, azureAppServiceDetector], }); assert.ok(resource); @@ -113,7 +113,7 @@ it('should detect azure functions if websiteSku is defined as FlexConsumption', process.env.WEBSITE_OWNER_NAME = 'test-owner-name'; process.env.WEBSITE_RESOURCE_GROUP = 'test-resource-group'; - const resource = detectResourcesSync({ + const resource = detectResources({ detectors: [azureFunctionsDetector, azureAppServiceDetector], }); assert.ok(resource); diff --git a/detectors/node/opentelemetry-resource-detector-azure/test/detectors/AzureVmDetector.test.ts b/detectors/node/opentelemetry-resource-detector-azure/test/detectors/AzureVmDetector.test.ts index edf413faa3..095e52d63e 100644 --- a/detectors/node/opentelemetry-resource-detector-azure/test/detectors/AzureVmDetector.test.ts +++ b/detectors/node/opentelemetry-resource-detector-azure/test/detectors/AzureVmDetector.test.ts @@ -17,8 +17,8 @@ import * as assert from 'assert'; import * as nock from 'nock'; import { azureVmDetector } from '../../src/detectors/AzureVmDetector'; -import { IResource } from '@opentelemetry/resources'; import { AzureVmMetadata } from '../../src/types'; +import { detectResources } from '@opentelemetry/resources'; const linuxTestResponse: AzureVmMetadata = { additionalCapabilities: { @@ -387,10 +387,8 @@ describe('AzureVmServiceDetector', () => { .get(AZURE_VM_METADATA_PATH) .reply(200, linuxTestResponse); - const resource: IResource = azureVmDetector.detect(); - if (resource.waitForAsyncAttributes) { - await resource.waitForAsyncAttributes(); - } + const resource = detectResources({ detectors: [azureVmDetector] }); + await resource.waitForAsyncAttributes?.(); const attributes = resource.attributes; for (let i = 0; i < Object.keys(attributes).length; i++) { const key = Object.keys(attributes)[i]; @@ -404,10 +402,8 @@ describe('AzureVmServiceDetector', () => { .get(AZURE_VM_METADATA_PATH) .reply(200, windowsTestResponse); - const resource: IResource = azureVmDetector.detect(); - if (resource.waitForAsyncAttributes) { - await resource.waitForAsyncAttributes(); - } + const resource = detectResources({ detectors: [azureVmDetector] }); + await resource.waitForAsyncAttributes?.(); const attributes = resource.attributes; for (let i = 0; i < Object.keys(attributes).length; i++) { const key = Object.keys(attributes)[i]; diff --git a/detectors/node/opentelemetry-resource-detector-container/README.md b/detectors/node/opentelemetry-resource-detector-container/README.md index fd452420fe..8d04c270a0 100644 --- a/detectors/node/opentelemetry-resource-detector-container/README.md +++ b/detectors/node/opentelemetry-resource-detector-container/README.md @@ -30,7 +30,7 @@ const tracerProvider = new NodeTracerProvider({ resource }); 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) -### ContainerDetector +### Container Detector Populates `container.id` for processes running on containers supporting : docker( cgroup v1 or v2 ) or with containerd diff --git a/detectors/node/opentelemetry-resource-detector-container/package.json b/detectors/node/opentelemetry-resource-detector-container/package.json index c477de6ec4..eafaf8bbe7 100644 --- a/detectors/node/opentelemetry-resource-detector-container/package.json +++ b/detectors/node/opentelemetry-resource-detector-container/package.json @@ -21,7 +21,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -38,6 +38,7 @@ "@opentelemetry/api": "^1.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", "@opentelemetry/instrumentation-fs": "^0.19.1", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -46,14 +47,14 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "^1.26.0", - "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/detectors/node/opentelemetry-resource-detector-container#readme", diff --git a/detectors/node/opentelemetry-resource-detector-container/src/detectors/ContainerDetector.ts b/detectors/node/opentelemetry-resource-detector-container/src/detectors/ContainerDetector.ts index 239228e7df..a27ae0ac04 100644 --- a/detectors/node/opentelemetry-resource-detector-container/src/detectors/ContainerDetector.ts +++ b/detectors/node/opentelemetry-resource-detector-container/src/detectors/ContainerDetector.ts @@ -13,14 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { - DetectorSync, - IResource, - Resource, - ResourceAttributes, - ResourceDetectionConfig, -} from '@opentelemetry/resources'; +import { ResourceDetector, DetectedResource } from '@opentelemetry/resources'; import { SEMRESATTRS_CONTAINER_ID } from '@opentelemetry/semantic-conventions'; import * as fs from 'fs'; @@ -29,7 +23,7 @@ import { context, diag } from '@opentelemetry/api'; import { suppressTracing } from '@opentelemetry/core'; import { extractContainerIdFromLine } from './utils'; -export class ContainerDetector implements DetectorSync { +export class ContainerDetector implements ResourceDetector { readonly CONTAINER_ID_LENGTH = 64; readonly DEFAULT_CGROUP_V1_PATH = '/proc/self/cgroup'; readonly DEFAULT_CGROUP_V2_PATH = '/proc/self/mountinfo'; @@ -43,35 +37,19 @@ export class ContainerDetector implements DetectorSync { private static readFileAsync = util.promisify(fs.readFile); - detect(_config?: ResourceDetectionConfig): IResource { - const attributes = context.with(suppressTracing(context.active()), () => - this._getAttributes() - ); - return new Resource({}, attributes); + detect(): DetectedResource { + const attributes = { + [SEMRESATTRS_CONTAINER_ID]: this._getContainerIdWithSuppressedTracing(), + }; + return { attributes }; } - /** - * Attempts to obtain the container ID from the file system. If the - * file read is successful it returns a promise containing a {@link ResourceAttributes} - * object with the container ID. Returns a promise containing an - * empty {@link ResourceAttributes} if the paths do not exist or fail - * to read. - */ - async _getAttributes(): Promise { - try { - const containerId = await this._getContainerId(); - return !containerId - ? {} - : { - [SEMRESATTRS_CONTAINER_ID]: containerId, - }; - } catch (e) { - diag.debug( - 'Container Detector did not identify running inside a supported container, no container attributes will be added to resource: ', - e - ); - return {}; - } + private async _getContainerIdWithSuppressedTracing(): Promise< + string | undefined + > { + return context.with(suppressTracing(context.active()), () => + this._getContainerId() + ); } private async _getContainerIdV1(): Promise { diff --git a/detectors/node/opentelemetry-resource-detector-container/src/detectors/index.ts b/detectors/node/opentelemetry-resource-detector-container/src/detectors/index.ts index edd915f6aa..cbc82adfc5 100644 --- a/detectors/node/opentelemetry-resource-detector-container/src/detectors/index.ts +++ b/detectors/node/opentelemetry-resource-detector-container/src/detectors/index.ts @@ -13,4 +13,4 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -export * from './ContainerDetector'; +export { containerDetector } from './ContainerDetector'; diff --git a/detectors/node/opentelemetry-resource-detector-container/src/index.ts b/detectors/node/opentelemetry-resource-detector-container/src/index.ts index 9bfde8defd..7871849927 100644 --- a/detectors/node/opentelemetry-resource-detector-container/src/index.ts +++ b/detectors/node/opentelemetry-resource-detector-container/src/index.ts @@ -13,4 +13,4 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -export * from './detectors'; +export { containerDetector } from './detectors'; diff --git a/detectors/node/opentelemetry-resource-detector-container/test/ContainerDetector.test.ts b/detectors/node/opentelemetry-resource-detector-container/test/ContainerDetector.test.ts index cb6a7e0133..db5eba87a3 100644 --- a/detectors/node/opentelemetry-resource-detector-container/test/ContainerDetector.test.ts +++ b/detectors/node/opentelemetry-resource-detector-container/test/ContainerDetector.test.ts @@ -17,13 +17,14 @@ import * as sinon from 'sinon'; import * as assert from 'assert'; -import { containerDetector } from '../src'; import { assertContainerResource, assertEmptyResource, } from '@opentelemetry/contrib-test-utils'; +import { detectResources } from '@opentelemetry/resources'; -import { ContainerDetector } from '../src'; +import { containerDetector } from '../src'; +import { ContainerDetector } from '../src/detectors/ContainerDetector'; describe('ContainerDetector', () => { let readStub: sinon.SinonStub; @@ -48,7 +49,7 @@ describe('ContainerDetector', () => { .stub(ContainerDetector, 'readFileAsync' as any) .resolves(undefined); - const resource = containerDetector.detect(); + const resource = detectResources({ detectors: [containerDetector] }); await resource.waitForAsyncAttributes?.(); assert.deepStrictEqual(resource.attributes, {}); @@ -60,7 +61,7 @@ describe('ContainerDetector', () => { .stub(ContainerDetector, 'readFileAsync' as any) .resolves(correctCgroupV1Data); - const resource = containerDetector.detect(); + const resource = detectResources({ detectors: [containerDetector] }); await resource.waitForAsyncAttributes?.(); sinon.assert.calledOnce(readStub); @@ -77,7 +78,7 @@ describe('ContainerDetector', () => { readStub.onFirstCall().resolves(''); readStub.onSecondCall().resolves(correctCgroupV2Data); - const resource = containerDetector.detect(); + const resource = detectResources({ detectors: [containerDetector] }); await resource.waitForAsyncAttributes?.(); sinon.assert.calledTwice(readStub); @@ -93,7 +94,7 @@ describe('ContainerDetector', () => { readStub.onFirstCall().resolves(''); readStub.onSecondCall().resolves(correctCgroupV2PodmanData); - const resource = containerDetector.detect(); + const resource = detectResources({ detectors: [containerDetector] }); await resource.waitForAsyncAttributes?.(); sinon.assert.calledTwice(readStub); @@ -109,7 +110,7 @@ describe('ContainerDetector', () => { readStub.onFirstCall().resolves(''); readStub.onSecondCall().resolves(wrongCgroupV2Data); - const resource = containerDetector.detect(); + const resource = detectResources({ detectors: [containerDetector] }); await resource.waitForAsyncAttributes?.(); sinon.assert.calledTwice(readStub); @@ -131,7 +132,7 @@ describe('ContainerDetector', () => { .stub(ContainerDetector, 'readFileAsync' as any) .resolves(''); - const resource = containerDetector.detect(); + const resource = detectResources({ detectors: [containerDetector] }); await resource.waitForAsyncAttributes?.(); assert.deepStrictEqual(resource.attributes, {}); @@ -148,7 +149,7 @@ describe('ContainerDetector', () => { .stub(ContainerDetector, 'readFileAsync' as any) .rejects(errorMsg.fileNotFoundError); - const resource = containerDetector.detect(); + const resource = detectResources({ detectors: [containerDetector] }); await resource.waitForAsyncAttributes?.(); sinon.assert.calledOnce(readStub); @@ -166,7 +167,7 @@ describe('ContainerDetector', () => { .stub(ContainerDetector, 'readFileAsync' as any) .rejects(errorMsg.fileNotFoundError); - const resource = containerDetector.detect(); + const resource = detectResources({ detectors: [containerDetector] }); await resource.waitForAsyncAttributes?.(); sinon.assert.calledOnce(readStub); assertEmptyResource(resource); diff --git a/detectors/node/opentelemetry-resource-detector-container/test/ContainerDetectorIntegration.test.ts b/detectors/node/opentelemetry-resource-detector-container/test/ContainerDetectorIntegration.test.ts index 8c469962a1..5c6de0a0fd 100644 --- a/detectors/node/opentelemetry-resource-detector-container/test/ContainerDetectorIntegration.test.ts +++ b/detectors/node/opentelemetry-resource-detector-container/test/ContainerDetectorIntegration.test.ts @@ -22,7 +22,7 @@ import { SimpleSpanProcessor, } from '@opentelemetry/sdk-trace-base'; import { NodeSDK } from '@opentelemetry/sdk-node'; -import { IResource } from '@opentelemetry/resources'; +import { detectResources } from '@opentelemetry/resources'; describe('[Integration] ContainerDetector', () => { it('should not start spans for detector reads to filesystem', async () => { @@ -54,7 +54,7 @@ describe('[Integration] ContainerDetector', () => { await spanProcessor.forceFlush(); const numSpansAfterRequire = memoryExporter.getFinishedSpans().length; - const resource = containerDetector.detect() as IResource; + const resource = detectResources({ detectors: [containerDetector] }); await resource.waitForAsyncAttributes?.(); // Wait for the next loop to let the span close properly diff --git a/detectors/node/opentelemetry-resource-detector-gcp/package.json b/detectors/node/opentelemetry-resource-detector-gcp/package.json index 29aed69a39..f93c091fa0 100644 --- a/detectors/node/opentelemetry-resource-detector-gcp/package.json +++ b/detectors/node/opentelemetry-resource-detector-gcp/package.json @@ -27,7 +27,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -43,21 +43,22 @@ "devDependencies": { "@opentelemetry/api": "^1.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/instrumentation-http": "^0.57.2", + "@opentelemetry/instrumentation-http": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/semver": "7.5.8", "nock": "13.3.3", "nyc": "15.1.0", "rimraf": "5.0.10", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "^1.0.0", - "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "gcp-metadata": "^6.0.0" }, diff --git a/detectors/node/opentelemetry-resource-detector-gcp/src/detectors/GcpDetector.ts b/detectors/node/opentelemetry-resource-detector-gcp/src/detectors/GcpDetector.ts index 10f7874600..3a5aa06021 100644 --- a/detectors/node/opentelemetry-resource-detector-gcp/src/detectors/GcpDetector.ts +++ b/detectors/node/opentelemetry-resource-detector-gcp/src/detectors/GcpDetector.ts @@ -15,14 +15,13 @@ */ import * as gcpMetadata from 'gcp-metadata'; -import { context, diag } from '@opentelemetry/api'; +import { context } from '@opentelemetry/api'; import { suppressTracing } from '@opentelemetry/core'; import { - DetectorSync, ResourceDetectionConfig, - Resource, - ResourceAttributes, - IResource, + ResourceDetector, + DetectedResource, + DetectedResourceAttributes, } from '@opentelemetry/resources'; import { CLOUDPROVIDERVALUES_GCP, @@ -42,61 +41,54 @@ import { * Cloud Platform and return a {@link Resource} populated with metadata about * the instance. Returns an empty Resource if detection fails. */ -class GcpDetector implements DetectorSync { - detect(_config?: ResourceDetectionConfig): IResource { +class GcpDetector implements ResourceDetector { + detect(_config?: ResourceDetectionConfig): DetectedResource { const attributes = context.with(suppressTracing(context.active()), () => this._getAttributes() ); - return new Resource({}, attributes); + return { attributes }; } /** - * Attempts to connect and obtain instance configuration data from the GCP metadata service. - * If the connection is successful it returns a promise containing a {@link ResourceAttributes} - * object with instance metadata. Returns a promise containing an - * empty {@link ResourceAttributes} if the connection or parsing of the metadata fails. + * Asynchronously gather GCP cloud metadata. */ - private async _getAttributes(): Promise { - if (!(await gcpMetadata.isAvailable())) { - diag.debug('GcpDetector failed: GCP Metadata unavailable.'); - return {}; - } - - const [projectId, instanceId, zoneId, clusterName, hostname] = - await Promise.all([ - this._getProjectId(), - this._getInstanceId(), - this._getZone(), - this._getClusterName(), - this._getHostname(), - ]); + private _getAttributes(): DetectedResourceAttributes { + const isAvail = gcpMetadata.isAvailable(); - const attributes: ResourceAttributes = {}; - attributes[SEMRESATTRS_CLOUD_ACCOUNT_ID] = projectId; - attributes[SEMRESATTRS_HOST_ID] = instanceId; - attributes[SEMRESATTRS_HOST_NAME] = hostname; - attributes[SEMRESATTRS_CLOUD_AVAILABILITY_ZONE] = zoneId; - attributes[SEMRESATTRS_CLOUD_PROVIDER] = CLOUDPROVIDERVALUES_GCP; + const attributes: DetectedResourceAttributes = { + [SEMRESATTRS_CLOUD_PROVIDER]: (async () => { + return (await isAvail) ? CLOUDPROVIDERVALUES_GCP : undefined; + })(), + [SEMRESATTRS_CLOUD_ACCOUNT_ID]: this._getProjectId(isAvail), + [SEMRESATTRS_HOST_ID]: this._getInstanceId(isAvail), + [SEMRESATTRS_HOST_NAME]: this._getHostname(isAvail), + [SEMRESATTRS_CLOUD_AVAILABILITY_ZONE]: this._getZone(isAvail), + }; - if (process.env.KUBERNETES_SERVICE_HOST) - this._addK8sAttributes(attributes, clusterName); + // Add resource attributes for K8s. + if (process.env.KUBERNETES_SERVICE_HOST) { + attributes[SEMRESATTRS_K8S_CLUSTER_NAME] = this._getClusterName(isAvail); + attributes[SEMRESATTRS_K8S_NAMESPACE_NAME] = (async () => { + return (await isAvail) ? process.env.NAMESPACE : undefined; + })(); + attributes[SEMRESATTRS_K8S_POD_NAME] = (async () => { + return (await isAvail) ? process.env.HOSTNAME : undefined; + })(); + attributes[SEMRESATTRS_CONTAINER_NAME] = (async () => { + return (await isAvail) ? process.env.CONTAINER_NAME : undefined; + })(); + } return attributes; } - /** Add resource attributes for K8s */ - private _addK8sAttributes( - attributes: ResourceAttributes, - clusterName: string - ): void { - attributes[SEMRESATTRS_K8S_CLUSTER_NAME] = clusterName; - attributes[SEMRESATTRS_K8S_NAMESPACE_NAME] = process.env.NAMESPACE ?? ''; - attributes[SEMRESATTRS_K8S_POD_NAME] = process.env.HOSTNAME ?? ''; - attributes[SEMRESATTRS_CONTAINER_NAME] = process.env.CONTAINER_NAME ?? ''; - } - /** Gets project id from GCP project metadata. */ - private async _getProjectId(): Promise { + private async _getProjectId( + isAvail: Promise + ): Promise { + if (!(await isAvail)) { + return undefined; + } try { return await gcpMetadata.project('project-id'); } catch { @@ -105,7 +97,12 @@ class GcpDetector implements DetectorSync { } /** Gets instance id from GCP instance metadata. */ - private async _getInstanceId(): Promise { + private async _getInstanceId( + isAvail: Promise + ): Promise { + if (!(await isAvail)) { + return undefined; + } try { const id = await gcpMetadata.instance('id'); return id.toString(); @@ -115,7 +112,12 @@ class GcpDetector implements DetectorSync { } /** Gets zone from GCP instance metadata. */ - private async _getZone(): Promise { + private async _getZone( + isAvail: Promise + ): Promise { + if (!(await isAvail)) { + return undefined; + } try { const zoneId = await gcpMetadata.instance('zone'); if (zoneId) { @@ -128,7 +130,12 @@ class GcpDetector implements DetectorSync { } /** Gets cluster name from GCP instance metadata. */ - private async _getClusterName(): Promise { + private async _getClusterName( + isAvail: Promise + ): Promise { + if (!(await isAvail)) { + return undefined; + } try { return await gcpMetadata.instance('attributes/cluster-name'); } catch { @@ -137,7 +144,12 @@ class GcpDetector implements DetectorSync { } /** Gets hostname from GCP instance metadata. */ - private async _getHostname(): Promise { + private async _getHostname( + isAvail: Promise + ): Promise { + if (!(await isAvail)) { + return undefined; + } try { return await gcpMetadata.instance('hostname'); } catch { diff --git a/detectors/node/opentelemetry-resource-detector-gcp/src/detectors/index.ts b/detectors/node/opentelemetry-resource-detector-gcp/src/detectors/index.ts index 9e856721bc..63782b5e64 100644 --- a/detectors/node/opentelemetry-resource-detector-gcp/src/detectors/index.ts +++ b/detectors/node/opentelemetry-resource-detector-gcp/src/detectors/index.ts @@ -14,4 +14,4 @@ * limitations under the License. */ -export * from './GcpDetector'; +export { gcpDetector } from './GcpDetector'; diff --git a/detectors/node/opentelemetry-resource-detector-gcp/src/index.ts b/detectors/node/opentelemetry-resource-detector-gcp/src/index.ts index f281d4fdcd..d5675245dc 100644 --- a/detectors/node/opentelemetry-resource-detector-gcp/src/index.ts +++ b/detectors/node/opentelemetry-resource-detector-gcp/src/index.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -export * from './detectors'; +export { gcpDetector } from './detectors'; // Internal - used for tests only export { resetIsAvailableCache } from 'gcp-metadata'; diff --git a/detectors/node/opentelemetry-resource-detector-gcp/test/detectors/GcpDetector.test.ts b/detectors/node/opentelemetry-resource-detector-gcp/test/detectors/GcpDetector.test.ts index 4d2bc6ea48..7af4b8b374 100644 --- a/detectors/node/opentelemetry-resource-detector-gcp/test/detectors/GcpDetector.test.ts +++ b/detectors/node/opentelemetry-resource-detector-gcp/test/detectors/GcpDetector.test.ts @@ -31,6 +31,7 @@ import { assertContainerResource, assertEmptyResource, } from '@opentelemetry/contrib-test-utils'; +import { detectResources } from '@opentelemetry/resources'; const HEADERS = { [HEADER_NAME.toLowerCase()]: HEADER_VALUE, @@ -77,15 +78,13 @@ describe('gcpDetector', () => { .reply(200, () => 'my-project-id', HEADERS) .get(ZONE_PATH) .reply(200, () => 'project/zone/my-zone', HEADERS) - .get(CLUSTER_NAME_PATH) - .reply(404) .get(HOSTNAME_PATH) .reply(200, () => 'dev.my-project.local', HEADERS); const secondaryScope = nock(SECONDARY_HOST_ADDRESS) .get(INSTANCE_PATH) .reply(200, {}, HEADERS); - const resource = gcpDetector.detect(); + const resource = detectResources({ detectors: [gcpDetector] }); await resource.waitForAsyncAttributes?.(); secondaryScope.done(); @@ -124,7 +123,7 @@ describe('gcpDetector', () => { .get(INSTANCE_PATH) .reply(200, {}, HEADERS); - const resource = gcpDetector.detect(); + const resource = detectResources({ detectors: [gcpDetector] }); await resource.waitForAsyncAttributes?.(); secondaryScope.done(); @@ -144,6 +143,9 @@ describe('gcpDetector', () => { }); it('should return resource and empty data for non-available metadata attributes', async () => { + // Set KUBERNETES_SERVICE_HOST to have the implementation call + // CLUSTER_NAME_PATH, to be able to test it handling the HTTP 413. + process.env.KUBERNETES_SERVICE_HOST = 'my-host'; const scope = nock(HOST_ADDRESS) .get(INSTANCE_PATH) .reply(200, {}, HEADERS) @@ -161,7 +163,7 @@ describe('gcpDetector', () => { .get(INSTANCE_PATH) .reply(200, {}, HEADERS); - const resource = gcpDetector.detect(); + const resource = detectResources({ detectors: [gcpDetector] }); await resource.waitForAsyncAttributes?.(); secondaryScope.done(); @@ -175,7 +177,7 @@ describe('gcpDetector', () => { }); it('returns empty resource if not detected', async () => { - const resource = gcpDetector.detect(); + const resource = detectResources({ detectors: [gcpDetector] }); await resource.waitForAsyncAttributes?.(); assertEmptyResource(resource); }); diff --git a/detectors/node/opentelemetry-resource-detector-gcp/test/detectors/GcpDetectorIntegration.test.ts b/detectors/node/opentelemetry-resource-detector-gcp/test/detectors/GcpDetectorIntegration.test.ts index 77bf0334d7..2cbbc9db13 100644 --- a/detectors/node/opentelemetry-resource-detector-gcp/test/detectors/GcpDetectorIntegration.test.ts +++ b/detectors/node/opentelemetry-resource-detector-gcp/test/detectors/GcpDetectorIntegration.test.ts @@ -38,7 +38,7 @@ import { SimpleSpanProcessor, } from '@opentelemetry/sdk-trace-base'; import { NodeSDK } from '@opentelemetry/sdk-node'; -import { IResource } from '@opentelemetry/resources'; +import { detectResources } from '@opentelemetry/resources'; describe('[Integration] GcpDetector', () => { it('should not start spans for detector requests', async () => { @@ -63,7 +63,7 @@ describe('[Integration] GcpDetector', () => { // tracing being exported. We do the detection outside the SDK constructor to have such // scenario. const { gcpDetector } = require('../../build/src/detectors/GcpDetector'); - const resource = gcpDetector.detect() as IResource; + const resource = detectResources({ detectors: [gcpDetector] }); await resource.waitForAsyncAttributes?.(); // Wait for the next loop to let the span close properly diff --git a/detectors/node/opentelemetry-resource-detector-github/package.json b/detectors/node/opentelemetry-resource-detector-github/package.json index 89ade15dbc..d296969fbd 100644 --- a/detectors/node/opentelemetry-resource-detector-github/package.json +++ b/detectors/node/opentelemetry-resource-detector-github/package.json @@ -28,7 +28,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -52,10 +52,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/resources": "^1.10.0" + "@opentelemetry/resources": "^2.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/detectors/node/opentelemetry-resource-detector-github#readme", "sideEffects": false diff --git a/detectors/node/opentelemetry-resource-detector-github/src/detectors/GitHubDetector.ts b/detectors/node/opentelemetry-resource-detector-github/src/detectors/GitHubDetector.ts index 8ee6404a6c..d78611b67c 100644 --- a/detectors/node/opentelemetry-resource-detector-github/src/detectors/GitHubDetector.ts +++ b/detectors/node/opentelemetry-resource-detector-github/src/detectors/GitHubDetector.ts @@ -14,60 +14,29 @@ * limitations under the License. */ -import { - DetectorSync, - IResource, - Resource, - ResourceAttributes, -} from '@opentelemetry/resources'; +import { ResourceDetector, DetectedResource } from '@opentelemetry/resources'; /** - * The GitHubDetector can be used to detect GitHub Actions environment variables and returns - * a {@link Resource} populated with GitHub-specific metadata that exists + * The GitHubDetector can be used to detect GitHub Actions environment variables + * and returns resource attributes with GitHub-specific metadata that exists * in GitHub Actions environments. * * More information about GitHub Action environment variables is available here: * https://docs.github.com/en/free-pro-team@latest/actions/reference/environment-variables - * - * Returns an empty Resource if detection fails. */ -class GitHubDetector implements DetectorSync { - private _attributes: ResourceAttributes = {}; - - /** - * Adds an environment variable attribute if a non-empty string. - * @param key - * @param value - */ - private addAttributeIfExists(key: string, value: string | undefined) { - if (typeof value === 'string' && value.length > 0) { - this._attributes[key] = value; - } - } - - /** - * Attempts to obtain GitHub repository information from GitHub Actions - * environment variables: - * https://docs.github.com/en/free-pro-team@latest/actions/reference/environment-variables - * - * If successful it returns a {@link Resource} populated with GitHub metadata. - * Returns an empty {@link Resource} if the env vars are not present. - */ - detect(): IResource { - this._attributes = {}; - this.addAttributeIfExists('github.workflow', process.env.GITHUB_WORKFLOW); - this.addAttributeIfExists('github.run_id', process.env.GITHUB_RUN_ID); - this.addAttributeIfExists( - 'github.run_number', - process.env.GITHUB_RUN_NUMBER - ); - this.addAttributeIfExists('github.actor', process.env.GITHUB_ACTOR); - this.addAttributeIfExists('github.sha', process.env.GITHUB_SHA); - this.addAttributeIfExists('github.ref', process.env.GITHUB_REF); - this.addAttributeIfExists('github.head_ref', process.env.GITHUB_HEAD_REF); - this.addAttributeIfExists('github.base_ref', process.env.GITHUB_BASE_REF); - - return new Resource(this._attributes); +class GitHubDetector implements ResourceDetector { + detect(): DetectedResource { + const attributes = { + 'github.workflow': process.env.GITHUB_WORKFLOW || undefined, + 'github.run_id': process.env.GITHUB_RUN_ID || undefined, + 'github.run_number': process.env.GITHUB_RUN_NUMBER || undefined, + 'github.actor': process.env.GITHUB_ACTOR || undefined, + 'github.sha': process.env.GITHUB_SHA || undefined, + 'github.ref': process.env.GITHUB_REF || undefined, + 'github.head_ref': process.env.GITHUB_HEAD_REF || undefined, + 'github.base_ref': process.env.GITHUB_BASE_REF || undefined, + }; + return { attributes }; } } diff --git a/detectors/node/opentelemetry-resource-detector-github/test/detectors/GitHubDetector.test.ts b/detectors/node/opentelemetry-resource-detector-github/test/detectors/GitHubDetector.test.ts index 1fcb9a9c13..92cf00e6d3 100644 --- a/detectors/node/opentelemetry-resource-detector-github/test/detectors/GitHubDetector.test.ts +++ b/detectors/node/opentelemetry-resource-detector-github/test/detectors/GitHubDetector.test.ts @@ -17,6 +17,8 @@ import * as assert from 'assert'; import * as sinon from 'sinon'; +import { detectResources } from '@opentelemetry/resources'; + import { gitHubDetector } from '../../src/detectors'; describe('GitHubResourceDetector', () => { @@ -49,7 +51,7 @@ describe('GitHubResourceDetector', () => { process.env.GITHUB_HEAD_REF = 'ref/foo'; process.env.GITHUB_BASE_REF = 'ref/bar'; - const resource = await gitHubDetector.detect(); + const resource = detectResources({ detectors: [gitHubDetector] }); assert.ok(resource); assert.deepStrictEqual(resource.attributes, { @@ -65,7 +67,7 @@ describe('GitHubResourceDetector', () => { }); it('should return empty resource when no GitHub env vars exists', async () => { - const resource = await gitHubDetector.detect(); + const resource = detectResources({ detectors: [gitHubDetector] }); assert.ok(resource); assert.deepStrictEqual(resource.attributes, {}); diff --git a/detectors/node/opentelemetry-resource-detector-instana/README.md b/detectors/node/opentelemetry-resource-detector-instana/README.md index 8845808cdf..40fbaf8843 100644 --- a/detectors/node/opentelemetry-resource-detector-instana/README.md +++ b/detectors/node/opentelemetry-resource-detector-instana/README.md @@ -22,21 +22,15 @@ npm install --save @opentelemetry/resource-detector-instana ```typescript import { - Resource, processDetector, envDetector, } from "@opentelemetry/resources"; -import { SEMRESATTRS_SERVICE_NAME } from "@opentelemetry/semantic-conventions"; import { NodeSDK } from "@opentelemetry/sdk-node"; import { instanaAgentDetector } from "@opentelemetry/resource-detector-instana"; -const globalResource = new Resource({ - [SEMRESATTRS_SERVICE_NAME]: "TestService", -}); - const sdk = new NodeSDK({ + serviceName: "TestService", resourceDetectors: [envDetector, processDetector, instanaAgentDetector], - resource: globalResource, }); sdk.start() diff --git a/detectors/node/opentelemetry-resource-detector-instana/package.json b/detectors/node/opentelemetry-resource-detector-instana/package.json index 72bf3946ac..44c196a14c 100644 --- a/detectors/node/opentelemetry-resource-detector-instana/package.json +++ b/detectors/node/opentelemetry-resource-detector-instana/package.json @@ -26,7 +26,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=8.12.0" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -42,17 +42,18 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-node": "^0.57.2", + "@opentelemetry/sdk-node": "^0.200.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/semver": "7.5.8", "nock": "13.3.3", "nyc": "15.1.0", "rimraf": "5.0.10", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { diff --git a/detectors/node/opentelemetry-resource-detector-instana/src/detectors/InstanaAgentDetector.ts b/detectors/node/opentelemetry-resource-detector-instana/src/detectors/InstanaAgentDetector.ts index 2a22951803..e1bb4430ee 100644 --- a/detectors/node/opentelemetry-resource-detector-instana/src/detectors/InstanaAgentDetector.ts +++ b/detectors/node/opentelemetry-resource-detector-instana/src/detectors/InstanaAgentDetector.ts @@ -13,28 +13,44 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + +import { context, diag } from '@opentelemetry/api'; +import { suppressTracing } from '@opentelemetry/core'; import { - DetectorSync, - Resource, - IResource, - ResourceAttributes, + ResourceDetector, + DetectedResource, + DetectedResourceAttributes, } from '@opentelemetry/resources'; -import { diag } from '@opentelemetry/api'; import { SEMRESATTRS_PROCESS_PID, SEMRESATTRS_SERVICE_INSTANCE_ID, } from '@opentelemetry/semantic-conventions'; import * as http from 'http'; -class InstanaAgentDetector implements DetectorSync { +class InstanaAgentDetector implements ResourceDetector { readonly INSTANA_AGENT_DEFAULT_HOST = 'localhost'; readonly INSTANA_AGENT_DEFAULT_PORT = 42699; - detect(): IResource { - return new Resource({}, this._getAttributes()); + detect(): DetectedResource { + const dataPromise = context.with(suppressTracing(context.active()), () => + this._gatherData() + ); + + const attrNames = [ + SEMRESATTRS_PROCESS_PID, + SEMRESATTRS_SERVICE_INSTANCE_ID, + ]; + + const attributes = {} as DetectedResourceAttributes; + attrNames.forEach(name => { + // Each resource attribute is determined asynchronously in _gatherData(). + attributes[name] = dataPromise.then(data => data[name]); + }); + + return { attributes }; } - private async _getAttributes(): Promise { + private async _gatherData(): Promise { const host = process.env.INSTANA_AGENT_HOST || this.INSTANA_AGENT_DEFAULT_HOST; const port = Number( diff --git a/detectors/node/opentelemetry-resource-detector-instana/src/detectors/index.ts b/detectors/node/opentelemetry-resource-detector-instana/src/detectors/index.ts index 838b64dd94..4738db7606 100644 --- a/detectors/node/opentelemetry-resource-detector-instana/src/detectors/index.ts +++ b/detectors/node/opentelemetry-resource-detector-instana/src/detectors/index.ts @@ -14,4 +14,4 @@ * limitations under the License. */ -export * from './InstanaAgentDetector'; +export { instanaAgentDetector } from './InstanaAgentDetector'; diff --git a/detectors/node/opentelemetry-resource-detector-instana/src/index.ts b/detectors/node/opentelemetry-resource-detector-instana/src/index.ts index 0acba8788c..4ba2ecdea7 100644 --- a/detectors/node/opentelemetry-resource-detector-instana/src/index.ts +++ b/detectors/node/opentelemetry-resource-detector-instana/src/index.ts @@ -14,4 +14,4 @@ * limitations under the License. */ -export * from './detectors'; +export { instanaAgentDetector } from './detectors'; diff --git a/detectors/node/opentelemetry-resource-detector-instana/test/InstanaAgentDetectorIntegrationTest.test.ts b/detectors/node/opentelemetry-resource-detector-instana/test/InstanaAgentDetectorIntegrationTest.test.ts index e99aa78487..c150f678c6 100644 --- a/detectors/node/opentelemetry-resource-detector-instana/test/InstanaAgentDetectorIntegrationTest.test.ts +++ b/detectors/node/opentelemetry-resource-detector-instana/test/InstanaAgentDetectorIntegrationTest.test.ts @@ -16,20 +16,10 @@ import * as nock from 'nock'; import * as assert from 'assert'; -import { - Resource, - processDetector, - envDetector, -} from '@opentelemetry/resources'; -import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; +import { processDetector, envDetector } from '@opentelemetry/resources'; import { NodeSDK } from '@opentelemetry/sdk-node'; import { instanaAgentDetector } from '../src'; -const delay = (ms: number) => - new Promise(resolve => { - setTimeout(resolve, ms); - }); - describe('[Integration] instanaAgentDetector', () => { beforeEach(() => { nock.disableNetConnect(); @@ -53,13 +43,9 @@ describe('[Integration] instanaAgentDetector', () => { .reply(200, () => mockedReply); const serviceName = 'TestService'; - const globalResource = new Resource({ - [SEMRESATTRS_SERVICE_NAME]: serviceName, - }); - const sdk = new NodeSDK({ + serviceName, resourceDetectors: [envDetector, processDetector, instanaAgentDetector], - resource: globalResource, }); sdk.start(); @@ -92,19 +78,14 @@ describe('[Integration] instanaAgentDetector', () => { .reply(200, () => mockedReply); const serviceName = 'TestService'; - const globalResource = new Resource({ - [SEMRESATTRS_SERVICE_NAME]: serviceName, - }); - const sdk = new NodeSDK({ + serviceName, resourceDetectors: [envDetector, processDetector, instanaAgentDetector], - resource: globalResource, }); sdk.start(); const resource = sdk['_resource']; - - await delay(500); + await resource.waitForAsyncAttributes?.(); assert.equal(resource.attributes['process.pid'], 123); assert.equal(resource.attributes['process.runtime.name'], 'nodejs'); diff --git a/detectors/node/opentelemetry-resource-detector-instana/test/InstanaAgentDetectorUnitTest.test.ts b/detectors/node/opentelemetry-resource-detector-instana/test/InstanaAgentDetectorUnitTest.test.ts index db66c0dc0d..0da119a52e 100644 --- a/detectors/node/opentelemetry-resource-detector-instana/test/InstanaAgentDetectorUnitTest.test.ts +++ b/detectors/node/opentelemetry-resource-detector-instana/test/InstanaAgentDetectorUnitTest.test.ts @@ -17,6 +17,7 @@ import * as nock from 'nock'; import * as assert from 'assert'; import { instanaAgentDetector } from '../src'; +import { detectResources } from '@opentelemetry/resources'; describe('[UNIT] instanaAgentDetector', () => { describe('when agent is running', () => { @@ -53,7 +54,7 @@ describe('[UNIT] instanaAgentDetector', () => { .put('/com.instana.plugin.nodejs.discovery') .reply(200, () => mockedReply); - const resource = instanaAgentDetector.detect(); + const resource = detectResources({ detectors: [instanaAgentDetector] }); await resource.waitForAsyncAttributes?.(); scope.done(); @@ -80,7 +81,7 @@ describe('[UNIT] instanaAgentDetector', () => { .put('/com.instana.plugin.nodejs.discovery') .reply(200, () => mockedReply); - const resource = instanaAgentDetector.detect(); + const resource = detectResources({ detectors: [instanaAgentDetector] }); await resource.waitForAsyncAttributes?.(); scope.done(); @@ -97,7 +98,7 @@ describe('[UNIT] instanaAgentDetector', () => { .put('/com.instana.plugin.nodejs.discovery') .reply(500, () => new Error()); - const resource = instanaAgentDetector.detect(); + const resource = detectResources({ detectors: [instanaAgentDetector] }); await resource.waitForAsyncAttributes?.(); assert.deepStrictEqual(resource.attributes, {}); @@ -118,7 +119,7 @@ describe('[UNIT] instanaAgentDetector', () => { .delay(500) .reply(200, {}); - const resource = instanaAgentDetector.detect(); + const resource = detectResources({ detectors: [instanaAgentDetector] }); await resource.waitForAsyncAttributes?.(); assert.deepStrictEqual(resource.attributes, {}); @@ -131,7 +132,7 @@ describe('[UNIT] instanaAgentDetector', () => { process.env.INSTANA_AGENT_TIMEOUT_MS = '100'; process.env.INSTANA_RETRY_TIMEOUT_MS = '100'; - const resource = instanaAgentDetector.detect(); + const resource = detectResources({ detectors: [instanaAgentDetector] }); await resource.waitForAsyncAttributes?.(); assert.deepStrictEqual(resource.attributes, {}); diff --git a/examples/bunyan/app.js b/examples/bunyan/app.js index 05214a8073..63c8273062 100644 --- a/examples/bunyan/app.js +++ b/examples/bunyan/app.js @@ -14,6 +14,8 @@ * limitations under the License. */ +'use strict'; + // A small example that shows using OpenTelemetry's instrumentation of // Bunyan loggers. Usage: // node --require ./telemetry.js app.js @@ -21,12 +23,12 @@ const otel = require('@opentelemetry/api'); const bunyan = require('bunyan'); -const log = bunyan.createLogger({name: 'myapp', level: 'debug'}); +const log = bunyan.createLogger({ name: 'myapp', level: 'debug' }); -log.debug({foo: 'bar'}, 'hi'); +log.debug({ foo: 'bar' }, 'hi'); const tracer = otel.trace.getTracer('example'); -tracer.startActiveSpan('manual-span', span => { +tracer.startActiveSpan('manual-span', (span) => { log.info('this record will have trace_id et al fields for the current span'); span.end(); }); diff --git a/examples/bunyan/package.json b/examples/bunyan/package.json index f099d529cf..e66fd37c50 100644 --- a/examples/bunyan/package.json +++ b/examples/bunyan/package.json @@ -11,15 +11,15 @@ "url": "git+ssh://git@github.com/open-telemetry/opentelemetry-js.git" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "author": "OpenTelemetry Authors", "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/instrumentation-bunyan": "^0.34.0", - "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-node": "^0.48.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/sdk-node": "^0.200.0", "bunyan": "^1.8.15" } } diff --git a/examples/bunyan/telemetry.js b/examples/bunyan/telemetry.js index 20f84ee7d1..1c247e3e1b 100644 --- a/examples/bunyan/telemetry.js +++ b/examples/bunyan/telemetry.js @@ -14,14 +14,16 @@ * limitations under the License. */ +'use strict'; + // Setup telemetry for tracing and Bunyan logging. // // This writes OTel spans and log records to the console for simplicity. In a // real setup you would configure exporters to send to remote observability apps // for viewing and analysis. -const { NodeSDK, tracing, logs, api } = require('@opentelemetry/sdk-node'); -const { envDetectorSync, hostDetectorSync, processDetectorSync } = require('@opentelemetry/resources'); +const { NodeSDK, tracing, logs } = require('@opentelemetry/sdk-node'); +const { envDetector, hostDetector, processDetector } = require('@opentelemetry/resources'); // api.diag.setLogger(new api.DiagConsoleLogger(), api.DiagLogLevel.DEBUG); const { BunyanInstrumentation } = require('@opentelemetry/instrumentation-bunyan'); @@ -29,27 +31,27 @@ const { BunyanInstrumentation } = require('@opentelemetry/instrumentation-bunyan const sdk = new NodeSDK({ serviceName: 'bunyan-example', resourceDetectors: [ - envDetectorSync, + envDetector, // ProcessDetector adds `process.pid` (among other resource attributes), // which replaces the usual Bunyan `pid` field. - processDetectorSync, + processDetector, // The HostDetector adds `host.name` and `host.arch` fields. `host.name` // replaces the usual Bunyan `hostname` field. HostDetector is *not* a // default detector of the `NodeSDK`. - hostDetectorSync + hostDetector, ], spanProcessor: new tracing.SimpleSpanProcessor(new tracing.ConsoleSpanExporter()), logRecordProcessor: new logs.SimpleLogRecordProcessor(new logs.ConsoleLogRecordExporter()), instrumentations: [ new BunyanInstrumentation(), - ] -}) -process.on("SIGTERM", () => { + ], +}); +process.on('SIGTERM', () => { sdk .shutdown() .then( () => {}, - (err) => console.log("warning: error shutting down OTel SDK", err) + (err) => console.log('warning: error shutting down OTel SDK', err), ) .finally(() => process.exit(0)); }); diff --git a/examples/express/package.json b/examples/express/package.json index b5b3049f0a..8713e11db8 100644 --- a/examples/express/package.json +++ b/examples/express/package.json @@ -44,6 +44,6 @@ "@types/express": "^4.17.13", "@types/node": "18.18.14", "ts-node": "^10.6.0", - "typescript": "4.4.4" + "typescript": "5.0.4" } } diff --git a/examples/koa/package.json b/examples/koa/package.json index 978e433367..c193ec814f 100644 --- a/examples/koa/package.json +++ b/examples/koa/package.json @@ -47,7 +47,7 @@ "devDependencies": { "cross-env": "^7.0.0", "ts-node": "^10.6.0", - "typescript": "4.4.4", + "typescript": "5.0.4", "@types/koa": "^2.13.5" } } diff --git a/examples/mysql/package.json b/examples/mysql/package.json index d1faf67976..4ad6138d24 100644 --- a/examples/mysql/package.json +++ b/examples/mysql/package.json @@ -46,6 +46,6 @@ "@types/mysql": "^2.15.21", "cross-env": "^7.0.0", "ts-node": "^10.6.0", - "typescript": "4.4.4" + "typescript": "5.0.4" } } diff --git a/examples/redis/package.json b/examples/redis/package.json index 72ba46e9ca..70957a4cf8 100644 --- a/examples/redis/package.json +++ b/examples/redis/package.json @@ -49,6 +49,6 @@ "@types/express": "^4.17.14", "cross-env": "^7.0.0", "ts-node": "^10.6.0", - "typescript": "4.4.4" + "typescript": "5.0.4" } } diff --git a/incubator/opentelemetry-sampler-aws-xray/package.json b/incubator/opentelemetry-sampler-aws-xray/package.json index 109963171d..5d64c7b6d6 100644 --- a/incubator/opentelemetry-sampler-aws-xray/package.json +++ b/incubator/opentelemetry-sampler-aws-xray/package.json @@ -61,7 +61,7 @@ "nock": "13.3.3", "nyc": "15.1.0", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { "node": ">=14" diff --git a/metapackages/auto-configuration-propagators/package.json b/metapackages/auto-configuration-propagators/package.json index 10c2892a44..19764f90d9 100644 --- a/metapackages/auto-configuration-propagators/package.json +++ b/metapackages/auto-configuration-propagators/package.json @@ -6,7 +6,7 @@ "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/metapackages/auto-configuration-propagators#readme", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "publishConfig": { "access": "public" @@ -39,14 +39,14 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/core": "^1.25.1", + "@opentelemetry/core": "^2.0.0", "@opentelemetry/propagator-aws-xray": "^1.26.2", "@opentelemetry/propagator-aws-xray-lambda": "^0.53.2", - "@opentelemetry/propagator-b3": "^1.25.1", - "@opentelemetry/propagator-jaeger": "^1.25.1", + "@opentelemetry/propagator-b3": "^2.0.0", + "@opentelemetry/propagator-jaeger": "^2.0.0", "@opentelemetry/propagator-ot-trace": "^0.27.3" }, "files": [ diff --git a/metapackages/auto-instrumentations-node/README.md b/metapackages/auto-instrumentations-node/README.md index 00b52837cf..c44ab45269 100644 --- a/metapackages/auto-instrumentations-node/README.md +++ b/metapackages/auto-instrumentations-node/README.md @@ -128,14 +128,14 @@ Custom configuration for each of the instrumentations can be passed to the funct const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); const { getNodeAutoInstrumentations } = require('@opentelemetry/auto-instrumentations-node'); const { CollectorTraceExporter } = require('@opentelemetry/exporter-collector'); -const { Resource } = require('@opentelemetry/resources'); +const { resourceFromAttributes } = require('@opentelemetry/resources'); const { SEMRESATTRS_SERVICE_NAME } = require('@opentelemetry/semantic-conventions'); const { SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base'); const { registerInstrumentations } = require('@opentelemetry/instrumentation'); const exporter = new CollectorTraceExporter(); const provider = new NodeTracerProvider({ - resource: new Resource({ + resource: resourceFromAttributes({ [SEMRESATTRS_SERVICE_NAME]: 'basic-service', }), spanProcessors: [ diff --git a/metapackages/auto-instrumentations-node/package.json b/metapackages/auto-instrumentations-node/package.json index 591287d445..13f2afb139 100644 --- a/metapackages/auto-instrumentations-node/package.json +++ b/metapackages/auto-instrumentations-node/package.json @@ -6,7 +6,7 @@ "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/metapackages/auto-instrumentations-node#readme", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "publishConfig": { "access": "public" @@ -43,10 +43,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/instrumentation-amqplib": "^0.46.1", "@opentelemetry/instrumentation-aws-lambda": "^0.50.3", "@opentelemetry/instrumentation-aws-sdk": "^0.49.1", @@ -61,9 +61,9 @@ "@opentelemetry/instrumentation-fs": "^0.19.1", "@opentelemetry/instrumentation-generic-pool": "^0.43.1", "@opentelemetry/instrumentation-graphql": "^0.47.1", - "@opentelemetry/instrumentation-grpc": "^0.57.2", + "@opentelemetry/instrumentation-grpc": "^0.200.0", "@opentelemetry/instrumentation-hapi": "^0.45.2", - "@opentelemetry/instrumentation-http": "^0.57.2", + "@opentelemetry/instrumentation-http": "^0.200.0", "@opentelemetry/instrumentation-ioredis": "^0.47.1", "@opentelemetry/instrumentation-kafkajs": "^0.7.1", "@opentelemetry/instrumentation-knex": "^0.44.1", @@ -91,8 +91,8 @@ "@opentelemetry/resource-detector-azure": "^0.6.1", "@opentelemetry/resource-detector-container": "^0.6.1", "@opentelemetry/resource-detector-gcp": "^0.33.1", - "@opentelemetry/resources": "^1.24.0", - "@opentelemetry/sdk-node": "^0.57.2" + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/sdk-node": "^0.200.0" }, "files": [ "build/src/**/*.js", diff --git a/metapackages/auto-instrumentations-node/src/utils.ts b/metapackages/auto-instrumentations-node/src/utils.ts index 787a97eb43..ae5349a0fc 100644 --- a/metapackages/auto-instrumentations-node/src/utils.ts +++ b/metapackages/auto-instrumentations-node/src/utils.ts @@ -68,13 +68,12 @@ import { import { containerDetector } from '@opentelemetry/resource-detector-container'; import { gcpDetector } from '@opentelemetry/resource-detector-gcp'; import { - Detector, - DetectorSync, - envDetectorSync, - hostDetectorSync, - osDetectorSync, - processDetectorSync, - serviceInstanceIdDetectorSync, + ResourceDetector, + envDetector, + hostDetector, + osDetector, + processDetector, + serviceInstanceIdDetector, } from '@opentelemetry/resources'; import { azureAppServiceDetector, @@ -254,17 +253,17 @@ function getDisabledInstrumentationsFromEnv() { return instrumentationsFromEnv; } -export function getResourceDetectorsFromEnv(): Array { +export function getResourceDetectorsFromEnv(): Array { const resourceDetectors = new Map< string, - Detector | DetectorSync | Detector[] | DetectorSync[] + ResourceDetector | ResourceDetector[] >([ [RESOURCE_DETECTOR_CONTAINER, containerDetector], - [RESOURCE_DETECTOR_ENVIRONMENT, envDetectorSync], - [RESOURCE_DETECTOR_HOST, hostDetectorSync], - [RESOURCE_DETECTOR_OS, osDetectorSync], - [RESOURCE_DETECTOR_SERVICE_INSTANCE_ID, serviceInstanceIdDetectorSync], - [RESOURCE_DETECTOR_PROCESS, processDetectorSync], + [RESOURCE_DETECTOR_ENVIRONMENT, envDetector], + [RESOURCE_DETECTOR_HOST, hostDetector], + [RESOURCE_DETECTOR_OS, osDetector], + [RESOURCE_DETECTOR_SERVICE_INSTANCE_ID, serviceInstanceIdDetector], + [RESOURCE_DETECTOR_PROCESS, processDetector], [RESOURCE_DETECTOR_ALIBABA, alibabaCloudEcsDetector], [RESOURCE_DETECTOR_GCP, gcpDetector], [ diff --git a/metapackages/auto-instrumentations-node/test/register.test.ts b/metapackages/auto-instrumentations-node/test/register.test.ts index 47917c854b..94d2d948eb 100644 --- a/metapackages/auto-instrumentations-node/test/register.test.ts +++ b/metapackages/auto-instrumentations-node/test/register.test.ts @@ -30,10 +30,9 @@ function runWithRegister(path: string): PromiseWithChild<{ ['--require', '../build/src/register.js', path], { cwd: __dirname, - timeout: 1500, + timeout: 5000, killSignal: 'SIGKILL', // SIGTERM is not sufficient to terminate some hangs env: Object.assign({}, process.env, { - OTEL_NODE_RESOURCE_DETECTORS: 'none', OTEL_TRACES_EXPORTER: 'console', OTEL_LOG_LEVEL: 'debug', // nx (used by lerna run) defaults `FORCE_COLOR=true`, which in diff --git a/metapackages/auto-instrumentations-node/test/utils.test.ts b/metapackages/auto-instrumentations-node/test/utils.test.ts index f3581b064d..7fac6762fc 100644 --- a/metapackages/auto-instrumentations-node/test/utils.test.ts +++ b/metapackages/auto-instrumentations-node/test/utils.test.ts @@ -192,11 +192,11 @@ describe('utils', () => { const resourceDetectors = getResourceDetectorsFromEnv(); assert.equal(resourceDetectors.length, 3); - assert.equal(resourceDetectors[0].constructor.name, 'EnvDetectorSync'); - assert.equal(resourceDetectors[1].constructor.name, 'HostDetectorSync'); + assert.equal(resourceDetectors[0].constructor.name, 'EnvDetector'); + assert.equal(resourceDetectors[1].constructor.name, 'HostDetector'); assert.equal( resourceDetectors[2].constructor.name, - 'ServiceInstanceIdDetectorSync' + 'ServiceInstanceIdDetector' ); delete process.env.OTEL_NODE_RESOURCE_DETECTORS; diff --git a/metapackages/auto-instrumentations-web/package.json b/metapackages/auto-instrumentations-web/package.json index 5e9cf6fc19..1be1ec45ba 100644 --- a/metapackages/auto-instrumentations-web/package.json +++ b/metapackages/auto-instrumentations-web/package.json @@ -6,7 +6,7 @@ "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/metapackages/auto-instrumentations-web#readme", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "publishConfig": { "access": "public" @@ -54,17 +54,17 @@ "rimraf": "5.0.10", "sinon": "15.1.2", "ts-loader": "9.5.2", - "typescript": "4.4.4", + "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/instrumentation-document-load": "^0.44.1", - "@opentelemetry/instrumentation-fetch": "^0.57.2", + "@opentelemetry/instrumentation-fetch": "^0.200.0", "@opentelemetry/instrumentation-user-interaction": "^0.44.1", - "@opentelemetry/instrumentation-xml-http-request": "^0.57.2" + "@opentelemetry/instrumentation-xml-http-request": "^0.200.0" }, "files": [ "build/src/**/*.js", diff --git a/package-lock.json b/package-lock.json index 99ed6ea97e..1395f65264 100644 --- a/package-lock.json +++ b/package-lock.json @@ -45,13 +45,14 @@ "version": "0.30.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.26.0", - "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@opentelemetry/api": "^1.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -59,10 +60,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" @@ -77,33 +78,21 @@ "undici-types": "~5.26.4" } }, - "detectors/node/opentelemetry-resource-detector-alibaba-cloud/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "detectors/node/opentelemetry-resource-detector-aws": { "name": "@opentelemetry/resource-detector-aws", "version": "1.12.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.0.0", - "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@opentelemetry/api": "^1.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", "@opentelemetry/instrumentation-fs": "^0.19.1", - "@opentelemetry/instrumentation-http": "^0.57.2", + "@opentelemetry/instrumentation-http": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -111,10 +100,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" @@ -129,42 +118,30 @@ "undici-types": "~5.26.4" } }, - "detectors/node/opentelemetry-resource-detector-aws/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "detectors/node/opentelemetry-resource-detector-azure": { "name": "@opentelemetry/resource-detector-azure", "version": "0.6.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.25.1", - "@opentelemetry/resources": "^1.10.1", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@opentelemetry/api": "^1.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/instrumentation-http": "^0.57.2", + "@opentelemetry/instrumentation-http": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", "nock": "13.3.3", "nyc": "15.1.0", "rimraf": "5.0.10", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" @@ -179,32 +156,20 @@ "undici-types": "~5.26.4" } }, - "detectors/node/opentelemetry-resource-detector-azure/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "detectors/node/opentelemetry-resource-detector-container": { "name": "@opentelemetry/resource-detector-container", "version": "0.6.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.26.0", - "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@opentelemetry/api": "^1.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", "@opentelemetry/instrumentation-fs": "^0.19.1", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -213,10 +178,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" @@ -231,43 +196,31 @@ "undici-types": "~5.26.4" } }, - "detectors/node/opentelemetry-resource-detector-container/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "detectors/node/opentelemetry-resource-detector-gcp": { "name": "@opentelemetry/resource-detector-gcp", "version": "0.33.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.0.0", - "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "gcp-metadata": "^6.0.0" }, "devDependencies": { "@opentelemetry/api": "^1.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/instrumentation-http": "^0.57.2", + "@opentelemetry/instrumentation-http": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/semver": "7.5.8", "nock": "13.3.3", "nyc": "15.1.0", "rimraf": "5.0.10", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" @@ -282,25 +235,12 @@ "undici-types": "~5.26.4" } }, - "detectors/node/opentelemetry-resource-detector-gcp/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "detectors/node/opentelemetry-resource-detector-github": { "name": "@opentelemetry/resource-detector-github", "version": "0.30.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/resources": "^1.10.0" + "@opentelemetry/resources": "^2.0.0" }, "devDependencies": { "@opentelemetry/api": "^1.0.0", @@ -310,10 +250,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" @@ -328,41 +268,29 @@ "undici-types": "~5.26.4" } }, - "detectors/node/opentelemetry-resource-detector-github/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "detectors/node/opentelemetry-resource-detector-instana": { "name": "@opentelemetry/resource-detector-instana", "version": "0.18.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-node": "^0.57.2", + "@opentelemetry/sdk-node": "^0.200.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/semver": "7.5.8", "nock": "13.3.3", "nyc": "15.1.0", "rimraf": "5.0.10", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=8.12.0" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -377,29 +305,16 @@ "undici-types": "~5.26.4" } }, - "detectors/node/opentelemetry-resource-detector-instana/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "metapackages/auto-configuration-propagators": { "name": "@opentelemetry/auto-configuration-propagators", "version": "0.3.3", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.25.1", + "@opentelemetry/core": "^2.0.0", "@opentelemetry/propagator-aws-xray": "^1.26.2", "@opentelemetry/propagator-aws-xray-lambda": "^0.53.2", - "@opentelemetry/propagator-b3": "^1.25.1", - "@opentelemetry/propagator-jaeger": "^1.25.1", + "@opentelemetry/propagator-b3": "^2.0.0", + "@opentelemetry/propagator-jaeger": "^2.0.0", "@opentelemetry/propagator-ot-trace": "^0.27.3" }, "devDependencies": { @@ -410,10 +325,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.4.1" @@ -428,25 +343,12 @@ "undici-types": "~5.26.4" } }, - "metapackages/auto-configuration-propagators/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "metapackages/auto-instrumentations-node": { "name": "@opentelemetry/auto-instrumentations-node", "version": "0.56.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/instrumentation-amqplib": "^0.46.1", "@opentelemetry/instrumentation-aws-lambda": "^0.50.3", "@opentelemetry/instrumentation-aws-sdk": "^0.49.1", @@ -461,9 +363,9 @@ "@opentelemetry/instrumentation-fs": "^0.19.1", "@opentelemetry/instrumentation-generic-pool": "^0.43.1", "@opentelemetry/instrumentation-graphql": "^0.47.1", - "@opentelemetry/instrumentation-grpc": "^0.57.2", + "@opentelemetry/instrumentation-grpc": "^0.200.0", "@opentelemetry/instrumentation-hapi": "^0.45.2", - "@opentelemetry/instrumentation-http": "^0.57.2", + "@opentelemetry/instrumentation-http": "^0.200.0", "@opentelemetry/instrumentation-ioredis": "^0.47.1", "@opentelemetry/instrumentation-kafkajs": "^0.7.1", "@opentelemetry/instrumentation-knex": "^0.44.1", @@ -491,8 +393,8 @@ "@opentelemetry/resource-detector-azure": "^0.6.1", "@opentelemetry/resource-detector-container": "^0.6.1", "@opentelemetry/resource-detector-gcp": "^0.33.1", - "@opentelemetry/resources": "^1.24.0", - "@opentelemetry/sdk-node": "^0.57.2" + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/sdk-node": "^0.200.0" }, "devDependencies": { "@opentelemetry/api": "^1.4.1", @@ -502,10 +404,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.4.1" @@ -520,29 +422,16 @@ "undici-types": "~5.26.4" } }, - "metapackages/auto-instrumentations-node/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "metapackages/auto-instrumentations-web": { "name": "@opentelemetry/auto-instrumentations-web", "version": "0.45.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/instrumentation-document-load": "^0.44.1", - "@opentelemetry/instrumentation-fetch": "^0.57.2", + "@opentelemetry/instrumentation-fetch": "^0.200.0", "@opentelemetry/instrumentation-user-interaction": "^0.44.1", - "@opentelemetry/instrumentation-xml-http-request": "^0.57.2" + "@opentelemetry/instrumentation-xml-http-request": "^0.200.0" }, "devDependencies": { "@babel/core": "7.24.6", @@ -565,13 +454,13 @@ "rimraf": "5.0.10", "sinon": "15.1.2", "ts-loader": "9.5.2", - "typescript": "4.4.4", + "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0", @@ -606,19 +495,6 @@ "url": "https://opencollective.com/sinon" } }, - "metapackages/auto-instrumentations-web/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -6114,9 +5990,9 @@ "dev": true }, "node_modules/@grpc/grpc-js": { - "version": "1.12.6", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.12.6.tgz", - "integrity": "sha512-JXUj6PI0oqqzTGvKtzOkxtpsyPRNsrmhh41TtIz/zEB6J+AUiZZ0dxWzcMwO9Ns5rmSPuMdghlTbUuqIM48d3Q==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.13.0.tgz", + "integrity": "sha512-pMuxInZjUnUkgMT2QLZclRqwk2ykJbIU05aZgPgJYXEpN9+2I7z7aNwcjWZSycRPl232FfhPszyBFJyOxTHNog==", "dependencies": { "@grpc/proto-loader": "^0.7.13", "@js-sdsl/ordered-map": "^4.4.2" @@ -8751,14 +8627,14 @@ } }, "node_modules/@opentelemetry/api-logs": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", - "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.200.0.tgz", + "integrity": "sha512-IKJBQxh91qJ+3ssRly5hYEJ8NDHu9oY/B1PXVSCWf7zytmYO9RNLB0Ox9XQ/fJ8m6gY6Q6NtBWlmXfaXt5Uc4Q==", "dependencies": { "@opentelemetry/api": "^1.3.0" }, "engines": { - "node": ">=14" + "node": ">=8.0.0" } }, "node_modules/@opentelemetry/auto-configuration-propagators": { @@ -8778,23 +8654,23 @@ "link": true }, "node_modules/@opentelemetry/context-async-hooks": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.1.tgz", - "integrity": "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.0.0.tgz", + "integrity": "sha512-IEkJGzK1A9v3/EHjXh3s2IiFc6L4jfK+lNgKVgUjeUJQRRhnVFMIO3TAvKwonm9O1HebCuoOt98v8bZW7oVQHA==", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "node_modules/@opentelemetry/context-zone-peer-dep": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-1.30.1.tgz", - "integrity": "sha512-8oJQR+MBblY5WGOm26AOBLogN+FoO26QEZssH9WJd1qSD7ABMefq9qyGyN9xilFFl2ABPHgcMzkfYb8vx9JBEA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-2.0.0.tgz", + "integrity": "sha512-PkOyOR/RV3Fc9B40QiQC1OKoR/IwJrokr5WO9IsU+oy+GajZrZvyMhJv/+sfbYNQ8vcZo/0z3IZdZjUKxsJdIg==", "dev": true, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0", @@ -8806,264 +8682,240 @@ "link": true }, "node_modules/@opentelemetry/core": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", - "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.0.tgz", + "integrity": "sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ==", "dependencies": { - "@opentelemetry/semantic-conventions": "1.28.0" + "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", - "engines": { - "node": ">=14" - } - }, "node_modules/@opentelemetry/exporter-jaeger": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.30.1.tgz", - "integrity": "sha512-7Ki+x7cZ/PEQxp3UyB+CWkWBqLk22yRGQ4AWIGwZlEs6rpCOdWwIFOyQDO9DdeyWtTPTvO3An/7chPZcRHOgzQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-2.0.0.tgz", + "integrity": "sha512-vXUHL9Oy5gBY+CtrLQQm254ek5jGSImLTzp51ZVC5hVOTDf9dbkymMrGU/3MYDUC8MZzPqwKnAfMPpCcjdqV5A==", "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/sdk-trace-base": "1.30.1", - "@opentelemetry/semantic-conventions": "1.28.0", + "@opentelemetry/core": "2.0.0", + "@opentelemetry/sdk-trace-base": "2.0.0", + "@opentelemetry/semantic-conventions": "^1.29.0", "jaeger-client": "^3.15.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" } }, - "node_modules/@opentelemetry/exporter-jaeger/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", - "engines": { - "node": ">=14" - } - }, "node_modules/@opentelemetry/exporter-logs-otlp-grpc": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-grpc/-/exporter-logs-otlp-grpc-0.57.2.tgz", - "integrity": "sha512-eovEy10n3umjKJl2Ey6TLzikPE+W4cUQ4gCwgGP1RqzTGtgDra0WjIqdy29ohiUKfvmbiL3MndZww58xfIvyFw==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-grpc/-/exporter-logs-otlp-grpc-0.200.0.tgz", + "integrity": "sha512-+3MDfa5YQPGM3WXxW9kqGD85Q7s9wlEMVNhXXG7tYFLnIeaseUt9YtCeFhEDFzfEktacdFpOtXmJuNW8cHbU5A==", "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.30.1", - "@opentelemetry/otlp-exporter-base": "0.57.2", - "@opentelemetry/otlp-grpc-exporter-base": "0.57.2", - "@opentelemetry/otlp-transformer": "0.57.2", - "@opentelemetry/sdk-logs": "0.57.2" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/otlp-exporter-base": "0.200.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.200.0", + "@opentelemetry/otlp-transformer": "0.200.0", + "@opentelemetry/sdk-logs": "0.200.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "node_modules/@opentelemetry/exporter-logs-otlp-http": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.57.2.tgz", - "integrity": "sha512-0rygmvLcehBRp56NQVLSleJ5ITTduq/QfU7obOkyWgPpFHulwpw2LYTqNIz5TczKZuy5YY+5D3SDnXZL1tXImg==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.200.0.tgz", + "integrity": "sha512-KfWw49htbGGp9s8N4KI8EQ9XuqKJ0VG+yVYVYFiCYSjEV32qpQ5qZ9UZBzOZ6xRb+E16SXOSCT3RkqBVSABZ+g==", "dependencies": { - "@opentelemetry/api-logs": "0.57.2", - "@opentelemetry/core": "1.30.1", - "@opentelemetry/otlp-exporter-base": "0.57.2", - "@opentelemetry/otlp-transformer": "0.57.2", - "@opentelemetry/sdk-logs": "0.57.2" + "@opentelemetry/api-logs": "0.200.0", + "@opentelemetry/core": "2.0.0", + "@opentelemetry/otlp-exporter-base": "0.200.0", + "@opentelemetry/otlp-transformer": "0.200.0", + "@opentelemetry/sdk-logs": "0.200.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "node_modules/@opentelemetry/exporter-logs-otlp-proto": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-proto/-/exporter-logs-otlp-proto-0.57.2.tgz", - "integrity": "sha512-ta0ithCin0F8lu9eOf4lEz9YAScecezCHkMMyDkvd9S7AnZNX5ikUmC5EQOQADU+oCcgo/qkQIaKcZvQ0TYKDw==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-proto/-/exporter-logs-otlp-proto-0.200.0.tgz", + "integrity": "sha512-GmahpUU/55hxfH4TP77ChOfftADsCq/nuri73I/AVLe2s4NIglvTsaACkFVZAVmnXXyPS00Fk3x27WS3yO07zA==", "dependencies": { - "@opentelemetry/api-logs": "0.57.2", - "@opentelemetry/core": "1.30.1", - "@opentelemetry/otlp-exporter-base": "0.57.2", - "@opentelemetry/otlp-transformer": "0.57.2", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/sdk-logs": "0.57.2", - "@opentelemetry/sdk-trace-base": "1.30.1" + "@opentelemetry/api-logs": "0.200.0", + "@opentelemetry/core": "2.0.0", + "@opentelemetry/otlp-exporter-base": "0.200.0", + "@opentelemetry/otlp-transformer": "0.200.0", + "@opentelemetry/resources": "2.0.0", + "@opentelemetry/sdk-logs": "0.200.0", + "@opentelemetry/sdk-trace-base": "2.0.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "node_modules/@opentelemetry/exporter-metrics-otlp-grpc": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-grpc/-/exporter-metrics-otlp-grpc-0.57.2.tgz", - "integrity": "sha512-r70B8yKR41F0EC443b5CGB4rUaOMm99I5N75QQt6sHKxYDzSEc6gm48Diz1CI1biwa5tDPznpylTrywO/pT7qw==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-grpc/-/exporter-metrics-otlp-grpc-0.200.0.tgz", + "integrity": "sha512-uHawPRvKIrhqH09GloTuYeq2BjyieYHIpiklOvxm9zhrCL2eRsnI/6g9v2BZTVtGp8tEgIa7rCQ6Ltxw6NBgew==", "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.30.1", - "@opentelemetry/exporter-metrics-otlp-http": "0.57.2", - "@opentelemetry/otlp-exporter-base": "0.57.2", - "@opentelemetry/otlp-grpc-exporter-base": "0.57.2", - "@opentelemetry/otlp-transformer": "0.57.2", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/sdk-metrics": "1.30.1" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.200.0", + "@opentelemetry/otlp-exporter-base": "0.200.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.200.0", + "@opentelemetry/otlp-transformer": "0.200.0", + "@opentelemetry/resources": "2.0.0", + "@opentelemetry/sdk-metrics": "2.0.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "node_modules/@opentelemetry/exporter-metrics-otlp-http": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.57.2.tgz", - "integrity": "sha512-ttb9+4iKw04IMubjm3t0EZsYRNWr3kg44uUuzfo9CaccYlOh8cDooe4QObDUkvx9d5qQUrbEckhrWKfJnKhemA==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.200.0.tgz", + "integrity": "sha512-5BiR6i8yHc9+qW7F6LqkuUnIzVNA7lt0qRxIKcKT+gq3eGUPHZ3DY29sfxI3tkvnwMgtnHDMNze5DdxW39HsAw==", "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/otlp-exporter-base": "0.57.2", - "@opentelemetry/otlp-transformer": "0.57.2", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/sdk-metrics": "1.30.1" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/otlp-exporter-base": "0.200.0", + "@opentelemetry/otlp-transformer": "0.200.0", + "@opentelemetry/resources": "2.0.0", + "@opentelemetry/sdk-metrics": "2.0.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "node_modules/@opentelemetry/exporter-metrics-otlp-proto": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-proto/-/exporter-metrics-otlp-proto-0.57.2.tgz", - "integrity": "sha512-HX068Q2eNs38uf7RIkNN9Hl4Ynl+3lP0++KELkXMCpsCbFO03+0XNNZ1SkwxPlP9jrhQahsMPMkzNXpq3fKsnw==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-proto/-/exporter-metrics-otlp-proto-0.200.0.tgz", + "integrity": "sha512-E+uPj0yyvz81U9pvLZp3oHtFrEzNSqKGVkIViTQY1rH3TOobeJPSpLnTVXACnCwkPR5XeTvPnK3pZ2Kni8AFMg==", "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/exporter-metrics-otlp-http": "0.57.2", - "@opentelemetry/otlp-exporter-base": "0.57.2", - "@opentelemetry/otlp-transformer": "0.57.2", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/sdk-metrics": "1.30.1" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.200.0", + "@opentelemetry/otlp-exporter-base": "0.200.0", + "@opentelemetry/otlp-transformer": "0.200.0", + "@opentelemetry/resources": "2.0.0", + "@opentelemetry/sdk-metrics": "2.0.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "node_modules/@opentelemetry/exporter-prometheus": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.57.2.tgz", - "integrity": "sha512-VqIqXnuxWMWE/1NatAGtB1PvsQipwxDcdG4RwA/umdBcW3/iOHp0uejvFHTRN2O78ZPged87ErJajyUBPUhlDQ==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.200.0.tgz", + "integrity": "sha512-ZYdlU9r0USuuYppiDyU2VFRA0kFl855ylnb3N/2aOlXrbA4PMCznen7gmPbetGQu7pz8Jbaf4fwvrDnVdQQXSw==", "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/sdk-metrics": "1.30.1" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/resources": "2.0.0", + "@opentelemetry/sdk-metrics": "2.0.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "node_modules/@opentelemetry/exporter-trace-otlp-grpc": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.57.2.tgz", - "integrity": "sha512-gHU1vA3JnHbNxEXg5iysqCWxN9j83d7/epTYBZflqQnTyCC4N7yZXn/dMM+bEmyhQPGjhCkNZLx4vZuChH1PYw==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.200.0.tgz", + "integrity": "sha512-hmeZrUkFl1YMsgukSuHCFPYeF9df0hHoKeHUthRKFCxiURs+GwF1VuabuHmBMZnjTbsuvNjOB+JSs37Csem/5Q==", "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.30.1", - "@opentelemetry/otlp-exporter-base": "0.57.2", - "@opentelemetry/otlp-grpc-exporter-base": "0.57.2", - "@opentelemetry/otlp-transformer": "0.57.2", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/sdk-trace-base": "1.30.1" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/otlp-exporter-base": "0.200.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.200.0", + "@opentelemetry/otlp-transformer": "0.200.0", + "@opentelemetry/resources": "2.0.0", + "@opentelemetry/sdk-trace-base": "2.0.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "node_modules/@opentelemetry/exporter-trace-otlp-http": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.57.2.tgz", - "integrity": "sha512-sB/gkSYFu+0w2dVQ0PWY9fAMl172PKMZ/JrHkkW8dmjCL0CYkmXeE+ssqIL/yBUTPOvpLIpenX5T9RwXRBW/3g==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.200.0.tgz", + "integrity": "sha512-Goi//m/7ZHeUedxTGVmEzH19NgqJY+Bzr6zXo1Rni1+hwqaksEyJ44gdlEMREu6dzX1DlAaH/qSykSVzdrdafA==", "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/otlp-exporter-base": "0.57.2", - "@opentelemetry/otlp-transformer": "0.57.2", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/sdk-trace-base": "1.30.1" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/otlp-exporter-base": "0.200.0", + "@opentelemetry/otlp-transformer": "0.200.0", + "@opentelemetry/resources": "2.0.0", + "@opentelemetry/sdk-trace-base": "2.0.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "node_modules/@opentelemetry/exporter-trace-otlp-proto": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.57.2.tgz", - "integrity": "sha512-awDdNRMIwDvUtoRYxRhja5QYH6+McBLtoz1q9BeEsskhZcrGmH/V1fWpGx8n+Rc+542e8pJA6y+aullbIzQmlw==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.200.0.tgz", + "integrity": "sha512-V9TDSD3PjK1OREw2iT9TUTzNYEVWJk4Nhodzhp9eiz4onDMYmPy3LaGbPv81yIR6dUb/hNp/SIhpiCHwFUq2Vg==", "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/otlp-exporter-base": "0.57.2", - "@opentelemetry/otlp-transformer": "0.57.2", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/sdk-trace-base": "1.30.1" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/otlp-exporter-base": "0.200.0", + "@opentelemetry/otlp-transformer": "0.200.0", + "@opentelemetry/resources": "2.0.0", + "@opentelemetry/sdk-trace-base": "2.0.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "node_modules/@opentelemetry/exporter-zipkin": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.30.1.tgz", - "integrity": "sha512-6S2QIMJahIquvFaaxmcwpvQQRD/YFaMTNoIxrfPIPOeITN+a8lfEcPDxNxn8JDAaxkg+4EnXhz8upVDYenoQjA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-2.0.0.tgz", + "integrity": "sha512-icxaKZ+jZL/NHXX8Aru4HGsrdhK0MLcuRXkX5G5IRmCgoRLw+Br6I/nMVozX2xjGGwV7hw2g+4Slj8K7s4HbVg==", "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/sdk-trace-base": "1.30.1", - "@opentelemetry/semantic-conventions": "1.28.0" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/resources": "2.0.0", + "@opentelemetry/sdk-trace-base": "2.0.0", + "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" } }, - "node_modules/@opentelemetry/exporter-zipkin/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", - "engines": { - "node": ">=14" - } - }, "node_modules/@opentelemetry/host-metrics": { "resolved": "packages/opentelemetry-host-metrics", "link": true @@ -9073,19 +8925,18 @@ "link": true }, "node_modules/@opentelemetry/instrumentation": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", - "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.200.0.tgz", + "integrity": "sha512-pmPlzfJd+vvgaZd/reMsC8RWgTXn2WY1OWT5RT42m3aOn5532TozwXNDhg1vzqJ+jnvmkREcdLr27ebJEQt0Jg==", "dependencies": { - "@opentelemetry/api-logs": "0.57.2", + "@opentelemetry/api-logs": "0.200.0", "@types/shimmer": "^1.2.0", "import-in-the-middle": "^1.8.1", "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", "shimmer": "^1.2.1" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -9140,30 +8991,22 @@ "link": true }, "node_modules/@opentelemetry/instrumentation-fetch": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.57.2.tgz", - "integrity": "sha512-LF/lH9xpRTuGPdxta6Eiezw91DFm0A9SMux1vslNwSgL4jiB+q1fQ/8CRv7e5UNh7y/hit4LAdGPoH+f0wfTTQ==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.200.0.tgz", + "integrity": "sha512-W2Vd/hVsFN3ZNU20yn3zmhXdutF7ecWy10aDGQtYJRdE0WLmYcQlxM3T7D8hPxIr+Uvi7LG+VAR2uJQxXdidKA==", "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/instrumentation": "0.57.2", - "@opentelemetry/sdk-trace-web": "1.30.1", - "@opentelemetry/semantic-conventions": "1.28.0" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/instrumentation": "0.200.0", + "@opentelemetry/sdk-trace-web": "2.0.0", + "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/instrumentation-fetch/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", - "engines": { - "node": ">=14" - } - }, "node_modules/@opentelemetry/instrumentation-fs": { "resolved": "plugins/node/instrumentation-fs", "link": true @@ -9177,58 +9020,41 @@ "link": true }, "node_modules/@opentelemetry/instrumentation-grpc": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.57.2.tgz", - "integrity": "sha512-TR6YQA67cLSZzdxbf2SrbADJy2Y8eBW1+9mF15P0VK2MYcpdoUSmQTF1oMkBwa3B9NwqDFA2fq7wYTTutFQqaQ==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.200.0.tgz", + "integrity": "sha512-iaPHlO1qb1WlGUq0oTx0rJND/BtBeTAtyEfflu2VwKDe8XZeia7UEOfiSQxnGqVSTwW5F0P1S5UzqeDJotreWQ==", "dependencies": { - "@opentelemetry/instrumentation": "0.57.2", - "@opentelemetry/semantic-conventions": "1.28.0" + "@opentelemetry/instrumentation": "0.200.0", + "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/instrumentation-grpc/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", - "engines": { - "node": ">=14" - } - }, "node_modules/@opentelemetry/instrumentation-hapi": { "resolved": "plugins/node/opentelemetry-instrumentation-hapi", "link": true }, "node_modules/@opentelemetry/instrumentation-http": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.57.2.tgz", - "integrity": "sha512-1Uz5iJ9ZAlFOiPuwYg29Bf7bJJc/GeoeJIFKJYQf67nTVKFe8RHbEtxgkOmK4UGZNHKXcpW4P8cWBYzBn1USpg==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.200.0.tgz", + "integrity": "sha512-9tqGbCJikhYU68y3k9mi6yWsMyMeCcwoQuHvIXan5VvvPPQ5WIZaV6Mxu/MCVe4swRNoFs8Th+qyj0TZV5ELvw==", "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/instrumentation": "0.57.2", - "@opentelemetry/semantic-conventions": "1.28.0", - "forwarded-parse": "2.1.2", - "semver": "^7.5.2" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/instrumentation": "0.200.0", + "@opentelemetry/semantic-conventions": "^1.29.0", + "forwarded-parse": "2.1.2" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", - "engines": { - "node": ">=14" - } - }, "node_modules/@opentelemetry/instrumentation-ioredis": { "resolved": "plugins/node/opentelemetry-instrumentation-ioredis", "link": true @@ -9330,82 +9156,74 @@ "link": true }, "node_modules/@opentelemetry/instrumentation-xml-http-request": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.57.2.tgz", - "integrity": "sha512-9niBJT2egcytOqDEfA27xc6TIqlOTEzQYNli2lWuw+K7TeO7KcyYzmIeS/S6BYLulOsOWtvlE6CDDxXg+GUepw==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.200.0.tgz", + "integrity": "sha512-5YKt1BiCvJigJ/axt8bmTUFp2evNFPEO7M7BanzScsK8nC98w8THAKO+gDlmZn2BBG6s0EvTRPETLSQN6hzS8A==", "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/instrumentation": "0.57.2", - "@opentelemetry/sdk-trace-web": "1.30.1", - "@opentelemetry/semantic-conventions": "1.28.0" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/instrumentation": "0.200.0", + "@opentelemetry/sdk-trace-web": "2.0.0", + "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/instrumentation-xml-http-request/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", - "engines": { - "node": ">=14" - } - }, "node_modules/@opentelemetry/instrumentation/node_modules/@types/shimmer": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.2.0.tgz", "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==" }, "node_modules/@opentelemetry/otlp-exporter-base": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.57.2.tgz", - "integrity": "sha512-XdxEzL23Urhidyebg5E6jZoaiW5ygP/mRjxLHixogbqwDy2Faduzb5N0o/Oi+XTIJu+iyxXdVORjXax+Qgfxag==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.200.0.tgz", + "integrity": "sha512-IxJgA3FD7q4V6gGq4bnmQM5nTIyMDkoGFGrBrrDjB6onEiq1pafma55V+bHvGYLWvcqbBbRfezr1GED88lacEQ==", "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/otlp-transformer": "0.57.2" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/otlp-transformer": "0.200.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "node_modules/@opentelemetry/otlp-grpc-exporter-base": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.57.2.tgz", - "integrity": "sha512-USn173KTWy0saqqRB5yU9xUZ2xdgb1Rdu5IosJnm9aV4hMTuFFRTUsQxbgc24QxpCHeoKzzCSnS/JzdV0oM2iQ==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.200.0.tgz", + "integrity": "sha512-CK2S+bFgOZ66Bsu5hlDeOX6cvW5FVtVjFFbWuaJP0ELxJKBB6HlbLZQ2phqz/uLj1cWap5xJr/PsR3iGoB7Vqw==", "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.30.1", - "@opentelemetry/otlp-exporter-base": "0.57.2", - "@opentelemetry/otlp-transformer": "0.57.2" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/otlp-exporter-base": "0.200.0", + "@opentelemetry/otlp-transformer": "0.200.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "node_modules/@opentelemetry/otlp-transformer": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.57.2.tgz", - "integrity": "sha512-48IIRj49gbQVK52jYsw70+Jv+JbahT8BqT2Th7C4H7RCM9d0gZ5sgNPoMpWldmfjvIsSgiGJtjfk9MeZvjhoig==", - "dependencies": { - "@opentelemetry/api-logs": "0.57.2", - "@opentelemetry/core": "1.30.1", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/sdk-logs": "0.57.2", - "@opentelemetry/sdk-metrics": "1.30.1", - "@opentelemetry/sdk-trace-base": "1.30.1", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.200.0.tgz", + "integrity": "sha512-+9YDZbYybOnv7sWzebWOeK6gKyt2XE7iarSyBFkwwnP559pEevKOUD8NyDHhRjCSp13ybh9iVXlMfcj/DwF/yw==", + "dependencies": { + "@opentelemetry/api-logs": "0.200.0", + "@opentelemetry/core": "2.0.0", + "@opentelemetry/resources": "2.0.0", + "@opentelemetry/sdk-logs": "0.200.0", + "@opentelemetry/sdk-metrics": "2.0.0", + "@opentelemetry/sdk-trace-base": "2.0.0", "protobufjs": "^7.3.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -9428,14 +9246,14 @@ "link": true }, "node_modules/@opentelemetry/propagator-b3": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.30.1.tgz", - "integrity": "sha512-oATwWWDIJzybAZ4pO76ATN5N6FFbOA1otibAVlS8v90B4S1wClnhRUk7K+2CHAwN1JKYuj4jh/lpCEG5BAqFuQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-2.0.0.tgz", + "integrity": "sha512-blx9S2EI49Ycuw6VZq+bkpaIoiJFhsDuvFGhBIoH3vJ5oYjJ2U0s3fAM5jYft99xVIAv6HqoPtlP9gpVA2IZtA==", "dependencies": { - "@opentelemetry/core": "1.30.1" + "@opentelemetry/core": "2.0.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" @@ -9446,14 +9264,14 @@ "link": true }, "node_modules/@opentelemetry/propagator-jaeger": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.30.1.tgz", - "integrity": "sha512-Pj/BfnYEKIOImirH76M4hDaBSx6HyZ2CXUqk+Kj02m6BB80c/yo4BdWkn/1gDFfU+YPY+bPR2U0DKBfdxCKwmg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-2.0.0.tgz", + "integrity": "sha512-Mbm/LSFyAtQKP0AQah4AfGgsD+vsZcyreZoQ5okFBk33hU7AquU4TltgyL9dvaO8/Zkoud8/0gEvwfOZ5d7EPA==", "dependencies": { - "@opentelemetry/core": "1.30.1" + "@opentelemetry/core": "2.0.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" @@ -9496,167 +9314,134 @@ "link": true }, "node_modules/@opentelemetry/resources": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz", - "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.0.0.tgz", + "integrity": "sha512-rnZr6dML2z4IARI4zPGQV4arDikF/9OXZQzrC01dLmn0CZxU5U5OLd/m1T7YkGRj5UitjeoCtg/zorlgMQcdTg==", "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/semantic-conventions": "1.28.0" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", - "engines": { - "node": ">=14" + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "node_modules/@opentelemetry/sdk-logs": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.57.2.tgz", - "integrity": "sha512-TXFHJ5c+BKggWbdEQ/inpgIzEmS2BGQowLE9UhsMd7YYlUfBQJ4uax0VF/B5NYigdM/75OoJGhAV3upEhK+3gg==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.200.0.tgz", + "integrity": "sha512-VZG870063NLfObmQQNtCVcdXXLzI3vOjjrRENmU37HYiPFa0ZXpXVDsTD02Nh3AT3xYJzQaWKl2X2lQ2l7TWJA==", "dependencies": { - "@opentelemetry/api-logs": "0.57.2", - "@opentelemetry/core": "1.30.1", - "@opentelemetry/resources": "1.30.1" + "@opentelemetry/api-logs": "0.200.0", + "@opentelemetry/core": "2.0.0", + "@opentelemetry/resources": "2.0.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.1.tgz", - "integrity": "sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.0.0.tgz", + "integrity": "sha512-Bvy8QDjO05umd0+j+gDeWcTaVa1/R2lDj/eOvjzpm8VQj1K1vVZJuyjThpV5/lSHyYW2JaHF2IQ7Z8twJFAhjA==", "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/resources": "1.30.1" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/resources": "2.0.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" + "@opentelemetry/api": ">=1.9.0 <1.10.0" } }, "node_modules/@opentelemetry/sdk-node": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.57.2.tgz", - "integrity": "sha512-8BaeqZyN5sTuPBtAoY+UtKwXBdqyuRKmekN5bFzAO40CgbGzAxfTpiL3PBerT7rhZ7p2nBdq7FaMv/tBQgHE4A==", - "dependencies": { - "@opentelemetry/api-logs": "0.57.2", - "@opentelemetry/core": "1.30.1", - "@opentelemetry/exporter-logs-otlp-grpc": "0.57.2", - "@opentelemetry/exporter-logs-otlp-http": "0.57.2", - "@opentelemetry/exporter-logs-otlp-proto": "0.57.2", - "@opentelemetry/exporter-metrics-otlp-grpc": "0.57.2", - "@opentelemetry/exporter-metrics-otlp-http": "0.57.2", - "@opentelemetry/exporter-metrics-otlp-proto": "0.57.2", - "@opentelemetry/exporter-prometheus": "0.57.2", - "@opentelemetry/exporter-trace-otlp-grpc": "0.57.2", - "@opentelemetry/exporter-trace-otlp-http": "0.57.2", - "@opentelemetry/exporter-trace-otlp-proto": "0.57.2", - "@opentelemetry/exporter-zipkin": "1.30.1", - "@opentelemetry/instrumentation": "0.57.2", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/sdk-logs": "0.57.2", - "@opentelemetry/sdk-metrics": "1.30.1", - "@opentelemetry/sdk-trace-base": "1.30.1", - "@opentelemetry/sdk-trace-node": "1.30.1", - "@opentelemetry/semantic-conventions": "1.28.0" - }, - "engines": { - "node": ">=14" + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.200.0.tgz", + "integrity": "sha512-S/YSy9GIswnhYoDor1RusNkmRughipvTCOQrlF1dzI70yQaf68qgf5WMnzUxdlCl3/et/pvaO75xfPfuEmCK5A==", + "dependencies": { + "@opentelemetry/api-logs": "0.200.0", + "@opentelemetry/core": "2.0.0", + "@opentelemetry/exporter-logs-otlp-grpc": "0.200.0", + "@opentelemetry/exporter-logs-otlp-http": "0.200.0", + "@opentelemetry/exporter-logs-otlp-proto": "0.200.0", + "@opentelemetry/exporter-metrics-otlp-grpc": "0.200.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.200.0", + "@opentelemetry/exporter-metrics-otlp-proto": "0.200.0", + "@opentelemetry/exporter-prometheus": "0.200.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.200.0", + "@opentelemetry/exporter-trace-otlp-http": "0.200.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.200.0", + "@opentelemetry/exporter-zipkin": "2.0.0", + "@opentelemetry/instrumentation": "0.200.0", + "@opentelemetry/propagator-b3": "2.0.0", + "@opentelemetry/propagator-jaeger": "2.0.0", + "@opentelemetry/resources": "2.0.0", + "@opentelemetry/sdk-logs": "0.200.0", + "@opentelemetry/sdk-metrics": "2.0.0", + "@opentelemetry/sdk-trace-base": "2.0.0", + "@opentelemetry/sdk-trace-node": "2.0.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", - "engines": { - "node": ">=14" - } - }, "node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz", - "integrity": "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.0.0.tgz", + "integrity": "sha512-qQnYdX+ZCkonM7tA5iU4fSRsVxbFGml8jbxOgipRGMFHKaXKHQ30js03rTobYjKjIfnOsZSbHKWF0/0v0OQGfw==", "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/semantic-conventions": "1.28.0" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/resources": "2.0.0", + "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", - "engines": { - "node": ">=14" + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "node_modules/@opentelemetry/sdk-trace-node": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.30.1.tgz", - "integrity": "sha512-cBjYOINt1JxXdpw1e5MlHmFRc5fgj4GW/86vsKFxJCJ8AL4PdVtYH41gWwl4qd4uQjqEL1oJVrXkSy5cnduAnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-2.0.0.tgz", + "integrity": "sha512-omdilCZozUjQwY3uZRBwbaRMJ3p09l4t187Lsdf0dGMye9WKD4NGcpgZRvqhI1dwcH6og+YXQEtoO9Wx3ykilg==", "dependencies": { - "@opentelemetry/context-async-hooks": "1.30.1", - "@opentelemetry/core": "1.30.1", - "@opentelemetry/propagator-b3": "1.30.1", - "@opentelemetry/propagator-jaeger": "1.30.1", - "@opentelemetry/sdk-trace-base": "1.30.1", - "semver": "^7.5.2" + "@opentelemetry/context-async-hooks": "2.0.0", + "@opentelemetry/core": "2.0.0", + "@opentelemetry/sdk-trace-base": "2.0.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "node_modules/@opentelemetry/sdk-trace-web": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-1.30.1.tgz", - "integrity": "sha512-AUo2e+1uyTGMB36VlbvBqnCogVzQhpC7dRcVVdCrt+cFHLpFRRJcd45J2obGTgs0XiAwNLyq5bhkW3JF2NZA+A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-2.0.0.tgz", + "integrity": "sha512-2IeDP1k2fipeCH6OcTSg3HgaSvTTqgUNld5GIPGXWspynZSK85YjUDazEYpSVIyaMeQY6+ZHEaD5cwsRaq3dWA==", "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/sdk-trace-base": "1.30.1", - "@opentelemetry/semantic-conventions": "1.28.0" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/sdk-trace-base": "2.0.0", + "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@opentelemetry/sdk-trace-web/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", - "engines": { - "node": ">=14" - } - }, "node_modules/@opentelemetry/semantic-conventions": { "version": "1.30.0", "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.30.0.tgz", @@ -12323,15 +12108,6 @@ "@types/react": "*" } }, - "node_modules/@types/react-dom": { - "version": "18.0.2", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.2.tgz", - "integrity": "sha512-UxeS+Wtj5bvLRREz9tIgsK4ntCuLDo0EcAcACgw3E+9wE8ePDr9uQpq53MfcyxyIS55xJ+0B6mDS8c4qkkHLBg==", - "dev": true, - "dependencies": { - "@types/react": "*" - } - }, "node_modules/@types/readable-stream": { "version": "4.0.18", "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.18.tgz", @@ -30554,6 +30330,7 @@ "version": "7.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, "bin": { "semver": "bin/semver.js" }, @@ -33582,17 +33359,17 @@ } }, "node_modules/typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", "dev": true, - "peer": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=14.17" + "node": ">=12.20" } }, "node_modules/typical": { @@ -35071,7 +34848,7 @@ "version": "0.3.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/sdk-trace-base": "^1.0.0" + "@opentelemetry/sdk-trace-base": "^2.0.0" }, "devDependencies": { "@opentelemetry/api": "^1.0.0", @@ -35080,10 +34857,10 @@ "expect": "29.2.0", "nyc": "15.1.0", "rimraf": "5.0.10", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" @@ -35098,19 +34875,6 @@ "undici-types": "~5.26.4" } }, - "packages/baggage-span-processor/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "packages/opentelemetry-host-metrics": { "name": "@opentelemetry/host-metrics", "version": "0.35.5", @@ -35120,17 +34884,17 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/sdk-metrics": "^1.8.0", + "@opentelemetry/sdk-metrics": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -35145,25 +34909,12 @@ "undici-types": "~5.26.4" } }, - "packages/opentelemetry-host-metrics/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "packages/opentelemetry-id-generator-aws-xray": { "name": "@opentelemetry/id-generator-aws-xray", "version": "1.2.3", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.0.0" + "@opentelemetry/sdk-trace-base": "^2.0.0" }, "devDependencies": { "@babel/core": "7.24.6", @@ -35186,13 +34937,13 @@ "rimraf": "5.0.10", "sinon": "15.1.2", "ts-loader": "9.5.2", - "typescript": "4.4.4", + "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" @@ -35226,19 +34977,6 @@ "url": "https://opencollective.com/sinon" } }, - "packages/opentelemetry-id-generator-aws-xray/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "packages/opentelemetry-propagation-utils": { "name": "@opentelemetry/propagation-utils", "version": "0.30.16", @@ -35252,10 +34990,10 @@ "expect": "29.2.0", "nyc": "15.1.0", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" @@ -35270,19 +35008,6 @@ "undici-types": "~5.26.4" } }, - "packages/opentelemetry-propagation-utils/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "packages/opentelemetry-redis-common": { "name": "@opentelemetry/redis-common", "version": "0.36.2", @@ -35291,10 +35016,10 @@ "@types/mocha": "^10.0.0", "@types/node": "18.18.14", "nyc": "15.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" } }, "packages/opentelemetry-redis-common/node_modules/@types/node": { @@ -35306,35 +35031,22 @@ "undici-types": "~5.26.4" } }, - "packages/opentelemetry-redis-common/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "packages/opentelemetry-sql-common": { "name": "@opentelemetry/sql-common", "version": "0.40.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.1.0" + "@opentelemetry/core": "^2.0.0" }, "devDependencies": { "@opentelemetry/api": "^1.1.0", "@types/mocha": "^10.0.0", "@types/node": "18.18.14", "nyc": "15.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0" @@ -35349,41 +35061,28 @@ "undici-types": "~5.26.4" } }, - "packages/opentelemetry-sql-common/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "packages/opentelemetry-test-utils": { "name": "@opentelemetry/contrib-test-utils", "version": "0.45.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.0.0", - "@opentelemetry/exporter-jaeger": "^1.3.1", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-metrics": "^1.27.0", - "@opentelemetry/sdk-node": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/exporter-jaeger": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/sdk-metrics": "^2.0.0", + "@opentelemetry/sdk-node": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@types/node": "18.18.14", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -35398,25 +35097,12 @@ "undici-types": "~5.26.4" } }, - "packages/opentelemetry-test-utils/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "packages/winston-transport": { "name": "@opentelemetry/winston-transport", "version": "0.10.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "^0.57.2", + "@opentelemetry/api-logs": "^0.200.0", "winston-transport": "4.*" }, "devDependencies": { @@ -35427,10 +35113,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" } }, "packages/winston-transport/node_modules/@types/node": { @@ -35442,26 +35128,13 @@ "undici-types": "~5.26.4" } }, - "packages/winston-transport/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/instrumentation-amqplib": { "name": "@opentelemetry/instrumentation-amqplib", "version": "0.46.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { @@ -35478,10 +35151,10 @@ "nyc": "15.1.0", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -35496,34 +35169,21 @@ "undici-types": "~5.26.4" } }, - "plugins/node/instrumentation-amqplib/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/instrumentation-cucumber": { "name": "@opentelemetry/instrumentation-cucumber", "version": "0.14.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@cucumber/cucumber": "^9.0.0", "@cucumber/messages": "^22.0.0", "@opentelemetry/api": "^1.0.0", - "@opentelemetry/core": "^1.3.1", - "@opentelemetry/sdk-trace-base": "^1.3.1", - "@opentelemetry/sdk-trace-node": "^1.3.1", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/semver": "7.5.8", @@ -35534,10 +35194,10 @@ "semver": "7.7.1", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" @@ -35552,41 +35212,28 @@ "undici-types": "~5.26.4" } }, - "plugins/node/instrumentation-cucumber/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/instrumentation-dataloader": { "name": "@opentelemetry/instrumentation-dataloader", "version": "0.16.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2" + "@opentelemetry/instrumentation": "^0.200.0" }, "devDependencies": { "@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", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "dataloader": "2.2.3", "nyc": "15.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -35601,43 +35248,30 @@ "undici-types": "~5.26.4" } }, - "plugins/node/instrumentation-dataloader/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/instrumentation-fs": { "name": "@opentelemetry/instrumentation-fs", "version": "0.19.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "^17.0.0", "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -35652,31 +35286,18 @@ "undici-types": "~5.26.4" } }, - "plugins/node/instrumentation-fs/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/instrumentation-kafkajs": { "name": "@opentelemetry/instrumentation-kafkajs", "version": "0.7.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.24.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "^17.0.0", @@ -35684,10 +35305,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -35702,25 +35323,12 @@ "undici-types": "~5.26.4" } }, - "plugins/node/instrumentation-kafkajs/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/instrumentation-lru-memoizer": { "name": "@opentelemetry/instrumentation-lru-memoizer", "version": "0.44.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2" + "@opentelemetry/instrumentation": "^0.200.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -35733,10 +35341,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -35751,32 +35359,19 @@ "undici-types": "~5.26.4" } }, - "plugins/node/instrumentation-lru-memoizer/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/instrumentation-mongoose": { "name": "@opentelemetry/instrumentation-mongoose", "version": "0.46.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "expect": "29.2.0", @@ -35784,10 +35379,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -35802,37 +35397,24 @@ "undici-types": "~5.26.4" } }, - "plugins/node/instrumentation-mongoose/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/instrumentation-runtime-node": { "name": "@opentelemetry/instrumentation-runtime-node", "version": "0.12.2", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2" + "@opentelemetry/instrumentation": "^0.200.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/sdk-metrics": "^1.20.0", + "@opentelemetry/sdk-metrics": "^2.0.0", "@types/mocha": "^10.0.6", "@types/node": "18.18.14", "nyc": "^15.1.0", "rimraf": "5.0.10", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=17.4.0" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -35847,31 +35429,18 @@ "undici-types": "~5.26.4" } }, - "plugins/node/instrumentation-runtime-node/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/instrumentation-socket.io": { "name": "@opentelemetry/instrumentation-socket.io", "version": "0.46.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "expect": "27.4.2", @@ -35880,10 +35449,10 @@ "socket.io": "^4.1.3", "socket.io-client": "^4.1.3", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -36049,33 +35618,20 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, - "plugins/node/instrumentation-socket.io/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/instrumentation-tedious": { "name": "@opentelemetry/instrumentation-tedious", "version": "0.18.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/tedious": "^4.0.14" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "nyc": "15.1.0", @@ -36083,10 +35639,10 @@ "semver": "7.7.1", "tedious": "17.0.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -36101,43 +35657,30 @@ "undici-types": "~5.26.4" } }, - "plugins/node/instrumentation-tedious/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/instrumentation-undici": { "name": "@opentelemetry/instrumentation-undici", "version": "0.10.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0" }, "devDependencies": { "@opentelemetry/api": "^1.7.0", - "@opentelemetry/sdk-metrics": "^1.8.0", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-metrics": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "nyc": "15.1.0", "rimraf": "5.0.10", "semver": "^7.6.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4", + "typescript": "5.0.4", "undici": "6.21.1" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.7.0" @@ -36152,44 +35695,31 @@ "undici-types": "~5.26.4" } }, - "plugins/node/instrumentation-undici/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-aws-lambda": { "name": "@opentelemetry/instrumentation-aws-lambda", "version": "0.50.3", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/aws-lambda": "8.10.147" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/core": "^1.8.0", + "@opentelemetry/core": "^2.0.0", "@opentelemetry/propagator-aws-xray": "^1.26.2", "@opentelemetry/propagator-aws-xray-lambda": "^0.53.2", - "@opentelemetry/sdk-metrics": "^1.8.0", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-metrics": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "nyc": "15.1.0", "rimraf": "5.0.10", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -36204,26 +35734,13 @@ "undici-types": "~5.26.4" } }, - "plugins/node/opentelemetry-instrumentation-aws-lambda/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-aws-sdk": { "name": "@opentelemetry/instrumentation-aws-sdk", "version": "0.49.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/propagation-utils": "^0.30.16", "@opentelemetry/semantic-conventions": "^1.27.0" }, @@ -36237,7 +35754,7 @@ "@aws-sdk/types": "^3.370.0", "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@smithy/node-http-handler": "2.4.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -36250,10 +35767,10 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -36293,34 +35810,21 @@ "undici-types": "~5.26.4" } }, - "plugins/node/opentelemetry-instrumentation-aws-sdk/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-bunyan": { "name": "@opentelemetry/instrumentation-bunyan", "version": "0.45.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "^0.57.2", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/api-logs": "^0.200.0", + "@opentelemetry/instrumentation": "^0.200.0", "@types/bunyan": "1.8.11" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-logs": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/sdk-logs": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -36330,10 +35834,10 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -36348,33 +35852,20 @@ "undici-types": "~5.26.4" } }, - "plugins/node/opentelemetry-instrumentation-bunyan/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-cassandra": { "name": "@opentelemetry/instrumentation-cassandra-driver", "version": "0.45.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/semver": "7.5.8", @@ -36383,10 +35874,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -36401,43 +35892,30 @@ "undici-types": "~5.26.4" } }, - "plugins/node/opentelemetry-instrumentation-cassandra/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-connect": { "name": "@opentelemetry/instrumentation-connect", "version": "0.43.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/connect": "3.4.38" }, "devDependencies": { "@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", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "connect": "3.7.0", "nyc": "15.1.0", "rimraf": "5.0.10", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -36452,31 +35930,18 @@ "undici-types": "~5.26.4" } }, - "plugins/node/opentelemetry-instrumentation-connect/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-dns": { "name": "@opentelemetry/instrumentation-dns", "version": "0.43.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2" + "@opentelemetry/instrumentation": "^0.200.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/semver": "7.5.8", @@ -36485,10 +35950,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -36503,34 +35968,21 @@ "undici-types": "~5.26.4" } }, - "plugins/node/opentelemetry-instrumentation-dns/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-express": { "name": "@opentelemetry/instrumentation-express", "version": "0.47.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/express": "4.17.21", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -36540,10 +35992,10 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -36558,36 +36010,23 @@ "undici-types": "~5.26.4" } }, - "plugins/node/opentelemetry-instrumentation-express/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-fastify": { "name": "@opentelemetry/instrumentation-fastify", "version": "0.44.2", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@fastify/express": "^3.0.0", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/instrumentation-http": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/instrumentation-http": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/express": "4.17.21", "@types/mocha": "10.0.10", "@types/node": "18.15.3", @@ -36597,10 +36036,10 @@ "rimraf": "5.0.10", "semver": "^7.5.4", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -36612,31 +36051,18 @@ "integrity": "sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==", "dev": true }, - "plugins/node/opentelemetry-instrumentation-fastify/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-generic-pool": { "name": "@opentelemetry/instrumentation-generic-pool", "version": "0.43.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2" + "@opentelemetry/instrumentation": "^0.200.0" }, "devDependencies": { "@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", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/generic-pool": "^3.1.9", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -36645,10 +36071,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "semver": "7.7.1", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -36663,29 +36089,16 @@ "undici-types": "~5.26.4" } }, - "plugins/node/opentelemetry-instrumentation-generic-pool/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-graphql": { "name": "@opentelemetry/instrumentation-graphql", "version": "0.47.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2" + "@opentelemetry/instrumentation": "^0.200.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -36693,10 +36106,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -36711,45 +36124,32 @@ "undici-types": "~5.26.4" } }, - "plugins/node/opentelemetry-instrumentation-graphql/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-hapi": { "name": "@opentelemetry/instrumentation-hapi", "version": "0.45.2", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@hapi/hapi": "21.3.12", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "joi": "17.12.2", "nyc": "15.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -36764,34 +36164,21 @@ "undici-types": "~5.26.4" } }, - "plugins/node/opentelemetry-instrumentation-hapi/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-ioredis": { "name": "@opentelemetry/instrumentation-ioredis", "version": "0.47.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/ioredis4": "npm:@types/ioredis@4.28.10", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -36802,10 +36189,10 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -36820,32 +36207,19 @@ "undici-types": "~5.26.4" } }, - "plugins/node/opentelemetry-instrumentation-ioredis/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-knex": { "name": "@opentelemetry/instrumentation-knex", "version": "0.44.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@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", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "better-sqlite3": "11.0.0", @@ -36853,10 +36227,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sqlite3": "5.1.7", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -36871,36 +36245,23 @@ "undici-types": "~5.26.4" } }, - "plugins/node/opentelemetry-instrumentation-knex/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-koa": { "name": "@opentelemetry/instrumentation-koa", "version": "0.47.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@koa/router": "13.1.0", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/instrumentation-http": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/instrumentation-http": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/koa": "2.15.0", "@types/koa__router": "12.0.4", "@types/mocha": "10.0.10", @@ -36912,10 +36273,10 @@ "semver": "7.7.1", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -36930,44 +36291,31 @@ "undici-types": "~5.26.4" } }, - "plugins/node/opentelemetry-instrumentation-koa/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-memcached": { "name": "@opentelemetry/instrumentation-memcached", "version": "0.43.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/memcached": "^2.2.6" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "cross-env": "7.0.3", "memcached": "2.2.2", "nyc": "15.1.0", "rimraf": "5.0.10", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -36982,34 +36330,21 @@ "undici-types": "~5.26.4" } }, - "plugins/node/opentelemetry-instrumentation-memcached/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-mongodb": { "name": "@opentelemetry/instrumentation-mongodb", "version": "0.52.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-metrics": "^1.9.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-metrics": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/bson": "4.0.5", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -37017,10 +36352,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -37170,34 +36505,21 @@ "whatwg-url": "^14.1.0 || ^13.0.0" } }, - "plugins/node/opentelemetry-instrumentation-mongodb/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-mysql": { "name": "@opentelemetry/instrumentation-mysql", "version": "0.45.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mysql": "2.15.26" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-metrics": "^1.8.0", - "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/sdk-metrics": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -37205,10 +36527,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -37223,33 +36545,20 @@ "undici-types": "~5.26.4" } }, - "plugins/node/opentelemetry-instrumentation-mysql/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-mysql2": { "name": "@opentelemetry/instrumentation-mysql2", "version": "0.45.2", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@opentelemetry/sql-common": "^0.40.1" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/semver": "7.5.8", @@ -37258,10 +36567,10 @@ "rimraf": "5.0.10", "semver": "7.7.1", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -37276,25 +36585,12 @@ "undici-types": "~5.26.4" } }, - "plugins/node/opentelemetry-instrumentation-mysql2/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-nestjs-core": { "name": "@opentelemetry/instrumentation-nestjs-core", "version": "0.44.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { @@ -37302,9 +36598,9 @@ "@nestjs/core": "9.4.3", "@nestjs/platform-express": "9.4.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", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/semver": "7.5.8", @@ -37316,10 +36612,10 @@ "rxjs-compat": "6.6.7", "semver": "7.7.1", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -37334,42 +36630,29 @@ "undici-types": "~5.26.4" } }, - "plugins/node/opentelemetry-instrumentation-nestjs-core/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-net": { "name": "@opentelemetry/instrumentation-net", "version": "0.43.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@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", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -37384,26 +36667,13 @@ "undici-types": "~5.26.4" } }, - "plugins/node/opentelemetry-instrumentation-net/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-pg": { "name": "@opentelemetry/instrumentation-pg", "version": "0.51.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.26.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@opentelemetry/sql-common": "^0.40.1", "@types/pg": "8.6.1", @@ -37411,10 +36681,10 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -37426,10 +36696,10 @@ "safe-stable-stringify": "^2.4.1", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -37444,33 +36714,20 @@ "undici-types": "~5.26.4" } }, - "plugins/node/opentelemetry-instrumentation-pg/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-pino": { "name": "@opentelemetry/instrumentation-pino", "version": "0.46.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "^0.57.2", - "@opentelemetry/core": "^1.25.0", - "@opentelemetry/instrumentation": "^0.57.2" + "@opentelemetry/api-logs": "^0.200.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -37482,10 +36739,10 @@ "semver": "7.7.1", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -37500,34 +36757,21 @@ "undici-types": "~5.26.4" } }, - "plugins/node/opentelemetry-instrumentation-pino/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-redis": { "name": "@opentelemetry/instrumentation-redis", "version": "0.46.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/redis": "2.8.32", @@ -37536,10 +36780,10 @@ "redis": "3.1.2", "rimraf": "5.0.10", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -37550,17 +36794,17 @@ "version": "0.46.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "cross-env": "7.0.3", @@ -37568,10 +36812,10 @@ "redis": "4.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -37600,19 +36844,6 @@ "@redis/time-series": "1.0.3" } }, - "plugins/node/opentelemetry-instrumentation-redis-4/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-redis/node_modules/@types/node": { "version": "18.18.14", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", @@ -37622,33 +36853,20 @@ "undici-types": "~5.26.4" } }, - "plugins/node/opentelemetry-instrumentation-redis/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-restify": { "name": "@opentelemetry/instrumentation-restify", "version": "0.45.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@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", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/restify": "4.3.12", @@ -37658,10 +36876,10 @@ "rimraf": "5.0.10", "semver": "7.7.1", "test-all-versions": "^6.0.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -37676,41 +36894,28 @@ "undici-types": "~5.26.4" } }, - "plugins/node/opentelemetry-instrumentation-restify/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-router": { "name": "@opentelemetry/instrumentation-router", "version": "0.44.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@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", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "nyc": "15.1.0", "rimraf": "5.0.10", "router": "1.3.8", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -37725,32 +36930,19 @@ "undici-types": "~5.26.4" } }, - "plugins/node/opentelemetry-instrumentation-router/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/node/opentelemetry-instrumentation-winston": { "name": "@opentelemetry/instrumentation-winston", "version": "0.44.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "^0.57.2", - "@opentelemetry/instrumentation": "^0.57.2" + "@opentelemetry/api-logs": "^0.200.0", + "@opentelemetry/instrumentation": "^0.200.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.21.0", - "@opentelemetry/sdk-trace-base": "^1.21.0", - "@opentelemetry/sdk-trace-node": "^1.21.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/winston-transport": "^0.10.1", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -37760,12 +36952,12 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4", + "typescript": "5.0.4", "winston": "3.3.3", "winston2": "npm:winston@2.4.7" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -37780,34 +36972,21 @@ "undici-types": "~5.26.4" } }, - "plugins/node/opentelemetry-instrumentation-winston/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/web/opentelemetry-instrumentation-document-load": { "name": "@opentelemetry/instrumentation-document-load", "version": "0.44.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-web": "^1.15.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-web": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@babel/core": "7.22.17", "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/sdk-trace-base": "^1.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@rollup/plugin-commonjs": "^26.0.0", "@rollup/plugin-node-resolve": "^15.2.3", "@types/chai": "^4.3.10", @@ -37819,10 +36998,10 @@ "@web/test-runner": "^0.18.0", "chai": "^4.3.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -37882,33 +37061,20 @@ "semver": "bin/semver.js" } }, - "plugins/web/opentelemetry-instrumentation-document-load/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/web/opentelemetry-instrumentation-long-task": { "name": "@opentelemetry/instrumentation-long-task", "version": "0.44.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0" }, "devDependencies": { "@babel/core": "7.24.6", "@babel/preset-env": "7.24.6", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-web": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-web": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -37926,14 +37092,14 @@ "rimraf": "5.0.10", "sinon": "15.1.2", "ts-loader": "9.5.2", - "typescript": "4.4.4", + "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0", "zone.js": "^0.11.4 || ^0.13.0 || ^0.14.0 || ^0.15.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -37967,35 +37133,22 @@ "url": "https://opencollective.com/sinon" } }, - "plugins/web/opentelemetry-instrumentation-long-task/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/web/opentelemetry-instrumentation-user-interaction": { "name": "@opentelemetry/instrumentation-user-interaction", "version": "0.44.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-web": "^1.8.0" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-web": "^2.0.0" }, "devDependencies": { "@babel/core": "7.24.6", "@babel/preset-env": "7.24.6", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-zone-peer-dep": "^1.8.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/context-zone-peer-dep": "^2.0.0", + "@opentelemetry/instrumentation-xml-http-request": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/jquery": "3.5.32", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -38014,14 +37167,14 @@ "nyc": "15.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", - "typescript": "4.4.4", + "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0", "zone.js": "^0.11.4 || ^0.13.0 || ^0.14.0 || ^0.15.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0", @@ -38056,39 +37209,26 @@ "url": "https://opencollective.com/sinon" } }, - "plugins/web/opentelemetry-instrumentation-user-interaction/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "plugins/web/opentelemetry-plugin-react-load": { "name": "@opentelemetry/plugin-react-load", "version": "0.31.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "shimmer": "^1.2.1" }, "devDependencies": { "@babel/core": "7.24.6", "@babel/preset-env": "7.24.6", "@opentelemetry/api": "^1.0.0", - "@opentelemetry/propagator-b3": "^1.26.0", - "@opentelemetry/sdk-trace-base": "^1.0.0", - "@opentelemetry/sdk-trace-web": "^1.0.0", + "@opentelemetry/propagator-b3": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-web": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/react": "17.0.83", "@types/react-addons-test-utils": "0.14.26", - "@types/react-dom": "18.0.2", + "@types/react-dom": "17.0.26", "@types/shimmer": "1.0.3", "@types/sinon": "17.0.4", "@types/webpack-env": "1.16.3", @@ -38107,13 +37247,13 @@ "rimraf": "5.0.10", "sinon": "15.1.2", "ts-loader": "9.5.2", - "typescript": "4.4.4", + "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0", @@ -38129,6 +37269,16 @@ "undici-types": "~5.26.4" } }, + "plugins/web/opentelemetry-plugin-react-load/node_modules/@types/react-dom": { + "version": "17.0.26", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.26.tgz", + "integrity": "sha512-Z+2VcYXJwOqQ79HreLU/1fyQ88eXSSFh6I3JdrEHQIfYSI0kCQpTGvOrbE6jFGGYXKsHuwY9tBa/w5Uo6KzrEg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^17.0.0" + } + }, "plugins/web/opentelemetry-plugin-react-load/node_modules/sinon": { "version": "15.1.2", "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.1.2.tgz", @@ -38148,19 +37298,6 @@ "url": "https://opencollective.com/sinon" } }, - "plugins/web/opentelemetry-plugin-react-load/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "propagators/opentelemetry-propagator-instana": { "name": "@opentelemetry/propagator-instana", "version": "0.3.3", @@ -38185,13 +37322,13 @@ "nyc": "15.1.0", "process": "0.11.10", "ts-loader": "9.5.2", - "typescript": "4.4.4", + "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" }, "engines": { - "node": ">=8.12.0" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" @@ -38206,19 +37343,6 @@ "undici-types": "~5.26.4" } }, - "propagators/opentelemetry-propagator-instana/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "propagators/opentelemetry-propagator-ot-trace": { "name": "@opentelemetry/propagator-ot-trace", "version": "0.27.3", @@ -38243,13 +37367,13 @@ "nyc": "15.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", - "typescript": "4.4.4", + "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" @@ -38283,28 +37407,15 @@ "url": "https://opencollective.com/sinon" } }, - "propagators/opentelemetry-propagator-ot-trace/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "propagators/propagator-aws-xray": { "name": "@opentelemetry/propagator-aws-xray", "version": "1.26.2", "license": "Apache-2.0", "devDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0", - "@opentelemetry/core": "^1.0.0", + "@opentelemetry/core": "^2.0.0", "@types/mocha": "10.0.10", - "@types/node": "18.6.5", + "@types/node": "^18.18.14", "@types/sinon": "17.0.4", "@types/webpack-env": "1.16.3", "babel-loader": "8.3.0", @@ -38318,13 +37429,13 @@ "lerna": "6.6.2", "nyc": "15.1.0", "ts-loader": "9.5.2", - "typescript": "4.4.4", + "typescript": "5.0.4", "webpack": "5.95.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" @@ -38342,7 +37453,7 @@ "@babel/preset-env": "7.24.6", "@opentelemetry/api": "1.9.0", "@types/mocha": "10.0.10", - "@types/node": "18.6.5", + "@types/node": "^18.18.14", "@types/sinon": "17.0.4", "babel-loader": "8.3.0", "babel-plugin-istanbul": "7.0.0", @@ -38350,20 +37461,24 @@ "nyc": "15.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "propagators/propagator-aws-xray-lambda/node_modules/@types/node": { - "version": "18.6.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", - "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", - "dev": true + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } }, "propagators/propagator-aws-xray-lambda/node_modules/sinon": { "version": "15.1.2", @@ -38384,25 +37499,16 @@ "url": "https://opencollective.com/sinon" } }, - "propagators/propagator-aws-xray-lambda/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", + "propagators/propagator-aws-xray/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" } }, - "propagators/propagator-aws-xray/node_modules/@types/node": { - "version": "18.6.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", - "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", - "dev": true - }, "propagators/propagator-aws-xray/node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -38436,19 +37542,6 @@ "url": "https://opencollective.com/webpack" } }, - "propagators/propagator-aws-xray/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "propagators/propagator-aws-xray/node_modules/webpack": { "version": "5.95.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", @@ -42712,9 +41805,9 @@ "dev": true }, "@grpc/grpc-js": { - "version": "1.12.6", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.12.6.tgz", - "integrity": "sha512-JXUj6PI0oqqzTGvKtzOkxtpsyPRNsrmhh41TtIz/zEB6J+AUiZZ0dxWzcMwO9Ns5rmSPuMdghlTbUuqIM48d3Q==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.13.0.tgz", + "integrity": "sha512-pMuxInZjUnUkgMT2QLZclRqwk2ykJbIU05aZgPgJYXEpN9+2I7z7aNwcjWZSycRPl232FfhPszyBFJyOxTHNog==", "requires": { "@grpc/proto-loader": "^0.7.13", "@js-sdsl/ordered-map": "^4.4.2" @@ -44787,9 +43880,9 @@ "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==" }, "@opentelemetry/api-logs": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz", - "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.200.0.tgz", + "integrity": "sha512-IKJBQxh91qJ+3ssRly5hYEJ8NDHu9oY/B1PXVSCWf7zytmYO9RNLB0Ox9XQ/fJ8m6gY6Q6NtBWlmXfaXt5Uc4Q==", "requires": { "@opentelemetry/api": "^1.3.0" } @@ -44798,11 +43891,11 @@ "version": "file:metapackages/auto-configuration-propagators", "requires": { "@opentelemetry/api": "^1.4.1", - "@opentelemetry/core": "^1.25.1", + "@opentelemetry/core": "^2.0.0", "@opentelemetry/propagator-aws-xray": "^1.26.2", "@opentelemetry/propagator-aws-xray-lambda": "^0.53.2", - "@opentelemetry/propagator-b3": "^1.25.1", - "@opentelemetry/propagator-jaeger": "^1.25.1", + "@opentelemetry/propagator-b3": "^2.0.0", + "@opentelemetry/propagator-jaeger": "^2.0.0", "@opentelemetry/propagator-ot-trace": "^0.27.3", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -44810,7 +43903,7 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -44821,12 +43914,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -44834,7 +43921,7 @@ "version": "file:metapackages/auto-instrumentations-node", "requires": { "@opentelemetry/api": "^1.4.1", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/instrumentation-amqplib": "^0.46.1", "@opentelemetry/instrumentation-aws-lambda": "^0.50.3", "@opentelemetry/instrumentation-aws-sdk": "^0.49.1", @@ -44849,9 +43936,9 @@ "@opentelemetry/instrumentation-fs": "^0.19.1", "@opentelemetry/instrumentation-generic-pool": "^0.43.1", "@opentelemetry/instrumentation-graphql": "^0.47.1", - "@opentelemetry/instrumentation-grpc": "^0.57.2", + "@opentelemetry/instrumentation-grpc": "^0.200.0", "@opentelemetry/instrumentation-hapi": "^0.45.2", - "@opentelemetry/instrumentation-http": "^0.57.2", + "@opentelemetry/instrumentation-http": "^0.200.0", "@opentelemetry/instrumentation-ioredis": "^0.47.1", "@opentelemetry/instrumentation-kafkajs": "^0.7.1", "@opentelemetry/instrumentation-knex": "^0.44.1", @@ -44879,15 +43966,15 @@ "@opentelemetry/resource-detector-azure": "^0.6.1", "@opentelemetry/resource-detector-container": "^0.6.1", "@opentelemetry/resource-detector-gcp": "^0.33.1", - "@opentelemetry/resources": "^1.24.0", - "@opentelemetry/sdk-node": "^0.57.2", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/sdk-node": "^0.200.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -44898,12 +43985,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -44913,11 +43994,11 @@ "@babel/core": "7.24.6", "@babel/preset-env": "7.24.6", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/instrumentation-document-load": "^0.44.1", - "@opentelemetry/instrumentation-fetch": "^0.57.2", + "@opentelemetry/instrumentation-fetch": "^0.200.0", "@opentelemetry/instrumentation-user-interaction": "^0.44.1", - "@opentelemetry/instrumentation-xml-http-request": "^0.57.2", + "@opentelemetry/instrumentation-xml-http-request": "^0.200.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -44935,7 +44016,7 @@ "rimraf": "5.0.10", "sinon": "15.1.2", "ts-loader": "9.5.2", - "typescript": "4.4.4", + "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" @@ -44963,12 +44044,6 @@ "nise": "^5.1.4", "supports-color": "^7.2.0" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -44976,13 +44051,13 @@ "version": "file:packages/baggage-span-processor", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/sdk-trace-base": "^1.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "expect": "29.2.0", "nyc": "15.1.0", "rimraf": "5.0.10", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -44993,25 +44068,19 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, "@opentelemetry/context-async-hooks": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.1.tgz", - "integrity": "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.0.0.tgz", + "integrity": "sha512-IEkJGzK1A9v3/EHjXh3s2IiFc6L4jfK+lNgKVgUjeUJQRRhnVFMIO3TAvKwonm9O1HebCuoOt98v8bZW7oVQHA==", "requires": {} }, "@opentelemetry/context-zone-peer-dep": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-1.30.1.tgz", - "integrity": "sha512-8oJQR+MBblY5WGOm26AOBLogN+FoO26QEZssH9WJd1qSD7ABMefq9qyGyN9xilFFl2ABPHgcMzkfYb8vx9JBEA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-2.0.0.tgz", + "integrity": "sha512-PkOyOR/RV3Fc9B40QiQC1OKoR/IwJrokr5WO9IsU+oy+GajZrZvyMhJv/+sfbYNQ8vcZo/0z3IZdZjUKxsJdIg==", "dev": true, "requires": {} }, @@ -45019,17 +44088,17 @@ "version": "file:packages/opentelemetry-test-utils", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/core": "^1.0.0", - "@opentelemetry/exporter-jaeger": "^1.3.1", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-metrics": "^1.27.0", - "@opentelemetry/sdk-node": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/exporter-jaeger": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/sdk-metrics": "^2.0.0", + "@opentelemetry/sdk-node": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/node": "18.18.14", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -45040,198 +44109,171 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, "@opentelemetry/core": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", - "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.0.tgz", + "integrity": "sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ==", "requires": { - "@opentelemetry/semantic-conventions": "1.28.0" - }, - "dependencies": { - "@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==" - } + "@opentelemetry/semantic-conventions": "^1.29.0" } }, "@opentelemetry/exporter-jaeger": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.30.1.tgz", - "integrity": "sha512-7Ki+x7cZ/PEQxp3UyB+CWkWBqLk22yRGQ4AWIGwZlEs6rpCOdWwIFOyQDO9DdeyWtTPTvO3An/7chPZcRHOgzQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-2.0.0.tgz", + "integrity": "sha512-vXUHL9Oy5gBY+CtrLQQm254ek5jGSImLTzp51ZVC5hVOTDf9dbkymMrGU/3MYDUC8MZzPqwKnAfMPpCcjdqV5A==", "requires": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/sdk-trace-base": "1.30.1", - "@opentelemetry/semantic-conventions": "1.28.0", + "@opentelemetry/core": "2.0.0", + "@opentelemetry/sdk-trace-base": "2.0.0", + "@opentelemetry/semantic-conventions": "^1.29.0", "jaeger-client": "^3.15.0" - }, - "dependencies": { - "@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==" - } } }, "@opentelemetry/exporter-logs-otlp-grpc": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-grpc/-/exporter-logs-otlp-grpc-0.57.2.tgz", - "integrity": "sha512-eovEy10n3umjKJl2Ey6TLzikPE+W4cUQ4gCwgGP1RqzTGtgDra0WjIqdy29ohiUKfvmbiL3MndZww58xfIvyFw==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-grpc/-/exporter-logs-otlp-grpc-0.200.0.tgz", + "integrity": "sha512-+3MDfa5YQPGM3WXxW9kqGD85Q7s9wlEMVNhXXG7tYFLnIeaseUt9YtCeFhEDFzfEktacdFpOtXmJuNW8cHbU5A==", "requires": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.30.1", - "@opentelemetry/otlp-exporter-base": "0.57.2", - "@opentelemetry/otlp-grpc-exporter-base": "0.57.2", - "@opentelemetry/otlp-transformer": "0.57.2", - "@opentelemetry/sdk-logs": "0.57.2" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/otlp-exporter-base": "0.200.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.200.0", + "@opentelemetry/otlp-transformer": "0.200.0", + "@opentelemetry/sdk-logs": "0.200.0" } }, "@opentelemetry/exporter-logs-otlp-http": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.57.2.tgz", - "integrity": "sha512-0rygmvLcehBRp56NQVLSleJ5ITTduq/QfU7obOkyWgPpFHulwpw2LYTqNIz5TczKZuy5YY+5D3SDnXZL1tXImg==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.200.0.tgz", + "integrity": "sha512-KfWw49htbGGp9s8N4KI8EQ9XuqKJ0VG+yVYVYFiCYSjEV32qpQ5qZ9UZBzOZ6xRb+E16SXOSCT3RkqBVSABZ+g==", "requires": { - "@opentelemetry/api-logs": "0.57.2", - "@opentelemetry/core": "1.30.1", - "@opentelemetry/otlp-exporter-base": "0.57.2", - "@opentelemetry/otlp-transformer": "0.57.2", - "@opentelemetry/sdk-logs": "0.57.2" + "@opentelemetry/api-logs": "0.200.0", + "@opentelemetry/core": "2.0.0", + "@opentelemetry/otlp-exporter-base": "0.200.0", + "@opentelemetry/otlp-transformer": "0.200.0", + "@opentelemetry/sdk-logs": "0.200.0" } }, "@opentelemetry/exporter-logs-otlp-proto": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-proto/-/exporter-logs-otlp-proto-0.57.2.tgz", - "integrity": "sha512-ta0ithCin0F8lu9eOf4lEz9YAScecezCHkMMyDkvd9S7AnZNX5ikUmC5EQOQADU+oCcgo/qkQIaKcZvQ0TYKDw==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-proto/-/exporter-logs-otlp-proto-0.200.0.tgz", + "integrity": "sha512-GmahpUU/55hxfH4TP77ChOfftADsCq/nuri73I/AVLe2s4NIglvTsaACkFVZAVmnXXyPS00Fk3x27WS3yO07zA==", "requires": { - "@opentelemetry/api-logs": "0.57.2", - "@opentelemetry/core": "1.30.1", - "@opentelemetry/otlp-exporter-base": "0.57.2", - "@opentelemetry/otlp-transformer": "0.57.2", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/sdk-logs": "0.57.2", - "@opentelemetry/sdk-trace-base": "1.30.1" + "@opentelemetry/api-logs": "0.200.0", + "@opentelemetry/core": "2.0.0", + "@opentelemetry/otlp-exporter-base": "0.200.0", + "@opentelemetry/otlp-transformer": "0.200.0", + "@opentelemetry/resources": "2.0.0", + "@opentelemetry/sdk-logs": "0.200.0", + "@opentelemetry/sdk-trace-base": "2.0.0" } }, "@opentelemetry/exporter-metrics-otlp-grpc": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-grpc/-/exporter-metrics-otlp-grpc-0.57.2.tgz", - "integrity": "sha512-r70B8yKR41F0EC443b5CGB4rUaOMm99I5N75QQt6sHKxYDzSEc6gm48Diz1CI1biwa5tDPznpylTrywO/pT7qw==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-grpc/-/exporter-metrics-otlp-grpc-0.200.0.tgz", + "integrity": "sha512-uHawPRvKIrhqH09GloTuYeq2BjyieYHIpiklOvxm9zhrCL2eRsnI/6g9v2BZTVtGp8tEgIa7rCQ6Ltxw6NBgew==", "requires": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.30.1", - "@opentelemetry/exporter-metrics-otlp-http": "0.57.2", - "@opentelemetry/otlp-exporter-base": "0.57.2", - "@opentelemetry/otlp-grpc-exporter-base": "0.57.2", - "@opentelemetry/otlp-transformer": "0.57.2", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/sdk-metrics": "1.30.1" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.200.0", + "@opentelemetry/otlp-exporter-base": "0.200.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.200.0", + "@opentelemetry/otlp-transformer": "0.200.0", + "@opentelemetry/resources": "2.0.0", + "@opentelemetry/sdk-metrics": "2.0.0" } }, "@opentelemetry/exporter-metrics-otlp-http": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.57.2.tgz", - "integrity": "sha512-ttb9+4iKw04IMubjm3t0EZsYRNWr3kg44uUuzfo9CaccYlOh8cDooe4QObDUkvx9d5qQUrbEckhrWKfJnKhemA==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.200.0.tgz", + "integrity": "sha512-5BiR6i8yHc9+qW7F6LqkuUnIzVNA7lt0qRxIKcKT+gq3eGUPHZ3DY29sfxI3tkvnwMgtnHDMNze5DdxW39HsAw==", "requires": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/otlp-exporter-base": "0.57.2", - "@opentelemetry/otlp-transformer": "0.57.2", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/sdk-metrics": "1.30.1" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/otlp-exporter-base": "0.200.0", + "@opentelemetry/otlp-transformer": "0.200.0", + "@opentelemetry/resources": "2.0.0", + "@opentelemetry/sdk-metrics": "2.0.0" } }, "@opentelemetry/exporter-metrics-otlp-proto": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-proto/-/exporter-metrics-otlp-proto-0.57.2.tgz", - "integrity": "sha512-HX068Q2eNs38uf7RIkNN9Hl4Ynl+3lP0++KELkXMCpsCbFO03+0XNNZ1SkwxPlP9jrhQahsMPMkzNXpq3fKsnw==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-proto/-/exporter-metrics-otlp-proto-0.200.0.tgz", + "integrity": "sha512-E+uPj0yyvz81U9pvLZp3oHtFrEzNSqKGVkIViTQY1rH3TOobeJPSpLnTVXACnCwkPR5XeTvPnK3pZ2Kni8AFMg==", "requires": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/exporter-metrics-otlp-http": "0.57.2", - "@opentelemetry/otlp-exporter-base": "0.57.2", - "@opentelemetry/otlp-transformer": "0.57.2", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/sdk-metrics": "1.30.1" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.200.0", + "@opentelemetry/otlp-exporter-base": "0.200.0", + "@opentelemetry/otlp-transformer": "0.200.0", + "@opentelemetry/resources": "2.0.0", + "@opentelemetry/sdk-metrics": "2.0.0" } }, "@opentelemetry/exporter-prometheus": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.57.2.tgz", - "integrity": "sha512-VqIqXnuxWMWE/1NatAGtB1PvsQipwxDcdG4RwA/umdBcW3/iOHp0uejvFHTRN2O78ZPged87ErJajyUBPUhlDQ==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.200.0.tgz", + "integrity": "sha512-ZYdlU9r0USuuYppiDyU2VFRA0kFl855ylnb3N/2aOlXrbA4PMCznen7gmPbetGQu7pz8Jbaf4fwvrDnVdQQXSw==", "requires": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/sdk-metrics": "1.30.1" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/resources": "2.0.0", + "@opentelemetry/sdk-metrics": "2.0.0" } }, "@opentelemetry/exporter-trace-otlp-grpc": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.57.2.tgz", - "integrity": "sha512-gHU1vA3JnHbNxEXg5iysqCWxN9j83d7/epTYBZflqQnTyCC4N7yZXn/dMM+bEmyhQPGjhCkNZLx4vZuChH1PYw==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.200.0.tgz", + "integrity": "sha512-hmeZrUkFl1YMsgukSuHCFPYeF9df0hHoKeHUthRKFCxiURs+GwF1VuabuHmBMZnjTbsuvNjOB+JSs37Csem/5Q==", "requires": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.30.1", - "@opentelemetry/otlp-exporter-base": "0.57.2", - "@opentelemetry/otlp-grpc-exporter-base": "0.57.2", - "@opentelemetry/otlp-transformer": "0.57.2", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/sdk-trace-base": "1.30.1" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/otlp-exporter-base": "0.200.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.200.0", + "@opentelemetry/otlp-transformer": "0.200.0", + "@opentelemetry/resources": "2.0.0", + "@opentelemetry/sdk-trace-base": "2.0.0" } }, "@opentelemetry/exporter-trace-otlp-http": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.57.2.tgz", - "integrity": "sha512-sB/gkSYFu+0w2dVQ0PWY9fAMl172PKMZ/JrHkkW8dmjCL0CYkmXeE+ssqIL/yBUTPOvpLIpenX5T9RwXRBW/3g==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.200.0.tgz", + "integrity": "sha512-Goi//m/7ZHeUedxTGVmEzH19NgqJY+Bzr6zXo1Rni1+hwqaksEyJ44gdlEMREu6dzX1DlAaH/qSykSVzdrdafA==", "requires": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/otlp-exporter-base": "0.57.2", - "@opentelemetry/otlp-transformer": "0.57.2", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/sdk-trace-base": "1.30.1" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/otlp-exporter-base": "0.200.0", + "@opentelemetry/otlp-transformer": "0.200.0", + "@opentelemetry/resources": "2.0.0", + "@opentelemetry/sdk-trace-base": "2.0.0" } }, "@opentelemetry/exporter-trace-otlp-proto": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.57.2.tgz", - "integrity": "sha512-awDdNRMIwDvUtoRYxRhja5QYH6+McBLtoz1q9BeEsskhZcrGmH/V1fWpGx8n+Rc+542e8pJA6y+aullbIzQmlw==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.200.0.tgz", + "integrity": "sha512-V9TDSD3PjK1OREw2iT9TUTzNYEVWJk4Nhodzhp9eiz4onDMYmPy3LaGbPv81yIR6dUb/hNp/SIhpiCHwFUq2Vg==", "requires": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/otlp-exporter-base": "0.57.2", - "@opentelemetry/otlp-transformer": "0.57.2", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/sdk-trace-base": "1.30.1" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/otlp-exporter-base": "0.200.0", + "@opentelemetry/otlp-transformer": "0.200.0", + "@opentelemetry/resources": "2.0.0", + "@opentelemetry/sdk-trace-base": "2.0.0" } }, "@opentelemetry/exporter-zipkin": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.30.1.tgz", - "integrity": "sha512-6S2QIMJahIquvFaaxmcwpvQQRD/YFaMTNoIxrfPIPOeITN+a8lfEcPDxNxn8JDAaxkg+4EnXhz8upVDYenoQjA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-2.0.0.tgz", + "integrity": "sha512-icxaKZ+jZL/NHXX8Aru4HGsrdhK0MLcuRXkX5G5IRmCgoRLw+Br6I/nMVozX2xjGGwV7hw2g+4Slj8K7s4HbVg==", "requires": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/sdk-trace-base": "1.30.1", - "@opentelemetry/semantic-conventions": "1.28.0" - }, - "dependencies": { - "@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==" - } + "@opentelemetry/core": "2.0.0", + "@opentelemetry/resources": "2.0.0", + "@opentelemetry/sdk-trace-base": "2.0.0", + "@opentelemetry/semantic-conventions": "^1.29.0" } }, "@opentelemetry/host-metrics": { "version": "file:packages/opentelemetry-host-metrics", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/sdk-metrics": "^1.8.0", + "@opentelemetry/sdk-metrics": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -45239,7 +44281,7 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "systeminformation": "5.23.8", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -45250,12 +44292,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -45265,7 +44301,7 @@ "@babel/core": "7.24.6", "@babel/preset-env": "7.24.6", "@opentelemetry/api": "^1.0.0", - "@opentelemetry/core": "^1.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -45283,7 +44319,7 @@ "rimraf": "5.0.10", "sinon": "15.1.2", "ts-loader": "9.5.2", - "typescript": "4.4.4", + "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" @@ -45311,25 +44347,18 @@ "nise": "^5.1.4", "supports-color": "^7.2.0" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, "@opentelemetry/instrumentation": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", - "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.200.0.tgz", + "integrity": "sha512-pmPlzfJd+vvgaZd/reMsC8RWgTXn2WY1OWT5RT42m3aOn5532TozwXNDhg1vzqJ+jnvmkREcdLr27ebJEQt0Jg==", "requires": { - "@opentelemetry/api-logs": "0.57.2", + "@opentelemetry/api-logs": "0.200.0", "@types/shimmer": "^1.2.0", "import-in-the-middle": "^1.8.1", "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", "shimmer": "^1.2.1" }, "dependencies": { @@ -45345,8 +44374,8 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/amqplib": "^0.5.17", "@types/lodash": "4.14.199", @@ -45359,7 +44388,7 @@ "nyc": "15.1.0", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -45370,12 +44399,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -45383,20 +44406,20 @@ "version": "file:plugins/node/opentelemetry-instrumentation-aws-lambda", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/propagator-aws-xray": "^1.26.2", "@opentelemetry/propagator-aws-xray-lambda": "^0.53.2", - "@opentelemetry/sdk-metrics": "^1.8.0", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-metrics": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/aws-lambda": "8.10.147", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "nyc": "15.1.0", "rimraf": "5.0.10", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -45407,12 +44430,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -45428,10 +44445,10 @@ "@aws-sdk/types": "^3.370.0", "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/propagation-utils": "^0.30.16", - "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@smithy/node-http-handler": "2.4.0", "@types/mocha": "10.0.10", @@ -45445,7 +44462,7 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@aws-sdk/types": { @@ -45475,12 +44492,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -45488,12 +44499,12 @@ "version": "file:plugins/node/opentelemetry-instrumentation-bunyan", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/api-logs": "^0.57.2", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-logs": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/api-logs": "^0.200.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/sdk-logs": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/bunyan": "1.8.11", "@types/mocha": "10.0.10", @@ -45504,7 +44515,7 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -45515,12 +44526,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -45528,11 +44533,11 @@ "version": "file:plugins/node/opentelemetry-instrumentation-cassandra", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -45542,7 +44547,7 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -45553,12 +44558,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -45566,11 +44565,11 @@ "version": "file:plugins/node/opentelemetry-instrumentation-connect", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/connect": "3.4.38", "@types/mocha": "10.0.10", @@ -45578,7 +44577,7 @@ "connect": "3.7.0", "nyc": "15.1.0", "rimraf": "5.0.10", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -45589,12 +44588,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -45604,10 +44597,10 @@ "@cucumber/cucumber": "^9.0.0", "@cucumber/messages": "^22.0.0", "@opentelemetry/api": "^1.0.0", - "@opentelemetry/core": "^1.3.1", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.3.1", - "@opentelemetry/sdk-trace-node": "^1.3.1", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -45619,7 +44612,7 @@ "semver": "7.7.1", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -45630,12 +44623,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -45643,17 +44630,17 @@ "version": "file:plugins/node/instrumentation-dataloader", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "dataloader": "2.2.3", "nyc": "15.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -45664,12 +44651,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -45677,10 +44658,10 @@ "version": "file:plugins/node/opentelemetry-instrumentation-dns", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/semver": "7.5.8", @@ -45689,7 +44670,7 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -45700,12 +44681,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -45715,10 +44690,10 @@ "@babel/core": "7.22.17", "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.0.0", - "@opentelemetry/sdk-trace-web": "^1.15.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-web": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@rollup/plugin-commonjs": "^26.0.0", "@rollup/plugin-node-resolve": "^15.2.3", @@ -45731,7 +44706,7 @@ "@web/test-runner": "^0.18.0", "chai": "^4.3.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@babel/core": { @@ -45777,12 +44752,6 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -45790,12 +44759,12 @@ "version": "file:plugins/node/opentelemetry-instrumentation-express", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/express": "4.17.21", "@types/mocha": "10.0.10", @@ -45806,7 +44775,7 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -45817,12 +44786,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -45831,13 +44794,13 @@ "requires": { "@fastify/express": "^3.0.0", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/instrumentation-http": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/instrumentation-http": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/express": "4.17.21", "@types/mocha": "10.0.10", @@ -45848,7 +44811,7 @@ "rimraf": "5.0.10", "semver": "^7.5.4", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -45856,50 +44819,37 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.3.tgz", "integrity": "sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==", "dev": true - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, "@opentelemetry/instrumentation-fetch": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.57.2.tgz", - "integrity": "sha512-LF/lH9xpRTuGPdxta6Eiezw91DFm0A9SMux1vslNwSgL4jiB+q1fQ/8CRv7e5UNh7y/hit4LAdGPoH+f0wfTTQ==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.200.0.tgz", + "integrity": "sha512-W2Vd/hVsFN3ZNU20yn3zmhXdutF7ecWy10aDGQtYJRdE0WLmYcQlxM3T7D8hPxIr+Uvi7LG+VAR2uJQxXdidKA==", "requires": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/instrumentation": "0.57.2", - "@opentelemetry/sdk-trace-web": "1.30.1", - "@opentelemetry/semantic-conventions": "1.28.0" - }, - "dependencies": { - "@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==" - } + "@opentelemetry/core": "2.0.0", + "@opentelemetry/instrumentation": "0.200.0", + "@opentelemetry/sdk-trace-web": "2.0.0", + "@opentelemetry/semantic-conventions": "^1.29.0" } }, "@opentelemetry/instrumentation-fs": { "version": "file:plugins/node/instrumentation-fs", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "^17.0.0", "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -45910,12 +44860,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -45923,10 +44867,10 @@ "version": "file:plugins/node/opentelemetry-instrumentation-generic-pool", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/generic-pool": "^3.1.9", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -45935,7 +44879,7 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "semver": "7.7.1", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -45946,12 +44890,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -45959,8 +44897,8 @@ "version": "file:plugins/node/opentelemetry-instrumentation-graphql", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -45968,7 +44906,7 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -45979,29 +44917,16 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, "@opentelemetry/instrumentation-grpc": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.57.2.tgz", - "integrity": "sha512-TR6YQA67cLSZzdxbf2SrbADJy2Y8eBW1+9mF15P0VK2MYcpdoUSmQTF1oMkBwa3B9NwqDFA2fq7wYTTutFQqaQ==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.200.0.tgz", + "integrity": "sha512-iaPHlO1qb1WlGUq0oTx0rJND/BtBeTAtyEfflu2VwKDe8XZeia7UEOfiSQxnGqVSTwW5F0P1S5UzqeDJotreWQ==", "requires": { - "@opentelemetry/instrumentation": "0.57.2", - "@opentelemetry/semantic-conventions": "1.28.0" - }, - "dependencies": { - "@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==" - } + "@opentelemetry/instrumentation": "0.200.0", + "@opentelemetry/semantic-conventions": "^1.29.0" } }, "@opentelemetry/instrumentation-hapi": { @@ -46009,12 +44934,12 @@ "requires": { "@hapi/hapi": "21.3.12", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -46022,7 +44947,7 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -46033,44 +44958,30 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, "@opentelemetry/instrumentation-http": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.57.2.tgz", - "integrity": "sha512-1Uz5iJ9ZAlFOiPuwYg29Bf7bJJc/GeoeJIFKJYQf67nTVKFe8RHbEtxgkOmK4UGZNHKXcpW4P8cWBYzBn1USpg==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.200.0.tgz", + "integrity": "sha512-9tqGbCJikhYU68y3k9mi6yWsMyMeCcwoQuHvIXan5VvvPPQ5WIZaV6Mxu/MCVe4swRNoFs8Th+qyj0TZV5ELvw==", "requires": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/instrumentation": "0.57.2", - "@opentelemetry/semantic-conventions": "1.28.0", - "forwarded-parse": "2.1.2", - "semver": "^7.5.2" - }, - "dependencies": { - "@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==" - } + "@opentelemetry/core": "2.0.0", + "@opentelemetry/instrumentation": "0.200.0", + "@opentelemetry/semantic-conventions": "^1.29.0", + "forwarded-parse": "2.1.2" } }, "@opentelemetry/instrumentation-ioredis": { "version": "file:plugins/node/opentelemetry-instrumentation-ioredis", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/redis-common": "^0.36.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/ioredis4": "npm:@types/ioredis@4.28.10", "@types/mocha": "10.0.10", @@ -46082,7 +44993,7 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -46093,12 +45004,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -46107,8 +45012,8 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.24.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -46117,7 +45022,7 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -46128,12 +45033,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -46141,10 +45040,10 @@ "version": "file:plugins/node/opentelemetry-instrumentation-knex", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -46153,7 +45052,7 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sqlite3": "5.1.7", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -46164,12 +45063,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -46178,13 +45071,13 @@ "requires": { "@koa/router": "13.1.0", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/instrumentation-http": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/instrumentation-http": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/koa": "2.15.0", "@types/koa__router": "12.0.4", @@ -46197,7 +45090,7 @@ "semver": "7.7.1", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -46208,12 +45101,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -46223,10 +45110,10 @@ "@babel/core": "7.24.6", "@babel/preset-env": "7.24.6", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-web": "^1.8.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-web": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -46244,7 +45131,7 @@ "rimraf": "5.0.10", "sinon": "15.1.2", "ts-loader": "9.5.2", - "typescript": "4.4.4", + "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0", @@ -46273,12 +45160,6 @@ "nise": "^5.1.4", "supports-color": "^7.2.0" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -46287,7 +45168,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@types/lru-cache": "7.10.10", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -46296,7 +45177,7 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -46307,12 +45188,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -46320,11 +45195,11 @@ "version": "file:plugins/node/opentelemetry-instrumentation-memcached", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/memcached": "^2.2.6", "@types/mocha": "10.0.10", @@ -46333,7 +45208,7 @@ "memcached": "2.2.2", "nyc": "15.1.0", "rimraf": "5.0.10", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -46344,12 +45219,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -46357,12 +45226,12 @@ "version": "file:plugins/node/opentelemetry-instrumentation-mongodb", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-metrics": "^1.9.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-metrics": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/bson": "4.0.5", "@types/mocha": "10.0.10", @@ -46371,7 +45240,7 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -46467,12 +45336,6 @@ "@types/whatwg-url": "^11.0.2", "whatwg-url": "^14.1.0 || ^13.0.0" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -46481,9 +45344,9 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -46492,7 +45355,7 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -46503,12 +45366,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -46516,11 +45373,11 @@ "version": "file:plugins/node/opentelemetry-instrumentation-mysql", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-metrics": "^1.8.0", - "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-metrics": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/mysql": "2.15.26", @@ -46530,7 +45387,7 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -46541,12 +45398,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -46554,10 +45405,10 @@ "version": "file:plugins/node/opentelemetry-instrumentation-mysql2", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@opentelemetry/sql-common": "^0.40.1", "@types/mocha": "10.0.10", @@ -46568,7 +45419,7 @@ "rimraf": "5.0.10", "semver": "7.7.1", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -46579,12 +45430,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -46595,10 +45440,10 @@ "@nestjs/core": "9.4.3", "@nestjs/platform-express": "9.4.3", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -46611,7 +45456,7 @@ "rxjs-compat": "6.6.7", "semver": "7.7.1", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -46622,12 +45467,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -46635,10 +45474,10 @@ "version": "file:plugins/node/opentelemetry-instrumentation-net", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -46646,7 +45485,7 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -46657,12 +45496,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -46670,12 +45503,12 @@ "version": "file:plugins/node/opentelemetry-instrumentation-pg", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/core": "^1.26.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@opentelemetry/sql-common": "^0.40.1", "@types/mocha": "10.0.10", @@ -46691,7 +45524,7 @@ "safe-stable-stringify": "^2.4.1", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -46702,12 +45535,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -46715,12 +45542,12 @@ "version": "file:plugins/node/opentelemetry-instrumentation-pino", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/api-logs": "^0.57.2", + "@opentelemetry/api-logs": "^0.200.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/core": "^1.25.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -46732,7 +45559,7 @@ "semver": "7.7.1", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -46743,12 +45570,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -46756,12 +45577,12 @@ "version": "file:plugins/node/opentelemetry-instrumentation-redis", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/redis-common": "^0.36.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -46771,7 +45592,7 @@ "redis": "3.1.2", "rimraf": "5.0.10", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -46782,12 +45603,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -46795,13 +45610,13 @@ "version": "file:plugins/node/opentelemetry-instrumentation-redis-4", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/redis-common": "^0.36.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -46810,7 +45625,7 @@ "redis": "4.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -46835,12 +45650,6 @@ "@redis/search": "1.0.6", "@redis/time-series": "1.0.3" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -46848,11 +45657,11 @@ "version": "file:plugins/node/opentelemetry-instrumentation-restify", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -46863,7 +45672,7 @@ "rimraf": "5.0.10", "semver": "7.7.1", "test-all-versions": "^6.0.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -46874,12 +45683,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -46887,17 +45690,17 @@ "version": "file:plugins/node/opentelemetry-instrumentation-router", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "nyc": "15.1.0", "rimraf": "5.0.10", "router": "1.3.8", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -46908,12 +45711,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -46921,13 +45718,13 @@ "version": "file:plugins/node/instrumentation-runtime-node", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-metrics": "^1.20.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-metrics": "^2.0.0", "@types/mocha": "^10.0.6", "@types/node": "18.18.14", "nyc": "^15.1.0", "rimraf": "5.0.10", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -46938,12 +45735,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -46952,8 +45743,8 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -46963,7 +45754,7 @@ "socket.io": "^4.1.3", "socket.io-client": "^4.1.3", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@jest/types": { @@ -47092,12 +45883,6 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -47105,10 +45890,10 @@ "version": "file:plugins/node/instrumentation-tedious", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -47118,7 +45903,7 @@ "semver": "7.7.1", "tedious": "17.0.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -47129,12 +45914,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -47142,18 +45921,18 @@ "version": "file:plugins/node/instrumentation-undici", "requires": { "@opentelemetry/api": "^1.7.0", - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-metrics": "^1.8.0", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-metrics": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "nyc": "15.1.0", "rimraf": "5.0.10", "semver": "^7.6.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4", + "typescript": "5.0.4", "undici": "6.21.1" }, "dependencies": { @@ -47165,12 +45944,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -47180,12 +45953,12 @@ "@babel/core": "7.24.6", "@babel/preset-env": "7.24.6", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-zone-peer-dep": "^1.8.0", - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/instrumentation-xml-http-request": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-web": "^1.8.0", + "@opentelemetry/context-zone-peer-dep": "^2.0.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/instrumentation-xml-http-request": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-web": "^2.0.0", "@types/jquery": "3.5.32", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -47204,7 +45977,7 @@ "nyc": "15.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", - "typescript": "4.4.4", + "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0", @@ -47233,12 +46006,6 @@ "nise": "^5.1.4", "supports-color": "^7.2.0" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -47246,11 +46013,11 @@ "version": "file:plugins/node/opentelemetry-instrumentation-winston", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/api-logs": "^0.57.2", - "@opentelemetry/context-async-hooks": "^1.21.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.21.0", - "@opentelemetry/sdk-trace-node": "^1.21.0", + "@opentelemetry/api-logs": "^0.200.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/winston-transport": "^0.10.1", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -47260,7 +46027,7 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4", + "typescript": "5.0.4", "winston": "3.3.3", "winston2": "npm:winston@2.4.7" }, @@ -47273,64 +46040,51 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, "@opentelemetry/instrumentation-xml-http-request": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.57.2.tgz", - "integrity": "sha512-9niBJT2egcytOqDEfA27xc6TIqlOTEzQYNli2lWuw+K7TeO7KcyYzmIeS/S6BYLulOsOWtvlE6CDDxXg+GUepw==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.200.0.tgz", + "integrity": "sha512-5YKt1BiCvJigJ/axt8bmTUFp2evNFPEO7M7BanzScsK8nC98w8THAKO+gDlmZn2BBG6s0EvTRPETLSQN6hzS8A==", "requires": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/instrumentation": "0.57.2", - "@opentelemetry/sdk-trace-web": "1.30.1", - "@opentelemetry/semantic-conventions": "1.28.0" - }, - "dependencies": { - "@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==" - } + "@opentelemetry/core": "2.0.0", + "@opentelemetry/instrumentation": "0.200.0", + "@opentelemetry/sdk-trace-web": "2.0.0", + "@opentelemetry/semantic-conventions": "^1.29.0" } }, "@opentelemetry/otlp-exporter-base": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.57.2.tgz", - "integrity": "sha512-XdxEzL23Urhidyebg5E6jZoaiW5ygP/mRjxLHixogbqwDy2Faduzb5N0o/Oi+XTIJu+iyxXdVORjXax+Qgfxag==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.200.0.tgz", + "integrity": "sha512-IxJgA3FD7q4V6gGq4bnmQM5nTIyMDkoGFGrBrrDjB6onEiq1pafma55V+bHvGYLWvcqbBbRfezr1GED88lacEQ==", "requires": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/otlp-transformer": "0.57.2" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/otlp-transformer": "0.200.0" } }, "@opentelemetry/otlp-grpc-exporter-base": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.57.2.tgz", - "integrity": "sha512-USn173KTWy0saqqRB5yU9xUZ2xdgb1Rdu5IosJnm9aV4hMTuFFRTUsQxbgc24QxpCHeoKzzCSnS/JzdV0oM2iQ==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.200.0.tgz", + "integrity": "sha512-CK2S+bFgOZ66Bsu5hlDeOX6cvW5FVtVjFFbWuaJP0ELxJKBB6HlbLZQ2phqz/uLj1cWap5xJr/PsR3iGoB7Vqw==", "requires": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.30.1", - "@opentelemetry/otlp-exporter-base": "0.57.2", - "@opentelemetry/otlp-transformer": "0.57.2" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/otlp-exporter-base": "0.200.0", + "@opentelemetry/otlp-transformer": "0.200.0" } }, "@opentelemetry/otlp-transformer": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.57.2.tgz", - "integrity": "sha512-48IIRj49gbQVK52jYsw70+Jv+JbahT8BqT2Th7C4H7RCM9d0gZ5sgNPoMpWldmfjvIsSgiGJtjfk9MeZvjhoig==", - "requires": { - "@opentelemetry/api-logs": "0.57.2", - "@opentelemetry/core": "1.30.1", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/sdk-logs": "0.57.2", - "@opentelemetry/sdk-metrics": "1.30.1", - "@opentelemetry/sdk-trace-base": "1.30.1", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.200.0.tgz", + "integrity": "sha512-+9YDZbYybOnv7sWzebWOeK6gKyt2XE7iarSyBFkwwnP559pEevKOUD8NyDHhRjCSp13ybh9iVXlMfcj/DwF/yw==", + "requires": { + "@opentelemetry/api-logs": "0.200.0", + "@opentelemetry/core": "2.0.0", + "@opentelemetry/resources": "2.0.0", + "@opentelemetry/sdk-logs": "0.200.0", + "@opentelemetry/sdk-metrics": "2.0.0", + "@opentelemetry/sdk-trace-base": "2.0.0", "protobufjs": "^7.3.0" } }, @@ -47340,15 +46094,15 @@ "@babel/core": "7.24.6", "@babel/preset-env": "7.24.6", "@opentelemetry/api": "^1.0.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/propagator-b3": "^1.26.0", - "@opentelemetry/sdk-trace-base": "^1.0.0", - "@opentelemetry/sdk-trace-web": "^1.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/propagator-b3": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-web": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/react": "17.0.83", "@types/react-addons-test-utils": "0.14.26", - "@types/react-dom": "18.0.2", + "@types/react-dom": "17.0.26", "@types/shimmer": "1.0.3", "@types/sinon": "17.0.4", "@types/webpack-env": "1.16.3", @@ -47368,7 +46122,7 @@ "shimmer": "^1.2.1", "sinon": "15.1.2", "ts-loader": "9.5.2", - "typescript": "4.4.4", + "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" @@ -47383,6 +46137,13 @@ "undici-types": "~5.26.4" } }, + "@types/react-dom": { + "version": "17.0.26", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.26.tgz", + "integrity": "sha512-Z+2VcYXJwOqQ79HreLU/1fyQ88eXSSFh6I3JdrEHQIfYSI0kCQpTGvOrbE6jFGGYXKsHuwY9tBa/w5Uo6KzrEg==", + "dev": true, + "requires": {} + }, "sinon": { "version": "15.1.2", "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.1.2.tgz", @@ -47396,12 +46157,6 @@ "nise": "^5.1.4", "supports-color": "^7.2.0" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -47416,7 +46171,7 @@ "expect": "29.2.0", "nyc": "15.1.0", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -47427,12 +46182,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -47440,9 +46189,9 @@ "version": "file:propagators/propagator-aws-xray", "requires": { "@opentelemetry/api": ">=1.0.0 <1.10.0", - "@opentelemetry/core": "^1.0.0", + "@opentelemetry/core": "^2.0.0", "@types/mocha": "10.0.10", - "@types/node": "18.6.5", + "@types/node": "^18.18.14", "@types/sinon": "17.0.4", "@types/webpack-env": "1.16.3", "babel-loader": "8.3.0", @@ -47456,17 +46205,20 @@ "lerna": "6.6.2", "nyc": "15.1.0", "ts-loader": "9.5.2", - "typescript": "4.4.4", + "typescript": "5.0.4", "webpack": "5.95.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" }, "dependencies": { "@types/node": { - "version": "18.6.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", - "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", - "dev": true + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } }, "events": { "version": "3.3.0", @@ -47491,12 +46243,6 @@ "ajv-keywords": "^3.5.2" } }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true - }, "webpack": { "version": "5.95.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", @@ -47538,7 +46284,7 @@ "@opentelemetry/api": "1.9.0", "@opentelemetry/propagator-aws-xray": "^1.26.2", "@types/mocha": "10.0.10", - "@types/node": "18.6.5", + "@types/node": "^18.18.14", "@types/sinon": "17.0.4", "babel-loader": "8.3.0", "babel-plugin-istanbul": "7.0.0", @@ -47546,14 +46292,17 @@ "nyc": "15.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { - "version": "18.6.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", - "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", - "dev": true + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } }, "sinon": { "version": "15.1.2", @@ -47568,21 +46317,15 @@ "nise": "^5.1.4", "supports-color": "^7.2.0" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, "@opentelemetry/propagator-b3": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.30.1.tgz", - "integrity": "sha512-oATwWWDIJzybAZ4pO76ATN5N6FFbOA1otibAVlS8v90B4S1wClnhRUk7K+2CHAwN1JKYuj4jh/lpCEG5BAqFuQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-2.0.0.tgz", + "integrity": "sha512-blx9S2EI49Ycuw6VZq+bkpaIoiJFhsDuvFGhBIoH3vJ5oYjJ2U0s3fAM5jYft99xVIAv6HqoPtlP9gpVA2IZtA==", "requires": { - "@opentelemetry/core": "1.30.1" + "@opentelemetry/core": "2.0.0" } }, "@opentelemetry/propagator-instana": { @@ -47607,7 +46350,7 @@ "nyc": "15.1.0", "process": "0.11.10", "ts-loader": "9.5.2", - "typescript": "4.4.4", + "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" @@ -47621,21 +46364,15 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, "@opentelemetry/propagator-jaeger": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.30.1.tgz", - "integrity": "sha512-Pj/BfnYEKIOImirH76M4hDaBSx6HyZ2CXUqk+Kj02m6BB80c/yo4BdWkn/1gDFfU+YPY+bPR2U0DKBfdxCKwmg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-2.0.0.tgz", + "integrity": "sha512-Mbm/LSFyAtQKP0AQah4AfGgsD+vsZcyreZoQ5okFBk33hU7AquU4TltgyL9dvaO8/Zkoud8/0gEvwfOZ5d7EPA==", "requires": { - "@opentelemetry/core": "1.30.1" + "@opentelemetry/core": "2.0.0" } }, "@opentelemetry/propagator-ot-trace": { @@ -47660,7 +46397,7 @@ "nyc": "15.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", - "typescript": "4.4.4", + "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" @@ -47688,12 +46425,6 @@ "nise": "^5.1.4", "supports-color": "^7.2.0" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -47703,7 +46434,7 @@ "@types/mocha": "^10.0.0", "@types/node": "18.18.14", "nyc": "15.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -47714,12 +46445,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -47728,8 +46453,9 @@ "requires": { "@opentelemetry/api": "^1.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/core": "^1.26.0", - "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -47738,7 +46464,7 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -47749,12 +46475,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -47763,10 +46483,11 @@ "requires": { "@opentelemetry/api": "^1.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/core": "^1.0.0", + "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation-fs": "^0.19.1", - "@opentelemetry/instrumentation-http": "^0.57.2", - "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/instrumentation-http": "^0.200.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -47775,7 +46496,7 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -47786,12 +46507,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -47800,9 +46515,10 @@ "requires": { "@opentelemetry/api": "^1.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/core": "^1.25.1", - "@opentelemetry/instrumentation-http": "^0.57.2", - "@opentelemetry/resources": "^1.10.1", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation-http": "^0.200.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -47810,7 +46526,7 @@ "nock": "13.3.3", "nyc": "15.1.0", "rimraf": "5.0.10", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -47821,12 +46537,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -47835,9 +46545,10 @@ "requires": { "@opentelemetry/api": "^1.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/core": "^1.26.0", + "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation-fs": "^0.19.1", - "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -47847,7 +46558,7 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -47858,12 +46569,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -47872,9 +46577,10 @@ "requires": { "@opentelemetry/api": "^1.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/core": "^1.0.0", - "@opentelemetry/instrumentation-http": "^0.57.2", - "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation-http": "^0.200.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -47883,7 +46589,7 @@ "nock": "13.3.3", "nyc": "15.1.0", "rimraf": "5.0.10", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -47894,12 +46600,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -47907,14 +46607,14 @@ "version": "file:detectors/node/opentelemetry-resource-detector-github", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/resources": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -47925,12 +46625,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -47939,8 +46633,9 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/resources": "^1.10.0", - "@opentelemetry/sdk-node": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/sdk-node": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -47948,7 +46643,7 @@ "nock": "13.3.3", "nyc": "15.1.0", "rimraf": "5.0.10", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -47959,129 +46654,94 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, "@opentelemetry/resources": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz", - "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.0.0.tgz", + "integrity": "sha512-rnZr6dML2z4IARI4zPGQV4arDikF/9OXZQzrC01dLmn0CZxU5U5OLd/m1T7YkGRj5UitjeoCtg/zorlgMQcdTg==", "requires": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/semantic-conventions": "1.28.0" - }, - "dependencies": { - "@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==" - } + "@opentelemetry/core": "2.0.0", + "@opentelemetry/semantic-conventions": "^1.29.0" } }, "@opentelemetry/sdk-logs": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.57.2.tgz", - "integrity": "sha512-TXFHJ5c+BKggWbdEQ/inpgIzEmS2BGQowLE9UhsMd7YYlUfBQJ4uax0VF/B5NYigdM/75OoJGhAV3upEhK+3gg==", + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.200.0.tgz", + "integrity": "sha512-VZG870063NLfObmQQNtCVcdXXLzI3vOjjrRENmU37HYiPFa0ZXpXVDsTD02Nh3AT3xYJzQaWKl2X2lQ2l7TWJA==", "requires": { - "@opentelemetry/api-logs": "0.57.2", - "@opentelemetry/core": "1.30.1", - "@opentelemetry/resources": "1.30.1" + "@opentelemetry/api-logs": "0.200.0", + "@opentelemetry/core": "2.0.0", + "@opentelemetry/resources": "2.0.0" } }, "@opentelemetry/sdk-metrics": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.1.tgz", - "integrity": "sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.0.0.tgz", + "integrity": "sha512-Bvy8QDjO05umd0+j+gDeWcTaVa1/R2lDj/eOvjzpm8VQj1K1vVZJuyjThpV5/lSHyYW2JaHF2IQ7Z8twJFAhjA==", "requires": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/resources": "1.30.1" + "@opentelemetry/core": "2.0.0", + "@opentelemetry/resources": "2.0.0" } }, "@opentelemetry/sdk-node": { - "version": "0.57.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.57.2.tgz", - "integrity": "sha512-8BaeqZyN5sTuPBtAoY+UtKwXBdqyuRKmekN5bFzAO40CgbGzAxfTpiL3PBerT7rhZ7p2nBdq7FaMv/tBQgHE4A==", - "requires": { - "@opentelemetry/api-logs": "0.57.2", - "@opentelemetry/core": "1.30.1", - "@opentelemetry/exporter-logs-otlp-grpc": "0.57.2", - "@opentelemetry/exporter-logs-otlp-http": "0.57.2", - "@opentelemetry/exporter-logs-otlp-proto": "0.57.2", - "@opentelemetry/exporter-metrics-otlp-grpc": "0.57.2", - "@opentelemetry/exporter-metrics-otlp-http": "0.57.2", - "@opentelemetry/exporter-metrics-otlp-proto": "0.57.2", - "@opentelemetry/exporter-prometheus": "0.57.2", - "@opentelemetry/exporter-trace-otlp-grpc": "0.57.2", - "@opentelemetry/exporter-trace-otlp-http": "0.57.2", - "@opentelemetry/exporter-trace-otlp-proto": "0.57.2", - "@opentelemetry/exporter-zipkin": "1.30.1", - "@opentelemetry/instrumentation": "0.57.2", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/sdk-logs": "0.57.2", - "@opentelemetry/sdk-metrics": "1.30.1", - "@opentelemetry/sdk-trace-base": "1.30.1", - "@opentelemetry/sdk-trace-node": "1.30.1", - "@opentelemetry/semantic-conventions": "1.28.0" - }, - "dependencies": { - "@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==" - } + "version": "0.200.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.200.0.tgz", + "integrity": "sha512-S/YSy9GIswnhYoDor1RusNkmRughipvTCOQrlF1dzI70yQaf68qgf5WMnzUxdlCl3/et/pvaO75xfPfuEmCK5A==", + "requires": { + "@opentelemetry/api-logs": "0.200.0", + "@opentelemetry/core": "2.0.0", + "@opentelemetry/exporter-logs-otlp-grpc": "0.200.0", + "@opentelemetry/exporter-logs-otlp-http": "0.200.0", + "@opentelemetry/exporter-logs-otlp-proto": "0.200.0", + "@opentelemetry/exporter-metrics-otlp-grpc": "0.200.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.200.0", + "@opentelemetry/exporter-metrics-otlp-proto": "0.200.0", + "@opentelemetry/exporter-prometheus": "0.200.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.200.0", + "@opentelemetry/exporter-trace-otlp-http": "0.200.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.200.0", + "@opentelemetry/exporter-zipkin": "2.0.0", + "@opentelemetry/instrumentation": "0.200.0", + "@opentelemetry/propagator-b3": "2.0.0", + "@opentelemetry/propagator-jaeger": "2.0.0", + "@opentelemetry/resources": "2.0.0", + "@opentelemetry/sdk-logs": "0.200.0", + "@opentelemetry/sdk-metrics": "2.0.0", + "@opentelemetry/sdk-trace-base": "2.0.0", + "@opentelemetry/sdk-trace-node": "2.0.0", + "@opentelemetry/semantic-conventions": "^1.29.0" } }, "@opentelemetry/sdk-trace-base": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz", - "integrity": "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.0.0.tgz", + "integrity": "sha512-qQnYdX+ZCkonM7tA5iU4fSRsVxbFGml8jbxOgipRGMFHKaXKHQ30js03rTobYjKjIfnOsZSbHKWF0/0v0OQGfw==", "requires": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/semantic-conventions": "1.28.0" - }, - "dependencies": { - "@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==" - } + "@opentelemetry/core": "2.0.0", + "@opentelemetry/resources": "2.0.0", + "@opentelemetry/semantic-conventions": "^1.29.0" } }, "@opentelemetry/sdk-trace-node": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.30.1.tgz", - "integrity": "sha512-cBjYOINt1JxXdpw1e5MlHmFRc5fgj4GW/86vsKFxJCJ8AL4PdVtYH41gWwl4qd4uQjqEL1oJVrXkSy5cnduAnQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-2.0.0.tgz", + "integrity": "sha512-omdilCZozUjQwY3uZRBwbaRMJ3p09l4t187Lsdf0dGMye9WKD4NGcpgZRvqhI1dwcH6og+YXQEtoO9Wx3ykilg==", "requires": { - "@opentelemetry/context-async-hooks": "1.30.1", - "@opentelemetry/core": "1.30.1", - "@opentelemetry/propagator-b3": "1.30.1", - "@opentelemetry/propagator-jaeger": "1.30.1", - "@opentelemetry/sdk-trace-base": "1.30.1", - "semver": "^7.5.2" + "@opentelemetry/context-async-hooks": "2.0.0", + "@opentelemetry/core": "2.0.0", + "@opentelemetry/sdk-trace-base": "2.0.0" } }, "@opentelemetry/sdk-trace-web": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-1.30.1.tgz", - "integrity": "sha512-AUo2e+1uyTGMB36VlbvBqnCogVzQhpC7dRcVVdCrt+cFHLpFRRJcd45J2obGTgs0XiAwNLyq5bhkW3JF2NZA+A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-2.0.0.tgz", + "integrity": "sha512-2IeDP1k2fipeCH6OcTSg3HgaSvTTqgUNld5GIPGXWspynZSK85YjUDazEYpSVIyaMeQY6+ZHEaD5cwsRaq3dWA==", "requires": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/sdk-trace-base": "1.30.1", - "@opentelemetry/semantic-conventions": "1.28.0" - }, - "dependencies": { - "@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==" - } + "@opentelemetry/core": "2.0.0", + "@opentelemetry/sdk-trace-base": "2.0.0", + "@opentelemetry/semantic-conventions": "^1.29.0" } }, "@opentelemetry/semantic-conventions": { @@ -48093,11 +46753,11 @@ "version": "file:packages/opentelemetry-sql-common", "requires": { "@opentelemetry/api": "^1.1.0", - "@opentelemetry/core": "^1.1.0", + "@opentelemetry/core": "^2.0.0", "@types/mocha": "^10.0.0", "@types/node": "18.18.14", "nyc": "15.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@types/node": { @@ -48108,19 +46768,13 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, "@opentelemetry/winston-transport": { "version": "file:packages/winston-transport", "requires": { - "@opentelemetry/api-logs": "^0.57.2", + "@opentelemetry/api-logs": "^0.200.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -48128,7 +46782,7 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4", + "typescript": "5.0.4", "winston-transport": "4.*" }, "dependencies": { @@ -48140,12 +46794,6 @@ "requires": { "undici-types": "~5.26.4" } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true } } }, @@ -50323,15 +48971,6 @@ "@types/react": "*" } }, - "@types/react-dom": { - "version": "18.0.2", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.2.tgz", - "integrity": "sha512-UxeS+Wtj5bvLRREz9tIgsK4ntCuLDo0EcAcACgw3E+9wE8ePDr9uQpq53MfcyxyIS55xJ+0B6mDS8c4qkkHLBg==", - "dev": true, - "requires": { - "@types/react": "*" - } - }, "@types/readable-stream": { "version": "4.0.18", "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.18.tgz", @@ -64448,7 +63087,8 @@ "semver": { "version": "7.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==" + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true }, "send": { "version": "0.19.0", @@ -66750,11 +65390,10 @@ } }, "typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", - "dev": true, - "peer": true + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "dev": true }, "typical": { "version": "4.0.0", diff --git a/package.json b/package.json index 591686dc69..8bcf010575 100644 --- a/package.json +++ b/package.json @@ -55,8 +55,8 @@ "lerna-changelog": "2.2.0", "markdownlint-cli2": "0.13.0", "minimatch": "^9.0.3", - "nx": "15.9.7", "mocha": "^10.7.3", + "nx": "15.9.7", "prettier": "2.8.8", "process": "0.11.10", "semver": "^7.6.0", diff --git a/packages/baggage-span-processor/package.json b/packages/baggage-span-processor/package.json index b11b8911aa..de5bf29cfc 100644 --- a/packages/baggage-span-processor/package.json +++ b/packages/baggage-span-processor/package.json @@ -27,7 +27,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -41,7 +41,7 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/sdk-trace-base": "^1.0.0" + "@opentelemetry/sdk-trace-base": "^2.0.0" }, "devDependencies": { "@opentelemetry/api": "^1.0.0", @@ -50,7 +50,7 @@ "expect": "29.2.0", "nyc": "15.1.0", "rimraf": "5.0.10", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/baggage-span-processor#readme" } diff --git a/packages/opentelemetry-host-metrics/package.json b/packages/opentelemetry-host-metrics/package.json index 690dc4d9c7..dc0d72f495 100644 --- a/packages/opentelemetry-host-metrics/package.json +++ b/packages/opentelemetry-host-metrics/package.json @@ -28,7 +28,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -43,14 +43,14 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/sdk-metrics": "^1.8.0", + "@opentelemetry/sdk-metrics": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "systeminformation": "5.23.8" diff --git a/packages/opentelemetry-id-generator-aws-xray/package.json b/packages/opentelemetry-id-generator-aws-xray/package.json index aadec86529..311a179dd0 100644 --- a/packages/opentelemetry-id-generator-aws-xray/package.json +++ b/packages/opentelemetry-id-generator-aws-xray/package.json @@ -36,7 +36,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/esm/**/*.js", @@ -70,13 +70,13 @@ "rimraf": "5.0.10", "sinon": "15.1.2", "ts-loader": "9.5.2", - "typescript": "4.4.4", + "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" }, "dependencies": { - "@opentelemetry/core": "^1.0.0" + "@opentelemetry/sdk-trace-base": "^2.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/opentelemetry-id-generator-aws-xray#readme" } diff --git a/packages/opentelemetry-id-generator-aws-xray/src/platform/browser/AWSXRayIdGenerator.ts b/packages/opentelemetry-id-generator-aws-xray/src/platform/browser/AWSXRayIdGenerator.ts index d3f20583c0..e8892e1912 100644 --- a/packages/opentelemetry-id-generator-aws-xray/src/platform/browser/AWSXRayIdGenerator.ts +++ b/packages/opentelemetry-id-generator-aws-xray/src/platform/browser/AWSXRayIdGenerator.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { IdGenerator } from '@opentelemetry/core'; +import { IdGenerator } from '@opentelemetry/sdk-trace-base'; import { generateTraceId, diff --git a/packages/opentelemetry-id-generator-aws-xray/src/platform/node/AWSXRayIdGenerator.ts b/packages/opentelemetry-id-generator-aws-xray/src/platform/node/AWSXRayIdGenerator.ts index 3d72ebd81b..3f768748e2 100644 --- a/packages/opentelemetry-id-generator-aws-xray/src/platform/node/AWSXRayIdGenerator.ts +++ b/packages/opentelemetry-id-generator-aws-xray/src/platform/node/AWSXRayIdGenerator.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { IdGenerator } from '@opentelemetry/core'; +import { IdGenerator } from '@opentelemetry/sdk-trace-base'; import { generateTraceId, diff --git a/packages/opentelemetry-propagation-utils/package.json b/packages/opentelemetry-propagation-utils/package.json index 88c5679b0c..6f1d343c2f 100644 --- a/packages/opentelemetry-propagation-utils/package.json +++ b/packages/opentelemetry-propagation-utils/package.json @@ -31,7 +31,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "bugs": { "url": "https://github.com/open-telemetry/opentelemetry-js-contrib/issues" @@ -49,6 +49,6 @@ "expect": "29.2.0", "nyc": "15.1.0", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" } } diff --git a/packages/opentelemetry-redis-common/package.json b/packages/opentelemetry-redis-common/package.json index 04ddc2caba..98cf192cd5 100644 --- a/packages/opentelemetry-redis-common/package.json +++ b/packages/opentelemetry-redis-common/package.json @@ -29,7 +29,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "bugs": { "url": "https://github.com/open-telemetry/opentelemetry-js-contrib/issues" @@ -39,6 +39,6 @@ "@types/mocha": "^10.0.0", "@types/node": "18.18.14", "nyc": "15.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" } } diff --git a/packages/opentelemetry-sql-common/package.json b/packages/opentelemetry-sql-common/package.json index 0acad41c74..83a99c6a70 100644 --- a/packages/opentelemetry-sql-common/package.json +++ b/packages/opentelemetry-sql-common/package.json @@ -30,7 +30,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "bugs": { "url": "https://github.com/open-telemetry/opentelemetry-js-contrib/issues" @@ -40,13 +40,13 @@ "@opentelemetry/api": "^1.1.0" }, "dependencies": { - "@opentelemetry/core": "^1.1.0" + "@opentelemetry/core": "^2.0.0" }, "devDependencies": { "@opentelemetry/api": "^1.1.0", "@types/mocha": "^10.0.0", "@types/node": "18.18.14", "nyc": "15.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" } } diff --git a/packages/opentelemetry-test-utils/package.json b/packages/opentelemetry-test-utils/package.json index 0128508a31..3cab971bc5 100644 --- a/packages/opentelemetry-test-utils/package.json +++ b/packages/opentelemetry-test-utils/package.json @@ -28,7 +28,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "bugs": { "url": "https://github.com/open-telemetry/opentelemetry-js-contrib/issues" @@ -40,17 +40,17 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@types/node": "18.18.14", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/core": "^1.0.0", - "@opentelemetry/exporter-jaeger": "^1.3.1", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-metrics": "^1.27.0", - "@opentelemetry/sdk-node": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/exporter-jaeger": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/sdk-metrics": "^2.0.0", + "@opentelemetry/sdk-node": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0" } } diff --git a/packages/opentelemetry-test-utils/src/instrumentations/index.ts b/packages/opentelemetry-test-utils/src/instrumentations/index.ts index b480032e8e..6d457a3aa3 100644 --- a/packages/opentelemetry-test-utils/src/instrumentations/index.ts +++ b/packages/opentelemetry-test-utils/src/instrumentations/index.ts @@ -13,7 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Resource } from '@opentelemetry/resources'; + +import { resourceFromAttributes } from '@opentelemetry/resources'; import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; import { getInstrumentation } from './instrumentation-singleton'; import { registerInstrumentationTestingProvider } from './otel-default-provider'; @@ -39,7 +40,7 @@ export const mochaHooks = { } } const provider = registerInstrumentationTestingProvider({ - resource: new Resource({ + resource: resourceFromAttributes({ [SEMRESATTRS_SERVICE_NAME]: serviceName, }), }); diff --git a/packages/opentelemetry-test-utils/src/test-utils.ts b/packages/opentelemetry-test-utils/src/test-utils.ts index 91efd64b03..a64c9ad56a 100644 --- a/packages/opentelemetry-test-utils/src/test-utils.ts +++ b/packages/opentelemetry-test-utils/src/test-utils.ts @@ -126,7 +126,10 @@ export const assertPropagation = ( const targetSpanContext = childSpan.spanContext(); const sourceSpanContext = parentSpan.spanContext(); assert.strictEqual(targetSpanContext.traceId, sourceSpanContext.traceId); - assert.strictEqual(childSpan.parentSpanId, sourceSpanContext.spanId); + assert.strictEqual( + childSpan.parentSpanContext?.spanId, + sourceSpanContext.spanId + ); assert.strictEqual( targetSpanContext.traceFlags, sourceSpanContext.traceFlags diff --git a/packages/winston-transport/package.json b/packages/winston-transport/package.json index 6c7f887817..13db5aee23 100644 --- a/packages/winston-transport/package.json +++ b/packages/winston-transport/package.json @@ -26,7 +26,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -44,10 +44,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/api-logs": "^0.57.2", + "@opentelemetry/api-logs": "^0.200.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 c06110a969..46886d22c1 100644 --- a/plugins/node/instrumentation-amqplib/package.json +++ b/plugins/node/instrumentation-amqplib/package.json @@ -44,8 +44,8 @@ "@opentelemetry/api": "^1.3.0" }, "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { @@ -62,9 +62,9 @@ "nyc": "15.1.0", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" } } diff --git a/plugins/node/instrumentation-amqplib/test/amqplib-callbacks.test.ts b/plugins/node/instrumentation-amqplib/test/amqplib-callbacks.test.ts index 1e415cb084..c3bb84f8a5 100644 --- a/plugins/node/instrumentation-amqplib/test/amqplib-callbacks.test.ts +++ b/plugins/node/instrumentation-amqplib/test/amqplib-callbacks.test.ts @@ -200,7 +200,7 @@ describe('amqplib instrumentation callback model', () => { expect(consumeSpan.spanContext().traceId).toEqual( publishSpan.spanContext().traceId ); - expect(consumeSpan.parentSpanId).toEqual( + expect(consumeSpan.parentSpanContext?.spanId).toEqual( publishSpan.spanContext().spanId ); @@ -370,7 +370,7 @@ describe('amqplib instrumentation callback model', () => { expect(consumeSpan.spanContext().traceId).toEqual( publishSpan.spanContext().traceId ); - expect(consumeSpan.parentSpanId).toEqual( + expect(consumeSpan.parentSpanContext?.spanId).toEqual( publishSpan.spanContext().spanId ); @@ -522,7 +522,7 @@ describe('amqplib instrumentation callback model', () => { expect(consumeSpan.spanContext().traceId).not.toEqual( publishSpan.spanContext().traceId ); - expect(consumeSpan.parentSpanId).toBeUndefined(); + expect(consumeSpan.parentSpanContext?.spanId).toBeUndefined(); // link back to publish span expect(consumeSpan.links.length).toBe(1); @@ -650,7 +650,7 @@ describe('amqplib instrumentation callback model', () => { expect(consumeSpan.spanContext().traceId).not.toEqual( publishSpan.spanContext().traceId ); - expect(consumeSpan.parentSpanId).toBeUndefined(); + expect(consumeSpan.parentSpanContext?.spanId).toBeUndefined(); // link back to publish span expect(consumeSpan.links.length).toBe(1); diff --git a/plugins/node/instrumentation-amqplib/test/amqplib-promise.test.ts b/plugins/node/instrumentation-amqplib/test/amqplib-promise.test.ts index 6df63296a1..bd9277b995 100644 --- a/plugins/node/instrumentation-amqplib/test/amqplib-promise.test.ts +++ b/plugins/node/instrumentation-amqplib/test/amqplib-promise.test.ts @@ -216,7 +216,7 @@ describe('amqplib instrumentation promise model', () => { expect(consumeSpan.spanContext().traceId).toEqual( publishSpan.spanContext().traceId ); - expect(consumeSpan.parentSpanId).toEqual( + expect(consumeSpan.parentSpanContext?.spanId).toEqual( publishSpan.spanContext().spanId ); @@ -553,7 +553,7 @@ describe('amqplib instrumentation promise model', () => { expect(consumeSpan.spanContext().traceId).toEqual( publishSpan.spanContext().traceId ); - expect(consumeSpan.parentSpanId).toEqual( + expect(consumeSpan.parentSpanContext?.spanId).toEqual( publishSpan.spanContext().spanId ); }); @@ -1140,7 +1140,7 @@ describe('amqplib instrumentation promise model', () => { expect(consumeSpan.spanContext().traceId).toEqual( publishSpan.spanContext().traceId ); - expect(consumeSpan.parentSpanId).toEqual( + expect(consumeSpan.parentSpanContext?.spanId).toEqual( publishSpan.spanContext().spanId ); }); @@ -1354,7 +1354,7 @@ describe('amqplib instrumentation promise model', () => { expect(consumeSpan.spanContext().traceId).not.toEqual( publishSpan.spanContext().traceId ); - expect(consumeSpan.parentSpanId).toBeUndefined(); + expect(consumeSpan.parentSpanContext?.spanId).toBeUndefined(); // link back to publish span expect(consumeSpan.links.length).toBe(1); @@ -1433,7 +1433,7 @@ describe('amqplib instrumentation promise model', () => { expect(consumeSpan.spanContext().traceId).not.toEqual( publishSpan.spanContext().traceId ); - expect(consumeSpan.parentSpanId).toBeUndefined(); + expect(consumeSpan.parentSpanContext?.spanId).toBeUndefined(); // link back to publish span expect(consumeSpan.links.length).toBe(1); @@ -1552,7 +1552,7 @@ describe('amqplib instrumentation promise model', () => { expect(consumeSpan.spanContext().traceId).not.toEqual( publishSpan.spanContext().traceId ); - expect(consumeSpan.parentSpanId).toBeUndefined(); + expect(consumeSpan.parentSpanContext?.spanId).toBeUndefined(); // link back to publish span expect(consumeSpan.links.length).toBe(1); @@ -1638,7 +1638,7 @@ describe('amqplib instrumentation promise model', () => { expect(consumeSpan.spanContext().traceId).not.toEqual( publishSpan.spanContext().traceId ); - expect(consumeSpan.parentSpanId).toBeUndefined(); + expect(consumeSpan.parentSpanContext?.spanId).toBeUndefined(); // link back to publish span expect(consumeSpan.links.length).toBe(1); diff --git a/plugins/node/instrumentation-cucumber/package.json b/plugins/node/instrumentation-cucumber/package.json index 8a9cee685b..e94822e7d5 100644 --- a/plugins/node/instrumentation-cucumber/package.json +++ b/plugins/node/instrumentation-cucumber/package.json @@ -29,7 +29,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -46,9 +46,9 @@ "@cucumber/cucumber": "^9.0.0", "@cucumber/messages": "^22.0.0", "@opentelemetry/api": "^1.0.0", - "@opentelemetry/core": "^1.3.1", - "@opentelemetry/sdk-trace-base": "^1.3.1", - "@opentelemetry/sdk-trace-node": "^1.3.1", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/semver": "7.5.8", @@ -59,10 +59,10 @@ "semver": "7.7.1", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-cucumber#readme" diff --git a/plugins/node/instrumentation-cucumber/test/cucumber.test.ts b/plugins/node/instrumentation-cucumber/test/cucumber.test.ts index f237c10b14..1f56465956 100644 --- a/plugins/node/instrumentation-cucumber/test/cucumber.test.ts +++ b/plugins/node/instrumentation-cucumber/test/cucumber.test.ts @@ -28,7 +28,7 @@ import { SEMATTRS_CODE_NAMESPACE, SEMRESATTRS_SERVICE_NAME, } from '@opentelemetry/semantic-conventions'; -import { Resource } from '@opentelemetry/resources'; +import { resourceFromAttributes } from '@opentelemetry/resources'; import * as path from 'path'; import * as assert from 'assert'; @@ -56,7 +56,7 @@ describe('CucumberInstrumentation', () => { const memoryExporter = new InMemorySpanExporter(); const spanProcessor = new SimpleSpanProcessor(memoryExporter); const provider = new NodeTracerProvider({ - resource: new Resource({ + resource: resourceFromAttributes({ [SEMRESATTRS_SERVICE_NAME]: 'CucumberInstrumentation', }), spanProcessors: [spanProcessor], @@ -281,7 +281,7 @@ describe('CucumberInstrumentation', () => { assert.equal(attemptSpans.length, 3); assert.deepEqual( - attemptSpans.map(span => span.parentSpanId), + attemptSpans.map(span => span.parentSpanContext?.spanId), Array(3).fill(parent.spanContext().spanId) ); }); @@ -296,7 +296,9 @@ describe('CucumberInstrumentation', () => { attemptSpans.forEach(attempt => { assert.equal( spans.filter( - span => span.parentSpanId === attempt.spanContext().spanId + span => + span.parentSpanContext?.spanId === + attempt.spanContext().spanId ).length, 4 ); diff --git a/plugins/node/instrumentation-dataloader/package.json b/plugins/node/instrumentation-dataloader/package.json index f926aa9e3a..88e0faa5cf 100644 --- a/plugins/node/instrumentation-dataloader/package.json +++ b/plugins/node/instrumentation-dataloader/package.json @@ -28,7 +28,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -43,19 +43,19 @@ }, "devDependencies": { "@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", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "dataloader": "2.2.3", "nyc": "15.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2" + "@opentelemetry/instrumentation": "^0.200.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-dataloader#readme" } diff --git a/plugins/node/instrumentation-dataloader/test/dataloader.test.ts b/plugins/node/instrumentation-dataloader/test/dataloader.test.ts index 319bde4d03..f798d53fa7 100644 --- a/plugins/node/instrumentation-dataloader/test/dataloader.test.ts +++ b/plugins/node/instrumentation-dataloader/test/dataloader.test.ts @@ -92,7 +92,7 @@ describe('DataloaderInstrumentation', () => { const [_, loadSpan] = memoryExporter.getFinishedSpans(); assert.strictEqual( - loadSpan.parentSpanId, + loadSpan.parentSpanContext?.spanId, rootSpan.spanContext().spanId ); } @@ -110,7 +110,7 @@ describe('DataloaderInstrumentation', () => { const [_, loadSpan] = memoryExporter.getFinishedSpans(); assert.strictEqual( - loadSpan.parentSpanId, + loadSpan.parentSpanContext?.spanId, rootSpan.spanContext().spanId ); } @@ -188,7 +188,7 @@ describe('DataloaderInstrumentation', () => { assert.strictEqual(loadSpan.name, 'dataloader.load'); assert.strictEqual(loadSpan.kind, SpanKind.CLIENT); assert.strictEqual( - loadSpan.parentSpanId, + loadSpan.parentSpanContext?.spanId, loadManySpan.spanContext().spanId ); }); @@ -203,7 +203,7 @@ describe('DataloaderInstrumentation', () => { const [, , loadManySpan] = memoryExporter.getFinishedSpans(); assert.strictEqual( - loadManySpan.parentSpanId, + loadManySpan.parentSpanContext?.spanId, rootSpan.spanContext().spanId ); } @@ -221,7 +221,7 @@ describe('DataloaderInstrumentation', () => { const [, , loadManySpan] = memoryExporter.getFinishedSpans(); assert.strictEqual( - loadManySpan.parentSpanId, + loadManySpan.parentSpanContext?.spanId, rootSpan.spanContext().spanId ); } diff --git a/plugins/node/instrumentation-fs/package.json b/plugins/node/instrumentation-fs/package.json index 164425fe9d..7cdcf3b65c 100644 --- a/plugins/node/instrumentation-fs/package.json +++ b/plugins/node/instrumentation-fs/package.json @@ -28,7 +28,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -43,21 +43,21 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "^17.0.0", "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-fs#readme" } diff --git a/plugins/node/instrumentation-fs/test/utils.ts b/plugins/node/instrumentation-fs/test/utils.ts index a3f2cd33f7..ba6b3fb592 100644 --- a/plugins/node/instrumentation-fs/test/utils.ts +++ b/plugins/node/instrumentation-fs/test/utils.ts @@ -42,7 +42,7 @@ const assertSpan = (span: ReadableSpan, expected: any) => { ); if (expected.parentSpan) { assert.strictEqual( - span.parentSpanId, + span.parentSpanContext?.spanId, expected.parentSpan.spanContext().spanId ); } diff --git a/plugins/node/instrumentation-kafkajs/package.json b/plugins/node/instrumentation-kafkajs/package.json index 2ff0f5ce3a..7f9598dc39 100644 --- a/plugins/node/instrumentation-kafkajs/package.json +++ b/plugins/node/instrumentation-kafkajs/package.json @@ -28,7 +28,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -44,7 +44,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.24.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "^17.0.0", @@ -52,10 +52,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-kafkajs#readme" diff --git a/plugins/node/instrumentation-kafkajs/test/kafkajs.test.ts b/plugins/node/instrumentation-kafkajs/test/kafkajs.test.ts index 258dddd7d0..72eb37c7e6 100644 --- a/plugins/node/instrumentation-kafkajs/test/kafkajs.test.ts +++ b/plugins/node/instrumentation-kafkajs/test/kafkajs.test.ts @@ -475,7 +475,7 @@ describe('instrumentation-kafkajs', () => { assert.strictEqual(spans.length, 1); const span = spans[0]; assert.strictEqual(span.name, 'topic-name-1'); - assert.strictEqual(span.parentSpanId, undefined); + assert.strictEqual(span.parentSpanContext?.spanId, undefined); assert.strictEqual(span.kind, SpanKind.CONSUMER); assert.strictEqual(span.status.code, SpanStatusCode.UNSET); assert.strictEqual(span.attributes[SEMATTRS_MESSAGING_SYSTEM], 'kafka'); @@ -692,14 +692,14 @@ describe('instrumentation-kafkajs', () => { const [recvSpan, msg1Span, msg2Span] = spans; - assert.strictEqual(recvSpan.parentSpanId, undefined); + assert.strictEqual(recvSpan.parentSpanContext?.spanId, undefined); assert.strictEqual( recvSpan.attributes[SEMATTRS_MESSAGING_OPERATION], 'receive' ); assert.strictEqual( - msg1Span.parentSpanId, + msg1Span.parentSpanContext?.spanId, recvSpan.spanContext().spanId ); assert.strictEqual( @@ -708,7 +708,7 @@ describe('instrumentation-kafkajs', () => { ); assert.strictEqual( - msg2Span.parentSpanId, + msg2Span.parentSpanContext?.spanId, recvSpan.spanContext().spanId ); assert.strictEqual( @@ -795,7 +795,7 @@ describe('instrumentation-kafkajs', () => { producerSpan.spanContext().traceId ); assert.strictEqual( - consumerSpan.parentSpanId, + consumerSpan.parentSpanContext?.spanId, producerSpan.spanContext().spanId ); assert.strictEqual(callbackBaggage!.getAllEntries().length, 1); @@ -847,7 +847,7 @@ describe('instrumentation-kafkajs', () => { receivingSpan.spanContext().traceId ); assert.strictEqual( - processingSpan.parentSpanId, + processingSpan.parentSpanContext?.spanId, receivingSpan.spanContext().spanId ); assert.strictEqual(processingSpan.links.length, 1); @@ -861,7 +861,7 @@ describe('instrumentation-kafkajs', () => { ); // receiving span should start a new trace - assert.strictEqual(receivingSpan.parentSpanId, undefined); + assert.strictEqual(receivingSpan.parentSpanContext?.spanId, undefined); assert.notStrictEqual( receivingSpan.spanContext().traceId, producerSpan.spanContext().traceId diff --git a/plugins/node/instrumentation-lru-memoizer/package.json b/plugins/node/instrumentation-lru-memoizer/package.json index 36f1aa974f..458a085f2a 100644 --- a/plugins/node/instrumentation-lru-memoizer/package.json +++ b/plugins/node/instrumentation-lru-memoizer/package.json @@ -28,7 +28,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -52,10 +52,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2" + "@opentelemetry/instrumentation": "^0.200.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-lru-memoizer#readme" } diff --git a/plugins/node/instrumentation-mongoose/package.json b/plugins/node/instrumentation-mongoose/package.json index 9c0185681c..9f431b1214 100644 --- a/plugins/node/instrumentation-mongoose/package.json +++ b/plugins/node/instrumentation-mongoose/package.json @@ -33,7 +33,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -49,7 +49,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "expect": "29.2.0", @@ -57,11 +57,11 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-mongoose#readme" diff --git a/plugins/node/instrumentation-runtime-node/package.json b/plugins/node/instrumentation-runtime-node/package.json index 83697c2451..8f28ac6b83 100644 --- a/plugins/node/instrumentation-runtime-node/package.json +++ b/plugins/node/instrumentation-runtime-node/package.json @@ -19,7 +19,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=17.4.0" + "node": "^18.19.0 || >=20.6.0" }, "keywords": [ "perf_hooks", @@ -38,16 +38,16 @@ "access": "public" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2" + "@opentelemetry/instrumentation": "^0.200.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/sdk-metrics": "^1.20.0", + "@opentelemetry/sdk-metrics": "^2.0.0", "@types/mocha": "^10.0.6", "@types/node": "18.18.14", "nyc": "^15.1.0", "rimraf": "5.0.10", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" diff --git a/plugins/node/instrumentation-socket.io/package.json b/plugins/node/instrumentation-socket.io/package.json index 41a1f45ed1..969b849c1b 100644 --- a/plugins/node/instrumentation-socket.io/package.json +++ b/plugins/node/instrumentation-socket.io/package.json @@ -28,7 +28,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -44,7 +44,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "expect": "27.4.2", @@ -53,10 +53,10 @@ "socket.io": "^4.1.3", "socket.io-client": "^4.1.3", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-socket.io#readme" diff --git a/plugins/node/instrumentation-tedious/package.json b/plugins/node/instrumentation-tedious/package.json index 823b4f2cf1..8330eac1cf 100644 --- a/plugins/node/instrumentation-tedious/package.json +++ b/plugins/node/instrumentation-tedious/package.json @@ -32,7 +32,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -47,9 +47,9 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "nyc": "15.1.0", @@ -57,10 +57,10 @@ "semver": "7.7.1", "tedious": "17.0.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/tedious": "^4.0.14" }, diff --git a/plugins/node/instrumentation-tedious/test/instrumentation.test.ts b/plugins/node/instrumentation-tedious/test/instrumentation.test.ts index d20d16cad7..5d5bd41c3d 100644 --- a/plugins/node/instrumentation-tedious/test/instrumentation.test.ts +++ b/plugins/node/instrumentation-tedious/test/instrumentation.test.ts @@ -376,7 +376,7 @@ function assertSpan(span: ReadableSpan, expected: any) { ); if (expected.parentSpan) { assert.strictEqual( - span.parentSpanId, + span.parentSpanContext?.spanId, expected.parentSpan.spanContext().spanId ); } diff --git a/plugins/node/instrumentation-undici/package.json b/plugins/node/instrumentation-undici/package.json index 3de778cd93..51edac196f 100644 --- a/plugins/node/instrumentation-undici/package.json +++ b/plugins/node/instrumentation-undici/package.json @@ -29,7 +29,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -41,24 +41,24 @@ }, "devDependencies": { "@opentelemetry/api": "^1.7.0", - "@opentelemetry/sdk-metrics": "^1.8.0", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-metrics": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "nyc": "15.1.0", "rimraf": "5.0.10", "semver": "^7.6.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4", + "typescript": "5.0.4", "undici": "6.21.1" }, "peerDependencies": { "@opentelemetry/api": "^1.7.0" }, "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-undici", "sideEffects": false diff --git a/plugins/node/instrumentation-undici/src/undici.ts b/plugins/node/instrumentation-undici/src/undici.ts index 949b1e11c7..f2fce42108 100644 --- a/plugins/node/instrumentation-undici/src/undici.ts +++ b/plugins/node/instrumentation-undici/src/undici.ts @@ -63,10 +63,11 @@ interface InstrumentationRecord { export class UndiciInstrumentation extends InstrumentationBase { // Keep ref to avoid https://github.com/nodejs/node/issues/42170 bug and for // unsubscribing. - private _channelSubs!: Array; + private declare _channelSubs: Array; private _recordFromReq = new WeakMap(); - private _httpClientDurationHistogram!: Histogram; + private declare _httpClientDurationHistogram: Histogram; + constructor(config: UndiciInstrumentationConfig = {}) { super(PACKAGE_NAME, PACKAGE_VERSION, config); } diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json b/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json index 8fd07669cb..fe13c93947 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json @@ -28,7 +28,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -43,20 +43,20 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/core": "^1.8.0", + "@opentelemetry/core": "^2.0.0", "@opentelemetry/propagator-aws-xray": "^1.26.2", "@opentelemetry/propagator-aws-xray-lambda": "^0.53.2", - "@opentelemetry/sdk-metrics": "^1.8.0", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-metrics": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "nyc": "15.1.0", "rimraf": "5.0.10", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/aws-lambda": "8.10.147" }, diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts index bea9731d5a..b67a72ca4e 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts @@ -71,8 +71,8 @@ const headerGetter: TextMapGetter = { export const lambdaMaxInitInMilliseconds = 10_000; export class AwsLambdaInstrumentation extends InstrumentationBase { - private _traceForceFlusher?: () => Promise; - private _metricForceFlusher?: () => Promise; + private declare _traceForceFlusher?: () => Promise; + private declare _metricForceFlusher?: () => Promise; constructor(config: AwsLambdaInstrumentationConfig = {}) { super(PACKAGE_NAME, PACKAGE_VERSION, config); 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 a7aeadfae8..8ec2e8614f 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 @@ -181,7 +181,7 @@ describe('lambda handler', () => { const [span] = spans; assert.strictEqual(spans.length, 1); assertSpanSuccess(span); - assert.strictEqual(span.parentSpanId, undefined); + assert.strictEqual(span.parentSpanContext?.spanId, undefined); }); it('should record error', async () => { @@ -198,7 +198,7 @@ describe('lambda handler', () => { const [span] = spans; assert.strictEqual(spans.length, 1); assertSpanFailure(span); - assert.strictEqual(span.parentSpanId, undefined); + assert.strictEqual(span.parentSpanContext?.spanId, undefined); }); it('should record string error', async () => { @@ -214,7 +214,7 @@ describe('lambda handler', () => { const spans = memoryExporter.getFinishedSpans(); const [span] = spans; assertSpanFailure(span); - assert.strictEqual(span.parentSpanId, undefined); + assert.strictEqual(span.parentSpanContext?.spanId, undefined); }); it('context should have parent trace', async () => { @@ -264,7 +264,7 @@ describe('lambda handler', () => { const [span] = spans; assert.strictEqual(spans.length, 1); assertSpanSuccess(span); - assert.strictEqual(span.parentSpanId, undefined); + assert.strictEqual(span.parentSpanContext?.spanId, undefined); }); it('should record coldstart', async () => { @@ -298,12 +298,12 @@ describe('lambda handler', () => { assert.strictEqual(result1, 'ok'); assertSpanSuccess(span1); - assert.strictEqual(span1.parentSpanId, undefined); + assert.strictEqual(span1.parentSpanContext?.spanId, undefined); assert.strictEqual(span1.attributes[SEMATTRS_FAAS_COLDSTART], true); assert.strictEqual(result2, 'ok'); assertSpanSuccess(span2); - assert.strictEqual(span2.parentSpanId, undefined); + assert.strictEqual(span2.parentSpanContext?.spanId, undefined); assert.strictEqual(span2.attributes[SEMATTRS_FAAS_COLDSTART], false); }); @@ -330,7 +330,7 @@ describe('lambda handler', () => { const [span] = spans; assert.strictEqual(spans.length, 1); assertSpanSuccess(span); - assert.strictEqual(span.parentSpanId, undefined); + assert.strictEqual(span.parentSpanContext?.spanId, undefined); assert.strictEqual(span.attributes[SEMATTRS_FAAS_COLDSTART], false); }); @@ -357,7 +357,7 @@ describe('lambda handler', () => { const [span] = spans; assert.strictEqual(spans.length, 1); assertSpanSuccess(span); - assert.strictEqual(span.parentSpanId, undefined); + assert.strictEqual(span.parentSpanContext?.spanId, undefined); assert.strictEqual(span.attributes[SEMATTRS_FAAS_COLDSTART], false); }); @@ -379,7 +379,7 @@ describe('lambda handler', () => { const [span] = spans; assert.strictEqual(spans.length, 1); assertSpanFailure(span); - assert.strictEqual(span.parentSpanId, undefined); + assert.strictEqual(span.parentSpanContext?.spanId, undefined); }); it('should record error in callback', async () => { @@ -408,7 +408,7 @@ describe('lambda handler', () => { const [span] = spans; assert.strictEqual(spans.length, 1); assertSpanFailure(span); - assert.strictEqual(span.parentSpanId, undefined); + assert.strictEqual(span.parentSpanContext?.spanId, undefined); }); it('should record string error', async () => { @@ -429,7 +429,7 @@ describe('lambda handler', () => { const [span] = spans; assert.strictEqual(spans.length, 1); assertSpanFailure(span); - assert.strictEqual(span.parentSpanId, undefined); + assert.strictEqual(span.parentSpanContext?.spanId, undefined); }); it('context should have parent trace', async () => { @@ -501,7 +501,7 @@ describe('lambda handler', () => { const [span] = spans; assert.strictEqual(spans.length, 1); assertSpanFailure(span); - assert.strictEqual(span.parentSpanId, undefined); + assert.strictEqual(span.parentSpanContext?.spanId, undefined); }); describe('with remote parent', () => { @@ -531,7 +531,10 @@ describe('lambda handler', () => { spans[0].spanContext().traceId, sampledAwsSpanContext.traceId ); - assert.equal(spans[0].parentSpanId, sampledAwsSpanContext.spanId); + assert.equal( + spans[0].parentSpanContext?.spanId, + sampledAwsSpanContext.spanId + ); }); it('can extract context from lambda context env variable using a global propagator', async () => { @@ -552,7 +555,10 @@ describe('lambda handler', () => { spans[0].spanContext().traceId, sampledAwsSpanContext.traceId ); - assert.equal(spans[0].parentSpanId, sampledAwsSpanContext.spanId); + assert.equal( + spans[0].parentSpanContext?.spanId, + sampledAwsSpanContext.spanId + ); }); it('used custom eventContextExtractor over global propagator if defined', async () => { @@ -591,7 +597,10 @@ describe('lambda handler', () => { span.spanContext().traceId, sampledAwsSpanContext.traceId ); - assert.strictEqual(span.parentSpanId, sampledAwsSpanContext.spanId); + assert.strictEqual( + span.parentSpanContext?.spanId, + sampledAwsSpanContext.spanId + ); }); it('creates trace from ROOT_CONTEXT eventContextExtractor is provided, and no custom context is found', async () => { @@ -620,7 +629,7 @@ describe('lambda handler', () => { const spans = memoryExporter.getFinishedSpans(); const [span] = spans; - assert.strictEqual(span.parentSpanId, undefined); + assert.strictEqual(span.parentSpanContext?.spanId, undefined); }); }); @@ -745,7 +754,7 @@ describe('lambda handler', () => { const [span] = spans; assert.strictEqual(spans.length, 1); assertSpanSuccess(span); - assert.strictEqual(span.parentSpanId, undefined); + assert.strictEqual(span.parentSpanContext?.spanId, undefined); }); }); }); @@ -767,7 +776,7 @@ describe('lambda handler', () => { const [span] = spans; assert.strictEqual(spans.length, 1); assertSpanSuccess(span); - assert.strictEqual(span.parentSpanId, undefined); + assert.strictEqual(span.parentSpanContext?.spanId, undefined); }); }); diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json b/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json index b0628614ac..8712e021cd 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json @@ -44,8 +44,8 @@ "@opentelemetry/api": "^1.3.0" }, "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/propagation-utils": "^0.30.16", "@opentelemetry/semantic-conventions": "^1.27.0" }, @@ -59,7 +59,7 @@ "@aws-sdk/types": "^3.370.0", "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@smithy/node-http-handler": "2.4.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -72,9 +72,9 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" } } 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 545fe09bd0..96a082ddb3 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 @@ -66,7 +66,7 @@ describe('instrumentation-aws-sdk-v2', () => { const getAwsSpans = (): ReadableSpan[] => { return getTestSpans().filter(s => - s.instrumentationLibrary.name.includes('aws-sdk') + s.instrumentationScope.name.includes('aws-sdk') ); }; 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 61eb4bd806..62ee776562 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/sqs.test.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/sqs.test.ts @@ -101,7 +101,7 @@ describe('SQS', () => { expect(awsReceiveSpan.length).toBe(1); const internalSpan = spans.filter(s => s.kind === SpanKind.INTERNAL); expect(internalSpan.length).toBe(1); - expect(internalSpan[0].parentSpanId).toStrictEqual( + expect(internalSpan[0].parentSpanContext?.spanId).toStrictEqual( awsReceiveSpan[0].spanContext().spanId ); }; @@ -204,22 +204,22 @@ describe('SQS', () => { MESSAGINGOPERATIONVALUES_PROCESS ); expect(processSpans.length).toBe(2); - expect(processSpans[0].parentSpanId).toStrictEqual( + expect(processSpans[0].parentSpanContext?.spanId).toStrictEqual( awsReceiveSpan[0].spanContext().spanId ); - expect(processSpans[1].parentSpanId).toStrictEqual( + expect(processSpans[1].parentSpanContext?.spanId).toStrictEqual( awsReceiveSpan[0].spanContext().spanId ); const processChildSpans = spans.filter(s => s.kind === SpanKind.INTERNAL); expect(processChildSpans.length).toBe(2 * numChildPerProcessSpan); for (let i = 0; i < numChildPerProcessSpan; i++) { - expect(processChildSpans[2 * i + 0].parentSpanId).toStrictEqual( - processSpans[0].spanContext().spanId - ); - expect(processChildSpans[2 * i + 1].parentSpanId).toStrictEqual( - processSpans[1].spanContext().spanId - ); + expect( + processChildSpans[2 * i + 0].parentSpanContext?.spanId + ).toStrictEqual(processSpans[0].spanContext().spanId); + expect( + processChildSpans[2 * i + 1].parentSpanContext?.spanId + ).toStrictEqual(processSpans[1].spanContext().spanId); } }; diff --git a/plugins/node/opentelemetry-instrumentation-bunyan/package.json b/plugins/node/opentelemetry-instrumentation-bunyan/package.json index c853f8ad80..b85139e203 100644 --- a/plugins/node/opentelemetry-instrumentation-bunyan/package.json +++ b/plugins/node/opentelemetry-instrumentation-bunyan/package.json @@ -29,7 +29,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -44,10 +44,10 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-logs": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/sdk-logs": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -57,11 +57,11 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/api-logs": "^0.57.2", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/api-logs": "^0.200.0", + "@opentelemetry/instrumentation": "^0.200.0", "@types/bunyan": "1.8.11" }, "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/test/bunyan.test.ts b/plugins/node/opentelemetry-instrumentation-bunyan/test/bunyan.test.ts index aa4196f5d2..06ffc57a07 100644 --- a/plugins/node/opentelemetry-instrumentation-bunyan/test/bunyan.test.ts +++ b/plugins/node/opentelemetry-instrumentation-bunyan/test/bunyan.test.ts @@ -27,7 +27,7 @@ import { } from '@opentelemetry/sdk-logs'; import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import { isWrapped } from '@opentelemetry/instrumentation'; -import { Resource } from '@opentelemetry/resources'; +import { resourceFromAttributes } from '@opentelemetry/resources'; import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; import * as assert from 'assert'; import * as sinon from 'sinon'; @@ -46,7 +46,7 @@ const tracerProvider = new NodeTracerProvider({ tracerProvider.register(); const tracer = tracerProvider.getTracer('default'); -const resource = new Resource({ +const resource = resourceFromAttributes({ [SEMRESATTRS_SERVICE_NAME]: 'test-instrumentation-bunyan', }); const loggerProvider = new LoggerProvider({ resource }); diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/package.json b/plugins/node/opentelemetry-instrumentation-cassandra/package.json index 3ac22e86b8..00c047b4b6 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/package.json +++ b/plugins/node/opentelemetry-instrumentation-cassandra/package.json @@ -29,7 +29,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -44,10 +44,10 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/semver": "7.5.8", @@ -56,10 +56,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.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-connect/package.json b/plugins/node/opentelemetry-instrumentation-connect/package.json index aaab4729db..221d8bd5a5 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/package.json +++ b/plugins/node/opentelemetry-instrumentation-connect/package.json @@ -28,7 +28,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -43,19 +43,19 @@ }, "devDependencies": { "@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", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "connect": "3.7.0", "nyc": "15.1.0", "rimraf": "5.0.10", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/connect": "3.4.38" }, diff --git a/plugins/node/opentelemetry-instrumentation-connect/test/instrumentation.test.ts b/plugins/node/opentelemetry-instrumentation-connect/test/instrumentation.test.ts index 8d228adc23..f5dd85f757 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/test/instrumentation.test.ts +++ b/plugins/node/opentelemetry-instrumentation-connect/test/instrumentation.test.ts @@ -240,7 +240,7 @@ describe('connect', () => { assert.strictEqual(rpcMetadata.route, '/foo'); assert.strictEqual(span.name, 'request handler - /foo'); assert.strictEqual( - span.parentSpanId, + span.parentSpanContext?.spanId, changedRootSpan.spanContext().spanId ); }); diff --git a/plugins/node/opentelemetry-instrumentation-dns/package.json b/plugins/node/opentelemetry-instrumentation-dns/package.json index 52f9326d4b..e3f62e7f07 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/package.json +++ b/plugins/node/opentelemetry-instrumentation-dns/package.json @@ -28,7 +28,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -43,9 +43,9 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/semver": "7.5.8", @@ -54,10 +54,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2" + "@opentelemetry/instrumentation": "^0.200.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-dns#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-express/package.json b/plugins/node/opentelemetry-instrumentation-express/package.json index b3058396e2..67fe31ba96 100644 --- a/plugins/node/opentelemetry-instrumentation-express/package.json +++ b/plugins/node/opentelemetry-instrumentation-express/package.json @@ -30,7 +30,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -45,10 +45,10 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/express": "4.17.21", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -58,11 +58,11 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.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-fastify/package.json b/plugins/node/opentelemetry-instrumentation-fastify/package.json index 7c466a3b3d..148a41681d 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/package.json +++ b/plugins/node/opentelemetry-instrumentation-fastify/package.json @@ -29,7 +29,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -45,11 +45,11 @@ "devDependencies": { "@fastify/express": "^3.0.0", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/instrumentation-http": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/instrumentation-http": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/express": "4.17.21", "@types/mocha": "10.0.10", "@types/node": "18.15.3", @@ -59,11 +59,11 @@ "rimraf": "5.0.10", "semver": "^7.5.4", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.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/test/instrumentation.test.ts b/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts index 1ac82b125f..b9014b2d13 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts @@ -98,7 +98,7 @@ const assertRootContextActive = () => { function getSpans(): ReadableSpan[] { const spans = memoryExporter.getFinishedSpans().filter(s => { return ( - s.instrumentationLibrary.name === '@opentelemetry/instrumentation-fastify' + s.instrumentationScope.name === '@opentelemetry/instrumentation-fastify' ); }); return spans; @@ -168,7 +168,10 @@ describe('fastify', () => { 'request handler - fastify -> @fastify/express' ); const baseSpan = spans[1]; - assert.strictEqual(span.parentSpanId, baseSpan.spanContext().spanId); + assert.strictEqual( + span.parentSpanContext?.spanId, + baseSpan.spanContext().spanId + ); }); it('should generate span for named handler', async () => { @@ -192,7 +195,10 @@ describe('fastify', () => { assert.strictEqual(span.name, 'request handler - namedHandler'); const baseSpan = spans[1]; - assert.strictEqual(span.parentSpanId, baseSpan.spanContext().spanId); + assert.strictEqual( + span.parentSpanContext?.spanId, + baseSpan.spanContext().spanId + ); }); it('should generate span for 404 request', async () => { @@ -209,7 +215,10 @@ describe('fastify', () => { }); assert.strictEqual(span.name, 'request handler - basic404'); const baseSpan = spans[1]; - assert.strictEqual(span.parentSpanId, baseSpan.spanContext().spanId); + assert.strictEqual( + span.parentSpanContext?.spanId, + baseSpan.spanContext().spanId + ); }); describe('when subsystem is registered', () => { @@ -255,7 +264,10 @@ describe('fastify', () => { const span = spans[3]; assert.strictEqual(changedRootSpan.name, 'GET /test/:id'); assert.strictEqual(span.name, 'request handler - foo'); - assert.strictEqual(span.parentSpanId, spans[2].spanContext().spanId); + assert.strictEqual( + span.parentSpanContext?.spanId, + spans[2].spanContext().spanId + ); }); it('should create span for fastify express runConnect', async () => { @@ -271,7 +283,10 @@ describe('fastify', () => { 'hook.name': 'onRequest', }); - assert.strictEqual(span.parentSpanId, baseSpan.spanContext().spanId); + assert.strictEqual( + span.parentSpanContext?.spanId, + baseSpan.spanContext().spanId + ); }); it('should create span for fastify express for enhanceRequest', async () => { @@ -287,7 +302,10 @@ describe('fastify', () => { 'hook.name': 'onRequest', }); - assert.strictEqual(span.parentSpanId, baseSpan.spanContext().spanId); + assert.strictEqual( + span.parentSpanContext?.spanId, + baseSpan.spanContext().spanId + ); }); it('should create span for request', async () => { @@ -304,7 +322,10 @@ describe('fastify', () => { 'http.route': '/test/:id', }); - assert.strictEqual(span.parentSpanId, baseSpan.spanContext().spanId); + assert.strictEqual( + span.parentSpanContext?.spanId, + baseSpan.spanContext().spanId + ); }); it('should update http.route for http span', async () => { @@ -328,7 +349,10 @@ describe('fastify', () => { 'hook.name': 'onRequest', }); - assert.strictEqual(span.parentSpanId, baseSpan.spanContext().spanId); + assert.strictEqual( + span.parentSpanContext?.spanId, + baseSpan.spanContext().spanId + ); }); it('should update span with error that was raised', async () => { diff --git a/plugins/node/opentelemetry-instrumentation-generic-pool/package.json b/plugins/node/opentelemetry-instrumentation-generic-pool/package.json index 069ba3642b..613c25e0b0 100644 --- a/plugins/node/opentelemetry-instrumentation-generic-pool/package.json +++ b/plugins/node/opentelemetry-instrumentation-generic-pool/package.json @@ -28,7 +28,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -43,9 +43,9 @@ }, "devDependencies": { "@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", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/generic-pool": "^3.1.9", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -54,10 +54,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "semver": "7.7.1", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2" + "@opentelemetry/instrumentation": "^0.200.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/test/index.test.ts b/plugins/node/opentelemetry-instrumentation-generic-pool/test/index.test.ts index 3d99207ae5..d41fe82866 100644 --- a/plugins/node/opentelemetry-instrumentation-generic-pool/test/index.test.ts +++ b/plugins/node/opentelemetry-instrumentation-generic-pool/test/index.test.ts @@ -109,7 +109,10 @@ describe('GenericPool instrumentation', () => { const [span] = memoryExporter.getFinishedSpans(); assert.strictEqual(span.name, 'generic-pool.acquire'); - assert.strictEqual(span.parentSpanId, rootSpan.spanContext().spanId); + assert.strictEqual( + span.parentSpanContext?.spanId, + rootSpan.spanContext().spanId + ); }); }); diff --git a/plugins/node/opentelemetry-instrumentation-graphql/package.json b/plugins/node/opentelemetry-instrumentation-graphql/package.json index 7ccef539ac..940db73f61 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/package.json +++ b/plugins/node/opentelemetry-instrumentation-graphql/package.json @@ -30,7 +30,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -45,7 +45,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -53,10 +53,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2" + "@opentelemetry/instrumentation": "^0.200.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/test/graphql.test.ts b/plugins/node/opentelemetry-instrumentation-graphql/test/graphql.test.ts index c538a4d1d2..26dd31bee7 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/test/graphql.test.ts +++ b/plugins/node/opentelemetry-instrumentation-graphql/test/graphql.test.ts @@ -147,7 +147,10 @@ describe('graphql', () => { const validateSpan = spans[1]; assert.deepStrictEqual(validateSpan.name, SpanNames.VALIDATE); - assert.deepStrictEqual(validateSpan.parentSpanId, undefined); + assert.deepStrictEqual( + validateSpan.parentSpanContext?.spanId, + undefined + ); }); it('should instrument execute', () => { @@ -171,7 +174,10 @@ describe('graphql', () => { undefined ); assert.deepStrictEqual(executeSpan.name, 'query'); - assert.deepStrictEqual(executeSpan.parentSpanId, undefined); + assert.deepStrictEqual( + executeSpan.parentSpanContext?.spanId, + undefined + ); }); it('should instrument resolvers', () => { @@ -275,7 +281,10 @@ describe('graphql', () => { const validateSpan = spans[1]; assert.deepStrictEqual(validateSpan.name, SpanNames.VALIDATE); - assert.deepStrictEqual(validateSpan.parentSpanId, undefined); + assert.deepStrictEqual( + validateSpan.parentSpanContext?.spanId, + undefined + ); }); it('should instrument execute', () => { @@ -299,7 +308,10 @@ describe('graphql', () => { undefined ); assert.deepStrictEqual(executeSpan.name, 'query'); - assert.deepStrictEqual(executeSpan.parentSpanId, undefined); + assert.deepStrictEqual( + executeSpan.parentSpanContext?.spanId, + undefined + ); }); it('should instrument resolvers', () => { @@ -369,7 +381,10 @@ describe('graphql', () => { const validateSpan = spans[1]; assert.deepStrictEqual(validateSpan.name, SpanNames.VALIDATE); - assert.deepStrictEqual(validateSpan.parentSpanId, undefined); + assert.deepStrictEqual( + validateSpan.parentSpanContext?.spanId, + undefined + ); }); it('should instrument execute', () => { @@ -397,7 +412,10 @@ describe('graphql', () => { undefined ); assert.deepStrictEqual(executeSpan.name, 'query Query1'); - assert.deepStrictEqual(executeSpan.parentSpanId, undefined); + assert.deepStrictEqual( + executeSpan.parentSpanContext?.spanId, + undefined + ); }); it('should instrument resolvers', () => { @@ -465,7 +483,10 @@ describe('graphql', () => { const validateSpan = spans[1]; assert.deepStrictEqual(validateSpan.name, SpanNames.VALIDATE); - assert.deepStrictEqual(validateSpan.parentSpanId, undefined); + assert.deepStrictEqual( + validateSpan.parentSpanContext?.spanId, + undefined + ); }); it('should instrument execute', () => { @@ -489,7 +510,10 @@ describe('graphql', () => { undefined ); assert.deepStrictEqual(executeSpan.name, 'query'); - assert.deepStrictEqual(executeSpan.parentSpanId, undefined); + assert.deepStrictEqual( + executeSpan.parentSpanContext?.spanId, + undefined + ); }); }); }); @@ -533,7 +557,10 @@ describe('graphql', () => { const validateSpan = spans[1]; assert.deepStrictEqual(validateSpan.name, SpanNames.VALIDATE); - assert.deepStrictEqual(validateSpan.parentSpanId, undefined); + assert.deepStrictEqual( + validateSpan.parentSpanContext?.spanId, + undefined + ); }); it('should instrument execute', () => { @@ -557,7 +584,10 @@ describe('graphql', () => { undefined ); assert.deepStrictEqual(executeSpan.name, 'query'); - assert.deepStrictEqual(executeSpan.parentSpanId, undefined); + assert.deepStrictEqual( + executeSpan.parentSpanContext?.spanId, + undefined + ); }); }); @@ -761,7 +791,10 @@ describe('graphql', () => { const validateSpan = spans[1]; assert.deepStrictEqual(validateSpan.name, SpanNames.VALIDATE); - assert.deepStrictEqual(validateSpan.parentSpanId, undefined); + assert.deepStrictEqual( + validateSpan.parentSpanContext?.spanId, + undefined + ); }); it('should instrument execute', () => { @@ -785,7 +818,10 @@ describe('graphql', () => { undefined ); assert.deepStrictEqual(executeSpan.name, 'query'); - assert.deepStrictEqual(executeSpan.parentSpanId, undefined); + assert.deepStrictEqual( + executeSpan.parentSpanContext?.spanId, + undefined + ); }); it('should instrument resolvers', () => { @@ -854,7 +890,10 @@ describe('graphql', () => { const validateSpan = spans[1]; assert.deepStrictEqual(validateSpan.name, SpanNames.VALIDATE); - assert.deepStrictEqual(validateSpan.parentSpanId, undefined); + assert.deepStrictEqual( + validateSpan.parentSpanContext?.spanId, + undefined + ); }); it('should instrument execute', () => { @@ -881,7 +920,10 @@ describe('graphql', () => { 'AddBook' ); assert.deepStrictEqual(executeSpan.name, 'mutation AddBook'); - assert.deepStrictEqual(executeSpan.parentSpanId, undefined); + assert.deepStrictEqual( + executeSpan.parentSpanContext?.spanId, + undefined + ); }); it('should instrument resolvers', () => { @@ -951,7 +993,10 @@ describe('graphql', () => { const validateSpan = spans[1]; assert.deepStrictEqual(validateSpan.name, SpanNames.VALIDATE); - assert.deepStrictEqual(validateSpan.parentSpanId, undefined); + assert.deepStrictEqual( + validateSpan.parentSpanContext?.spanId, + undefined + ); }); it('should instrument execute', () => { @@ -979,7 +1024,10 @@ describe('graphql', () => { 2 ); assert.deepStrictEqual(executeSpan.name, 'query Query1'); - assert.deepStrictEqual(executeSpan.parentSpanId, undefined); + assert.deepStrictEqual( + executeSpan.parentSpanContext?.spanId, + undefined + ); }); it('should instrument resolvers', () => { @@ -1050,7 +1098,7 @@ describe('graphql', () => { const validateSpan = spans[1]; assert.deepStrictEqual(validateSpan.name, SpanNames.VALIDATE); - assert.deepStrictEqual(validateSpan.parentSpanId, undefined); + assert.deepStrictEqual(validateSpan.parentSpanContext?.spanId, undefined); }); it('should instrument execute', () => { @@ -1077,7 +1125,7 @@ describe('graphql', () => { 'AddBook' ); assert.deepStrictEqual(executeSpan.name, 'mutation AddBook'); - assert.deepStrictEqual(executeSpan.parentSpanId, undefined); + assert.deepStrictEqual(executeSpan.parentSpanContext?.spanId, undefined); }); it('should instrument resolvers', () => { @@ -1175,7 +1223,7 @@ describe('graphql', () => { const validateSpan = spans[1]; assert.deepStrictEqual(validateSpan.name, SpanNames.VALIDATE); - assert.deepStrictEqual(validateSpan.parentSpanId, undefined); + assert.deepStrictEqual(validateSpan.parentSpanContext?.spanId, undefined); const event = validateSpan.events[0]; assert.deepStrictEqual(event.name, 'exception'); @@ -1296,7 +1344,7 @@ describe('graphql', () => { const validateSpan = spans[1]; assert.deepStrictEqual(validateSpan.name, SpanNames.VALIDATE); - assert.deepStrictEqual(validateSpan.parentSpanId, undefined); + assert.deepStrictEqual(validateSpan.parentSpanContext?.spanId, undefined); const event = validateSpan.events[0]; assert.ok(!event); @@ -1319,7 +1367,7 @@ describe('graphql', () => { 'Operation "foo" not supported' ); assert.deepStrictEqual(executeSpan.name, SpanNames.EXECUTE); - assert.deepStrictEqual(executeSpan.parentSpanId, undefined); + assert.deepStrictEqual(executeSpan.parentSpanContext?.spanId, undefined); }); }); diff --git a/plugins/node/opentelemetry-instrumentation-graphql/test/helper.ts b/plugins/node/opentelemetry-instrumentation-graphql/test/helper.ts index 56ebe30fda..b551b3adde 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/test/helper.ts +++ b/plugins/node/opentelemetry-instrumentation-graphql/test/helper.ts @@ -37,6 +37,6 @@ export function assertResolveSpan( assert.deepStrictEqual(attrs[AttributeNames.FIELD_TYPE], fieldType); assert.deepStrictEqual(attrs[AttributeNames.SOURCE], source); if (parentSpanId) { - assert.deepStrictEqual(span.parentSpanId, parentSpanId); + assert.deepStrictEqual(span.parentSpanContext?.spanId, parentSpanId); } } diff --git a/plugins/node/opentelemetry-instrumentation-hapi/package.json b/plugins/node/opentelemetry-instrumentation-hapi/package.json index 09c26a8fa7..86fabc2dbf 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/package.json +++ b/plugins/node/opentelemetry-instrumentation-hapi/package.json @@ -29,7 +29,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -45,21 +45,21 @@ "devDependencies": { "@hapi/hapi": "21.3.12", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "joi": "17.12.2", "nyc": "15.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.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/test/hapi.test.ts b/plugins/node/opentelemetry-instrumentation-hapi/test/hapi.test.ts index e6be869a26..d79199cac9 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/test/hapi.test.ts +++ b/plugins/node/opentelemetry-instrumentation-hapi/test/hapi.test.ts @@ -361,7 +361,7 @@ describe('Hapi Instrumentation - Core Tests', () => { .find(span => span.name === 'handler'); assert.notStrictEqual(routeSpan, undefined); assert.strictEqual( - handlerSpan?.parentSpanId, + handlerSpan?.parentSpanContext?.spanId, routeSpan?.spanContext().spanId ); } diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/package.json b/plugins/node/opentelemetry-instrumentation-ioredis/package.json index e85160aadd..53620556ff 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/package.json +++ b/plugins/node/opentelemetry-instrumentation-ioredis/package.json @@ -33,7 +33,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -48,10 +48,10 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/ioredis4": "npm:@types/ioredis@4.28.10", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -62,10 +62,10 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/semantic-conventions": "^1.27.0" }, diff --git a/plugins/node/opentelemetry-instrumentation-knex/package.json b/plugins/node/opentelemetry-instrumentation-knex/package.json index c0104745ba..662f163735 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/package.json +++ b/plugins/node/opentelemetry-instrumentation-knex/package.json @@ -28,7 +28,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -43,9 +43,9 @@ }, "devDependencies": { "@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", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "better-sqlite3": "11.0.0", @@ -53,10 +53,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sqlite3": "5.1.7", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.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/test/index.test.ts b/plugins/node/opentelemetry-instrumentation-knex/test/index.test.ts index 4b5bd1d8f3..d2109568b7 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/test/index.test.ts +++ b/plugins/node/opentelemetry-instrumentation-knex/test/index.test.ts @@ -624,7 +624,7 @@ const assertSpans = ( ); assert.strictEqual(span.attributes['db.operation'], expected.op); assert.strictEqual( - span.parentSpanId, + span.parentSpanContext?.spanId, expected.parentSpan?.spanContext().spanId ); } catch (e: any) { diff --git a/plugins/node/opentelemetry-instrumentation-koa/package.json b/plugins/node/opentelemetry-instrumentation-koa/package.json index 3bca95101e..30817510e9 100644 --- a/plugins/node/opentelemetry-instrumentation-koa/package.json +++ b/plugins/node/opentelemetry-instrumentation-koa/package.json @@ -31,7 +31,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -47,11 +47,11 @@ "devDependencies": { "@koa/router": "13.1.0", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/instrumentation-http": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/instrumentation-http": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/koa": "2.15.0", "@types/koa__router": "12.0.4", "@types/mocha": "10.0.10", @@ -63,11 +63,11 @@ "semver": "7.7.1", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-koa#readme" diff --git a/plugins/node/opentelemetry-instrumentation-koa/test/koa.test.ts b/plugins/node/opentelemetry-instrumentation-koa/test/koa.test.ts index 06b914e968..b07112d648 100644 --- a/plugins/node/opentelemetry-instrumentation-koa/test/koa.test.ts +++ b/plugins/node/opentelemetry-instrumentation-koa/test/koa.test.ts @@ -436,7 +436,7 @@ describe('Koa Instrumentation', function () { .find(span => span.name === 'foo'); assert.notStrictEqual(fooSpan, undefined); assert.strictEqual( - fooSpan!.parentSpanId, + fooSpan!.parentSpanContext?.spanId, fooParentSpan!.spanContext().spanId ); diff --git a/plugins/node/opentelemetry-instrumentation-memcached/package.json b/plugins/node/opentelemetry-instrumentation-memcached/package.json index 1065ba99c8..2f30d68170 100644 --- a/plugins/node/opentelemetry-instrumentation-memcached/package.json +++ b/plugins/node/opentelemetry-instrumentation-memcached/package.json @@ -29,7 +29,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -44,20 +44,20 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "cross-env": "7.0.3", "memcached": "2.2.2", "nyc": "15.1.0", "rimraf": "5.0.10", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/memcached": "^2.2.6" }, diff --git a/plugins/node/opentelemetry-instrumentation-memcached/test/index.test.ts b/plugins/node/opentelemetry-instrumentation-memcached/test/index.test.ts index 25be005aeb..7a1ae8bdb8 100644 --- a/plugins/node/opentelemetry-instrumentation-memcached/test/index.test.ts +++ b/plugins/node/opentelemetry-instrumentation-memcached/test/index.test.ts @@ -310,7 +310,7 @@ const assertSpans = (actualSpans: any[], expectedSpans: any[]) => { ); assert.strictEqual(span.attributes['db.operation'], expected.op); assert.strictEqual( - span.parentSpanId, + span.parentSpanContext?.spanId, expected.parentSpan?.spanContext().spanId ); } catch (e: any) { diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/package.json b/plugins/node/opentelemetry-instrumentation-mongodb/package.json index f09e8f3b2c..4974143abc 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/package.json +++ b/plugins/node/opentelemetry-instrumentation-mongodb/package.json @@ -37,7 +37,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -52,11 +52,11 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-metrics": "^1.9.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-metrics": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/bson": "4.0.5", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -64,10 +64,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-mongodb#readme" diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts index b627a3d0be..fc389d34da 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts @@ -61,8 +61,8 @@ const DEFAULT_CONFIG: MongoDBInstrumentationConfig = { /** mongodb instrumentation plugin for OpenTelemetry */ export class MongoDBInstrumentation extends InstrumentationBase { - private _connectionsUsage!: UpDownCounter; - private _poolName!: string; + private declare _connectionsUsage: UpDownCounter; + private declare _poolName: string; constructor(config: MongoDBInstrumentationConfig = {}) { super(PACKAGE_NAME, PACKAGE_VERSION, { ...DEFAULT_CONFIG, ...config }); diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/test/mongodb-v3.test.ts b/plugins/node/opentelemetry-instrumentation-mongodb/test/mongodb-v3.test.ts index 7dd910157f..302f9935b0 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/test/mongodb-v3.test.ts +++ b/plugins/node/opentelemetry-instrumentation-mongodb/test/mongodb-v3.test.ts @@ -602,7 +602,7 @@ describe('MongoDBInstrumentation-Tracing-v3', () => { ); assert.strictEqual( mainSpan.spanContext().spanId, - spans2[0].parentSpanId + spans2[0].parentSpanContext?.spanId ); done(); }) diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/test/mongodb-v4.test.ts b/plugins/node/opentelemetry-instrumentation-mongodb/test/mongodb-v4.test.ts index 891fc78969..3ab58101b9 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/test/mongodb-v4.test.ts +++ b/plugins/node/opentelemetry-instrumentation-mongodb/test/mongodb-v4.test.ts @@ -270,7 +270,9 @@ describe('MongoDBInstrumentation-Tracing-v4', () => { roots.forEach(root => { const rootId = root.spanContext().spanId; - const children = spans.filter(s => s.parentSpanId === rootId); + const children = spans.filter( + s => s.parentSpanContext?.spanId === rootId + ); assert.strictEqual(children.length, 1); }); done(); @@ -627,7 +629,7 @@ describe('MongoDBInstrumentation-Tracing-v4', () => { ); assert.strictEqual( mainSpan.spanContext().spanId, - spans2[0].parentSpanId + spans2[0].parentSpanContext?.spanId ); done(); }) diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/test/mongodb-v5-v6.test.ts b/plugins/node/opentelemetry-instrumentation-mongodb/test/mongodb-v5-v6.test.ts index cd12910c58..da4083a179 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/test/mongodb-v5-v6.test.ts +++ b/plugins/node/opentelemetry-instrumentation-mongodb/test/mongodb-v5-v6.test.ts @@ -273,7 +273,9 @@ describe('MongoDBInstrumentation-Tracing-v5', () => { roots.forEach(root => { const rootId = root.spanContext().spanId; - const children = spans.filter(s => s.parentSpanId === rootId); + const children = spans.filter( + s => s.parentSpanContext?.spanId === rootId + ); assert.strictEqual(children.length, 1); }); done(); @@ -640,7 +642,7 @@ describe('MongoDBInstrumentation-Tracing-v5', () => { ); assert.strictEqual( mainSpan.spanContext().spanId, - spans2[0].parentSpanId + spans2[0].parentSpanContext?.spanId ); done(); }) diff --git a/plugins/node/opentelemetry-instrumentation-mysql/package.json b/plugins/node/opentelemetry-instrumentation-mysql/package.json index 9b6f7aa8ee..ae9f5eaa1e 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql/package.json @@ -27,7 +27,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -42,10 +42,10 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-metrics": "^1.8.0", - "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/sdk-metrics": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -53,10 +53,10 @@ "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mysql": "2.15.26" }, diff --git a/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts index 7bf5863fe5..563412e720 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts @@ -55,7 +55,7 @@ export class MySQLInstrumentation extends InstrumentationBase { parentSpanContext?.traceId ); assert.strictEqual( - activeSpan.parentSpanId, + activeSpan.parentSpanContext?.spanId, parentSpanContext?.spanId ); assert.notStrictEqual( diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/package.json b/plugins/node/opentelemetry-instrumentation-mysql2/package.json index df0477e429..14e157c842 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql2/package.json @@ -29,7 +29,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -44,9 +44,9 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/semver": "7.5.8", @@ -55,10 +55,10 @@ "rimraf": "5.0.10", "semver": "7.7.1", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@opentelemetry/sql-common": "^0.40.1" }, diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts b/plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts index b966900521..08626aae05 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts @@ -1240,12 +1240,28 @@ describe('mysql2', () => { } }); - const { MySQL2Instrumentation } = await import('../src'); + // Here we want to dynamically load the instrumentation. + // - `await import('../src')` does not work with tsconfig `moduleResolution: "node16"` + // because relative imports must use a suffix + // - `await import('../src/index.js')` does not work because when running + // the test files from "./test/", instead of from "./build/test/", there + // *isn't* a "index.js" file at that relative path. + // - `await import('../build/src/index.js')` does not work because that + // is a different module, hence mismatched `MySQL2Instrumentation` types. + // We fallback to using `require`. This is what the emitted JS used when + // tsconfig was target=ES2017,module=commonjs. It also matches the + // `require.cache` deletions above. + // + // (IMO, a better solution for a clean test of `mysql2/promise` would + // be to use out-of-process testing as provided by `runTestFixture` in + // contrib-test-utils.) + const { MySQL2Instrumentation } = require('../src'); instrumentation = new MySQL2Instrumentation(); instrumentation.enable(); instrumentation.disable(); - createConnection = (await import('mysql2/promise')).createConnection; + // createConnection = (await import('mysql2/promise')).createConnection; + createConnection = require('mysql2/promise').createConnection; if (!shouldTest) { // this.skip() workaround diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json index b344bab36d..84d3d6139c 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json @@ -30,7 +30,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -48,9 +48,9 @@ "@nestjs/core": "9.4.3", "@nestjs/platform-express": "9.4.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", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/semver": "7.5.8", @@ -62,10 +62,10 @@ "rxjs-compat": "6.6.7", "semver": "7.7.1", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.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/test/index.test.ts b/plugins/node/opentelemetry-instrumentation-nestjs-core/test/index.test.ts index aca1d7b3db..92a546da48 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/test/index.test.ts +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/test/index.test.ts @@ -240,7 +240,7 @@ const assertSpans = (actualSpans: any[], expectedSpans: any[]) => { ); if (typeof expected.parentSpanIdx === 'number') { assert.strictEqual( - span.parentSpanId, + span.parentSpanContext?.spanId, actualSpans[expected.parentSpanIdx].spanContext().spanId ); } else if (typeof expected.parentSpanName === 'string') { @@ -253,18 +253,19 @@ const assertSpans = (actualSpans: any[], expectedSpans: any[]) => { `Cannot find span named ${expected.parentSpanName} expected to be the parent of ${span.name}` ); assert.strictEqual( - span.parentSpanId, + span.parentSpanContext?.spanId, parentSpan.spanContext().spanId, `Expected "${expected.parentSpanName}" to be the parent of "${ span.name }", but found "${ - actualSpans.find(s => s.spanContext().spanId === span.parentSpanId) - .name + actualSpans.find( + s => s.spanContext().spanId === span.parentSpanContext?.spanId + ).name }"` ); } else if (expected.parentSpan !== null) { assert.strictEqual( - span.parentSpanId, + span.parentSpanContext?.spanId, expected.parentSpan?.spanContext().spanId ); } diff --git a/plugins/node/opentelemetry-instrumentation-net/package.json b/plugins/node/opentelemetry-instrumentation-net/package.json index 660268e70c..60ab7599c1 100644 --- a/plugins/node/opentelemetry-instrumentation-net/package.json +++ b/plugins/node/opentelemetry-instrumentation-net/package.json @@ -29,7 +29,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -44,19 +44,19 @@ }, "devDependencies": { "@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", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", "nyc": "15.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.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/test/utils.ts b/plugins/node/opentelemetry-instrumentation-net/test/utils.ts index 7d3651d2df..2a06145276 100644 --- a/plugins/node/opentelemetry-instrumentation-net/test/utils.ts +++ b/plugins/node/opentelemetry-instrumentation-net/test/utils.ts @@ -113,7 +113,10 @@ export function assertParentChild( childSpan.spanContext().traceId, parentSpan.spanContext().traceId ); - assert.strictEqual(childSpan.parentSpanId, parentSpan.spanContext().spanId); + assert.strictEqual( + childSpan.parentSpanContext?.spanId, + parentSpan.spanContext().spanId + ); } export const TLS_SERVER_CERT = fs diff --git a/plugins/node/opentelemetry-instrumentation-pg/package.json b/plugins/node/opentelemetry-instrumentation-pg/package.json index 8739bb7745..b0c2296e00 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/package.json +++ b/plugins/node/opentelemetry-instrumentation-pg/package.json @@ -36,7 +36,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -51,10 +51,10 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -66,11 +66,11 @@ "safe-stable-stringify": "^2.4.1", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/core": "^1.26.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@opentelemetry/sql-common": "^0.40.1", "@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 56029e568e..984da9d60d 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts @@ -75,9 +75,9 @@ function extractModuleExports(module: any) { } export class PgInstrumentation extends InstrumentationBase { - private _operationDuration!: Histogram; - private _connectionsCount!: UpDownCounter; - private _connectionPendingRequests!: UpDownCounter; + private declare _operationDuration: Histogram; + private declare _connectionsCount: UpDownCounter; + private declare _connectionPendingRequests: UpDownCounter; // Pool events connect, acquire, release and remove can be called // multiple times without changing the values of total, idle and waiting // connections. The _connectionsCounter is used to keep track of latest diff --git a/plugins/node/opentelemetry-instrumentation-pg/test/pg-pool.test.ts b/plugins/node/opentelemetry-instrumentation-pg/test/pg-pool.test.ts index f11c5c9873..4e8a257d5c 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/test/pg-pool.test.ts +++ b/plugins/node/opentelemetry-instrumentation-pg/test/pg-pool.test.ts @@ -207,7 +207,7 @@ describe('pg-pool', () => { const [connectSpan, poolConnectSpan] = memoryExporter.getFinishedSpans(); assert.strictEqual( - connectSpan.parentSpanId, + connectSpan.parentSpanContext?.spanId, poolConnectSpan.spanContext().spanId ); diff --git a/plugins/node/opentelemetry-instrumentation-pino/package.json b/plugins/node/opentelemetry-instrumentation-pino/package.json index 5062838732..f6e4ddc9e4 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/package.json +++ b/plugins/node/opentelemetry-instrumentation-pino/package.json @@ -30,7 +30,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -46,8 +46,8 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -59,12 +59,12 @@ "semver": "7.7.1", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/api-logs": "^0.57.2", - "@opentelemetry/core": "^1.25.0", - "@opentelemetry/instrumentation": "^0.57.2" + "@opentelemetry/api-logs": "^0.200.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.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/log-sending-utils.ts b/plugins/node/opentelemetry-instrumentation-pino/src/log-sending-utils.ts index defb8d3685..239b514360 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/src/log-sending-utils.ts +++ b/plugins/node/opentelemetry-instrumentation-pino/src/log-sending-utils.ts @@ -131,10 +131,10 @@ interface OTelPinoStreamOptions { * The event arguments are: `logLine: string`, `err: string | Error`. */ export class OTelPinoStream extends Writable { - private _otelLogger: Logger; - private _messageKey: string; - private _levels; - private _otelTimestampFromTime; + private declare _otelLogger: Logger; + private declare _messageKey: string; + private declare _levels; + private declare _otelTimestampFromTime; constructor(options: OTelPinoStreamOptions) { super(); diff --git a/plugins/node/opentelemetry-instrumentation-pino/test/pino.test.ts b/plugins/node/opentelemetry-instrumentation-pino/test/pino.test.ts index 480a1a31a5..b1b5c975cb 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/test/pino.test.ts +++ b/plugins/node/opentelemetry-instrumentation-pino/test/pino.test.ts @@ -23,7 +23,7 @@ import { INVALID_SPAN_CONTEXT, context, trace, Span } from '@opentelemetry/api'; import { diag, DiagLogLevel } from '@opentelemetry/api'; import { hrTimeToMilliseconds } from '@opentelemetry/core'; import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; -import { Resource } from '@opentelemetry/resources'; +import { resourceFromAttributes } from '@opentelemetry/resources'; import { InMemorySpanExporter, SimpleSpanProcessor, @@ -52,7 +52,7 @@ tracerProvider.register(); const tracer = tracerProvider.getTracer('default'); // Setup LoggerProvider for "log sending" tests. -const resource = new Resource({ +const resource = resourceFromAttributes({ [SEMRESATTRS_SERVICE_NAME]: 'test-instrumentation-pino', }); const loggerProvider = new LoggerProvider({ resource }); diff --git a/plugins/node/opentelemetry-instrumentation-redis-4/package.json b/plugins/node/opentelemetry-instrumentation-redis-4/package.json index bfa8073d48..b91eb5228c 100644 --- a/plugins/node/opentelemetry-instrumentation-redis-4/package.json +++ b/plugins/node/opentelemetry-instrumentation-redis-4/package.json @@ -34,7 +34,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -49,11 +49,11 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "cross-env": "7.0.3", @@ -61,10 +61,10 @@ "redis": "4.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/semantic-conventions": "^1.27.0" }, diff --git a/plugins/node/opentelemetry-instrumentation-redis/package.json b/plugins/node/opentelemetry-instrumentation-redis/package.json index c90eb1521b..18f69d72ee 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/package.json +++ b/plugins/node/opentelemetry-instrumentation-redis/package.json @@ -34,7 +34,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -49,10 +49,10 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/contrib-test-utils": "^0.45.1", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/redis": "2.8.32", @@ -61,10 +61,10 @@ "redis": "3.1.2", "rimraf": "5.0.10", "test-all-versions": "6.1.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/semantic-conventions": "^1.27.0" }, diff --git a/plugins/node/opentelemetry-instrumentation-restify/package.json b/plugins/node/opentelemetry-instrumentation-restify/package.json index 093052d8c0..6a9c8c57ae 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/package.json +++ b/plugins/node/opentelemetry-instrumentation-restify/package.json @@ -29,7 +29,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -44,9 +44,9 @@ }, "devDependencies": { "@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", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/restify": "4.3.12", @@ -56,11 +56,11 @@ "rimraf": "5.0.10", "semver": "7.7.1", "test-all-versions": "^6.0.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.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-router/package.json b/plugins/node/opentelemetry-instrumentation-router/package.json index 21ef8244b4..6e054c075a 100644 --- a/plugins/node/opentelemetry-instrumentation-router/package.json +++ b/plugins/node/opentelemetry-instrumentation-router/package.json @@ -28,7 +28,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -43,18 +43,18 @@ }, "devDependencies": { "@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", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "nyc": "15.1.0", "rimraf": "5.0.10", "router": "1.3.8", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/semantic-conventions": "^1.27.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/test/index.test.ts b/plugins/node/opentelemetry-instrumentation-router/test/index.test.ts index c7ca4d9eb9..3c418e2103 100644 --- a/plugins/node/opentelemetry-instrumentation-router/test/index.test.ts +++ b/plugins/node/opentelemetry-instrumentation-router/test/index.test.ts @@ -249,7 +249,7 @@ describe('Router instrumentation', () => { memoryExporter.getFinishedSpans().forEach((span, idx) => { assert.strictEqual( - span.parentSpanId, + span.parentSpanContext?.spanId, parentSpan.spanContext().spanId, `span[${idx}] has invalid parent` ); diff --git a/plugins/node/opentelemetry-instrumentation-winston/package.json b/plugins/node/opentelemetry-instrumentation-winston/package.json index a18850c7eb..01d39bfde0 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/package.json +++ b/plugins/node/opentelemetry-instrumentation-winston/package.json @@ -33,7 +33,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/src/**/*.js", @@ -48,9 +48,9 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^1.21.0", - "@opentelemetry/sdk-trace-base": "^1.21.0", - "@opentelemetry/sdk-trace-node": "^1.21.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/winston-transport": "^0.10.1", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -60,13 +60,13 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "test-all-versions": "6.1.0", - "typescript": "4.4.4", + "typescript": "5.0.4", "winston": "3.3.3", "winston2": "npm:winston@2.4.7" }, "dependencies": { - "@opentelemetry/api-logs": "^0.57.2", - "@opentelemetry/instrumentation": "^0.57.2" + "@opentelemetry/api-logs": "^0.200.0", + "@opentelemetry/instrumentation": "^0.200.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-winston#readme" } diff --git a/plugins/web/opentelemetry-instrumentation-document-load/package.json b/plugins/web/opentelemetry-instrumentation-document-load/package.json index 1d430a58fd..be44d212d2 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/package.json +++ b/plugins/web/opentelemetry-instrumentation-document-load/package.json @@ -31,7 +31,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/esm/**/*.js", @@ -54,7 +54,7 @@ "@babel/core": "7.22.17", "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/sdk-trace-base": "^1.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@rollup/plugin-commonjs": "^26.0.0", "@rollup/plugin-node-resolve": "^15.2.3", "@types/chai": "^4.3.10", @@ -66,12 +66,12 @@ "@web/test-runner": "^0.18.0", "chai": "^4.3.10", "sinon": "15.2.0", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-web": "^1.15.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-web": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/web/opentelemetry-instrumentation-document-load#readme" 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 017bddc563..fc6fa0f7a0 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/test/documentLoad.test.ts +++ b/plugins/web/opentelemetry-instrumentation-document-load/test/documentLoad.test.ts @@ -19,6 +19,7 @@ import { HrTime, propagation, SpanAttributes, + trace, } from '@opentelemetry/api'; import { W3CTraceContextPropagator, @@ -52,8 +53,7 @@ const spanProcessor = new SimpleSpanProcessor(exporter); const provider = new BasicTracerProvider({ spanProcessors: [spanProcessor], }); - -provider.register(); +trace.setGlobalTracerProvider(provider); const resources = [ { @@ -212,15 +212,24 @@ performance.getEntriesByType; const userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'; -function ensureNetworkEventsExists(events: TimedEvent[]) { - assert.strictEqual(events[0].name, PTN.FETCH_START); - assert.strictEqual(events[1].name, PTN.DOMAIN_LOOKUP_START); - assert.strictEqual(events[2].name, PTN.DOMAIN_LOOKUP_END); - assert.strictEqual(events[3].name, PTN.CONNECT_START); - assert.strictEqual(events[4].name, PTN.CONNECT_END); - assert.strictEqual(events[5].name, PTN.REQUEST_START); - assert.strictEqual(events[6].name, PTN.RESPONSE_START); - assert.strictEqual(events[7].name, PTN.RESPONSE_END); +function ensureNetworkEventsExists( + events: TimedEvent[], + expectSecureConnectionStart = true +) { + const expectedEventNames = [ + PTN.FETCH_START, + PTN.DOMAIN_LOOKUP_START, + PTN.DOMAIN_LOOKUP_END, + PTN.CONNECT_START, + expectSecureConnectionStart ? PTN.SECURE_CONNECTION_START : undefined, + PTN.CONNECT_END, + PTN.REQUEST_START, + PTN.RESPONSE_START, + PTN.RESPONSE_END, + ].filter(n => n); + for (let i = 0; i < events.length; i++) { + assert.strictEqual(events[i].name, expectedEventNames[i]); + } } describe('DocumentLoad Instrumentation', () => { @@ -376,7 +385,7 @@ describe('DocumentLoad Instrumentation', () => { assert.strictEqual(fsEvents[7].name, PTN.LOAD_EVENT_START); assert.strictEqual(fsEvents[8].name, PTN.LOAD_EVENT_END); - assert.strictEqual(rsEvents.length, 8); + assert.strictEqual(rsEvents.length, 9); assert.strictEqual(fsEvents.length, 11); assert.strictEqual(exporter.getFinishedSpans().length, 2); done(); @@ -492,7 +501,7 @@ describe('DocumentLoad Instrumentation', () => { 'http://localhost:8090/bundle.js' ); - ensureNetworkEventsExists(srEvents1); + ensureNetworkEventsExists(srEvents1, false); assert.strictEqual(exporter.getFinishedSpans().length, 3); done(); @@ -556,7 +565,7 @@ describe('DocumentLoad Instrumentation', () => { assert.strictEqual(rootSpan.attributes['http.user_agent'], userAgent); ensureNetworkEventsExists(fsEvents); - assert.strictEqual(fsEvents.length, 8); + assert.strictEqual(fsEvents.length, 9); const rsEventNames = rsEvents.map(e => e.name); // Allow the unloadEvent{Start,End} events to be missing. Tests that diff --git a/plugins/web/opentelemetry-instrumentation-long-task/package.json b/plugins/web/opentelemetry-instrumentation-long-task/package.json index 6c8082fc48..69abf2a494 100644 --- a/plugins/web/opentelemetry-instrumentation-long-task/package.json +++ b/plugins/web/opentelemetry-instrumentation-long-task/package.json @@ -31,7 +31,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/esm/**/*.js", @@ -51,8 +51,8 @@ "@babel/core": "7.24.6", "@babel/preset-env": "7.24.6", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-web": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-web": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -70,15 +70,15 @@ "rimraf": "5.0.10", "sinon": "15.1.2", "ts-loader": "9.5.2", - "typescript": "4.4.4", + "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0", "zone.js": "^0.11.4 || ^0.13.0 || ^0.14.0 || ^0.15.0" }, "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/package.json b/plugins/web/opentelemetry-instrumentation-user-interaction/package.json index 845ff4e603..123eac7177 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/package.json +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/package.json @@ -31,7 +31,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/esm/**/*.js", @@ -51,9 +51,9 @@ "@babel/core": "7.24.6", "@babel/preset-env": "7.24.6", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-zone-peer-dep": "^1.8.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/context-zone-peer-dep": "^2.0.0", + "@opentelemetry/instrumentation-xml-http-request": "^0.200.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/jquery": "3.5.32", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -72,16 +72,16 @@ "nyc": "15.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", - "typescript": "4.4.4", + "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0", "zone.js": "^0.11.4 || ^0.13.0 || ^0.14.0 || ^0.15.0" }, "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-web": "^1.8.0" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-web": "^2.0.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0", diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/src/instrumentation.ts b/plugins/web/opentelemetry-instrumentation-user-interaction/src/instrumentation.ts index 6216be899a..599e1695db 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/src/instrumentation.ts +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/src/instrumentation.ts @@ -54,7 +54,7 @@ export class UserInteractionInstrumentation extends InstrumentationBase(); - private _zonePatched?: boolean; + private declare _zonePatched?: boolean; // for addEventListener/removeEventListener state private _wrappedListeners = new WeakMap< Function | EventListenerObject, diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/test/userInteraction.nozone.test.ts b/plugins/web/opentelemetry-instrumentation-user-interaction/test/userInteraction.nozone.test.ts index 69c566a48c..2735d09c03 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/test/userInteraction.nozone.test.ts +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/test/userInteraction.nozone.test.ts @@ -296,7 +296,7 @@ describe('UserInteractionInstrumentation', () => { const spanXhr: tracing.ReadableSpan = exportSpy.args[0][0][0]; const spanClick: tracing.ReadableSpan = exportSpy.args[1][0][0]; assert.equal( - spanXhr.parentSpanId, + spanXhr.parentSpanContext?.spanId, spanClick.spanContext().spanId, 'xhr span has wrong parent' ); @@ -327,7 +327,7 @@ describe('UserInteractionInstrumentation', () => { const spanXhr: tracing.ReadableSpan = exportSpy.args[0][0][0]; const spanClick: tracing.ReadableSpan = exportSpy.args[1][0][0]; assert.equal( - spanXhr.parentSpanId, + spanXhr.parentSpanContext?.spanId, spanClick.spanContext().spanId, 'xhr span has wrong parent' ); @@ -372,7 +372,7 @@ describe('UserInteractionInstrumentation', () => { ); assert.strictEqual( exportSpy.args[0][0][0].spanId, - exportSpy.args[1][0][0].spanContext().parentSpanId + exportSpy.args[1][0][0].spanContext().parentSpanContext?.spanId ); }); @@ -415,17 +415,17 @@ describe('UserInteractionInstrumentation', () => { assert.strictEqual( span1.spanContext().spanId, - span4.parentSpanId, + span4.parentSpanContext?.spanId, 'span4 has wrong parent' ); assert.strictEqual( span2.spanContext().spanId, - span5.parentSpanId, + span5.parentSpanContext?.spanId, 'span5 has wrong parent' ); assert.strictEqual( span3.spanContext().spanId, - span6.parentSpanId, + span6.parentSpanContext?.spanId, 'span6 has wrong parent' ); @@ -480,12 +480,12 @@ describe('UserInteractionInstrumentation', () => { assert.strictEqual( span1.spanContext().spanId, - span3.parentSpanId, + span3.parentSpanContext?.spanId, 'span3 has wrong parent' ); assert.strictEqual( span2.spanContext().spanId, - span4.parentSpanId, + span4.parentSpanContext?.spanId, 'span4 has wrong parent' ); @@ -551,12 +551,12 @@ describe('UserInteractionInstrumentation', () => { assert.strictEqual( span1.spanContext().spanId, - span3.parentSpanId, + span3.parentSpanContext?.spanId, 'span3 has wrong parent' ); assert.strictEqual( span2.spanContext().spanId, - span4.parentSpanId, + span4.parentSpanContext?.spanId, 'span4 has wrong parent' ); diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/test/userInteraction.test.ts b/plugins/web/opentelemetry-instrumentation-user-interaction/test/userInteraction.test.ts index 46b9f52daf..b416007e7e 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/test/userInteraction.test.ts +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/test/userInteraction.test.ts @@ -176,7 +176,7 @@ describe('UserInteractionInstrumentation', () => { const spanXhr: tracing.ReadableSpan = exportSpy.args[0][0][0]; const spanClick: tracing.ReadableSpan = exportSpy.args[1][0][0]; assert.equal( - spanXhr.parentSpanId, + spanXhr.parentSpanContext?.spanId, spanClick.spanContext().spanId, 'xhr span has wrong parent' ); @@ -207,7 +207,7 @@ describe('UserInteractionInstrumentation', () => { const spanXhr: tracing.ReadableSpan = exportSpy.args[0][0][0]; const spanClick: tracing.ReadableSpan = exportSpy.args[1][0][0]; assert.equal( - spanXhr.parentSpanId, + spanXhr.parentSpanContext?.spanId, spanClick.spanContext().spanId, 'xhr span has wrong parent' ); @@ -400,17 +400,17 @@ describe('UserInteractionInstrumentation', () => { assert.strictEqual( span1.spanContext().spanId, - span4.parentSpanId, + span4.parentSpanContext?.spanId, 'span4 has wrong parent' ); assert.strictEqual( span2.spanContext().spanId, - span5.parentSpanId, + span5.parentSpanContext?.spanId, 'span5 has wrong parent' ); assert.strictEqual( span3.spanContext().spanId, - span6.parentSpanId, + span6.parentSpanContext?.spanId, 'span6 has wrong parent' ); @@ -465,12 +465,12 @@ describe('UserInteractionInstrumentation', () => { assert.strictEqual( span1.spanContext().spanId, - span3.parentSpanId, + span3.parentSpanContext?.spanId, 'span3 has wrong parent' ); assert.strictEqual( span2.spanContext().spanId, - span4.parentSpanId, + span4.parentSpanContext?.spanId, 'span4 has wrong parent' ); @@ -521,12 +521,12 @@ describe('UserInteractionInstrumentation', () => { assert.strictEqual( span1.spanContext().spanId, - span3.parentSpanId, + span3.parentSpanContext?.spanId, 'span3 has wrong parent' ); assert.strictEqual( span2.spanContext().spanId, - span4.parentSpanId, + span4.parentSpanContext?.spanId, 'span4 has wrong parent' ); diff --git a/plugins/web/opentelemetry-plugin-react-load/package.json b/plugins/web/opentelemetry-plugin-react-load/package.json index 1f2474f28c..054cc99671 100644 --- a/plugins/web/opentelemetry-plugin-react-load/package.json +++ b/plugins/web/opentelemetry-plugin-react-load/package.json @@ -31,7 +31,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/esm/**/*.js", @@ -51,14 +51,14 @@ "@babel/core": "7.24.6", "@babel/preset-env": "7.24.6", "@opentelemetry/api": "^1.0.0", - "@opentelemetry/propagator-b3": "^1.26.0", - "@opentelemetry/sdk-trace-base": "^1.0.0", - "@opentelemetry/sdk-trace-web": "^1.0.0", + "@opentelemetry/propagator-b3": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-web": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/react": "17.0.83", "@types/react-addons-test-utils": "0.14.26", - "@types/react-dom": "18.0.2", + "@types/react-dom": "17.0.26", "@types/shimmer": "1.0.3", "@types/sinon": "17.0.4", "@types/webpack-env": "1.16.3", @@ -77,7 +77,7 @@ "rimraf": "5.0.10", "sinon": "15.1.2", "ts-loader": "9.5.2", - "typescript": "4.4.4", + "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" @@ -87,7 +87,7 @@ "react": "^16.13.1 || ^17.0.0" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0", "shimmer": "^1.2.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/web/opentelemetry-plugin-react-load#readme" diff --git a/plugins/web/opentelemetry-plugin-react-load/test/BaseOpenTelemetryComponent.test.ts b/plugins/web/opentelemetry-plugin-react-load/test/BaseOpenTelemetryComponent.test.ts index 133af7749f..bb286797b3 100644 --- a/plugins/web/opentelemetry-plugin-react-load/test/BaseOpenTelemetryComponent.test.ts +++ b/plugins/web/opentelemetry-plugin-react-load/test/BaseOpenTelemetryComponent.test.ts @@ -297,17 +297,17 @@ describe('ReactLoad Instrumentation', () => { const mountingSpan: ReadableSpan = exportSpy.args[2][0][0]; assert.equal( - mountingSpan.parentSpanId, + mountingSpan.parentSpanContext?.spanId, undefined, 'mounting span is should not have a parent' ); assert.equal( - renderSpan.parentSpanId, + renderSpan.parentSpanContext?.spanId, mountingSpan.spanContext().spanId, 'render span is not a child of the mounting span' ); assert.equal( - componentDidMountSpan.parentSpanId, + componentDidMountSpan.parentSpanContext?.spanId, mountingSpan.spanContext().spanId, 'componentDidMount span is not a child of the mounting span' ); @@ -374,32 +374,32 @@ describe('ReactLoad Instrumentation', () => { const updatingSpan: ReadableSpan = exportSpy.args[8][0][0]; assert.equal( - updatingSpan.parentSpanId, + updatingSpan.parentSpanContext?.spanId, undefined, 'updating span is should not have a parent' ); assert.equal( - setStateSpan.parentSpanId, + setStateSpan.parentSpanContext?.spanId, updatingSpan.spanContext().spanId, 'setState span is not a child of the updating span' ); assert.equal( - shouldComponentUpdateSpan.parentSpanId, + shouldComponentUpdateSpan.parentSpanContext?.spanId, updatingSpan.spanContext().spanId, 'shouldComponentUpdate span is not a child of the updating span' ); assert.equal( - renderSpan.parentSpanId, + renderSpan.parentSpanContext?.spanId, updatingSpan.spanContext().spanId, 'render span is not a child of the updating span' ); assert.equal( - getSnapshotBeforeUpdateSpan.parentSpanId, + getSnapshotBeforeUpdateSpan.parentSpanContext?.spanId, updatingSpan.spanContext().spanId, 'getSnapshotBeforeUpdate span is not a child of the updating span' ); assert.equal( - componentDidUpdateSpan.parentSpanId, + componentDidUpdateSpan.parentSpanContext?.spanId, updatingSpan.spanContext().spanId, 'componentDidUpdate span is not a child of the updating span' ); @@ -484,27 +484,27 @@ describe('ReactLoad Instrumentation', () => { const updatingSpan: ReadableSpan = exportSpy.args[7][0][0]; assert.equal( - updatingSpan.parentSpanId, + updatingSpan.parentSpanContext?.spanId, undefined, 'updating span is should not have a parent' ); assert.equal( - forceUpdateSpan.parentSpanId, + forceUpdateSpan.parentSpanContext?.spanId, updatingSpan.spanContext().spanId, 'forceUpdate span is not a child of the updating span' ); assert.equal( - renderSpan.parentSpanId, + renderSpan.parentSpanContext?.spanId, updatingSpan.spanContext().spanId, 'render span is not a child of the updating span' ); assert.equal( - getSnapshotBeforeUpdateSpan.parentSpanId, + getSnapshotBeforeUpdateSpan.parentSpanContext?.spanId, updatingSpan.spanContext().spanId, 'getSnapshotBeforeUpdate span is not a child of the updating span' ); assert.equal( - componentDidUpdateSpan.parentSpanId, + componentDidUpdateSpan.parentSpanContext?.spanId, updatingSpan.spanContext().spanId, 'componentDidUpdate span is not a child of the updating span' ); @@ -579,12 +579,12 @@ describe('ReactLoad Instrumentation', () => { const unmountingSpan: ReadableSpan = exportSpy.args[4][0][0]; assert.equal( - unmountingSpan.parentSpanId, + unmountingSpan.parentSpanContext?.spanId, undefined, 'unmounting span is should not have a parent' ); assert.equal( - componentWillUnmountSpan.parentSpanId, + componentWillUnmountSpan.parentSpanContext?.spanId, unmountingSpan.spanContext().spanId, 'componentWillUnmount span is not a child of the unmounting span' ); @@ -651,17 +651,17 @@ describe('ReactLoad Instrumentation', () => { const updatingSpan: ReadableSpan = exportSpy.args[5][0][0]; assert.equal( - updatingSpan.parentSpanId, + updatingSpan.parentSpanContext?.spanId, undefined, 'updating span is should not have a parent' ); assert.equal( - setStateSpan.parentSpanId, + setStateSpan.parentSpanContext?.spanId, updatingSpan.spanContext().spanId, 'setState span is not a child of the updating span' ); assert.equal( - shouldComponentUpdateSpan.parentSpanId, + shouldComponentUpdateSpan.parentSpanContext?.spanId, updatingSpan.spanContext().spanId, 'shouldComponentUpdate span is not a child of the updating span' ); diff --git a/propagators/opentelemetry-propagator-instana/package.json b/propagators/opentelemetry-propagator-instana/package.json index e18ec7d1eb..042e0cf095 100644 --- a/propagators/opentelemetry-propagator-instana/package.json +++ b/propagators/opentelemetry-propagator-instana/package.json @@ -29,7 +29,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=8.12.0" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/esm/**/*.js", @@ -65,7 +65,7 @@ "nyc": "15.1.0", "process": "0.11.10", "ts-loader": "9.5.2", - "typescript": "4.4.4", + "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" diff --git a/propagators/opentelemetry-propagator-ot-trace/package.json b/propagators/opentelemetry-propagator-ot-trace/package.json index 4d26c386ef..743afba957 100644 --- a/propagators/opentelemetry-propagator-ot-trace/package.json +++ b/propagators/opentelemetry-propagator-ot-trace/package.json @@ -29,7 +29,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/esm/**/*.js", @@ -65,7 +65,7 @@ "nyc": "15.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", - "typescript": "4.4.4", + "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" diff --git a/propagators/propagator-aws-xray-lambda/package.json b/propagators/propagator-aws-xray-lambda/package.json index d4868aa9f1..f13619e432 100644 --- a/propagators/propagator-aws-xray-lambda/package.json +++ b/propagators/propagator-aws-xray-lambda/package.json @@ -26,7 +26,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/esm/**/*.js", @@ -47,7 +47,7 @@ "@babel/preset-env": "7.24.6", "@opentelemetry/api": "1.9.0", "@types/mocha": "10.0.10", - "@types/node": "18.6.5", + "@types/node": "^18.18.14", "@types/sinon": "17.0.4", "babel-loader": "8.3.0", "babel-plugin-istanbul": "7.0.0", @@ -55,7 +55,7 @@ "nyc": "15.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", - "typescript": "4.4.4" + "typescript": "5.0.4" }, "dependencies": { "@opentelemetry/propagator-aws-xray": "^1.26.2" diff --git a/propagators/propagator-aws-xray/package.json b/propagators/propagator-aws-xray/package.json index a8fab05432..cd79ed14d0 100644 --- a/propagators/propagator-aws-xray/package.json +++ b/propagators/propagator-aws-xray/package.json @@ -32,7 +32,7 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "files": [ "build/esm/**/*.js", @@ -55,9 +55,9 @@ }, "devDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0", - "@opentelemetry/core": "^1.0.0", + "@opentelemetry/core": "^2.0.0", "@types/mocha": "10.0.10", - "@types/node": "18.6.5", + "@types/node": "^18.18.14", "@types/sinon": "17.0.4", "@types/webpack-env": "1.16.3", "babel-loader": "8.3.0", @@ -71,7 +71,7 @@ "lerna": "6.6.2", "nyc": "15.1.0", "ts-loader": "9.5.2", - "typescript": "4.4.4", + "typescript": "5.0.4", "webpack": "5.95.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" diff --git a/tsconfig.base.es5.json b/tsconfig.base.es5.json deleted file mode 100644 index 3c83c51a2b..0000000000 --- a/tsconfig.base.es5.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "./tsconfig.base.json", - "compilerOptions": { - "target": "es5" - } -} diff --git a/tsconfig.base.esm.json b/tsconfig.base.esm.json index d63786958e..9c7b731ea8 100644 --- a/tsconfig.base.esm.json +++ b/tsconfig.base.esm.json @@ -1,7 +1,7 @@ { - "extends": "./tsconfig.base.es5.json", + "extends": "./tsconfig.base.json", "compilerOptions": { - "module": "ES6", - "moduleResolution": "node" + "module": "es2022", + "moduleResolution": "node16" } } diff --git a/tsconfig.base.esnext.json b/tsconfig.base.esnext.json index 7875da812e..e09bbfd983 100644 --- a/tsconfig.base.esnext.json +++ b/tsconfig.base.esnext.json @@ -3,7 +3,7 @@ "compilerOptions": { "module": "esnext", // target should be aligned with tsconfig.base.json - "target": "es2017", - "moduleResolution": "node" + "target": "es2022", + "moduleResolution": "node16" }, } diff --git a/tsconfig.base.json b/tsconfig.base.json index 83c35af078..e70510bbb7 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -4,9 +4,13 @@ "allowUnusedLabels": false, "declaration": true, "declarationMap": true, + "esModuleInterop": false, "forceConsistentCasingInFileNames": true, + "incremental": true, "inlineSources": true, - "module": "commonjs", + "module": "node16", + "moduleResolution": "node16", + "newLine": "LF", "noEmitOnError": true, "noFallthroughCasesInSwitch": true, "noImplicitOverride": true, @@ -16,9 +20,7 @@ "sourceMap": true, "strict": true, "strictNullChecks": true, - "target": "es2017", - "incremental": true, - "newLine": "LF" + "target": "es2022" }, "exclude": [ "node_modules"