diff --git a/.github/component_owners.yml b/.github/component_owners.yml index ddbde76e17..f04e7f2001 100644 --- a/.github/component_owners.yml +++ b/.github/component_owners.yml @@ -109,7 +109,8 @@ components: plugins/node/opentelemetry-instrumentation-winston: - seemk plugins/web/opentelemetry-instrumentation-document-load: - - obecny + - pkanal + - martinkuba plugins/web/opentelemetry-instrumentation-long-task: - mhennoch - t2t2 diff --git a/archive/opentelemetry-browser-extension-autoinjection/package.json b/archive/opentelemetry-browser-extension-autoinjection/package.json index 1efd629ff2..e6037e840a 100644 --- a/archive/opentelemetry-browser-extension-autoinjection/package.json +++ b/archive/opentelemetry-browser-extension-autoinjection/package.json @@ -80,7 +80,8 @@ "change-case": "4.1.2", "json5": "2.2.0", "react": "17.0.2", - "react-dom": "17.0.2" + "react-dom": "17.0.2", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/opentelemetry-browser-extension-autoinjection#readme" } diff --git a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/package.json b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/package.json index ff5acc6b07..66585dcf06 100644 --- a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/package.json +++ b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/package.json @@ -60,7 +60,8 @@ }, "dependencies": { "@opentelemetry/resources": "^1.0.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.0.0", + "tslib": "^2.3.1" }, "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-aws/package.json b/detectors/node/opentelemetry-resource-detector-aws/package.json index d4d833de96..dae53b7b63 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/package.json +++ b/detectors/node/opentelemetry-resource-detector-aws/package.json @@ -60,7 +60,8 @@ "dependencies": { "@opentelemetry/core": "^1.0.0", "@opentelemetry/resources": "^1.0.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.0.0", + "tslib": "^2.3.1" }, "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/AwsEcsDetector.ts b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEcsDetector.ts index dc295f532a..700d41057e 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEcsDetector.ts +++ b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEcsDetector.ts @@ -15,7 +15,11 @@ */ import { diag } from '@opentelemetry/api'; -import { Detector, Resource } from '@opentelemetry/resources'; +import { + Detector, + Resource, + ResourceAttributes, +} from '@opentelemetry/resources'; import { CloudProviderValues, CloudPlatformValues, @@ -128,14 +132,19 @@ export class AwsEcsDetector implements Detector { 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/opentelemetry-specification/blob/main/semantic_conventions/resource/cloud_provider/aws/ecs.yaml - return new Resource({ + // https://github.com/open-telemetry/semantic-conventions/blob/main/semantic_conventions/resource/cloud_provider/aws/ecs.yaml + const attributes: ResourceAttributes = { [SemanticResourceAttributes.AWS_ECS_CONTAINER_ARN]: containerArn, [SemanticResourceAttributes.AWS_ECS_CLUSTER_ARN]: clusterArn, [SemanticResourceAttributes.AWS_ECS_LAUNCHTYPE]: @@ -144,7 +153,18 @@ export class AwsEcsDetector implements Detector { [SemanticResourceAttributes.AWS_ECS_TASK_FAMILY]: taskMetadata['Family'], [SemanticResourceAttributes.AWS_ECS_TASK_REVISION]: taskMetadata['Revision'], - }); + + [SemanticResourceAttributes.CLOUD_ACCOUNT_ID]: accountId, + [SemanticResourceAttributes.CLOUD_REGION]: region, + }; + + // The availability zone is not available in all Fargate runtimes + if (availabilityZone) { + attributes[SemanticResourceAttributes.CLOUD_AVAILABILITY_ZONE] = + availabilityZone; + } + + return new Resource(attributes); } private static async _getLogResource( 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 b1f7b58a18..4a869a9879 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 @@ -37,6 +37,9 @@ 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'; @@ -55,6 +58,9 @@ const assertEcsResource = ( ) => { assertCloudResource(resource, { provider: CloudProviderValues.AWS, + accountId: validations.accountId, + region: validations.region, + zone: validations.zone, }); assert.strictEqual( resource.attributes[SemanticResourceAttributes.CLOUD_PLATFORM], @@ -336,6 +342,9 @@ describe('AwsEcsResourceDetector', () => { 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', diff --git a/detectors/node/opentelemetry-resource-detector-container/package.json b/detectors/node/opentelemetry-resource-detector-container/package.json index 04e3b41a4f..b5fc5e7357 100644 --- a/detectors/node/opentelemetry-resource-detector-container/package.json +++ b/detectors/node/opentelemetry-resource-detector-container/package.json @@ -54,7 +54,8 @@ }, "dependencies": { "@opentelemetry/resources": "^1.0.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.0.0", + "tslib": "^2.3.1" }, "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-gcp/package.json b/detectors/node/opentelemetry-resource-detector-gcp/package.json index d18c69580b..a0de2cef03 100644 --- a/detectors/node/opentelemetry-resource-detector-gcp/package.json +++ b/detectors/node/opentelemetry-resource-detector-gcp/package.json @@ -60,7 +60,8 @@ "@opentelemetry/core": "^1.0.0", "@opentelemetry/resources": "^1.0.0", "@opentelemetry/semantic-conventions": "^1.0.0", - "gcp-metadata": "^5.0.0" + "gcp-metadata": "^5.0.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/detectors/node/opentelemetry-resource-detector-gcp#readme" } diff --git a/detectors/node/opentelemetry-resource-detector-github/package.json b/detectors/node/opentelemetry-resource-detector-github/package.json index 9977b32bd8..841c90fab3 100644 --- a/detectors/node/opentelemetry-resource-detector-github/package.json +++ b/detectors/node/opentelemetry-resource-detector-github/package.json @@ -57,7 +57,8 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/resources": "^1.0.0" + "@opentelemetry/resources": "^1.0.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/detectors/node/opentelemetry-resource-detector-github#readme" } diff --git a/detectors/node/opentelemetry-resource-detector-instana/package.json b/detectors/node/opentelemetry-resource-detector-instana/package.json index 3cc026045c..4a0963bd7b 100644 --- a/detectors/node/opentelemetry-resource-detector-instana/package.json +++ b/detectors/node/opentelemetry-resource-detector-instana/package.json @@ -54,7 +54,8 @@ }, "dependencies": { "@opentelemetry/resources": "^1.0.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.0.0", + "tslib": "^2.3.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" diff --git a/metapackages/auto-instrumentations-node/package.json b/metapackages/auto-instrumentations-node/package.json index 0110a6e249..95bdd589d9 100644 --- a/metapackages/auto-instrumentations-node/package.json +++ b/metapackages/auto-instrumentations-node/package.json @@ -91,6 +91,7 @@ "@opentelemetry/resource-detector-container": "^0.2.5", "@opentelemetry/resource-detector-gcp": "^0.28.3", "@opentelemetry/resources": "^1.12.0", - "@opentelemetry/sdk-node": "^0.40.0" + "@opentelemetry/sdk-node": "^0.40.0", + "tslib": "^2.3.1" } } diff --git a/metapackages/auto-instrumentations-web/package.json b/metapackages/auto-instrumentations-web/package.json index 8ef0d4046c..5fd9c2964b 100644 --- a/metapackages/auto-instrumentations-web/package.json +++ b/metapackages/auto-instrumentations-web/package.json @@ -63,6 +63,7 @@ "@opentelemetry/instrumentation-document-load": "^0.32.3", "@opentelemetry/instrumentation-fetch": "^0.40.0", "@opentelemetry/instrumentation-user-interaction": "^0.32.4", - "@opentelemetry/instrumentation-xml-http-request": "^0.40.0" + "@opentelemetry/instrumentation-xml-http-request": "^0.40.0", + "tslib": "^2.3.1" } } diff --git a/package.json b/package.json index 24049e1ff7..4cb48e1ea4 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,8 @@ "lerna": "5.5.2", "lerna-changelog": "2.2.0", "prettier": "2.8.7", - "typescript": "4.4.4" + "typescript": "4.4.4", + "tslib": "^2.3.1" }, "changelog": { "labels": { diff --git a/packages/opentelemetry-host-metrics/package.json b/packages/opentelemetry-host-metrics/package.json index 9f13f4b666..d5ba9f3475 100644 --- a/packages/opentelemetry-host-metrics/package.json +++ b/packages/opentelemetry-host-metrics/package.json @@ -59,7 +59,8 @@ }, "dependencies": { "@opentelemetry/sdk-metrics": "^1.8.0", - "systeminformation": "^5.0.0" + "systeminformation": "^5.0.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/opentelemetry-host-metrics#readme" } diff --git a/packages/opentelemetry-id-generator-aws-xray/package.json b/packages/opentelemetry-id-generator-aws-xray/package.json index eb92b38a14..8f84ed2ca9 100644 --- a/packages/opentelemetry-id-generator-aws-xray/package.json +++ b/packages/opentelemetry-id-generator-aws-xray/package.json @@ -76,7 +76,8 @@ "webpack": "4.46.0" }, "dependencies": { - "@opentelemetry/core": "^1.0.0" + "@opentelemetry/core": "^1.0.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/opentelemetry-id-generator-aws-xray#readme" } diff --git a/packages/opentelemetry-propagation-utils/package.json b/packages/opentelemetry-propagation-utils/package.json index 3fbc9b994d..8a442fc0ec 100644 --- a/packages/opentelemetry-propagation-utils/package.json +++ b/packages/opentelemetry-propagation-utils/package.json @@ -55,5 +55,8 @@ "sinon": "15.0.1", "ts-mocha": "10.0.0", "typescript": "4.4.4" + }, + "dependencies": { + "tslib": "^2.3.1" } } diff --git a/packages/opentelemetry-redis-common/package.json b/packages/opentelemetry-redis-common/package.json index 62bde4fd0f..51604ed210 100644 --- a/packages/opentelemetry-redis-common/package.json +++ b/packages/opentelemetry-redis-common/package.json @@ -45,5 +45,8 @@ "nyc": "15.1.0", "ts-mocha": "10.0.0", "typescript": "4.4.4" + }, + "dependencies": { + "tslib": "^2.3.1" } } diff --git a/packages/opentelemetry-sampler-aws-xray/package.json b/packages/opentelemetry-sampler-aws-xray/package.json index f28f1e3332..0f1a62c51e 100644 --- a/packages/opentelemetry-sampler-aws-xray/package.json +++ b/packages/opentelemetry-sampler-aws-xray/package.json @@ -47,7 +47,8 @@ "@opentelemetry/core": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", - "axios": "^1.3.5" + "axios": "^1.3.5", + "tslib": "^2.3.1" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", diff --git a/packages/opentelemetry-test-utils/package.json b/packages/opentelemetry-test-utils/package.json index 8df382fa22..78f1e3af11 100644 --- a/packages/opentelemetry-test-utils/package.json +++ b/packages/opentelemetry-test-utils/package.json @@ -52,6 +52,7 @@ "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/resources": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.0.0", + "tslib": "^2.3.1" } } diff --git a/plugins/node/instrumentation-amqplib/package.json b/plugins/node/instrumentation-amqplib/package.json index 3b41fd075b..9c0cfa10b7 100644 --- a/plugins/node/instrumentation-amqplib/package.json +++ b/plugins/node/instrumentation-amqplib/package.json @@ -48,7 +48,8 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.40.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.0.0", + "tslib": "^2.3.1" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", diff --git a/plugins/node/instrumentation-dataloader/package.json b/plugins/node/instrumentation-dataloader/package.json index 8d543e2af7..e270e078b8 100644 --- a/plugins/node/instrumentation-dataloader/package.json +++ b/plugins/node/instrumentation-dataloader/package.json @@ -61,7 +61,8 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.40.0" + "@opentelemetry/instrumentation": "^0.40.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-dataloader#readme" } diff --git a/plugins/node/instrumentation-fs/package.json b/plugins/node/instrumentation-fs/package.json index a30c9732a1..19422a709e 100644 --- a/plugins/node/instrumentation-fs/package.json +++ b/plugins/node/instrumentation-fs/package.json @@ -60,7 +60,8 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.40.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.0.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-fs#readme" } diff --git a/plugins/node/instrumentation-lru-memoizer/package.json b/plugins/node/instrumentation-lru-memoizer/package.json index 893affaa3c..6c569adef1 100644 --- a/plugins/node/instrumentation-lru-memoizer/package.json +++ b/plugins/node/instrumentation-lru-memoizer/package.json @@ -57,7 +57,8 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.40.0" + "@opentelemetry/instrumentation": "^0.40.0", + "tslib": "^2.3.1" }, "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 21d64646f5..9f7c59633f 100644 --- a/plugins/node/instrumentation-mongoose/package.json +++ b/plugins/node/instrumentation-mongoose/package.json @@ -62,7 +62,8 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.40.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.0.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-mongoose#readme" } diff --git a/plugins/node/instrumentation-socket.io/package.json b/plugins/node/instrumentation-socket.io/package.json index fca039149e..17fc26680f 100644 --- a/plugins/node/instrumentation-socket.io/package.json +++ b/plugins/node/instrumentation-socket.io/package.json @@ -59,7 +59,8 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.40.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.0.0", + "tslib": "^2.3.1" }, "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 dd3677ddc1..cf51a7691a 100644 --- a/plugins/node/instrumentation-tedious/package.json +++ b/plugins/node/instrumentation-tedious/package.json @@ -64,7 +64,8 @@ "dependencies": { "@opentelemetry/instrumentation": "^0.40.0", "@opentelemetry/semantic-conventions": "^1.0.0", - "@types/tedious": "^4.0.6" + "@types/tedious": "^4.0.6", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-tedious#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json b/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json index adfcd53935..55fd53b17e 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json @@ -63,7 +63,8 @@ "@opentelemetry/propagator-aws-xray": "^1.2.1", "@opentelemetry/resources": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", - "@types/aws-lambda": "8.10.81" + "@types/aws-lambda": "8.10.81", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-aws-lambda#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json b/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json index 1696b7211d..2ed8a50c6c 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json @@ -49,7 +49,8 @@ "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.40.0", "@opentelemetry/semantic-conventions": "^1.0.0", - "@opentelemetry/propagation-utils": "^0.29.5" + "@opentelemetry/propagation-utils": "^0.29.5", + "tslib": "^2.3.1" }, "devDependencies": { "@aws-sdk/client-dynamodb": "3.85.0", diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/dynamodb.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/dynamodb.ts index dd797b5af7..424cab5fa4 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/dynamodb.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/dynamodb.ts @@ -26,6 +26,10 @@ import { } from '../types'; export class DynamodbServiceExtension implements ServiceExtension { + toArray(values: T | T[]): T[] { + return Array.isArray(values) ? values : [values]; + } + requestPreSpanHook(normalizedRequest: NormalizedRequest): RequestMetadata { const spanKind: SpanKind = SpanKind.CLIENT; let spanName: string | undefined; @@ -41,12 +45,144 @@ export class DynamodbServiceExtension implements ServiceExtension { ), }; - if (operation === 'BatchGetItem') { + // normalizedRequest.commandInput.RequestItems) is undefined when no table names are returned + // keys in this object are the table names + if (normalizedRequest.commandInput?.TableName) { + // Necessary for commands with only 1 table name (example: CreateTable). Attribute is TableName not keys of RequestItems + // single table name returned for operations like CreateTable + spanAttributes[SemanticAttributes.AWS_DYNAMODB_TABLE_NAMES] = [ + normalizedRequest.commandInput.TableName, + ]; + } else if (normalizedRequest.commandInput?.RequestItems) { spanAttributes[SemanticAttributes.AWS_DYNAMODB_TABLE_NAMES] = Object.keys( normalizedRequest.commandInput.RequestItems ); } + if (operation === 'CreateTable' || operation === 'UpdateTable') { + // only check for ProvisionedThroughput since ReadCapacityUnits and WriteCapacity units are required attributes + if (normalizedRequest.commandInput?.ProvisionedThroughput) { + spanAttributes[ + SemanticAttributes.AWS_DYNAMODB_PROVISIONED_READ_CAPACITY + ] = + normalizedRequest.commandInput.ProvisionedThroughput.ReadCapacityUnits; + spanAttributes[ + SemanticAttributes.AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY + ] = + normalizedRequest.commandInput.ProvisionedThroughput.WriteCapacityUnits; + } + } + + if ( + operation === 'GetItem' || + operation === 'Scan' || + operation === 'Query' + ) { + if (normalizedRequest.commandInput?.ConsistentRead) { + spanAttributes[SemanticAttributes.AWS_DYNAMODB_CONSISTENT_READ] = + normalizedRequest.commandInput.ConsistentRead; + } + } + + if (operation === 'Query' || operation === 'Scan') { + if (normalizedRequest.commandInput?.ProjectionExpression) { + spanAttributes[SemanticAttributes.AWS_DYNAMODB_PROJECTION] = + normalizedRequest.commandInput.ProjectionExpression; + } + } + + if (operation === 'CreateTable') { + if (normalizedRequest.commandInput?.GlobalSecondaryIndexes) { + spanAttributes[ + SemanticAttributes.AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES + ] = this.toArray( + normalizedRequest.commandInput.GlobalSecondaryIndexes + ).map((x: { [DictionaryKey: string]: any }) => JSON.stringify(x)); + } + + if (normalizedRequest.commandInput?.LocalSecondaryIndexes) { + spanAttributes[ + SemanticAttributes.AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES + ] = this.toArray( + normalizedRequest.commandInput.LocalSecondaryIndexes + ).map((x: { [DictionaryKey: string]: any }) => JSON.stringify(x)); + } + } + + if ( + operation === 'ListTables' || + operation === 'Query' || + operation === 'Scan' + ) { + if (normalizedRequest.commandInput?.Limit) { + spanAttributes[SemanticAttributes.AWS_DYNAMODB_LIMIT] = + normalizedRequest.commandInput.Limit; + } + } + + if (operation === 'ListTables') { + if (normalizedRequest.commandInput?.ExclusiveStartTableName) { + spanAttributes[SemanticAttributes.AWS_DYNAMODB_EXCLUSIVE_START_TABLE] = + normalizedRequest.commandInput.ExclusiveStartTableName; + } + } + + if (operation === 'Query') { + if (normalizedRequest.commandInput?.ScanIndexForward) { + spanAttributes[SemanticAttributes.AWS_DYNAMODB_SCAN_FORWARD] = + normalizedRequest.commandInput.ScanIndexForward; + } + + if (normalizedRequest.commandInput?.IndexName) { + spanAttributes[SemanticAttributes.AWS_DYNAMODB_INDEX_NAME] = + normalizedRequest.commandInput.IndexName; + } + + if (normalizedRequest.commandInput?.Select) { + spanAttributes[SemanticAttributes.AWS_DYNAMODB_SELECT] = + normalizedRequest.commandInput.Select; + } + } + + if (operation === 'Scan') { + if (normalizedRequest.commandInput?.Segment) { + spanAttributes[SemanticAttributes.AWS_DYNAMODB_SEGMENT] = + normalizedRequest.commandInput?.Segment; + } + + if (normalizedRequest.commandInput?.TotalSegments) { + spanAttributes[SemanticAttributes.AWS_DYNAMODB_TOTAL_SEGMENTS] = + normalizedRequest.commandInput?.TotalSegments; + } + + if (normalizedRequest.commandInput?.IndexName) { + spanAttributes[SemanticAttributes.AWS_DYNAMODB_INDEX_NAME] = + normalizedRequest.commandInput.IndexName; + } + + if (normalizedRequest.commandInput?.Select) { + spanAttributes[SemanticAttributes.AWS_DYNAMODB_SELECT] = + normalizedRequest.commandInput.Select; + } + } + + if (operation === 'UpdateTable') { + if (normalizedRequest.commandInput?.AttributeDefinitions) { + spanAttributes[SemanticAttributes.AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS] = + this.toArray(normalizedRequest.commandInput.AttributeDefinitions).map( + (x: { [DictionaryKey: string]: any }) => JSON.stringify(x) + ); + } + + if (normalizedRequest.commandInput?.GlobalSecondaryIndexUpdates) { + spanAttributes[ + SemanticAttributes.AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES + ] = this.toArray( + normalizedRequest.commandInput.GlobalSecondaryIndexUpdates + ).map((x: { [DictionaryKey: string]: any }) => JSON.stringify(x)); + } + } + return { isIncoming, spanAttributes, @@ -73,5 +209,35 @@ export class DynamodbServiceExtension implements ServiceExtension { ); } } + + if (response.data?.ItemCollectionMetrics) { + span.setAttribute( + SemanticAttributes.AWS_DYNAMODB_ITEM_COLLECTION_METRICS, + this.toArray(response.data.ItemCollectionMetrics).map( + (x: { [DictionaryKey: string]: any }) => JSON.stringify(x) + ) + ); + } + + if (response.data?.TableNames) { + span.setAttribute( + SemanticAttributes.AWS_DYNAMODB_TABLE_COUNT, + response.data?.TableNames.length + ); + } + + if (response.data?.Count) { + span.setAttribute( + SemanticAttributes.AWS_DYNAMODB_COUNT, + response.data?.Count + ); + } + + if (response.data?.ScannedCount) { + span.setAttribute( + SemanticAttributes.AWS_DYNAMODB_SCANNED_COUNT, + response.data?.ScannedCount + ); + } } } diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/dynamodb.test.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/dynamodb.test.ts index 5ff0c2b0ab..b8504d4010 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/dynamodb.test.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/dynamodb.test.ts @@ -69,7 +69,14 @@ describe('DynamoDB', () => { ExpressionAttributeValues: { ':v': 'val1', }, + ProjectionExpression: 'id', + ScanIndexForward: true, + ConsistentRead: true, + IndexName: 'name_to_group', + Limit: 10, + Select: 'ALL_ATTRIBUTES', }; + dynamodb.query( params, (err: AWSError, data: AWS.DynamoDB.DocumentClient.QueryOutput) => { @@ -81,6 +88,390 @@ describe('DynamoDB', () => { ); expect(attrs[SemanticAttributes.DB_NAME]).toStrictEqual('test-table'); expect(attrs[SemanticAttributes.DB_OPERATION]).toStrictEqual('Query'); + expect( + attrs[SemanticAttributes.AWS_DYNAMODB_SCAN_FORWARD] + ).toStrictEqual(true); + expect( + attrs[SemanticAttributes.AWS_DYNAMODB_CONSISTENT_READ] + ).toStrictEqual(true); + expect( + attrs[SemanticAttributes.AWS_DYNAMODB_INDEX_NAME] + ).toStrictEqual('name_to_group'); + expect(attrs[SemanticAttributes.AWS_DYNAMODB_SELECT]).toStrictEqual( + 'ALL_ATTRIBUTES' + ); + expect(attrs[SemanticAttributes.AWS_DYNAMODB_LIMIT]).toStrictEqual( + 10 + ); + expect( + attrs[SemanticAttributes.AWS_DYNAMODB_TABLE_NAMES] + ).toStrictEqual(['test-table']); + expect( + attrs[SemanticAttributes.AWS_DYNAMODB_PROJECTION] + ).toStrictEqual('id'); + expect( + JSON.parse(attrs[SemanticAttributes.DB_STATEMENT] as string) + ).toEqual(params); + expect(err).toBeFalsy(); + done(); + } + ); + }); + }); + + describe('Scan', () => { + beforeEach(() => + mockV2AwsSend(responseMockSuccess, { + ConsumedCapacity: { + TableName: 'test-table', + CapacityUnits: 0.5, + Table: { CapacityUnits: 0.5 }, + }, + Count: 10, + ScannedCount: 50, + } as AWS.DynamoDB.Types.ScanOutput) + ); + + it('should populate specific Scan attributes', done => { + const dynamodb = new AWS.DynamoDB.DocumentClient(); + const params = { + TableName: 'test-table', + Item: { key1: 'val1' }, + ProjectionExpression: 'id', + ConsistentRead: true, + Segment: 10, + TotalSegments: 100, + IndexName: 'index_name', + Limit: 10, + Select: 'ALL_ATTRIBUTES', + }; + + dynamodb.scan( + params, + (err: AWSError, data: AWS.DynamoDB.DocumentClient.ScanOutput) => { + const spans = getTestSpans(); + expect(spans.length).toStrictEqual(1); + const attrs = spans[0].attributes; + expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( + DbSystemValues.DYNAMODB + ); + expect(attrs[SemanticAttributes.DB_NAME]).toStrictEqual('test-table'); + expect(attrs[SemanticAttributes.DB_OPERATION]).toStrictEqual('Scan'); + expect(attrs[SemanticAttributes.AWS_DYNAMODB_SEGMENT]).toStrictEqual( + 10 + ); + expect( + attrs[SemanticAttributes.AWS_DYNAMODB_TOTAL_SEGMENTS] + ).toStrictEqual(100); + expect( + attrs[SemanticAttributes.AWS_DYNAMODB_INDEX_NAME] + ).toStrictEqual('index_name'); + expect(attrs[SemanticAttributes.AWS_DYNAMODB_SELECT]).toStrictEqual( + 'ALL_ATTRIBUTES' + ); + expect(attrs[SemanticAttributes.AWS_DYNAMODB_COUNT]).toStrictEqual( + 10 + ); + expect( + attrs[SemanticAttributes.AWS_DYNAMODB_SCANNED_COUNT] + ).toStrictEqual(50); + expect(attrs[SemanticAttributes.AWS_DYNAMODB_LIMIT]).toStrictEqual( + 10 + ); + expect( + attrs[SemanticAttributes.AWS_DYNAMODB_TABLE_NAMES] + ).toStrictEqual(['test-table']); + expect( + attrs[SemanticAttributes.AWS_DYNAMODB_PROJECTION] + ).toStrictEqual('id'); + expect( + JSON.parse(attrs[SemanticAttributes.DB_STATEMENT] as string) + ).toEqual(params); + expect(err).toBeFalsy(); + done(); + } + ); + }); + }); + + describe('BatchWriteItem', () => { + beforeEach(() => + mockV2AwsSend(responseMockSuccess, { + UnprocessedItems: {}, + ItemCollectionMetrics: { + ItemCollectionKey: [], + SizeEstimateRangeGB: [0], + }, + ConsumedCapacity: undefined, + } as AWS.DynamoDB.Types.BatchWriteItemOutput) + ); + + it('should populate specific BatchWriteItem attributes', done => { + const dynamodb = new AWS.DynamoDB.DocumentClient(); + const params = { + RequestItems: {}, + ReturnConsumedCapacity: 'INDEXES', + ReturnItemCollectionMetrics: 'SIZE', + }; + + dynamodb.batchWrite( + params, + ( + err: AWSError, + data: AWS.DynamoDB.DocumentClient.BatchWriteItemOutput + ) => { + const spans = getTestSpans(); + expect(spans.length).toStrictEqual(1); + const attrs = spans[0].attributes; + expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( + DbSystemValues.DYNAMODB + ); + expect( + attrs[SemanticAttributes.AWS_DYNAMODB_ITEM_COLLECTION_METRICS] + ).toStrictEqual([ + JSON.stringify({ ItemCollectionKey: [], SizeEstimateRangeGB: [0] }), + ]); + + expect( + JSON.parse(attrs[SemanticAttributes.DB_STATEMENT] as string) + ).toEqual(params); + expect(err).toBeFalsy(); + done(); + } + ); + }); + }); + + describe('CreateTable', () => { + beforeEach(() => + mockV2AwsSend(responseMockSuccess, { + TableName: 'test_table', + ItemCollectionMetrics: { + ItemCollectionKey: [], + SizeEstimateRangeGB: [0], + }, + ConsumedCapacity: undefined, + } as AWS.DynamoDB.Types.CreateTableOutput) + ); + + it('should populate specific CreateTable attributes', done => { + const globalSecondaryIndexMockData = { + IndexName: 'test_index', + KeySchema: [ + { + AttributeName: 'attribute1', + KeyType: 'HASH', + }, + ], + Projection: { + ProjectionType: 'ALL', + NonKeyAttributes: ['non_key_attr'], + }, + ProvisionedThroughput: { + ReadCapacityUnits: 5, + WriteCapacityUnits: 10, + }, + }; + + const localSecondaryIndexMockData = { + IndexName: 'test_index', + KeySchema: [ + { + AttributeName: 'test_attribute', + KeyType: 'HASH', + }, + ], + Projection: { + ProjectionType: 'ALL', + NonKeyAttributes: ['STRING_VALUE'], + }, + }; + + const dynamodb = new AWS.DynamoDB(); + const params = { + AttributeDefinitions: [ + { + AttributeName: 'test_attribute', + AttributeType: 'S', + }, + ], + TableName: 'test_table', + KeySchema: [ + { + AttributeName: 'test_attribute', + KeyType: 'HASH', + }, + ], + LocalSecondaryIndexes: [localSecondaryIndexMockData], + GlobalSecondaryIndexes: [globalSecondaryIndexMockData], + BillingMode: 'PROVISIONED', + ProvisionedThroughput: { + ReadCapacityUnits: 20, + WriteCapacityUnits: 30, + }, + }; + + dynamodb.createTable( + params, + ( + err: AWSError, + data: AWS.DynamoDB.DocumentClient.CreateTableOutput + ) => { + const spans = getTestSpans(); + expect(spans.length).toStrictEqual(1); + const attrs = spans[0].attributes; + expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( + DbSystemValues.DYNAMODB + ); + expect( + attrs[SemanticAttributes.AWS_DYNAMODB_ITEM_COLLECTION_METRICS] + ).toStrictEqual([ + JSON.stringify({ ItemCollectionKey: [], SizeEstimateRangeGB: [0] }), + ]); + + expect( + attrs[SemanticAttributes.AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES] + ).toStrictEqual([JSON.stringify(globalSecondaryIndexMockData)]); + + expect( + attrs[SemanticAttributes.AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES] + ).toStrictEqual([JSON.stringify(localSecondaryIndexMockData)]); + expect( + attrs[SemanticAttributes.AWS_DYNAMODB_PROVISIONED_READ_CAPACITY] + ).toStrictEqual(20); + expect( + attrs[SemanticAttributes.AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY] + ).toStrictEqual(30); + expect( + JSON.parse(attrs[SemanticAttributes.DB_STATEMENT] as string) + ).toEqual(params); + expect(err).toBeFalsy(); + done(); + } + ); + }); + }); + + describe('UpdateTable', () => { + beforeEach(() => + mockV2AwsSend(responseMockSuccess, { + TableName: 'test_table', + } as AWS.DynamoDB.Types.UpdateTableOutput) + ); + + it('should populate specific CreateTable attributes', done => { + const dynamodb = new AWS.DynamoDB(); + const params = { + AttributeDefinitions: [ + { + AttributeName: 'test_attr', + AttributeType: 'S', + }, + ], + TableName: 'test_table', + ProvisionedThroughput: { + ReadCapacityUnits: 10, + WriteCapacityUnits: 15, + }, + GlobalSecondaryIndexUpdates: [ + { + Update: { + IndexName: 'test_index', + ProvisionedThroughput: { + ReadCapacityUnits: 1, + WriteCapacityUnits: 5, + }, + }, + }, + ], + }; + + dynamodb.updateTable( + params, + ( + err: AWSError, + data: AWS.DynamoDB.DocumentClient.UpdateTableOutput + ) => { + const spans = getTestSpans(); + expect(spans.length).toStrictEqual(1); + const attrs = spans[0].attributes; + expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( + DbSystemValues.DYNAMODB + ); + + expect( + attrs[ + SemanticAttributes.AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES + ] + ).toStrictEqual([ + JSON.stringify({ + Update: { + IndexName: 'test_index', + ProvisionedThroughput: { + ReadCapacityUnits: 1, + WriteCapacityUnits: 5, + }, + }, + }), + ]); + expect( + attrs[SemanticAttributes.AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS] + ).toStrictEqual([ + JSON.stringify({ + AttributeName: 'test_attr', + AttributeType: 'S', + }), + ]); + expect( + attrs[SemanticAttributes.AWS_DYNAMODB_PROVISIONED_READ_CAPACITY] + ).toStrictEqual(10); + expect( + attrs[SemanticAttributes.AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY] + ).toStrictEqual(15); + expect( + JSON.parse(attrs[SemanticAttributes.DB_STATEMENT] as string) + ).toEqual(params); + expect(err).toBeFalsy(); + done(); + } + ); + }); + }); + + describe('ListTables', () => { + beforeEach(() => + mockV2AwsSend(responseMockSuccess, { + TableNames: ['test_table', 'test_table_2', 'start_table'], + } as AWS.DynamoDB.Types.ListTablesOutput) + ); + + it('should populate specific ListTables attributes', done => { + const dynamodb = new AWS.DynamoDB(); + const params = { + ExclusiveStartTableName: 'start_table', + Limit: 10, + }; + + dynamodb.listTables( + params, + (err: AWSError, data: AWS.DynamoDB.DocumentClient.ListTablesOutput) => { + const spans = getTestSpans(); + expect(spans.length).toStrictEqual(1); + const attrs = spans[0].attributes; + expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( + DbSystemValues.DYNAMODB + ); + + expect( + attrs[SemanticAttributes.AWS_DYNAMODB_EXCLUSIVE_START_TABLE] + ).toStrictEqual('start_table'); + expect(attrs[SemanticAttributes.AWS_DYNAMODB_LIMIT]).toStrictEqual( + 10 + ); + expect( + attrs[SemanticAttributes.AWS_DYNAMODB_TABLE_COUNT] + ).toStrictEqual(3); + expect( JSON.parse(attrs[SemanticAttributes.DB_STATEMENT] as string) ).toEqual(params); diff --git a/plugins/node/opentelemetry-instrumentation-bunyan/package.json b/plugins/node/opentelemetry-instrumentation-bunyan/package.json index aea1d84ed4..90a3705c3b 100644 --- a/plugins/node/opentelemetry-instrumentation-bunyan/package.json +++ b/plugins/node/opentelemetry-instrumentation-bunyan/package.json @@ -65,7 +65,8 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.40.0", - "@types/bunyan": "1.8.7" + "@types/bunyan": "1.8.7", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-bunyan#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/package.json b/plugins/node/opentelemetry-instrumentation-cassandra/package.json index ee19e65042..0de9dec3da 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/package.json +++ b/plugins/node/opentelemetry-instrumentation-cassandra/package.json @@ -65,7 +65,8 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.40.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.0.0", + "tslib": "^2.3.1" }, "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 af01931c1b..34d640fe9e 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/package.json +++ b/plugins/node/opentelemetry-instrumentation-connect/package.json @@ -61,7 +61,8 @@ "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.40.0", "@opentelemetry/semantic-conventions": "^1.0.0", - "@types/connect": "3.4.35" + "@types/connect": "3.4.35", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-connect#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-dns/package.json b/plugins/node/opentelemetry-instrumentation-dns/package.json index b608f7a4bc..d0d5b1be0d 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/package.json +++ b/plugins/node/opentelemetry-instrumentation-dns/package.json @@ -64,7 +64,8 @@ "dependencies": { "@opentelemetry/instrumentation": "^0.40.0", "@opentelemetry/semantic-conventions": "^1.0.0", - "semver": "^7.3.2" + "semver": "^7.3.2", + "tslib": "^2.3.1" }, "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/examples/package.json b/plugins/node/opentelemetry-instrumentation-express/examples/package.json index 4e76fbb298..fd3b8679ee 100644 --- a/plugins/node/opentelemetry-instrumentation-express/examples/package.json +++ b/plugins/node/opentelemetry-instrumentation-express/examples/package.json @@ -41,7 +41,8 @@ "@opentelemetry/semantic-conventions": "^1.0.0", "axios": "^0.21.1", "cross-env": "^7.0.3", - "express": "^4.17.1" + "express": "^4.17.1", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js#readme", "devDependencies": { diff --git a/plugins/node/opentelemetry-instrumentation-express/package.json b/plugins/node/opentelemetry-instrumentation-express/package.json index d93ea321b3..724fa4cb89 100644 --- a/plugins/node/opentelemetry-instrumentation-express/package.json +++ b/plugins/node/opentelemetry-instrumentation-express/package.json @@ -68,7 +68,8 @@ "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.40.0", "@opentelemetry/semantic-conventions": "^1.0.0", - "@types/express": "4.17.13" + "@types/express": "4.17.13", + "tslib": "^2.3.1" }, "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 f7830fa149..6152d134a3 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/package.json +++ b/plugins/node/opentelemetry-instrumentation-fastify/package.json @@ -64,7 +64,8 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.40.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.0.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-fastify#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-generic-pool/package.json b/plugins/node/opentelemetry-instrumentation-generic-pool/package.json index 445b9009a7..a98d5c1cb5 100644 --- a/plugins/node/opentelemetry-instrumentation-generic-pool/package.json +++ b/plugins/node/opentelemetry-instrumentation-generic-pool/package.json @@ -63,7 +63,8 @@ "dependencies": { "@opentelemetry/instrumentation": "^0.40.0", "@opentelemetry/semantic-conventions": "^1.0.0", - "@types/generic-pool": "^3.1.9" + "@types/generic-pool": "^3.1.9", + "tslib": "^2.3.1" }, "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-graphql/package.json b/plugins/node/opentelemetry-instrumentation-graphql/package.json index 48cf05a974..0e6c47c10d 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/package.json +++ b/plugins/node/opentelemetry-instrumentation-graphql/package.json @@ -61,7 +61,8 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.40.0" + "@opentelemetry/instrumentation": "^0.40.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-graphql#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-hapi/package.json b/plugins/node/opentelemetry-instrumentation-hapi/package.json index d43147d65b..19eefe7065 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/package.json +++ b/plugins/node/opentelemetry-instrumentation-hapi/package.json @@ -62,7 +62,8 @@ "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.40.0", "@opentelemetry/semantic-conventions": "^1.0.0", - "@types/hapi__hapi": "20.0.9" + "@types/hapi__hapi": "20.0.9", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-hapi#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/package.json b/plugins/node/opentelemetry-instrumentation-ioredis/package.json index 23ef158eee..a1507eaa4f 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/package.json +++ b/plugins/node/opentelemetry-instrumentation-ioredis/package.json @@ -72,7 +72,8 @@ "@opentelemetry/instrumentation": "^0.40.0", "@opentelemetry/redis-common": "^0.35.1", "@opentelemetry/semantic-conventions": "^1.0.0", - "@types/ioredis4": "npm:@types/ioredis@^4.28.10" + "@types/ioredis4": "npm:@types/ioredis@^4.28.10", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-ioredis#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-knex/package.json b/plugins/node/opentelemetry-instrumentation-knex/package.json index 8321c7a5b8..e5b1553a6c 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/package.json +++ b/plugins/node/opentelemetry-instrumentation-knex/package.json @@ -61,7 +61,8 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.40.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.0.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-knex#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-koa/examples/package.json b/plugins/node/opentelemetry-instrumentation-koa/examples/package.json index 1b47f72fa5..c46bf95f84 100644 --- a/plugins/node/opentelemetry-instrumentation-koa/examples/package.json +++ b/plugins/node/opentelemetry-instrumentation-koa/examples/package.json @@ -40,7 +40,8 @@ "@opentelemetry/sdk-trace-node": "^1.0.0", "@opentelemetry/sdk-trace-base": "^1.0.0", "axios": "^0.21.1", - "koa": "^2.13.0" + "koa": "^2.13.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib#readme", "devDependencies": { diff --git a/plugins/node/opentelemetry-instrumentation-koa/package.json b/plugins/node/opentelemetry-instrumentation-koa/package.json index 9ed0a2feb2..18d52a52b6 100644 --- a/plugins/node/opentelemetry-instrumentation-koa/package.json +++ b/plugins/node/opentelemetry-instrumentation-koa/package.json @@ -71,7 +71,8 @@ "@opentelemetry/instrumentation": "^0.40.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/koa": "2.13.6", - "@types/koa__router": "8.0.7" + "@types/koa__router": "8.0.7", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-koa#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-memcached/package.json b/plugins/node/opentelemetry-instrumentation-memcached/package.json index 352a621638..0d4a84bc57 100644 --- a/plugins/node/opentelemetry-instrumentation-memcached/package.json +++ b/plugins/node/opentelemetry-instrumentation-memcached/package.json @@ -65,7 +65,8 @@ "dependencies": { "@opentelemetry/instrumentation": "^0.40.0", "@opentelemetry/semantic-conventions": "^1.0.0", - "@types/memcached": "^2.2.6" + "@types/memcached": "^2.2.6", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-memcached#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/examples/package.json b/plugins/node/opentelemetry-instrumentation-mongodb/examples/package.json index 850e3edd11..62943a13fa 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/examples/package.json +++ b/plugins/node/opentelemetry-instrumentation-mongodb/examples/package.json @@ -38,7 +38,8 @@ "@opentelemetry/instrumentation-mongodb": "^0.32.0", "@opentelemetry/sdk-trace-node": "^1.0.0", "@opentelemetry/sdk-trace-base": "^1.0.0", - "mongodb": "^3.7.3" + "mongodb": "^3.7.3", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib#readme", "devDependencies": { diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/package.json b/plugins/node/opentelemetry-instrumentation-mongodb/package.json index 11f2c32d4d..ef186f31ff 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/package.json +++ b/plugins/node/opentelemetry-instrumentation-mongodb/package.json @@ -70,7 +70,8 @@ "dependencies": { "@opentelemetry/sdk-metrics": "^1.9.1", "@opentelemetry/instrumentation": "^0.40.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.0.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-mongodb#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-mysql/examples/package.json b/plugins/node/opentelemetry-instrumentation-mysql/examples/package.json index 14a68faa8a..881876d79b 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/examples/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql/examples/package.json @@ -40,7 +40,8 @@ "@opentelemetry/sdk-trace-base": "^1.0.0", "@opentelemetry/sdk-trace-node": "^1.0.0", "@opentelemetry/exporter-metrics-otlp-grpc": "0.33.0", - "mysql": "^2.18.1" + "mysql": "^2.18.1", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js#readme", "devDependencies": { diff --git a/plugins/node/opentelemetry-instrumentation-mysql/package.json b/plugins/node/opentelemetry-instrumentation-mysql/package.json index 3c4e0b1928..d15998bdeb 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql/package.json @@ -65,7 +65,8 @@ "dependencies": { "@opentelemetry/instrumentation": "^0.40.0", "@opentelemetry/semantic-conventions": "^1.0.0", - "@types/mysql": "2.15.19" + "@types/mysql": "2.15.19", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-mysql#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/package.json b/plugins/node/opentelemetry-instrumentation-mysql2/package.json index 0ca042b944..2e627296d5 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql2/package.json @@ -67,7 +67,8 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.40.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.0.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-mysql2#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json index 13975b06dc..8135edb606 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json @@ -74,7 +74,8 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.40.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.0.0", + "tslib": "^2.3.1" }, "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-net/package.json b/plugins/node/opentelemetry-instrumentation-net/package.json index 90f9fcbe7b..df6bc5974b 100644 --- a/plugins/node/opentelemetry-instrumentation-net/package.json +++ b/plugins/node/opentelemetry-instrumentation-net/package.json @@ -62,7 +62,8 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.40.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.0.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-net#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-pg/package.json b/plugins/node/opentelemetry-instrumentation-pg/package.json index 94b881c9b4..8f700a563c 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/package.json +++ b/plugins/node/opentelemetry-instrumentation-pg/package.json @@ -79,7 +79,8 @@ "@opentelemetry/semantic-conventions": "^1.0.0", "@opentelemetry/sql-common": "^0.39.0", "@types/pg": "8.6.1", - "@types/pg-pool": "2.0.3" + "@types/pg-pool": "2.0.3", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-pg#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-pino/package.json b/plugins/node/opentelemetry-instrumentation-pino/package.json index 7456bd1002..de187ff65e 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/package.json +++ b/plugins/node/opentelemetry-instrumentation-pino/package.json @@ -66,7 +66,8 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.40.0" + "@opentelemetry/instrumentation": "^0.40.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-pino#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-redis-4/package.json b/plugins/node/opentelemetry-instrumentation-redis-4/package.json index 67d177f381..8d84fc5577 100644 --- a/plugins/node/opentelemetry-instrumentation-redis-4/package.json +++ b/plugins/node/opentelemetry-instrumentation-redis-4/package.json @@ -71,7 +71,8 @@ "dependencies": { "@opentelemetry/instrumentation": "^0.40.0", "@opentelemetry/redis-common": "^0.35.1", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.0.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-redis-4#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-redis/examples/package.json b/plugins/node/opentelemetry-instrumentation-redis/examples/package.json index 5f6738d4c7..95749d9edf 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/examples/package.json +++ b/plugins/node/opentelemetry-instrumentation-redis/examples/package.json @@ -41,7 +41,8 @@ "@opentelemetry/sdk-trace-node": "^1.0.0", "axios": "^0.21.1", "express": "^4.17.1", - "redis": "^3.1.1" + "redis": "^3.1.1", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js#readme", "devDependencies": { diff --git a/plugins/node/opentelemetry-instrumentation-redis/package.json b/plugins/node/opentelemetry-instrumentation-redis/package.json index 3b0c7bd0e9..3942689cbf 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/package.json +++ b/plugins/node/opentelemetry-instrumentation-redis/package.json @@ -72,7 +72,8 @@ "dependencies": { "@opentelemetry/instrumentation": "^0.40.0", "@opentelemetry/redis-common": "^0.35.1", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.0.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-redis#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-restify/package.json b/plugins/node/opentelemetry-instrumentation-restify/package.json index 687836fb47..db1e2b1716 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/package.json +++ b/plugins/node/opentelemetry-instrumentation-restify/package.json @@ -66,7 +66,8 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.40.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.0.0", + "tslib": "^2.3.1" }, "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 a25b6bf1e7..9f0ac7e26f 100644 --- a/plugins/node/opentelemetry-instrumentation-router/package.json +++ b/plugins/node/opentelemetry-instrumentation-router/package.json @@ -60,7 +60,8 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.40.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.0.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-router#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-winston/package.json b/plugins/node/opentelemetry-instrumentation-winston/package.json index 1820fb580f..166ffc5522 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/package.json +++ b/plugins/node/opentelemetry-instrumentation-winston/package.json @@ -66,7 +66,8 @@ "winston2": "npm:winston@2.4.5" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.40.0" + "@opentelemetry/instrumentation": "^0.40.0", + "tslib": "^2.3.1" }, "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 d146982933..463dab2513 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/package.json +++ b/plugins/web/opentelemetry-instrumentation-document-load/package.json @@ -80,7 +80,8 @@ "@opentelemetry/instrumentation": "^0.40.0", "@opentelemetry/sdk-trace-base": "^1.0.0", "@opentelemetry/sdk-trace-web": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.0.0", + "tslib": "^2.3.1" }, "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-long-task/package.json b/plugins/web/opentelemetry-instrumentation-long-task/package.json index 510d0c4f4c..6604fafa39 100644 --- a/plugins/web/opentelemetry-instrumentation-long-task/package.json +++ b/plugins/web/opentelemetry-instrumentation-long-task/package.json @@ -79,7 +79,8 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.40.0", - "@opentelemetry/sdk-trace-web": "^1.8.0" + "@opentelemetry/sdk-trace-web": "^1.8.0", + "tslib": "^2.3.1" }, "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 e081fec218..b4b5909677 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/package.json +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/package.json @@ -81,7 +81,8 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.40.0", - "@opentelemetry/sdk-trace-web": "^1.8.0" + "@opentelemetry/sdk-trace-web": "^1.8.0", + "tslib": "^2.3.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0", diff --git a/plugins/web/opentelemetry-plugin-react-load/package.json b/plugins/web/opentelemetry-plugin-react-load/package.json index 9dc58e1b56..99be2797f8 100644 --- a/plugins/web/opentelemetry-plugin-react-load/package.json +++ b/plugins/web/opentelemetry-plugin-react-load/package.json @@ -89,7 +89,8 @@ "@opentelemetry/sdk-trace-base": "^1.0.0", "@opentelemetry/sdk-trace-web": "^1.0.0", "@opentelemetry/semantic-conventions": "^1.0.0", - "shimmer": "^1.2.1" + "shimmer": "^1.2.1", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/web/opentelemetry-plugin-react-load#readme" } diff --git a/propagators/opentelemetry-propagator-aws-xray/package.json b/propagators/opentelemetry-propagator-aws-xray/package.json index d08745075b..237589324c 100644 --- a/propagators/opentelemetry-propagator-aws-xray/package.json +++ b/propagators/opentelemetry-propagator-aws-xray/package.json @@ -68,7 +68,8 @@ "webpack": "4.46.0" }, "dependencies": { - "@opentelemetry/core": "^1.0.0" + "@opentelemetry/core": "^1.0.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/propagators/opentelemetry-propagator-aws-xray#readme" } diff --git a/propagators/opentelemetry-propagator-grpc-census-binary/package.json b/propagators/opentelemetry-propagator-grpc-census-binary/package.json index 0a2f8e8704..0eaabc96b5 100644 --- a/propagators/opentelemetry-propagator-grpc-census-binary/package.json +++ b/propagators/opentelemetry-propagator-grpc-census-binary/package.json @@ -56,5 +56,8 @@ "ts-mocha": "10.0.0", "typescript": "4.4.4" }, + "dependencies": { + "tslib": "^2.3.1" + }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/propagators/opentelemetry-propagator-grpc-census-binary#readme" } diff --git a/propagators/opentelemetry-propagator-instana/package.json b/propagators/opentelemetry-propagator-instana/package.json index d97f702013..c6434a0b9e 100644 --- a/propagators/opentelemetry-propagator-instana/package.json +++ b/propagators/opentelemetry-propagator-instana/package.json @@ -70,5 +70,8 @@ "webpack": "4.46.0", "webpack-cli": "4.9.2" }, + "dependencies": { + "tslib": "^2.3.1" + }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/propagators/opentelemetry-propagator-instana#readme" } diff --git a/propagators/opentelemetry-propagator-ot-trace/package.json b/propagators/opentelemetry-propagator-ot-trace/package.json index 75dffaed4a..9bb140fb36 100644 --- a/propagators/opentelemetry-propagator-ot-trace/package.json +++ b/propagators/opentelemetry-propagator-ot-trace/package.json @@ -67,5 +67,8 @@ "typescript": "4.4.4", "webpack": "4.46.0" }, + "dependencies": { + "tslib": "^2.3.1" + }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/propagators/opentelemetry-propagator-ot-trace#readme" } diff --git a/tsconfig.base.json b/tsconfig.base.json index 83c35af078..1ee8ca34be 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -18,7 +18,8 @@ "strictNullChecks": true, "target": "es2017", "incremental": true, - "newLine": "LF" + "newLine": "LF", + "importHelpers": true }, "exclude": [ "node_modules"