diff --git a/CHANGELOG.md b/CHANGELOG.md index 375da253a10..c28822cbdad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,9 @@ For experimental package changes, see the [experimental CHANGELOG](experimental/ * feat(context-zone*): support zone.js 0.12.x [#4376](https://github.com/open-telemetry/opentelemetry-js/pull/4736) @maldago * refactor(core): Use tree-shakeable string constants for semconv [#4739](https://github.com/open-telemetry/opentelemetry-js/pull/4739) @JohannesHuster * refactor(shim-opentracing): Use tree-shakeable string constants for semconv [#4746](https://github.com/open-telemetry/opentelemetry-js/pull/4746) @JohannesHuster +* refactor(sdk-trace-web): Use tree-shakeable string constants for semconv [#4747](https://github.com/open-telemetry/opentelemetry-js/pull/4747) @JohannesHuster +* refactor(sdk-trace-node): Use tree-shakeable string constants for semconv [#4748](https://github.com/open-telemetry/opentelemetry-js/pull/4748) @JohannesHuster +* refactor(sdk-trace-base): Use tree-shakeable string constants for semconv [#4749](https://github.com/open-telemetry/opentelemetry-js/pull/4749) @JohannesHuster ### :bug: (Bug Fix) diff --git a/package-lock.json b/package-lock.json index 392ef987994..a864b2fee61 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,7 +42,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "linkinator": "6.0.4", + "linkinator": "6.0.5", "markdownlint-cli2": "0.13.0", "prettier": "3.0.3", "process": "0.11.10", @@ -12890,9 +12890,9 @@ } }, "node_modules/chromedriver": { - "version": "125.0.2", - "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-125.0.2.tgz", - "integrity": "sha512-H2mIy3r//bIGVouQQrp2UzS93cjGCV2f+I6qNimAOyIiWkaKCiLEuDMQnuC21rewo/UuyOA8CDqa4a7RIT/8EQ==", + "version": "125.0.3", + "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-125.0.3.tgz", + "integrity": "sha512-Qzuk5Wian2o3EVGjtbz6V/jv+pT/AV9246HbG6kUljZXXjsKZLZxqJC+kHR3qEh/wdv4EJD0YwAOWV72v9hogw==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -19907,9 +19907,9 @@ } }, "node_modules/linkinator": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/linkinator/-/linkinator-6.0.4.tgz", - "integrity": "sha512-gxZ9ePUBeoaCk29p+2gAwrRIVnKOqAV8ZVCEM8N7MvpwbccDBQiKjXFyS6nQx56K1CCZLboan2i5iJfpWCsnSQ==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/linkinator/-/linkinator-6.0.5.tgz", + "integrity": "sha512-LRMHgO/29gk2WQzdj4cFcFHGKPhYPGBWVZOayATP6j3159ubonGJizObNRvgA5qDnrkqsRwJT7p4Tq97pC9GeA==", "dev": true, "dependencies": { "chalk": "^5.0.0", @@ -19917,7 +19917,7 @@ "gaxios": "^6.0.0", "glob": "^10.3.10", "htmlparser2": "^9.0.0", - "marked": "^10.0.0", + "marked": "^12.0.1", "meow": "^13.0.0", "mime": "^4.0.0", "server-destroy": "^1.0.1", @@ -19973,16 +19973,16 @@ } }, "node_modules/linkinator/node_modules/glob": { - "version": "10.3.16", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.16.tgz", - "integrity": "sha512-JDKXl1DiuuHJ6fVS2FXjownaavciiHNUU4mOvV/B793RLh05vZL1rcPnCSaOgv1hDT6RDlY7AB7ZUvFYAtPgAw==", + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", + "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.11.0" + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" @@ -20815,9 +20815,9 @@ } }, "node_modules/marked": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-10.0.0.tgz", - "integrity": "sha512-YiGcYcWj50YrwBgNzFoYhQ1hT6GmQbFG8SksnYJX1z4BXTHSOrz1GB5/Jm2yQvMg4nN1FHP4M6r03R10KrVUiA==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", + "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", "dev": true, "bin": { "marked": "bin/marked.js" @@ -21203,9 +21203,9 @@ } }, "node_modules/minipass": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", - "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, "engines": { "node": ">=16 || 14 >=14.17" @@ -32231,7 +32231,7 @@ "babel-loader": "8.3.0", "babel-polyfill": "6.26.0", "browserstack-local": "1.4.8", - "chromedriver": "125.0.2", + "chromedriver": "125.0.3", "dotenv": "16.0.0", "fast-safe-stringify": "2.1.1", "geckodriver": "3.0.1", @@ -39402,7 +39402,7 @@ "babel-loader": "8.3.0", "babel-polyfill": "6.26.0", "browserstack-local": "1.4.8", - "chromedriver": "125.0.2", + "chromedriver": "125.0.3", "dotenv": "16.0.0", "fast-safe-stringify": "2.1.1", "geckodriver": "3.0.1", @@ -43497,9 +43497,9 @@ "dev": true }, "chromedriver": { - "version": "125.0.2", - "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-125.0.2.tgz", - "integrity": "sha512-H2mIy3r//bIGVouQQrp2UzS93cjGCV2f+I6qNimAOyIiWkaKCiLEuDMQnuC21rewo/UuyOA8CDqa4a7RIT/8EQ==", + "version": "125.0.3", + "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-125.0.3.tgz", + "integrity": "sha512-Qzuk5Wian2o3EVGjtbz6V/jv+pT/AV9246HbG6kUljZXXjsKZLZxqJC+kHR3qEh/wdv4EJD0YwAOWV72v9hogw==", "dev": true, "requires": { "@testim/chrome-version": "^1.1.4", @@ -48935,9 +48935,9 @@ } }, "linkinator": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/linkinator/-/linkinator-6.0.4.tgz", - "integrity": "sha512-gxZ9ePUBeoaCk29p+2gAwrRIVnKOqAV8ZVCEM8N7MvpwbccDBQiKjXFyS6nQx56K1CCZLboan2i5iJfpWCsnSQ==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/linkinator/-/linkinator-6.0.5.tgz", + "integrity": "sha512-LRMHgO/29gk2WQzdj4cFcFHGKPhYPGBWVZOayATP6j3159ubonGJizObNRvgA5qDnrkqsRwJT7p4Tq97pC9GeA==", "dev": true, "requires": { "chalk": "^5.0.0", @@ -48945,7 +48945,7 @@ "gaxios": "^6.0.0", "glob": "^10.3.10", "htmlparser2": "^9.0.0", - "marked": "^10.0.0", + "marked": "^12.0.1", "meow": "^13.0.0", "mime": "^4.0.0", "server-destroy": "^1.0.1", @@ -48980,16 +48980,16 @@ } }, "glob": { - "version": "10.3.16", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.16.tgz", - "integrity": "sha512-JDKXl1DiuuHJ6fVS2FXjownaavciiHNUU4mOvV/B793RLh05vZL1rcPnCSaOgv1hDT6RDlY7AB7ZUvFYAtPgAw==", + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", + "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", "dev": true, "requires": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.11.0" + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "path-scurry": "^1.11.1" } }, "jackspeak": { @@ -49641,9 +49641,9 @@ "dev": true }, "marked": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-10.0.0.tgz", - "integrity": "sha512-YiGcYcWj50YrwBgNzFoYhQ1hT6GmQbFG8SksnYJX1z4BXTHSOrz1GB5/Jm2yQvMg4nN1FHP4M6r03R10KrVUiA==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", + "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", "dev": true }, "mdurl": { @@ -49930,9 +49930,9 @@ } }, "minipass": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", - "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true }, "minipass-collect": { diff --git a/package.json b/package.json index 5de03a62ab9..fa38d186763 100644 --- a/package.json +++ b/package.json @@ -89,7 +89,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "linkinator": "6.0.4", + "linkinator": "6.0.5", "markdownlint-cli2": "0.13.0", "prettier": "3.0.3", "process": "0.11.10", diff --git a/packages/opentelemetry-sdk-trace-base/src/Span.ts b/packages/opentelemetry-sdk-trace-base/src/Span.ts index e2af2ad5ee6..3b7758f1382 100644 --- a/packages/opentelemetry-sdk-trace-base/src/Span.ts +++ b/packages/opentelemetry-sdk-trace-base/src/Span.ts @@ -43,7 +43,11 @@ import { sanitizeAttributes, } from '@opentelemetry/core'; import { IResource } from '@opentelemetry/resources'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_EXCEPTION_MESSAGE, + SEMATTRS_EXCEPTION_STACKTRACE, + SEMATTRS_EXCEPTION_TYPE, +} from '@opentelemetry/semantic-conventions'; import { ExceptionEventName } from './enums'; import { ReadableSpan } from './export/ReadableSpan'; import { SpanProcessor } from './SpanProcessor'; @@ -299,26 +303,25 @@ export class Span implements APISpan, ReadableSpan { recordException(exception: Exception, time?: TimeInput): void { const attributes: SpanAttributes = {}; if (typeof exception === 'string') { - attributes[SemanticAttributes.EXCEPTION_MESSAGE] = exception; + attributes[SEMATTRS_EXCEPTION_MESSAGE] = exception; } else if (exception) { if (exception.code) { - attributes[SemanticAttributes.EXCEPTION_TYPE] = - exception.code.toString(); + attributes[SEMATTRS_EXCEPTION_TYPE] = exception.code.toString(); } else if (exception.name) { - attributes[SemanticAttributes.EXCEPTION_TYPE] = exception.name; + attributes[SEMATTRS_EXCEPTION_TYPE] = exception.name; } if (exception.message) { - attributes[SemanticAttributes.EXCEPTION_MESSAGE] = exception.message; + attributes[SEMATTRS_EXCEPTION_MESSAGE] = exception.message; } if (exception.stack) { - attributes[SemanticAttributes.EXCEPTION_STACKTRACE] = exception.stack; + attributes[SEMATTRS_EXCEPTION_STACKTRACE] = exception.stack; } } // these are minimum requirements from spec if ( - attributes[SemanticAttributes.EXCEPTION_TYPE] || - attributes[SemanticAttributes.EXCEPTION_MESSAGE] + attributes[SEMATTRS_EXCEPTION_TYPE] || + attributes[SEMATTRS_EXCEPTION_MESSAGE] ) { this.addEvent(ExceptionEventName, attributes, time); } else { diff --git a/packages/opentelemetry-sdk-trace-base/test/common/Span.test.ts b/packages/opentelemetry-sdk-trace-base/test/common/Span.test.ts index aa36407466a..33808acd54b 100644 --- a/packages/opentelemetry-sdk-trace-base/test/common/Span.test.ts +++ b/packages/opentelemetry-sdk-trace-base/test/common/Span.test.ts @@ -34,7 +34,11 @@ import { hrTimeToNanoseconds, otperformance as performance, } from '@opentelemetry/core'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_EXCEPTION_MESSAGE, + SEMATTRS_EXCEPTION_STACKTRACE, + SEMATTRS_EXCEPTION_TYPE, +} from '@opentelemetry/semantic-conventions'; import * as assert from 'assert'; import * as sinon from 'sinon'; import { BasicTracerProvider, Span, SpanProcessor } from '../../src'; @@ -1250,11 +1254,10 @@ describe('Span', () => { assert.ok(event.attributes); - const type = event.attributes[SemanticAttributes.EXCEPTION_TYPE]; - const message = - event.attributes[SemanticAttributes.EXCEPTION_MESSAGE]; + const type = event.attributes[SEMATTRS_EXCEPTION_TYPE]; + const message = event.attributes[SEMATTRS_EXCEPTION_MESSAGE]; const stacktrace = String( - event.attributes[SemanticAttributes.EXCEPTION_STACKTRACE] + event.attributes[SEMATTRS_EXCEPTION_STACKTRACE] ); assert.strictEqual(type, 'Error'); assert.strictEqual(message, 'boom'); @@ -1294,7 +1297,7 @@ describe('Span', () => { span.recordException({ code: 12 }); const event = span.events[0]; assert.deepStrictEqual(event.attributes, { - [SemanticAttributes.EXCEPTION_TYPE]: '12', + [SEMATTRS_EXCEPTION_TYPE]: '12', }); }); }); diff --git a/packages/opentelemetry-sdk-trace-node/test/NodeTracerProvider.test.ts b/packages/opentelemetry-sdk-trace-node/test/NodeTracerProvider.test.ts index 1b1dbbd6d8f..a656f6f69b5 100644 --- a/packages/opentelemetry-sdk-trace-node/test/NodeTracerProvider.test.ts +++ b/packages/opentelemetry-sdk-trace-node/test/NodeTracerProvider.test.ts @@ -39,7 +39,7 @@ import { SpanExporter, } from '@opentelemetry/sdk-trace-base'; import { Resource } from '@opentelemetry/resources'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMRESATTRS_TELEMETRY_SDK_LANGUAGE } from '@opentelemetry/semantic-conventions'; import { NodeTracerProvider } from '../src/NodeTracerProvider'; @@ -152,9 +152,7 @@ describe('NodeTracerProvider', () => { assert.ok(span); assert.ok(span.resource instanceof Resource); assert.equal( - span.resource.attributes[ - SemanticResourceAttributes.TELEMETRY_SDK_LANGUAGE - ], + span.resource.attributes[SEMRESATTRS_TELEMETRY_SDK_LANGUAGE], 'nodejs' ); }); diff --git a/packages/opentelemetry-sdk-trace-web/src/utils.ts b/packages/opentelemetry-sdk-trace-web/src/utils.ts index 833485017e8..5bcc57b72e9 100644 --- a/packages/opentelemetry-sdk-trace-web/src/utils.ts +++ b/packages/opentelemetry-sdk-trace-web/src/utils.ts @@ -26,7 +26,10 @@ import { timeInputToHrTime, urlMatches, } from '@opentelemetry/core'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH, + SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED, +} from '@opentelemetry/semantic-conventions'; // Used to normalize relative URLs let urlNormalizingAnchor: HTMLAnchorElement | undefined; @@ -110,16 +113,13 @@ export function addSpanNetworkEvents( addSpanNetworkEvent(span, PTN.RESPONSE_END, resource); const encodedLength = resource[PTN.ENCODED_BODY_SIZE]; if (encodedLength !== undefined) { - span.setAttribute( - SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH, - encodedLength - ); + span.setAttribute(SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH, encodedLength); } const decodedLength = resource[PTN.DECODED_BODY_SIZE]; // Spec: Not set if transport encoding not used (in which case encoded and decoded sizes match) if (decodedLength !== undefined && encodedLength !== decodedLength) { span.setAttribute( - SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED, + SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED, decodedLength ); } diff --git a/packages/opentelemetry-sdk-trace-web/test/WebTracerProvider.test.ts b/packages/opentelemetry-sdk-trace-web/test/WebTracerProvider.test.ts index de63292a6a6..9ea2a1300da 100644 --- a/packages/opentelemetry-sdk-trace-web/test/WebTracerProvider.test.ts +++ b/packages/opentelemetry-sdk-trace-web/test/WebTracerProvider.test.ts @@ -18,7 +18,7 @@ import { context, ContextManager, trace } from '@opentelemetry/api'; import { ZoneContextManager } from '@opentelemetry/context-zone'; import { B3Propagator } from '@opentelemetry/propagator-b3'; import { Resource } from '@opentelemetry/resources'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMRESATTRS_TELEMETRY_SDK_LANGUAGE } from '@opentelemetry/semantic-conventions'; import { Span, Tracer } from '@opentelemetry/sdk-trace-base'; import * as assert from 'assert'; import { WebTracerConfig } from '../src'; @@ -130,9 +130,7 @@ describe('WebTracerProvider', () => { assert.ok(span); assert.ok(span.resource instanceof Resource); assert.equal( - span.resource.attributes[ - SemanticResourceAttributes.TELEMETRY_SDK_LANGUAGE - ], + span.resource.attributes[SEMRESATTRS_TELEMETRY_SDK_LANGUAGE], 'webjs' ); }); diff --git a/selenium-tests/package.json b/selenium-tests/package.json index 6defe99960f..b47a18a8f36 100644 --- a/selenium-tests/package.json +++ b/selenium-tests/package.json @@ -41,7 +41,7 @@ "babel-loader": "8.3.0", "babel-polyfill": "6.26.0", "browserstack-local": "1.4.8", - "chromedriver": "125.0.2", + "chromedriver": "125.0.3", "dotenv": "16.0.0", "fast-safe-stringify": "2.1.1", "geckodriver": "3.0.1",