From 9df30ea0fd822a69203b818b8fbe34e1e1c8bced Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johanna=20=C3=96jeling?= <51084516+johannaojeling@users.noreply.github.com> Date: Mon, 18 Mar 2024 14:01:17 +0100 Subject: [PATCH 001/121] docs(auto-instrumentations-node): fix link to HTTP instrumentation (#2018) --- metapackages/auto-instrumentations-node/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metapackages/auto-instrumentations-node/README.md b/metapackages/auto-instrumentations-node/README.md index 3ea274082e..dccf55a266 100644 --- a/metapackages/auto-instrumentations-node/README.md +++ b/metapackages/auto-instrumentations-node/README.md @@ -162,7 +162,7 @@ registerInstrumentations({ - [@opentelemetry/instrumentation-graphql](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-graphql) - [@opentelemetry/instrumentation-grpc](https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-grpc) - [@opentelemetry/instrumentation-hapi](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-hapi) -- [@opentelemetry/instrumentation-http](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-instrumentation-http) +- [@opentelemetry/instrumentation-http](https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-http) - [@opentelemetry/instrumentation-ioredis](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-ioredis) - [@opentelemetry/instrumentation-knex](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-knex) - [@opentelemetry/instrumentation-koa](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-koa) From 6cd67c04a705ff7f29e47ad829912dcb17a6680b Mon Sep 17 00:00:00 2001 From: Jamie Danielson Date: Fri, 22 Mar 2024 12:05:45 -0400 Subject: [PATCH 002/121] chore(instr-express): use exported strings for attributes (#2031) * chore(instr-express): use exported strings for attributes * use exported strings in tests --- package-lock.json | 4 ++-- .../node/opentelemetry-instrumentation-express/README.md | 8 ++++---- .../opentelemetry-instrumentation-express/package.json | 2 +- .../src/instrumentation.ts | 4 ++-- .../test/custom-config.test.ts | 6 +++--- .../test/express.test.ts | 6 +++--- .../test/hooks.test.ts | 4 ++-- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3db09a62fa..d15344e958 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37494,7 +37494,7 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.49.1", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -46003,7 +46003,7 @@ "@opentelemetry/instrumentation": "^0.49.1", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/express": "4.17.18", "@types/mocha": "7.0.2", "@types/node": "18.6.5", diff --git a/plugins/node/opentelemetry-instrumentation-express/README.md b/plugins/node/opentelemetry-instrumentation-express/README.md index ebcb4b280c..9818cc5e2d 100644 --- a/plugins/node/opentelemetry-instrumentation-express/README.md +++ b/plugins/node/opentelemetry-instrumentation-express/README.md @@ -144,13 +144,13 @@ const expressInstrumentation = new ExpressInstrumentation({ ## Semantic Conventions -This package uses `@opentelemetry/semantic-conventions` version `1.0+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) Attributes collected: -| Attribute | Short Description | Notes | -| ------------ | ---------------------------------- | ----------------- | -| `http.route` | The matched route (path template). | Key: `HTTP_ROUTE` | +| Attribute | Short Description | Notes | +| ------------ | ---------------------------------- | -------------------------- | +| `http.route` | The matched route (path template). | Key: `SEMATTRS_HTTP_ROUTE` | ## Useful links diff --git a/plugins/node/opentelemetry-instrumentation-express/package.json b/plugins/node/opentelemetry-instrumentation-express/package.json index 5b8489f281..47525d970e 100644 --- a/plugins/node/opentelemetry-instrumentation-express/package.json +++ b/plugins/node/opentelemetry-instrumentation-express/package.json @@ -65,7 +65,7 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.49.1", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-express#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts index d8b7369142..3df15aa699 100644 --- a/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts @@ -39,7 +39,7 @@ import { isWrapped, safeExecuteInTheMiddle, } from '@opentelemetry/instrumentation'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMATTRS_HTTP_ROUTE } from '@opentelemetry/semantic-conventions'; import { ExpressLayer, ExpressRouter, @@ -202,7 +202,7 @@ export class ExpressInstrumentation extends InstrumentationBase< .replace(/\/{2,}/g, '/'); const attributes: Attributes = { - [SemanticAttributes.HTTP_ROUTE]: route.length > 0 ? route : '/', + [SEMATTRS_HTTP_ROUTE]: route.length > 0 ? route : '/', }; const metadata = getLayerMetadata(layer, layerPath); const type = metadata.attributes[ diff --git a/plugins/node/opentelemetry-instrumentation-express/test/custom-config.test.ts b/plugins/node/opentelemetry-instrumentation-express/test/custom-config.test.ts index d6b418c60c..50d644086a 100644 --- a/plugins/node/opentelemetry-instrumentation-express/test/custom-config.test.ts +++ b/plugins/node/opentelemetry-instrumentation-express/test/custom-config.test.ts @@ -21,7 +21,7 @@ import { InMemorySpanExporter, SimpleSpanProcessor, } from '@opentelemetry/sdk-trace-base'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMATTRS_HTTP_ROUTE } from '@opentelemetry/semantic-conventions'; import * as assert from 'assert'; import { RPCMetadata, RPCType, setRPCMetadata } from '@opentelemetry/core'; import { ExpressLayerType } from '../src/enums/ExpressLayerType'; @@ -145,7 +145,7 @@ describe('ExpressInstrumentation', () => { .find(span => span.name.includes('request handler')); assert.notStrictEqual(requestHandlerSpan, undefined); assert.strictEqual( - requestHandlerSpan?.attributes[SemanticAttributes.HTTP_ROUTE], + requestHandlerSpan?.attributes[SEMATTRS_HTTP_ROUTE], '/mw' ); @@ -196,7 +196,7 @@ describe('ExpressInstrumentation', () => { .find(span => span.name.includes('request handler')); assert.notStrictEqual(requestHandlerSpan, undefined); assert.strictEqual( - requestHandlerSpan?.attributes[SemanticAttributes.HTTP_ROUTE], + requestHandlerSpan?.attributes[SEMATTRS_HTTP_ROUTE], '/' ); diff --git a/plugins/node/opentelemetry-instrumentation-express/test/express.test.ts b/plugins/node/opentelemetry-instrumentation-express/test/express.test.ts index 7866333125..f573a4a669 100644 --- a/plugins/node/opentelemetry-instrumentation-express/test/express.test.ts +++ b/plugins/node/opentelemetry-instrumentation-express/test/express.test.ts @@ -25,7 +25,7 @@ import * as assert from 'assert'; import { AttributeNames } from '../src/enums/AttributeNames'; import { ExpressInstrumentation } from '../src'; import { createServer, httpRequest, serverWithMiddleware } from './utils'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMATTRS_HTTP_ROUTE } from '@opentelemetry/semantic-conventions'; import * as testUtils from '@opentelemetry/contrib-test-utils'; const instrumentation = new ExpressInstrumentation(); @@ -114,7 +114,7 @@ describe('ExpressInstrumentation', () => { .find(span => span.name.includes('request handler')); assert.notStrictEqual(requestHandlerSpan, undefined); assert.strictEqual( - requestHandlerSpan?.attributes[SemanticAttributes.HTTP_ROUTE], + requestHandlerSpan?.attributes[SEMATTRS_HTTP_ROUTE], '/toto/:id' ); assert.strictEqual( @@ -481,7 +481,7 @@ describe('ExpressInstrumentation', () => { .getFinishedSpans() .find(span => span.name.includes('request handler')); assert.strictEqual( - requestHandlerSpan?.attributes[SemanticAttributes.HTTP_ROUTE], + requestHandlerSpan?.attributes[SEMATTRS_HTTP_ROUTE], '/double-slashes/:id' ); assert.strictEqual(rpcMetadata?.route, '/double-slashes/:id'); diff --git a/plugins/node/opentelemetry-instrumentation-express/test/hooks.test.ts b/plugins/node/opentelemetry-instrumentation-express/test/hooks.test.ts index 90d98a356c..78cfdd3d4a 100644 --- a/plugins/node/opentelemetry-instrumentation-express/test/hooks.test.ts +++ b/plugins/node/opentelemetry-instrumentation-express/test/hooks.test.ts @@ -27,7 +27,7 @@ import * as sinon from 'sinon'; import { ExpressInstrumentation } from '../src'; import { ExpressRequestInfo, SpanNameHook } from '../src/types'; import { ExpressLayerType } from '../src/enums/ExpressLayerType'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMATTRS_HTTP_METHOD } from '@opentelemetry/semantic-conventions'; const instrumentation = new ExpressInstrumentation(); instrumentation.enable(); @@ -178,7 +178,7 @@ describe('ExpressInstrumentation hooks', () => { it('should call requestHook when set in config', async () => { const requestHook = sinon.spy((span: Span, info: ExpressRequestInfo) => { - span.setAttribute(SemanticAttributes.HTTP_METHOD, info.request.method); + span.setAttribute(SEMATTRS_HTTP_METHOD, info.request.method); if (info.layerType) { span.setAttribute('express.layer_type', info.layerType); From 84ef980c0be84ca84e9957bb42254cab94185c99 Mon Sep 17 00:00:00 2001 From: Ievgen Makukh Date: Mon, 25 Mar 2024 11:57:39 +0200 Subject: [PATCH 003/121] perf(instrumentation-pg): reduce temp objects allocations (#2019) * perf(instrumentation-pg): reduce temp objects allocations * fix: review comments * fix: do not export span names from module --------- Co-authored-by: Marc Pichler --- .../src/enums/SpanNames.ts | 21 ++++++++++ .../src/instrumentation.ts | 40 ++++--------------- .../src/utils.ts | 28 ++++++++----- 3 files changed, 48 insertions(+), 41 deletions(-) create mode 100644 plugins/node/opentelemetry-instrumentation-pg/src/enums/SpanNames.ts diff --git a/plugins/node/opentelemetry-instrumentation-pg/src/enums/SpanNames.ts b/plugins/node/opentelemetry-instrumentation-pg/src/enums/SpanNames.ts new file mode 100644 index 0000000000..c505d642d0 --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-pg/src/enums/SpanNames.ts @@ -0,0 +1,21 @@ +/* + * 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. + */ +// Contains span names produced by instrumentation +export enum SpanNames { + QUERY_PREFIX = 'pg.query', + CONNECT = 'pg.connect', + POOL_CONNECT = 'pg-pool.connect', +} diff --git a/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts index 1fa8f58d3d..abe4e65c5e 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts @@ -38,21 +38,11 @@ import { } from './internal-types'; import { PgInstrumentationConfig } from './types'; import * as utils from './utils'; -import { AttributeNames } from './enums/AttributeNames'; -import { - SemanticAttributes, - DbSystemValues, -} from '@opentelemetry/semantic-conventions'; import { addSqlCommenterComment } from '@opentelemetry/sql-common'; import { VERSION } from './version'; - -const PG_POOL_COMPONENT = 'pg-pool'; +import { SpanNames } from './enums/SpanNames'; export class PgInstrumentation extends InstrumentationBase { - static readonly COMPONENT = 'pg'; - - static readonly BASE_SPAN_NAME = PgInstrumentation.COMPONENT + '.query'; - constructor(config: PgInstrumentationConfig = {}) { super( '@opentelemetry/instrumentation-pg', @@ -149,16 +139,10 @@ export class PgInstrumentation extends InstrumentationBase { return original.call(this, callback); } - const span = plugin.tracer.startSpan( - `${PgInstrumentation.COMPONENT}.connect`, - { - kind: SpanKind.CLIENT, - attributes: { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.POSTGRESQL, - ...utils.getSemanticAttributesFromConnection(this), - }, - } - ); + const span = plugin.tracer.startSpan(SpanNames.CONNECT, { + kind: SpanKind.CLIENT, + attributes: utils.getSemanticAttributesFromConnection(this), + }); if (callback) { const parentSpan = trace.getSpan(context.active()); @@ -183,9 +167,7 @@ export class PgInstrumentation extends InstrumentationBase { private _getClientQueryPatch() { const plugin = this; return (original: typeof pgTypes.Client.prototype.query) => { - this._diag.debug( - `Patching ${PgInstrumentation.COMPONENT}.Client.prototype.query` - ); + this._diag.debug('Patching pg.Client.prototype.query'); return function query(this: PgClientExtended, ...args: unknown[]) { if (utils.shouldSkipInstrumentation(plugin.getConfig())) { return original.apply(this, args as never); @@ -367,15 +349,9 @@ export class PgInstrumentation extends InstrumentationBase { } // setup span - const span = plugin.tracer.startSpan(`${PG_POOL_COMPONENT}.connect`, { + const span = plugin.tracer.startSpan(SpanNames.POOL_CONNECT, { kind: SpanKind.CLIENT, - attributes: { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.POSTGRESQL, - ...utils.getSemanticAttributesFromConnection(this.options), - [AttributeNames.IDLE_TIMEOUT_MILLIS]: - this.options.idleTimeoutMillis, - [AttributeNames.MAX_CLIENT]: this.options.maxClient, - }, + attributes: utils.getSemanticAttributesFromPool(this.options), }); if (callback) { diff --git a/plugins/node/opentelemetry-instrumentation-pg/src/utils.ts b/plugins/node/opentelemetry-instrumentation-pg/src/utils.ts index bcf8e4efb7..77f690dffd 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/src/utils.ts +++ b/plugins/node/opentelemetry-instrumentation-pg/src/utils.ts @@ -34,11 +34,12 @@ import { PgPoolCallback, PgPoolExtended, PgParsedConnectionParams, + PgPoolOptionsParams, } from './internal-types'; import { PgInstrumentationConfig } from './types'; import type * as pgTypes from 'pg'; -import { PgInstrumentation } from './'; import { safeExecuteInTheMiddle } from '@opentelemetry/instrumentation'; +import { SpanNames } from './enums/SpanNames'; /** * Helper function to get a low cardinality span name from whatever info we have @@ -66,7 +67,7 @@ export function getQuerySpanName( // NB: when the query config is invalid, we omit the dbName too, so that // someone (or some tool) reading the span name doesn't misinterpret the // dbName as being a prepared statement or sql commit name. - if (!queryConfig) return PgInstrumentation.BASE_SPAN_NAME; + if (!queryConfig) return SpanNames.QUERY_PREFIX; // Either the name of a prepared statement; or an attempted parse // of the SQL command, normalized to uppercase; or unknown. @@ -75,9 +76,7 @@ export function getQuerySpanName( ? queryConfig.name : parseNormalizedOperationName(queryConfig.text); - return `${PgInstrumentation.BASE_SPAN_NAME}:${command}${ - dbName ? ` ${dbName}` : '' - }`; + return `${SpanNames.QUERY_PREFIX}:${command}${dbName ? ` ${dbName}` : ''}`; } function parseNormalizedOperationName(queryText: string) { @@ -109,6 +108,7 @@ export function getSemanticAttributesFromConnection( params: PgParsedConnectionParams ) { return { + [SemanticAttributes.DB_SYSTEM]: DbSystemValues.POSTGRESQL, [SemanticAttributes.DB_NAME]: params.database, // required [SemanticAttributes.DB_CONNECTION_STRING]: getConnectionString(params), // required [SemanticAttributes.NET_PEER_NAME]: params.host, // required @@ -117,6 +117,19 @@ export function getSemanticAttributesFromConnection( }; } +export function getSemanticAttributesFromPool(params: PgPoolOptionsParams) { + return { + [SemanticAttributes.DB_SYSTEM]: DbSystemValues.POSTGRESQL, + [SemanticAttributes.DB_NAME]: params.database, // required + [SemanticAttributes.DB_CONNECTION_STRING]: getConnectionString(params), // required + [SemanticAttributes.NET_PEER_NAME]: params.host, // required + [SemanticAttributes.NET_PEER_PORT]: getPort(params.port), + [SemanticAttributes.DB_USER]: params.user, + [AttributeNames.IDLE_TIMEOUT_MILLIS]: params.idleTimeoutMillis, + [AttributeNames.MAX_CLIENT]: params.maxClient, + }; +} + export function shouldSkipInstrumentation( instrumentationConfig: PgInstrumentationConfig ) { @@ -141,10 +154,7 @@ export function handleConfigQuery( const spanName = getQuerySpanName(dbName, queryConfig); const span = tracer.startSpan(spanName, { kind: SpanKind.CLIENT, - attributes: { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.POSTGRESQL, // required - ...getSemanticAttributesFromConnection(connectionParameters), - }, + attributes: getSemanticAttributesFromConnection(connectionParameters), }); if (!queryConfig) { From 146edfa89bef0b1405d573c7373af10d90639c2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Cruz?= Date: Mon, 25 Mar 2024 10:03:50 +0000 Subject: [PATCH 004/121] fix(instrumentation-runtime-node): mixin default config in constructor (#2036) Co-authored-by: Marc Pichler --- .../instrumentation-runtime-node/src/instrumentation.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/plugins/node/instrumentation-runtime-node/src/instrumentation.ts b/plugins/node/instrumentation-runtime-node/src/instrumentation.ts index aa1807511c..c7733e2de4 100644 --- a/plugins/node/instrumentation-runtime-node/src/instrumentation.ts +++ b/plugins/node/instrumentation-runtime-node/src/instrumentation.ts @@ -30,8 +30,12 @@ export class RuntimeNodeInstrumentation extends InstrumentationBase { private _ELUs: EventLoopUtilization[] = []; private _interval: NodeJS.Timeout | undefined; - constructor(config: RuntimeNodeInstrumentationConfig = DEFAULT_CONFIG) { - super('@opentelemetry/instrumentation-runtime-node', VERSION, config); + constructor(config: RuntimeNodeInstrumentationConfig = {}) { + super( + '@opentelemetry/instrumentation-runtime-node', + VERSION, + Object.assign({}, DEFAULT_CONFIG, config) + ); } private _addELU() { From 8015d742448aefb0fcd6468fe09486477d3783ad Mon Sep 17 00:00:00 2001 From: Jamie Danielson Date: Mon, 25 Mar 2024 11:24:18 -0400 Subject: [PATCH 005/121] docs: Update contributing doc (#2026) * update pr guidelines section more closely resembles otel-js repo * add development quickstart * add more detail for general guidance * add tools and dev header section * update note about changelog * update contributing toc * update based on pr feedback * clarify npm test, add detail for changelog --------- Co-authored-by: Marc Pichler --- CONTRIBUTING.md | 89 ++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 70 insertions(+), 19 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8f673ece5d..f05cf8e937 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,14 +2,16 @@ We'd love your help! +- [Development Quick Start](#development-quick-start) - [Report a bug or requesting feature](#report-a-bug-or-requesting-feature) - [How to contribute](#how-to-contribute) - [Before you start](#before-you-start) - [Conventional commit](#conventional-commit) - [Fork](#fork) - - [Running the tests](#running-the-tests) - - [Generating API documentation](#generating-api-documentation) - - [Generating CHANGELOG documentation](#generating-changelog-documentation) +- [Development](#development) + - [Tools used](#tools-used) + - [General guidance](#general-guidance) + - [CHANGELOG](#changelog) - [Benchmarks](#benchmarks) - [Component Ownership](#component-ownership) - [Component Lifecycle](#component-lifecycle) @@ -19,10 +21,25 @@ We'd love your help! - [Stable](#stable) - [Unmaintained](#unmaintained) - [Deprecated](#deprecated) +- [Pull Request Merge Guidelines](#pull-request-merge-guidelines) + - [General Merge Requirements](#general-merge-requirements) - [Contributing Vendor Components](#contributing-vendor-components) - [Adding a New Vendor Component](#adding-a-new-vendor-component) - [Removing Vendor Components](#removing-vendor-components) +## Development Quick Start + +To get the project started quickly, you can follow these steps. For more +detailed instructions, see [development](#development) below. + +```sh +git clone https://github.com/open-telemetry/opentelemetry-js-contrib.git +cd opentelemetry-js-contrib +npm ci +npm run compile +npm test +``` + ## Report a bug or requesting feature Reporting bugs is an important contribution. Please make sure to include: @@ -71,18 +88,44 @@ Remember to always work in a branch of your local copy, as you might otherwise h Please also see [GitHub workflow](https://github.com/open-telemetry/community/blob/main/CONTRIBUTING.md#github-workflow) section of general project contributing guide. -### Running the tests +## Development + +### Tools used + +- [NPM](https://npmjs.com) +- [TypeScript](https://www.typescriptlang.org/) +- [lerna](https://github.com/lerna/lerna) to manage dependencies, compilations, and links between packages. Most lerna commands should be run by calling the provided npm scripts. +- [npm workspaces](https://docs.npmjs.com/cli/v10/using-npm/workspaces) +- [MochaJS](https://mochajs.org/) for tests +- [eslint](https://eslint.org/) + +Refer to the core repository for [supported runtimes](https://github.com/open-telemetry/opentelemetry-js#supported-runtimes). +Refer to the root-level [package.json](https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/package.json) for shared dev dependency versions, and the package-level package.json for package-specific versions if different or not included in the shared root. + +### General guidance The `opentelemetry-js-contrib` project is written in TypeScript. -- `npm install` to install dependencies. +As a general rule, installing and then compiling from the root directory should always be done first before anything else. +After making changes to a specific package, compile again from the specific package directory you are working in. +Some tests depend on other packages to be installed, so these steps are also required for running tests. + +- `npm ci` installs dependencies ([see npm-ci docs](https://docs.npmjs.com/cli/v10/commands/npm-ci)) - `npm run compile` compiles the code, checking for type errors. -- `npm test` tests code the same way that our CI will test it. -- `npm run lint:fix` lint (and maybe fix) any changes. +- `npm test` runs most unit tests, though some packages require other dependencies so are only run in CI or with a separate command in the package's `package.json` file. +- `npm run lint:fix` lint any changes and fix if needed. + +Each of these commands can also be run in individual packages, as long as the initial install and compile are done first in the root directory. + +### CHANGELOG + +The conventional commit type (in PR title) is very important to automatically bump versions on release. For instance: -### Generating CHANGELOG documentation +- any type + `!` will bump major version (or minor on pre-release) +- `feat` will bump minor +- `fix` will bump patch -- `npm run changelog` to generate CHANGELOG documentation in your terminal (see [RELEASING.md](RELEASING.md) for more details). +There is no need to update the CHANGELOG in a PR because it will be updated as part of the release process (see [RELEASING.md](RELEASING.md) for more details). ### Benchmarks @@ -154,9 +197,25 @@ They may not work and there are no guarantees for fixes or new features. Their source files may be deleted from the repository. Any packages released from their source will be marked as deprecated in NPM. -## Pull Request Merge Requirements +## Pull Request Merge Guidelines + +Pull requests MAY be merged by an approver OR a maintainer provided they meet all the following [General Merge Requirements](#general-merge-requirements). +All requirements are at the discretion of the maintainers. +Maintainers MAY merge pull requests which have not strictly met these requirements. +Maintainers MAY close, block, or put on hold pull requests even if they have strictly met these requirements. + +It is generally expected that a maintainer ([@open-telemetry/javascript-maintainers](https://github.com/orgs/open-telemetry/teams/javascript-maintainers)) should review and merge major changes. +Some examples include, but are not limited to: + +- Breaking changes +- New modules +- Changes which affect runtime support + +If a PR has not been interacted with by a reviewer within one week, please ping the component +owners as listed in [.github/component_owners.yml](.github/component_owners.yml), if component owners are unresponsive +please ping ([@open-telemetry/javascript-approvers](https://github.com/orgs/open-telemetry/teams/javascript-approvers)). -Pull requests MAY be merged by an approver OR a maintainer provided they meet all the following requirements: +### General Merge Requirements - Approved by - at least one component owner if one is defined in [.github/component_owners.yml](.github/component_owners.yml) @@ -173,14 +232,6 @@ Pull requests MAY be merged by an approver OR a maintainer provided they meet al - New or changed functionality is documented if appropriate - Substantial changes should not be merged within 24 hours of opening in order to allow reviewers from all time zones to have a chance to review -All requirements are at the discretion of the maintainers. -Maintainers MAY merge pull requests which have not strictly met these requirements. -Maintainers MAY close, block, or put on hold pull requests even if they have strictly met these requirements. - -If a PR has not been interacted with by a reviewer within one week, please ping the component -owners as listed in [.github/component_owners.yml](.github/component_owners.yml), if component owners are unresponsive -please ping ([@open-telemetry/javascript-approvers](https://github.com/orgs/open-telemetry/teams/javascript-approvers)). - ## Contributing Vendor Components This repo is generally meant for hosting components that work with popular open-source frameworks and tools. However, it is also possible to contribute components specific to a 3rd party vendor in this repo. From 20328d4a655b41b7f5546137c90dbdce1cce4e14 Mon Sep 17 00:00:00 2001 From: David Luna Date: Wed, 27 Mar 2024 01:38:22 +0100 Subject: [PATCH 006/121] fix(instr-mongodb): `mongodb` >=v6.4.0 support (#2001) The new version of mongodb `v6.4.0` comes with some internal changes that break the instrumentation. Details of the changes are described in https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1983#issuecomment-1979740812 Closes: #1983 --- .github/workflows/unit-test.yml | 2 +- package-lock.json | 376 ++++++++++-------- .../.tav.yml | 26 +- .../package.json | 4 +- .../src/instrumentation.ts | 157 ++++++-- .../src/internal-types.ts | 22 +- .../test/mongodb-v3.test.ts | 26 +- .../test/mongodb-v4-v5-v6.metrics.test.ts | 24 +- .../test/mongodb-v4.test.ts | 17 +- .../test/mongodb-v5-v6.test.ts | 10 +- .../test/utils.ts | 23 +- 11 files changed, 428 insertions(+), 259 deletions(-) diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index af0bd5cdc5..025b727e9b 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -11,7 +11,7 @@ jobs: matrix: node: ["14", "16", "18.18.2"] include: - - node: 14 + - node: 18.18.2 code-coverage: true runs-on: ubuntu-latest services: diff --git a/package-lock.json b/package-lock.json index d15344e958..65bcc6f9f4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6784,11 +6784,10 @@ "dev": true }, "node_modules/@mongodb-js/saslprep": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.4.tgz", - "integrity": "sha512-8zJ8N1x51xo9hwPh6AWnKdLGEC5N3lDa6kms1YHmFBoRhTpJR6HG8wWk0td1MVCu9cD4YBrvjZEtd5Obw0Fbnw==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.5.tgz", + "integrity": "sha512-XLNOMH66KhJzUJNwT/qlMnS4WsNDWD5ASdyaSH3EtK+F4r/CFGa3jT4GNi4mfOitGvWXtdLgQJkQjxSVrio+jA==", "dev": true, - "optional": true, "dependencies": { "sparse-bitfield": "^3.0.3" } @@ -23809,8 +23808,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "dev": true, - "optional": true + "dev": true }, "node_modules/meow": { "version": "8.1.2", @@ -27581,18 +27579,6 @@ "node": ">=0.10" } }, - "node_modules/optional-require": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.1.8.tgz", - "integrity": "sha512-jq83qaUb0wNg9Krv1c5OQ+58EK+vHde6aBPzLvPPqJm89UQWsvSuFy9X/OSNJnFeSOKo7btE0n8Nl2+nE+z5nA==", - "dev": true, - "dependencies": { - "require-at": "^1.0.6" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -29983,15 +29969,6 @@ "node": ">=0.10" } }, - "node_modules/require-at": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/require-at/-/require-at-1.0.6.tgz", - "integrity": "sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -30700,19 +30677,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "devOptional": true }, - "node_modules/saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "dev": true, - "optional": true, - "dependencies": { - "sparse-bitfield": "^3.0.3" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/sax": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", @@ -31619,7 +31583,6 @@ "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", "dev": true, - "optional": true, "dependencies": { "memory-pager": "^1.0.2" } @@ -38086,7 +38049,7 @@ "@types/mongodb": "3.6.20", "@types/node": "18.6.5", "mocha": "7.2.0", - "mongodb": "3.6.11", + "mongodb": "6.5.0", "nyc": "15.1.0", "rimraf": "5.0.5", "test-all-versions": "6.1.0", @@ -38100,57 +38063,115 @@ "@opentelemetry/api": "^1.3.0" } }, - "plugins/node/opentelemetry-instrumentation-mongodb/node_modules/bl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", - "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", + "plugins/node/opentelemetry-instrumentation-mongodb/node_modules/@types/whatwg-url": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.4.tgz", + "integrity": "sha512-lXCmTWSHJvf0TRSO58nm978b8HJ/EdsSsEKLd3ODHFjo+3VGAyyTp4v50nWvwtzBxSMQrVOK7tcuN0zGPLICMw==", "dev": true, "dependencies": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" + "@types/webidl-conversions": "*" + } + }, + "plugins/node/opentelemetry-instrumentation-mongodb/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" } }, "plugins/node/opentelemetry-instrumentation-mongodb/node_modules/bson": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz", - "integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.4.0.tgz", + "integrity": "sha512-6/gSSEdbkuFlSb+ufj5jUSU4+wo8xQOwm2bDSqwmxiPE17JTpsP63eAwoN8iF8Oy4gJYj+PAL3zdRCTdaw5Y1g==", "dev": true, "engines": { - "node": ">=0.6.19" + "node": ">=16.20.1" } }, - "plugins/node/opentelemetry-instrumentation-mongodb/node_modules/denque": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", - "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==", + "plugins/node/opentelemetry-instrumentation-mongodb/node_modules/gaxios": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz", + "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==", "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9" + }, "engines": { - "node": ">=0.10" + "node": ">=12" + } + }, + "plugins/node/opentelemetry-instrumentation-mongodb/node_modules/gcp-metadata": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz", + "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "gaxios": "^5.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "plugins/node/opentelemetry-instrumentation-mongodb/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" } }, "plugins/node/opentelemetry-instrumentation-mongodb/node_modules/mongodb": { - "version": "3.6.11", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.11.tgz", - "integrity": "sha512-4Y4lTFHDHZZdgMaHmojtNAlqkvddX2QQBEN0K//GzxhGwlI9tZ9R0vhbjr1Decw+TF7qK0ZLjQT292XgHRRQgw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.5.0.tgz", + "integrity": "sha512-Fozq68InT+JKABGLqctgtb8P56pRrJFkbhW0ux+x1mdHeyinor8oNzJqwLjV/t5X5nJGfTlluxfyMnOXNggIUA==", "dev": true, "dependencies": { - "bl": "^2.2.1", - "bson": "^1.1.4", - "denque": "^1.4.1", - "optional-require": "^1.0.3", - "safe-buffer": "^5.1.2" + "@mongodb-js/saslprep": "^1.1.5", + "bson": "^6.4.0", + "mongodb-connection-string-url": "^3.0.0" }, "engines": { - "node": ">=4" + "node": ">=16.20.1" }, - "optionalDependencies": { - "saslprep": "^1.0.0" + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.188.0", + "@mongodb-js/zstd": "^1.1.0", + "gcp-metadata": "^5.2.0", + "kerberos": "^2.0.1", + "mongodb-client-encryption": ">=6.0.0 <7", + "snappy": "^7.2.2", + "socks": "^2.7.1" }, "peerDependenciesMeta": { - "aws4": { + "@aws-sdk/credential-providers": { "optional": true }, - "bson-ext": { + "@mongodb-js/zstd": { + "optional": true + }, + "gcp-metadata": { "optional": true }, "kerberos": { @@ -38159,42 +38180,47 @@ "mongodb-client-encryption": { "optional": true }, - "mongodb-extjson": { + "snappy": { "optional": true }, - "snappy": { + "socks": { "optional": true } } }, - "plugins/node/opentelemetry-instrumentation-mongodb/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "plugins/node/opentelemetry-instrumentation-mongodb/node_modules/mongodb-connection-string-url": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.0.tgz", + "integrity": "sha512-t1Vf+m1I5hC2M5RJx/7AtxgABy1cZmIPQRMXw+gEIPn/cZNF3Oiy+l0UIypUwVB5trcWHq3crg2g3uAR9aAwsQ==", "dev": true, "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "@types/whatwg-url": "^11.0.2", + "whatwg-url": "^13.0.0" } }, - "plugins/node/opentelemetry-instrumentation-mongodb/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "plugins/node/opentelemetry-instrumentation-mongodb/node_modules/tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "dev": true, + "dependencies": { + "punycode": "^2.3.0" + }, + "engines": { + "node": ">=14" + } }, - "plugins/node/opentelemetry-instrumentation-mongodb/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "plugins/node/opentelemetry-instrumentation-mongodb/node_modules/whatwg-url": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", + "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", "dev": true, "dependencies": { - "safe-buffer": "~5.1.0" + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=16" } }, "plugins/node/opentelemetry-instrumentation-mysql": { @@ -44493,11 +44519,10 @@ "dev": true }, "@mongodb-js/saslprep": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.4.tgz", - "integrity": "sha512-8zJ8N1x51xo9hwPh6AWnKdLGEC5N3lDa6kms1YHmFBoRhTpJR6HG8wWk0td1MVCu9cD4YBrvjZEtd5Obw0Fbnw==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.5.tgz", + "integrity": "sha512-XLNOMH66KhJzUJNwT/qlMnS4WsNDWD5ASdyaSH3EtK+F4r/CFGa3jT4GNi4mfOitGvWXtdLgQJkQjxSVrio+jA==", "dev": true, - "optional": true, "requires": { "sparse-bitfield": "^3.0.3" } @@ -46573,7 +46598,7 @@ "@types/mongodb": "3.6.20", "@types/node": "18.6.5", "mocha": "7.2.0", - "mongodb": "3.6.11", + "mongodb": "6.5.0", "nyc": "15.1.0", "rimraf": "5.0.5", "test-all-versions": "6.1.0", @@ -46581,70 +46606,108 @@ "typescript": "4.4.4" }, "dependencies": { - "bl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", - "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", + "@types/whatwg-url": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.4.tgz", + "integrity": "sha512-lXCmTWSHJvf0TRSO58nm978b8HJ/EdsSsEKLd3ODHFjo+3VGAyyTp4v50nWvwtzBxSMQrVOK7tcuN0zGPLICMw==", + "dev": true, + "requires": { + "@types/webidl-conversions": "*" + } + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, + "optional": true, + "peer": true, "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" + "debug": "4" } }, "bson": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz", - "integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.4.0.tgz", + "integrity": "sha512-6/gSSEdbkuFlSb+ufj5jUSU4+wo8xQOwm2bDSqwmxiPE17JTpsP63eAwoN8iF8Oy4gJYj+PAL3zdRCTdaw5Y1g==", "dev": true }, - "denque": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", - "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==", - "dev": true + "gaxios": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz", + "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9" + } + }, + "gcp-metadata": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz", + "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "gaxios": "^5.0.0", + "json-bigint": "^1.0.0" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "agent-base": "6", + "debug": "4" + } }, "mongodb": { - "version": "3.6.11", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.11.tgz", - "integrity": "sha512-4Y4lTFHDHZZdgMaHmojtNAlqkvddX2QQBEN0K//GzxhGwlI9tZ9R0vhbjr1Decw+TF7qK0ZLjQT292XgHRRQgw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.5.0.tgz", + "integrity": "sha512-Fozq68InT+JKABGLqctgtb8P56pRrJFkbhW0ux+x1mdHeyinor8oNzJqwLjV/t5X5nJGfTlluxfyMnOXNggIUA==", "dev": true, "requires": { - "bl": "^2.2.1", - "bson": "^1.1.4", - "denque": "^1.4.1", - "optional-require": "^1.0.3", - "safe-buffer": "^5.1.2", - "saslprep": "^1.0.0" + "@mongodb-js/saslprep": "^1.1.5", + "bson": "^6.4.0", + "mongodb-connection-string-url": "^3.0.0" } }, - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "mongodb-connection-string-url": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.0.tgz", + "integrity": "sha512-t1Vf+m1I5hC2M5RJx/7AtxgABy1cZmIPQRMXw+gEIPn/cZNF3Oiy+l0UIypUwVB5trcWHq3crg2g3uAR9aAwsQ==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "@types/whatwg-url": "^11.0.2", + "whatwg-url": "^13.0.0" } }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "dev": true, + "requires": { + "punycode": "^2.3.0" + } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "whatwg-url": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", + "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" } } } @@ -60025,8 +60088,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "dev": true, - "optional": true + "dev": true }, "meow": { "version": "8.1.2", @@ -63065,15 +63127,6 @@ "resolved": "https://registry.npmjs.org/opentracing/-/opentracing-0.14.7.tgz", "integrity": "sha512-vz9iS7MJ5+Bp1URw8Khvdyw1H/hGvzHWlKQ7eRrQojSCDL1/SrWfrY9QebLw97n2deyRtzHRC3MkQfVNUCo91Q==" }, - "optional-require": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.1.8.tgz", - "integrity": "sha512-jq83qaUb0wNg9Krv1c5OQ+58EK+vHde6aBPzLvPPqJm89UQWsvSuFy9X/OSNJnFeSOKo7btE0n8Nl2+nE+z5nA==", - "dev": true, - "requires": { - "require-at": "^1.0.6" - } - }, "optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -64924,12 +64977,6 @@ "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "dev": true }, - "require-at": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/require-at/-/require-at-1.0.6.tgz", - "integrity": "sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g==", - "dev": true - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -65459,16 +65506,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "devOptional": true }, - "saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "dev": true, - "optional": true, - "requires": { - "sparse-bitfield": "^3.0.3" - } - }, "sax": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", @@ -66221,7 +66258,6 @@ "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", "dev": true, - "optional": true, "requires": { "memory-pager": "^1.0.2" } diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/.tav.yml b/plugins/node/opentelemetry-instrumentation-mongodb/.tav.yml index 403959c458..64af522512 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/.tav.yml +++ b/plugins/node/opentelemetry-instrumentation-mongodb/.tav.yml @@ -1,11 +1,17 @@ mongodb: - jobs: - - versions: ">=3.3 <4" - commands: npm run test-v3 - - versions: ">=4 <5" - commands: npm run test-v4 - - versions: ">=5 <6" - commands: npm run test-v5-v6 - - versions: ">=6 <6.4" - node: '>=15.0.0' - commands: npm run test-v5-v6 + - versions: ">=3.3 <4" + commands: npm run test-v3 + - versions: + include: ">=4 <5" + # This version has been excluded because `mongoose` instrumentation has it + # pined as a transitive dependency. + # When `test-all-versions` tries to install it npm actually does nothing and + # we end up running tests for the wrong version (v6.5.0) + # Ref: https://github.com/open-telemetry/opentelemetry-js-contrib/pull/2001#issuecomment-1992202942 + exclude: "4.17.1" + commands: npm run test-v4 + - versions: ">=5 <6" + commands: npm run test-v5-v6 + - versions: ">=6 <7" + node: '>=15.0.0' + commands: npm run test-v5-v6 diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/package.json b/plugins/node/opentelemetry-instrumentation-mongodb/package.json index c3fb06a8d5..c0ad347f68 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/package.json +++ b/plugins/node/opentelemetry-instrumentation-mongodb/package.json @@ -7,7 +7,7 @@ "repository": "open-telemetry/opentelemetry-js-contrib", "scripts": { "docker:start": "docker run -e MONGODB_DB=opentelemetry-tests -e MONGODB_PORT=27017 -e MONGODB_HOST=127.0.0.1 -p 27017:27017 --rm mongo", - "test": "npm run test-v3", + "test": "npm run test-v5-v6", "test-v3": "nyc ts-mocha -p tsconfig.json --require '@opentelemetry/contrib-test-utils' 'test/**/mongodb-v3.test.ts'", "test-v4": "nyc ts-mocha -p tsconfig.json --require '@opentelemetry/contrib-test-utils' 'test/mongodb-v4-v5-v6.metrics.test.ts' 'test/**/mongodb-v4.test.ts'", "test-v5-v6": "nyc ts-mocha -p tsconfig.json --require '@opentelemetry/contrib-test-utils' 'test/mongodb-v4-v5-v6.metrics.test.ts' 'test/**/mongodb-v5-v6.test.ts'", @@ -58,7 +58,7 @@ "@types/mongodb": "3.6.20", "@types/node": "18.6.5", "mocha": "7.2.0", - "mongodb": "3.6.11", + "mongodb": "6.5.0", "nyc": "15.1.0", "rimraf": "5.0.5", "test-all-versions": "6.1.0", diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts index f2c9687c34..0a1dad9af9 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts @@ -74,8 +74,11 @@ export class MongoDBInstrumentation extends InstrumentationBase { } = this._getV3ConnectionPatches(); const { v4PatchConnect, v4UnpatchConnect } = this._getV4ConnectPatches(); - const { v4PatchConnection, v4UnpatchConnection } = - this._getV4ConnectionPatches(); + const { + v4PatchConnectionCallback, + v4PatchConnectionPromise, + v4UnpatchConnection, + } = this._getV4ConnectionPatches(); const { v4PatchConnectionPool, v4UnpatchConnectionPool } = this._getV4ConnectionPoolPatches(); const { v4PatchSessions, v4UnpatchSessions } = this._getV4SessionsPatches(); @@ -97,14 +100,20 @@ export class MongoDBInstrumentation extends InstrumentationBase { ), new InstrumentationNodeModuleDefinition( 'mongodb', - ['4.*', '5.*', '>=6 <6.4'], + ['4.*', '5.*', '6.*'], undefined, undefined, [ new InstrumentationNodeModuleFile( 'mongodb/lib/cmap/connection.js', ['4.*', '5.*', '>=6 <6.4'], - v4PatchConnection, + v4PatchConnectionCallback, + v4UnpatchConnection + ), + new InstrumentationNodeModuleFile( + 'mongodb/lib/cmap/connection.js', + ['>=6.4'], + v4PatchConnectionPromise, v4UnpatchConnection ), new InstrumentationNodeModuleFile( @@ -115,13 +124,13 @@ export class MongoDBInstrumentation extends InstrumentationBase { ), new InstrumentationNodeModuleFile( 'mongodb/lib/cmap/connect.js', - ['4.*', '5.*', '>=6 <6.4'], + ['4.*', '5.*', '6.*'], v4PatchConnect, v4UnpatchConnect ), new InstrumentationNodeModuleFile( 'mongodb/lib/sessions.js', - ['4.*', '5.*', '>=6 <6.4'], + ['4.*', '5.*', '6.*'], v4PatchSessions, v4UnpatchSessions ), @@ -339,12 +348,32 @@ export class MongoDBInstrumentation extends InstrumentationBase { private _getV4ConnectCommand() { const instrumentation = this; - return (original: V4Connect['connect']) => { + return ( + original: V4Connect['connectCallback'] | V4Connect['connectPromise'] + ) => { return function patchedConnect( this: unknown, options: any, callback: any ) { + // from v6.4 `connect` method only accepts an options param and returns a promise + // with the connection + if (original.length === 1) { + const result = (original as V4Connect['connectPromise']).call( + this, + options + ); + if (result && typeof result.then === 'function') { + result.then( + () => instrumentation.setPoolName(options), + // this handler is set to pass the lint rules + () => undefined + ); + } + return result; + } + + // Earlier versions expects a callback param and return void const patchedCallback = function (err: any, conn: any) { if (err || !conn) { callback(err, conn); @@ -353,7 +382,12 @@ export class MongoDBInstrumentation extends InstrumentationBase { instrumentation.setPoolName(options); callback(err, conn); }; - return original.call(this, options, patchedCallback); + + return (original as V4Connect['connectCallback']).call( + this, + options, + patchedCallback + ); }; }; } @@ -361,7 +395,10 @@ export class MongoDBInstrumentation extends InstrumentationBase { // eslint-disable-next-line @typescript-eslint/no-unused-vars private _getV4ConnectionPatches() { return { - v4PatchConnection: (moduleExports: any, moduleVersion?: string) => { + v4PatchConnectionCallback: ( + moduleExports: any, + moduleVersion?: string + ) => { diag.debug(`Applying patch for mongodb@${moduleVersion}`); // patch insert operation if (isWrapped(moduleExports.Connection.prototype.command)) { @@ -371,7 +408,24 @@ export class MongoDBInstrumentation extends InstrumentationBase { this._wrap( moduleExports.Connection.prototype, 'command', - this._getV4PatchCommand() + this._getV4PatchCommandCallback() + ); + return moduleExports; + }, + v4PatchConnectionPromise: ( + moduleExports: any, + moduleVersion?: string + ) => { + diag.debug(`Applying patch for mongodb@${moduleVersion}`); + // patch insert operation + if (isWrapped(moduleExports.Connection.prototype.command)) { + this._unwrap(moduleExports.Connection.prototype, 'command'); + } + + this._wrap( + moduleExports.Connection.prototype, + 'command', + this._getV4PatchCommandPromise() ); return moduleExports; }, @@ -482,9 +536,9 @@ export class MongoDBInstrumentation extends InstrumentationBase { } /** Creates spans for command operation */ - private _getV4PatchCommand() { + private _getV4PatchCommandCallback() { const instrumentation = this; - return (original: V4Connection['command']) => { + return (original: V4Connection['commandCallback']) => { return function patchedV4ServerCommand( this: any, ns: any, @@ -504,22 +558,12 @@ export class MongoDBInstrumentation extends InstrumentationBase { ) { return original.call(this, ns, cmd, options, callback); } - if (!currentSpan) { - const patchedCallback = instrumentation._patchEnd( - undefined, - resultHandler, - this.id, - commandType - ); - return original.call(this, ns, cmd, options, patchedCallback); - } else { - const span = instrumentation.tracer.startSpan( - `mongodb.${commandType}`, - { - kind: SpanKind.CLIENT, - } - ); + let span = undefined; + if (currentSpan) { + span = instrumentation.tracer.startSpan(`mongodb.${commandType}`, { + kind: SpanKind.CLIENT, + }); instrumentation._populateV4Attributes( span, this, @@ -527,15 +571,64 @@ export class MongoDBInstrumentation extends InstrumentationBase { cmd, commandType ); - const patchedCallback = instrumentation._patchEnd( + } + const patchedCallback = instrumentation._patchEnd( + span, + resultHandler, + this.id, + commandType + ); + + return original.call(this, ns, cmd, options, patchedCallback); + }; + }; + } + + private _getV4PatchCommandPromise() { + const instrumentation = this; + return (original: V4Connection['commandPromise']) => { + return function patchedV4ServerCommand( + this: any, + ns: any, + cmd: any, + options: undefined | unknown + ) { + const currentSpan = trace.getSpan(context.active()); + const commandType = Object.keys(cmd)[0]; + const resultHandler = () => undefined; + + if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) { + return original.call(this, ns, cmd, options); + } + + let span = undefined; + if (currentSpan) { + span = instrumentation.tracer.startSpan(`mongodb.${commandType}`, { + kind: SpanKind.CLIENT, + }); + instrumentation._populateV4Attributes( span, - resultHandler, - this.id, + this, + ns, + cmd, commandType ); - - return original.call(this, ns, cmd, options, patchedCallback); } + + const patchedCallback = instrumentation._patchEnd( + span, + resultHandler, + this.id, + commandType + ); + + const result = original.call(this, ns, cmd, options); + result.then( + (res: any) => patchedCallback(null, res), + (err: any) => patchedCallback(err) + ); + + return result; }; }; } diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/src/internal-types.ts b/plugins/node/opentelemetry-instrumentation-mongodb/src/internal-types.ts index 5cb4119de5..38b357077b 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/src/internal-types.ts +++ b/plugins/node/opentelemetry-instrumentation-mongodb/src/internal-types.ts @@ -174,9 +174,18 @@ export type Document = { [key: string]: any; }; -// https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/cmap/connection.ts export type V4Connection = { - command( + command: Function; + // From version 6.4.0 the method does not expect a callback and returns a promise + // https://github.com/mongodb/node-mongodb-native/blob/v6.4.2/src/cmap/connection.ts + commandPromise( + ns: any, + cmd: Document, + options: undefined | unknown + ): Promise; + // Earlier versions expect a callback param and return void + // https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/cmap/connection.ts + commandCallback( ns: any, cmd: Document, options: undefined | unknown, @@ -191,9 +200,14 @@ export type V4ConnectionPool = { checkOut: (callback: (error: any, connection: any) => void) => void; }; -// https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/cmap/connect.ts export type V4Connect = { - connect: (options: any, callback: any) => void; + connect: Function; + // From version 6.4.0 the method does not expect a callback and returns a promise + // https://github.com/mongodb/node-mongodb-native/blob/v6.4.0/src/cmap/connect.ts + connectPromise: (options: any) => Promise; + // Earlier versions expect a callback param and return void + // https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/cmap/connect.ts + connectCallback: (options: any, callback: any) => void; }; // https://github.com/mongodb/node-mongodb-native/blob/v4.2.2/src/sessions.ts 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 938c00875a..144c375c68 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/test/mongodb-v3.test.ts +++ b/plugins/node/opentelemetry-instrumentation-mongodb/test/mongodb-v3.test.ts @@ -31,7 +31,7 @@ const instrumentation = registerInstrumentationTesting( new MongoDBInstrumentation() ); -import * as mongodb from 'mongodb'; +import type { MongoClient, Collection } from 'mongodb'; import { assertSpans, accessCollection, DEFAULT_MONGO_HOST } from './utils'; import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; @@ -54,8 +54,8 @@ describe('MongoDBInstrumentation-Tracing-v3', () => { const DB_NAME = process.env.MONGODB_DB || 'opentelemetry-tests'; const COLLECTION_NAME = 'test'; - let client: mongodb.MongoClient; - let collection: mongodb.Collection; + let client: MongoClient; + let collection: Collection; before(done => { shouldTest = true; @@ -66,9 +66,7 @@ describe('MongoDBInstrumentation-Tracing-v3', () => { done(); }) .catch((err: Error) => { - console.log( - 'Skipping test-mongodb. Could not connect. Run MongoDB to test' - ); + console.log('Skipping test-mongodb. ' + err.message); shouldTest = false; done(); }); @@ -83,6 +81,7 @@ describe('MongoDBInstrumentation-Tracing-v3', () => { } // Non traced insertion of basic data to perform tests const insertData = [{ a: 1 }, { a: 2 }, { a: 3 }]; + // @ts-expect-error -- v5 removed callback support collection.insertMany(insertData, (err: any, result: any) => { resetMemoryExporter(); done(); @@ -91,9 +90,11 @@ describe('MongoDBInstrumentation-Tracing-v3', () => { afterEach(done => { if (shouldTest) { - return collection.deleteMany({}, done); + // @ts-expect-error -- v5 removed callback support + collection.deleteMany({}, done); + } else { + done(); } - done(); }); after(() => { @@ -542,8 +543,8 @@ describe('MongoDBInstrumentation-Tracing-v3', () => { }); describe('MongoDb useUnifiedTopology enabled', () => { - let client: mongodb.MongoClient; - let collection: mongodb.Collection; + let client: MongoClient; + let collection: Collection; before(done => { accessCollection(URL, DB_NAME, COLLECTION_NAME, { // eslint-disable-next-line @typescript-eslint/ban-ts-comment @@ -556,9 +557,7 @@ describe('MongoDBInstrumentation-Tracing-v3', () => { done(); }) .catch((err: Error) => { - console.log( - 'Skipping test-mongodb. Could not connect. Run MongoDB to test' - ); + console.log('Skipping test-mongodb. ' + err.message); shouldTest = false; done(); }); @@ -571,6 +570,7 @@ describe('MongoDBInstrumentation-Tracing-v3', () => { it('should generate correct span attributes', done => { const span = trace.getTracer('default').startSpan('findRootSpan'); context.with(trace.setSpan(context.active(), span), () => { + // @ts-expect-error -- v5 removed callback support collection.find({ a: 1 }).toArray((err, results) => { span.end(); const [mongoSpan] = getTestSpans(); diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/test/mongodb-v4-v5-v6.metrics.test.ts b/plugins/node/opentelemetry-instrumentation-mongodb/test/mongodb-v4-v5-v6.metrics.test.ts index eb8d3b3946..9bb49cb45b 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/test/mongodb-v4-v5-v6.metrics.test.ts +++ b/plugins/node/opentelemetry-instrumentation-mongodb/test/mongodb-v4-v5-v6.metrics.test.ts @@ -44,7 +44,7 @@ const instrumentation = registerInstrumentationTesting( ); import { accessCollection, DEFAULT_MONGO_HOST } from './utils'; -import * as mongodb from 'mongodb'; +import type { MongoClient, Collection } from 'mongodb'; import * as assert from 'assert'; async function waitForNumberOfExports( @@ -80,11 +80,26 @@ describe('MongoDBInstrumentation-Metrics', () => { const DB_NAME = process.env.MONGODB_DB || 'opentelemetry-tests-metrics'; const COLLECTION_NAME = 'test-metrics'; const URL = `mongodb://${HOST}:${PORT}/${DB_NAME}`; - let client: mongodb.MongoClient; - before(() => { + let client: MongoClient; + let collection: Collection; + + before(done => { otelTestingMeterProvider.addMetricReader(metricReader); instrumentation?.setMeterProvider(otelTestingMeterProvider); + + shouldTest = true; + accessCollection(URL, DB_NAME, COLLECTION_NAME) + .then(result => { + client = result.client; + collection = result.collection; + done(); + }) + .catch((err: Error) => { + console.log('Skipping test-mongodb. ' + err.message); + shouldTest = false; + done(); + }); }); beforeEach(function mongoBeforeEach(done) { @@ -100,9 +115,6 @@ describe('MongoDBInstrumentation-Metrics', () => { }); it('Should add connection usage metrics', async () => { - const result = await accessCollection(URL, DB_NAME, COLLECTION_NAME); - client = result.client; - const collection = result.collection; const insertData = [{ a: 1 }, { a: 2 }, { a: 3 }]; await collection.insertMany(insertData); await collection.deleteMany({}); 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 7fb8dc4fca..1a8af5f081 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/test/mongodb-v4.test.ts +++ b/plugins/node/opentelemetry-instrumentation-mongodb/test/mongodb-v4.test.ts @@ -33,7 +33,7 @@ const instrumentation = registerInstrumentationTesting( new MongoDBInstrumentation() ); -import * as mongodb from 'mongodb'; +import type { MongoClient, Collection } from 'mongodb'; import { assertSpans, accessCollection, DEFAULT_MONGO_HOST } from './utils'; import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; @@ -56,8 +56,8 @@ describe('MongoDBInstrumentation-Tracing-v4', () => { const COLLECTION_NAME = 'test-traces'; const URL = `mongodb://${HOST}:${PORT}/${DB_NAME}`; - let client: mongodb.MongoClient; - let collection: mongodb.Collection; + let client: MongoClient; + let collection: Collection; before(done => { accessCollection(URL, DB_NAME, COLLECTION_NAME) @@ -67,9 +67,7 @@ describe('MongoDBInstrumentation-Tracing-v4', () => { done(); }) .catch((err: Error) => { - console.log( - 'Skipping test-mongodb. Could not connect. Run MongoDB to test' - ); + console.log('Skipping test-mongodb. ' + err.message); shouldTest = false; done(); }); @@ -84,6 +82,7 @@ describe('MongoDBInstrumentation-Tracing-v4', () => { } // Non traced insertion of basic data to perform tests const insertData = [{ a: 1 }, { a: 2 }, { a: 3 }]; + // @ts-expect-error -- v5 removed callback support collection.insertMany(insertData, (err: any, result: any) => { resetMemoryExporter(); done(); @@ -92,9 +91,11 @@ describe('MongoDBInstrumentation-Tracing-v4', () => { afterEach(done => { if (shouldTest) { - return collection.deleteMany({}, done); + // @ts-expect-error -- v5 removed callback support + collection.deleteMany({}, done); + } else { + done(); } - done(); }); after(async () => { 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 b264a44efe..be6ac80ee0 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 @@ -42,7 +42,7 @@ let instrumentation: MongoDBInstrumentation; } } -import * as mongodb from 'mongodb'; +import type { MongoClient, Collection } from 'mongodb'; import { assertSpans, accessCollection, DEFAULT_MONGO_HOST } from './utils'; import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; @@ -65,8 +65,8 @@ describe('MongoDBInstrumentation-Tracing-v5', () => { const COLLECTION_NAME = 'test-traces'; const URL = `mongodb://${HOST}:${PORT}/${DB_NAME}`; - let client: mongodb.MongoClient; - let collection: mongodb.Collection; + let client: MongoClient; + let collection: Collection; before(done => { accessCollection(URL, DB_NAME, COLLECTION_NAME) @@ -76,9 +76,7 @@ describe('MongoDBInstrumentation-Tracing-v5', () => { done(); }) .catch((err: Error) => { - console.log( - 'Skipping test-mongodb. Could not connect. Run MongoDB to test' - ); + console.log('Skipping test-mongodb. ' + err.message); shouldTest = false; done(); }); diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/test/utils.ts b/plugins/node/opentelemetry-instrumentation-mongodb/test/utils.ts index 02b26705f6..a158cc9b16 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/test/utils.ts +++ b/plugins/node/opentelemetry-instrumentation-mongodb/test/utils.ts @@ -18,13 +18,13 @@ import { SpanKind, SpanStatusCode } from '@opentelemetry/api'; import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; import * as assert from 'assert'; -import * as mongodb from 'mongodb'; +import type { MongoClient, MongoClientOptions, Collection } from 'mongodb'; export const DEFAULT_MONGO_HOST = '127.0.0.1'; export interface MongoDBAccess { - client: mongodb.MongoClient; - collection: mongodb.Collection; + client: MongoClient; + collection: Collection; } /** @@ -38,19 +38,28 @@ export function accessCollection( url: string, dbName: string, collectionName: string, - options: mongodb.MongoClientOptions = {} + options: MongoClientOptions = {} ): Promise { return new Promise((resolve, reject) => { + let mongodb; + try { + mongodb = require('mongodb'); + } catch (err: any) { + reject(new Error('Could not load mongodb. ' + err.message)); + return; + } mongodb.MongoClient.connect(url, { serverSelectionTimeoutMS: 1000, }) - .then(client => { + .then((client: MongoClient) => { const db = client.db(dbName); const collection = db.collection(collectionName); resolve({ client, collection }); }) - .catch(reason => { - reject(reason); + .catch((reason: any) => { + reject( + new Error('Could not connect. Run MongoDB to test. ' + reason.message) + ); }); }); } From 85cbc8d4991c475680ce01f532968753df79dbc8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Mar 2024 10:51:54 +0100 Subject: [PATCH 007/121] chore(deps): bump express from 4.18.2 to 4.19.2 in /examples/fastify (#2041) Bumps [express](https://github.com/expressjs/express) from 4.18.2 to 4.19.2. - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/master/History.md) - [Commits](https://github.com/expressjs/express/compare/4.18.2...4.19.2) --- updated-dependencies: - dependency-name: express dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- examples/fastify/package-lock.json | 1870 +++++++++++++++++++++++++++- 1 file changed, 1823 insertions(+), 47 deletions(-) diff --git a/examples/fastify/package-lock.json b/examples/fastify/package-lock.json index ce02b143df..95de3dec92 100644 --- a/examples/fastify/package-lock.json +++ b/examples/fastify/package-lock.json @@ -1,7 +1,7 @@ { "name": "example-fastify", "version": "0.26.0", - "lockfileVersion": 3, + "lockfileVersion": 2, "requires": true, "packages": { "": { @@ -754,12 +754,12 @@ ] }, "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -767,7 +767,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -821,13 +821,18 @@ } }, "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -957,16 +962,19 @@ } }, "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/delayed-stream": { @@ -1012,6 +1020,25 @@ "node": ">= 0.8" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -1050,16 +1077,16 @@ } }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -1090,6 +1117,14 @@ "node": ">= 0.10.0" } }, + "node_modules/express/node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/express/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -1322,15 +1357,19 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { + "es-errors": "^1.3.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -1347,20 +1386,20 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "get-intrinsic": "^1.2.2" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "engines": { "node": ">= 0.4" }, @@ -1805,9 +1844,9 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -2036,14 +2075,16 @@ "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==" }, "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -2079,13 +2120,17 @@ "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2299,5 +2344,1736 @@ "node": ">=12" } } + }, + "dependencies": { + "@fastify/ajv-compiler": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.5.0.tgz", + "integrity": "sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==", + "requires": { + "ajv": "^8.11.0", + "ajv-formats": "^2.1.1", + "fast-uri": "^2.0.0" + } + }, + "@fastify/deepmerge": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@fastify/deepmerge/-/deepmerge-1.3.0.tgz", + "integrity": "sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==" + }, + "@fastify/error": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@fastify/error/-/error-3.4.1.tgz", + "integrity": "sha512-wWSvph+29GR783IhmvdwWnN4bUxTD01Vm5Xad4i7i1VuAOItLvbPAb69sb0IQ2N57yprvhNIwAP5B6xfKTmjmQ==" + }, + "@fastify/express": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@fastify/express/-/express-2.3.0.tgz", + "integrity": "sha512-jvvjlPPCfJsSHfF6tQDyARJ3+c3xXiqcxVZu6bi3xMWCWB3fl07vrjFDeaqnwqKhLZ9+m6cog5dw7gIMKEsTnQ==", + "requires": { + "express": "^4.17.1", + "fastify-plugin": "^4.0.0" + }, + "dependencies": { + "fastify-plugin": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-4.5.1.tgz", + "integrity": "sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==" + } + } + }, + "@fastify/fast-json-stringify-compiler": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.3.0.tgz", + "integrity": "sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==", + "requires": { + "fast-json-stringify": "^5.7.0" + } + }, + "@grpc/grpc-js": { + "version": "1.9.13", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.13.tgz", + "integrity": "sha512-OEZZu9v9AA+7/tghMDE8o5DAMD5THVnwSqDWuh7PPYO5287rTyqy0xEHT6/e4pbqSrhyLPdQFsam4TwFQVVIIw==", + "requires": { + "@grpc/proto-loader": "^0.7.8", + "@types/node": ">=12.12.47" + } + }, + "@grpc/proto-loader": { + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.10.tgz", + "integrity": "sha512-CAqDfoaQ8ykFd9zqBDn4k6iWT9loLAlc2ETmDFS9JCD70gDcnA4L3AFEo2iV7KyAtAAHFW9ftq1Fz+Vsgq80RQ==", + "requires": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.2.4", + "yargs": "^17.7.2" + }, + "dependencies": { + "long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + } + } + }, + "@opentelemetry/api": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.7.0.tgz", + "integrity": "sha512-AdY5wvN0P2vXBi3b29hxZgSFvdhdxPB9+f0B6s//P9Q8nibRWeA3cHm8UmLpio9ABigkVHJ5NMPk+Mz8VCCyrw==" + }, + "@opentelemetry/api-logs": { + "version": "0.46.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.46.0.tgz", + "integrity": "sha512-+9BcqfiEDGPXEIo+o3tso/aqGM5dGbGwAkGVp3FPpZ8GlkK1YlaKRd9gMVyPaeRATwvO5wYGGnCsAc/sMMM9Qw==", + "requires": { + "@opentelemetry/api": "^1.0.0" + } + }, + "@opentelemetry/context-async-hooks": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.19.0.tgz", + "integrity": "sha512-0i1ECOc9daKK3rjUgDDXf0GDD5XfCou5lXnt2DALIc2qKoruPPcesobNKE54laSVUWnC3jX26RzuOa31g0V32A==", + "requires": {} + }, + "@opentelemetry/core": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.19.0.tgz", + "integrity": "sha512-w42AukJh3TP8R0IZZOVJVM/kMWu8g+lm4LzT70WtuKqhwq7KVhcDzZZuZinWZa6TtQCl7Smt2wolEYzpHabOgw==", + "requires": { + "@opentelemetry/semantic-conventions": "1.19.0" + } + }, + "@opentelemetry/exporter-metrics-otlp-http": { + "version": "0.46.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.46.0.tgz", + "integrity": "sha512-7dyNATgM1LCKv4RGf3zsbHZMQNILQ6bxZ5/a56ptGDgg6Bz8Iz8jghonBx/K++A4QNMnu7Ppamm5qL2xlWEYjg==", + "requires": { + "@opentelemetry/core": "1.19.0", + "@opentelemetry/otlp-exporter-base": "0.46.0", + "@opentelemetry/otlp-transformer": "0.46.0", + "@opentelemetry/resources": "1.19.0", + "@opentelemetry/sdk-metrics": "1.19.0" + } + }, + "@opentelemetry/exporter-metrics-otlp-proto": { + "version": "0.46.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-proto/-/exporter-metrics-otlp-proto-0.46.0.tgz", + "integrity": "sha512-2nj4YoTMcx/PixfTp+Zj7G7uJm9twzlq50TVy9rCRLRC30qSuvNYcEXymNYI1GtOZmQT6FQB1AHE9+JZNetVNg==", + "requires": { + "@opentelemetry/core": "1.19.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.46.0", + "@opentelemetry/otlp-exporter-base": "0.46.0", + "@opentelemetry/otlp-proto-exporter-base": "0.46.0", + "@opentelemetry/otlp-transformer": "0.46.0", + "@opentelemetry/resources": "1.19.0", + "@opentelemetry/sdk-metrics": "1.19.0" + } + }, + "@opentelemetry/exporter-trace-otlp-grpc": { + "version": "0.46.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.46.0.tgz", + "integrity": "sha512-kR4kehnfIhv7v/2MuNYfrlh9A/ZtQofwCzurTIplornUjdzhKDGgjui1NkNTqTfM1QkqfCiavGsf5hwocx29bA==", + "requires": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "1.19.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.46.0", + "@opentelemetry/otlp-transformer": "0.46.0", + "@opentelemetry/resources": "1.19.0", + "@opentelemetry/sdk-trace-base": "1.19.0" + } + }, + "@opentelemetry/exporter-trace-otlp-http": { + "version": "0.46.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.46.0.tgz", + "integrity": "sha512-vZ2pYOB+qrQ+jnKPY6Gnd58y1k/Ti//Ny6/XsSX7/jED0X77crtSVgC6N5UA0JiGJOh6QB2KE9gaH99010XHzg==", + "requires": { + "@opentelemetry/core": "1.19.0", + "@opentelemetry/otlp-exporter-base": "0.46.0", + "@opentelemetry/otlp-transformer": "0.46.0", + "@opentelemetry/resources": "1.19.0", + "@opentelemetry/sdk-trace-base": "1.19.0" + } + }, + "@opentelemetry/exporter-trace-otlp-proto": { + "version": "0.46.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.46.0.tgz", + "integrity": "sha512-A7PftDM57w1TLiirrhi8ceAnCpYkpUBObELdn239IyYF67zwngImGfBLf5Yo3TTAOA2Oj1TL76L8zWVL8W+Suw==", + "requires": { + "@opentelemetry/core": "1.19.0", + "@opentelemetry/otlp-exporter-base": "0.46.0", + "@opentelemetry/otlp-proto-exporter-base": "0.46.0", + "@opentelemetry/otlp-transformer": "0.46.0", + "@opentelemetry/resources": "1.19.0", + "@opentelemetry/sdk-trace-base": "1.19.0" + } + }, + "@opentelemetry/exporter-zipkin": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.19.0.tgz", + "integrity": "sha512-TY1fy4JiOBN5a8T9fknqTMcz0DXIeFBr6sklaLCgwtj+G699a5R4CekNwpeM7DHSwC44UMX7gljO2I6dYsTS3A==", + "requires": { + "@opentelemetry/core": "1.19.0", + "@opentelemetry/resources": "1.19.0", + "@opentelemetry/sdk-trace-base": "1.19.0", + "@opentelemetry/semantic-conventions": "1.19.0" + } + }, + "@opentelemetry/instrumentation": { + "version": "0.46.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.46.0.tgz", + "integrity": "sha512-a9TijXZZbk0vI5TGLZl+0kxyFfrXHhX6Svtz7Pp2/VBlCSKrazuULEyoJQrOknJyFWNMEmbbJgOciHCCpQcisw==", + "requires": { + "@types/shimmer": "^1.0.2", + "import-in-the-middle": "1.7.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + } + }, + "@opentelemetry/instrumentation-fastify": { + "version": "0.32.6", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.32.6.tgz", + "integrity": "sha512-UkBu8rAqeVC034jsRMiEAmYhFQ03pvmE/MnoPKE9gAbgVtPILdekHYqAKM0MdqnEjW7pO45t4wWsbtIcN0eiBw==", + "requires": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.46.0", + "@opentelemetry/semantic-conventions": "^1.0.0" + } + }, + "@opentelemetry/instrumentation-http": { + "version": "0.46.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.46.0.tgz", + "integrity": "sha512-t5cxgqfV9AcxVP00/OL1ggkOSZM57VXDpvlWaOidYyyfLKcUJ9e2fGbNwoVsGFboRDeH0iFo7gLA3EEvX13wCA==", + "requires": { + "@opentelemetry/core": "1.19.0", + "@opentelemetry/instrumentation": "0.46.0", + "@opentelemetry/semantic-conventions": "1.19.0", + "semver": "^7.5.2" + } + }, + "@opentelemetry/otlp-exporter-base": { + "version": "0.46.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.46.0.tgz", + "integrity": "sha512-hfkh7cG17l77ZSLRAogz19SIJzr0KeC7xv5PDyTFbHFpwwoxV/bEViO49CqUFH6ckXB63NrltASP9R7po+ahTQ==", + "requires": { + "@opentelemetry/core": "1.19.0" + } + }, + "@opentelemetry/otlp-grpc-exporter-base": { + "version": "0.46.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.46.0.tgz", + "integrity": "sha512-/KB/xfZZiWIY2JknvCoT/e9paIzQO3QCBN5gR6RyxpXM/AGx3YTAOKvB/Ts9Va19jo5aE74gB7emhFaCNy4Rmw==", + "requires": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "1.19.0", + "@opentelemetry/otlp-exporter-base": "0.46.0", + "protobufjs": "^7.2.3" + } + }, + "@opentelemetry/otlp-proto-exporter-base": { + "version": "0.46.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.46.0.tgz", + "integrity": "sha512-rEJBA8U2AxfEzrdIUcyyjOweyVFkO6V1XAxwP161JkxpvNuVDdULHAfRVnGtoZhiVA1XsJKcpIIq2MEKAqq4cg==", + "requires": { + "@opentelemetry/core": "1.19.0", + "@opentelemetry/otlp-exporter-base": "0.46.0", + "protobufjs": "^7.2.3" + } + }, + "@opentelemetry/otlp-transformer": { + "version": "0.46.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.46.0.tgz", + "integrity": "sha512-Fj9hZwr6xuqgsaERn667Uf6kuDG884puWhyrai2Jen2Fq+bGf4/5BzEJp/8xvty0VSU4EfXOto/ys3KpSz2UHg==", + "requires": { + "@opentelemetry/api-logs": "0.46.0", + "@opentelemetry/core": "1.19.0", + "@opentelemetry/resources": "1.19.0", + "@opentelemetry/sdk-logs": "0.46.0", + "@opentelemetry/sdk-metrics": "1.19.0", + "@opentelemetry/sdk-trace-base": "1.19.0" + } + }, + "@opentelemetry/propagator-b3": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.19.0.tgz", + "integrity": "sha512-v7y5IBOKBm0vP3yf0DHzlw4L2gL6tZ0KeeMTaxfO5IuomMffDbrGWcvYFp0Dt4LdZctTSK523rVLBB9FBHBciQ==", + "requires": { + "@opentelemetry/core": "1.19.0" + } + }, + "@opentelemetry/propagator-jaeger": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.19.0.tgz", + "integrity": "sha512-dedkOoTzKg+nYoLWCMp0Im+wo+XkTRW6aXhi8VQRtMW/9SNJGOllCJSu8llToLxMDF0+6zu7OCrKkevAof2tew==", + "requires": { + "@opentelemetry/core": "1.19.0" + } + }, + "@opentelemetry/resources": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.19.0.tgz", + "integrity": "sha512-RgxvKuuMOf7nctOeOvpDjt2BpZvZGr9Y0vf7eGtY5XYZPkh2p7e2qub1S2IArdBMf9kEbz0SfycqCviOu9isqg==", + "requires": { + "@opentelemetry/core": "1.19.0", + "@opentelemetry/semantic-conventions": "1.19.0" + } + }, + "@opentelemetry/sdk-logs": { + "version": "0.46.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.46.0.tgz", + "integrity": "sha512-Knlyk4+G72uEzNh6GRN1Fhmrj+/rkATI5/lOrevN7zRDLgp4kfyZBGGoWk7w+qQjlYvwhIIdPVxlIcipivdZIg==", + "requires": { + "@opentelemetry/core": "1.19.0", + "@opentelemetry/resources": "1.19.0" + } + }, + "@opentelemetry/sdk-metrics": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.19.0.tgz", + "integrity": "sha512-FiMii40zr0Fmys4F1i8gmuCvbinBnBsDeGBr4FQemOf0iPCLytYQm5AZJ/nn4xSc71IgKBQwTFQRAGJI7JvZ4Q==", + "requires": { + "@opentelemetry/core": "1.19.0", + "@opentelemetry/resources": "1.19.0", + "lodash.merge": "^4.6.2" + } + }, + "@opentelemetry/sdk-node": { + "version": "0.46.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.46.0.tgz", + "integrity": "sha512-BQhzdCRZXchhKjZaFkgxlgoowjOt/QXekJ1CZgfvFO9Yg5GV15LyJFUEyQkDyD8XbshGo3Cnj0WZMBnDWtWY1A==", + "requires": { + "@opentelemetry/api-logs": "0.46.0", + "@opentelemetry/core": "1.19.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.46.0", + "@opentelemetry/exporter-trace-otlp-http": "0.46.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.46.0", + "@opentelemetry/exporter-zipkin": "1.19.0", + "@opentelemetry/instrumentation": "0.46.0", + "@opentelemetry/resources": "1.19.0", + "@opentelemetry/sdk-logs": "0.46.0", + "@opentelemetry/sdk-metrics": "1.19.0", + "@opentelemetry/sdk-trace-base": "1.19.0", + "@opentelemetry/sdk-trace-node": "1.19.0", + "@opentelemetry/semantic-conventions": "1.19.0" + } + }, + "@opentelemetry/sdk-trace-base": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.19.0.tgz", + "integrity": "sha512-+IRvUm+huJn2KqfFW3yW/cjvRwJ8Q7FzYHoUNx5Fr0Lws0LxjMJG1uVB8HDpLwm7mg5XXH2M5MF+0jj5cM8BpQ==", + "requires": { + "@opentelemetry/core": "1.19.0", + "@opentelemetry/resources": "1.19.0", + "@opentelemetry/semantic-conventions": "1.19.0" + } + }, + "@opentelemetry/sdk-trace-node": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.19.0.tgz", + "integrity": "sha512-TCiEq/cUjM15RFqBRwWomTVbOqzndWL4ILa7ZCu0zbjU1/XY6AgHkgrgAc7vGP6TjRqH4Xryuglol8tcIfbBUQ==", + "requires": { + "@opentelemetry/context-async-hooks": "1.19.0", + "@opentelemetry/core": "1.19.0", + "@opentelemetry/propagator-b3": "1.19.0", + "@opentelemetry/propagator-jaeger": "1.19.0", + "@opentelemetry/sdk-trace-base": "1.19.0", + "semver": "^7.5.2" + } + }, + "@opentelemetry/semantic-conventions": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.19.0.tgz", + "integrity": "sha512-14jRpC8f5c0gPSwoZ7SbEJni1PqI+AhAE8m1bMz6v+RPM4OlP1PT2UHBJj5Qh/ALLPjhVU/aZUK3YyjTUqqQVg==" + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "@types/node": { + "version": "20.10.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.6.tgz", + "integrity": "sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==", + "requires": { + "undici-types": "~5.26.4" + } + }, + "@types/shimmer": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.0.5.tgz", + "integrity": "sha512-9Hp0ObzwwO57DpLFF0InUjUm/II8GmKAvzbefxQTihCb7KI6yc9yzf0nLc4mVdby5N4DRCgQM2wCup9KTieeww==" + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "abstract-logging": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", + "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==" + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==" + }, + "acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "requires": {} + }, + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "requires": { + "ajv": "^8.0.0" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==" + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==" + }, + "avvio": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/avvio/-/avvio-8.2.1.tgz", + "integrity": "sha512-TAlMYvOuwGyLK3PfBb5WKBXZmXz2fVCgv23d6zZFdle/q3gPjmxBaeuC0pY0Dzs5PWMSgfqqEZkrye19GlDTgw==", + "requires": { + "archy": "^1.0.0", + "debug": "^4.0.0", + "fastq": "^1.6.1" + } + }, + "axios": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.4.tgz", + "integrity": "sha512-heJnIs6N4aa1eSthhN9M5ioILu8Wi8vmQW9iHQ9NUvfkJb0lEEDUiIdQNAuBtfUt3FxReaKdpQA5DbmMOqzF/A==", + "requires": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + } + }, + "cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "requires": { + "cross-spawn": "^7.0.1" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "fast-content-type-parse": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-1.1.0.tgz", + "integrity": "sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==" + }, + "fast-decode-uri-component": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", + "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-json-stringify": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.9.2.tgz", + "integrity": "sha512-SwHnT5PL2BawF0ccL+8b800QovvopUPgV/qzhBY+vw5ZniDH9boewbzBXYox+SetfD2dlxAgeZKSnELzrA+2hg==", + "requires": { + "@fastify/deepmerge": "^1.0.0", + "ajv": "^8.10.0", + "ajv-formats": "^2.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^2.1.0", + "json-schema-ref-resolver": "^1.0.1", + "rfdc": "^1.2.0" + } + }, + "fast-querystring": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz", + "integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==", + "requires": { + "fast-decode-uri-component": "^1.0.1" + } + }, + "fast-redact": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz", + "integrity": "sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==" + }, + "fast-uri": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.3.0.tgz", + "integrity": "sha512-eel5UKGn369gGEWOqBShmFJWfq/xSJvsgDzgLYC845GneayWvXBf0lJCBn5qTABfewy1ZDPoaR5OZCP+kssfuw==" + }, + "fastify": { + "version": "4.25.2", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.25.2.tgz", + "integrity": "sha512-SywRouGleDHvRh054onj+lEZnbC1sBCLkR0UY3oyJwjD4BdZJUrxBqfkfCaqn74pVCwBaRHGuL3nEWeHbHzAfw==", + "requires": { + "@fastify/ajv-compiler": "^3.5.0", + "@fastify/error": "^3.4.0", + "@fastify/fast-json-stringify-compiler": "^4.3.0", + "abstract-logging": "^2.0.1", + "avvio": "^8.2.1", + "fast-content-type-parse": "^1.1.0", + "fast-json-stringify": "^5.8.0", + "find-my-way": "^7.7.0", + "light-my-request": "^5.11.0", + "pino": "^8.17.0", + "process-warning": "^3.0.0", + "proxy-addr": "^2.0.7", + "rfdc": "^1.3.0", + "secure-json-parse": "^2.7.0", + "semver": "^7.5.4", + "toad-cache": "^3.3.0" + }, + "dependencies": { + "process-warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", + "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==" + } + } + }, + "fastify-cors": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/fastify-cors/-/fastify-cors-6.1.0.tgz", + "integrity": "sha512-QBKz32IoY/iuT74CunRY1XOSpjSTIOh9E3FxulXIBhd0D2vdgG0kDvy0eG6HA/88sRfWHeba43LkGEXPz0Rh8g==", + "requires": { + "fastify-cors-deprecated": "npm:fastify-cors@6.0.3", + "process-warning": "^1.0.0" + } + }, + "fastify-cors-deprecated": { + "version": "npm:fastify-cors@6.0.3", + "resolved": "https://registry.npmjs.org/fastify-cors/-/fastify-cors-6.0.3.tgz", + "integrity": "sha512-fMbXubKKyBHHCfSBtsCi3+7VyVRdhJQmGes5gM+eGKkRErCdm0NaYO0ozd31BQBL1ycoTIjbqOZhJo4RTF/Vlg==", + "requires": { + "fastify-plugin": "^3.0.0", + "vary": "^1.1.2" + } + }, + "fastify-plugin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-3.0.1.tgz", + "integrity": "sha512-qKcDXmuZadJqdTm6vlCqioEbyewF60b/0LOFCcYN1B6BIZGlYJumWWOYs70SFYLDAH4YqdE1cxH/RKMG7rFxgA==" + }, + "fastq": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", + "requires": { + "reusify": "^1.0.4" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "find-my-way": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-7.7.0.tgz", + "integrity": "sha512-+SrHpvQ52Q6W9f3wJoJBbAQULJuNEEQwBvlvYwACDhBTLOTMiQ0HYWh4+vC3OivGP2ENcTI1oKlFA2OepJNjhQ==", + "requires": { + "fast-deep-equal": "^3.1.3", + "fast-querystring": "^1.0.0", + "safe-regex2": "^2.0.0" + } + }, + "follow-redirects": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==" + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "requires": { + "es-define-property": "^1.0.0" + } + }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "requires": { + "function-bind": "^1.1.2" + } + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "import-in-the-middle": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.7.1.tgz", + "integrity": "sha512-1LrZPDtW+atAxH42S6288qyDFNQ2YCty+2mxEPRtfazH6Z5QwkaBSTS2ods7hnVJioF6rkRfNoA6A/MstpFXLg==", + "requires": { + "acorn": "^8.8.2", + "acorn-import-assertions": "^1.9.0", + "cjs-module-lexer": "^1.2.2", + "module-details-from-path": "^1.0.3" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "requires": { + "hasown": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "json-schema-ref-resolver": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-1.0.1.tgz", + "integrity": "sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "light-my-request": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.11.0.tgz", + "integrity": "sha512-qkFCeloXCOMpmEdZ/MV91P8AT4fjwFXWaAFz3lUeStM8RcoM1ks4J/F8r1b3r6y/H4u3ACEJ1T+Gv5bopj7oDA==", + "requires": { + "cookie": "^0.5.0", + "process-warning": "^2.0.0", + "set-cookie-parser": "^2.4.1" + }, + "dependencies": { + "process-warning": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.3.2.tgz", + "integrity": "sha512-n9wh8tvBe5sFmsqlg+XQhaQLumwpqoAUruLwjCopgTmUBjJ/fjtBsJzKleCaIGBOMXYEhp1YfKl4d7rJ5ZKJGA==" + } + } + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + }, + "middie": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/middie/-/middie-7.1.0.tgz", + "integrity": "sha512-1Fq0i+nGYlPyVv5pBbnXSdkcQ4in1d9pNv2DMwTKGztsqyAng9PN/PNl4PMhccScEWOvj+HT5QtANsA0AuYHFw==", + "requires": { + "middie-deprecated": "npm:middie@7.0.0", + "process-warning": "^1.0.0" + } + }, + "middie-deprecated": { + "version": "npm:middie@7.0.0", + "resolved": "https://registry.npmjs.org/middie/-/middie-7.0.0.tgz", + "integrity": "sha512-gAX1DrlTOMsDW6MskZrCJQW1j56I7VHqKFdwGSMtZuIbymye2j89R1juPLLCyEMrx0sZR9EZ+VqnWqOh9KH4PQ==", + "requires": { + "fastify-plugin": "^3.0.0", + "path-to-regexp": "^6.1.0", + "reusify": "^1.0.4" + }, + "dependencies": { + "path-to-regexp": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==" + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "module-details-from-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", + "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" + }, + "on-exit-leak-free": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==" + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "requires": { + "ee-first": "1.1.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "pino": { + "version": "8.17.2", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.17.2.tgz", + "integrity": "sha512-LA6qKgeDMLr2ux2y/YiUt47EfgQ+S9LznBWOJdN3q1dx2sv0ziDLUBeVpyVv17TEcGCBuWf0zNtg3M5m1NhhWQ==", + "requires": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "v1.1.0", + "pino-std-serializers": "^6.0.0", + "process-warning": "^3.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^3.7.0", + "thread-stream": "^2.0.0" + }, + "dependencies": { + "process-warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", + "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==" + } + } + }, + "pino-abstract-transport": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz", + "integrity": "sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==", + "requires": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" + } + }, + "pino-std-serializers": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", + "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==" + }, + "process-warning": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", + "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==" + }, + "protobufjs": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", + "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "dependencies": { + "long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + } + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "dependencies": { + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" + } + } + }, + "real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==" + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, + "require-in-the-middle": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.2.0.tgz", + "integrity": "sha512-3TLx5TGyAY6AOqLBoXmHkNql0HIf2RGbuMgCDT2WO/uGVAPJs6h7Kl+bN6TIZGd9bWhWPwnDnTHGtW8Iu77sdw==", + "requires": { + "debug": "^4.1.1", + "module-details-from-path": "^1.0.3", + "resolve": "^1.22.1" + } + }, + "resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "ret": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz", + "integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==" + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safe-regex2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-2.0.0.tgz", + "integrity": "sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==", + "requires": { + "ret": "~0.2.0" + } + }, + "safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "secure-json-parse": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==" + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "set-cookie-parser": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", + "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==" + }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" + }, + "side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + } + }, + "sonic-boom": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.7.0.tgz", + "integrity": "sha512-IudtNvSqA/ObjN97tfgNmOKyDOs4dNcg4cUUsHDebqsgb8wGBBwb31LIgShNO8fye0dFI52X1+tFoKKI6Rq1Gg==", + "requires": { + "atomic-sleep": "^1.0.0" + } + }, + "split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==" + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "thread-stream": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.4.1.tgz", + "integrity": "sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==", + "requires": { + "real-require": "^0.2.0" + } + }, + "toad-cache": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/toad-cache/-/toad-cache-3.4.1.tgz", + "integrity": "sha512-T0m3MxP3wcqW0LaV3dF1mHBU294sgYSm4FOpa5eEJaYO7PqJZBOjZEQI1y4YaKNnih1FXCEYTWDS9osCoTUefg==" + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" + } } } From 9976c94a18ee6d2613a6202b55cc6d102734270c Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Fri, 29 Mar 2024 02:51:30 -0400 Subject: [PATCH 008/121] chore: update readme for alibaba resource detector (#2056) Update README of Alibaba resource detector to add a table with values getting detected. Part Of #2055 Signed-off-by: maryliag --- .../README.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/README.md b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/README.md index 5af78856dc..a8e8c40882 100644 --- a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/README.md +++ b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/README.md @@ -28,6 +28,19 @@ const tracerProvider = new NodeTracerProvider({ resource }); ## Available detectors -- `alibabaCloudEcsDetector`: Populates `cloud` and `host` for processes running on [Alibaba Cloud ECS](https://www.alibabacloud.com/product/ecs). +### Alibaba Cloud Ecs Detector + +Populates `cloud` and `host` for processes running on [Alibaba Cloud ECS](https://www.alibabacloud.com/product/ecs). More info about Alibaba Instance Identities can be found [here](https://www.alibabacloud.com/help/en/ecs/user-guide/use-instance-identities). + +| Resource Attribute | Description | +|-------------------------|-----------------------------------------------------------------| +| cloud.account.id | Value of `owner-account-id` on Alibaba Cloud | +| cloud.availability_zone | Value of `zone-id` on Alibaba Cloud | +| cloud.platform | In this context, it's always `alibaba_cloud_ecs` | +| cloud.provider | In this context, it's always `alibaba_cloud` | +| cloud.region | Value of `region-id` on Alibaba Cloud | +| host.id | Value of `instance-id` on Alibaba Cloud | +| host.name | The hostname for the app, retrieve from the `hostname` endpoint | +| host.type | Value of `instance-type` on Alibaba Cloud | [resource-semantic_conventions]: https://github.com/open-telemetry/opentelemetry-specification/tree/master/specification/resource/semantic_conventions From 713abc5222f40108609cf4d349ea71520887f12a Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Fri, 29 Mar 2024 11:17:25 -0400 Subject: [PATCH 009/121] chore(resource-detector-container): use exported strings for attributes (#2049) Use exported strings for Semantic Resource Attributes. Signed-off-by: maryliag Co-authored-by: Marc Pichler --- .../opentelemetry-resource-detector-container/package.json | 2 +- .../src/detectors/ContainerDetector.ts | 4 ++-- package-lock.json | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/detectors/node/opentelemetry-resource-detector-container/package.json b/detectors/node/opentelemetry-resource-detector-container/package.json index 8937db6431..5a90550394 100644 --- a/detectors/node/opentelemetry-resource-detector-container/package.json +++ b/detectors/node/opentelemetry-resource-detector-container/package.json @@ -52,7 +52,7 @@ }, "dependencies": { "@opentelemetry/resources": "^1.0.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.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 fcbbcc6e1d..73b26f9ed4 100644 --- a/detectors/node/opentelemetry-resource-detector-container/src/detectors/ContainerDetector.ts +++ b/detectors/node/opentelemetry-resource-detector-container/src/detectors/ContainerDetector.ts @@ -19,7 +19,7 @@ import { ResourceDetectionConfig, } from '@opentelemetry/resources'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMRESATTRS_CONTAINER_ID } from '@opentelemetry/semantic-conventions'; import * as fs from 'fs'; import * as util from 'util'; @@ -40,7 +40,7 @@ export class ContainerDetector implements Detector { return !containerId ? Resource.empty() : new Resource({ - [SemanticResourceAttributes.CONTAINER_ID]: containerId, + [SEMRESATTRS_CONTAINER_ID]: containerId, }); } catch (e) { diag.info( diff --git a/package-lock.json b/package-lock.json index 65bcc6f9f4..e500e5ff54 100644 --- a/package-lock.json +++ b/package-lock.json @@ -146,7 +146,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/resources": "^1.0.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@opentelemetry/api": "^1.0.0", @@ -47897,7 +47897,7 @@ "@opentelemetry/api": "^1.0.0", "@opentelemetry/contrib-test-utils": "^0.37.0", "@opentelemetry/resources": "^1.0.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", From aed0f0f86a37d5e2b3ebfe0631e7834be317e0aa Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 29 Mar 2024 16:27:51 +0100 Subject: [PATCH 010/121] chore(deps): update dependency express to v4.19.2 [security] (#2042) Co-authored-by: Marc Pichler --- package-lock.json | 747 ++++++------------ .../package.json | 2 +- 2 files changed, 252 insertions(+), 497 deletions(-) diff --git a/package-lock.json b/package-lock.json index e500e5ff54..8902735a90 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6960,6 +6960,126 @@ "@nestjs/core": "^9.0.0" } }, + "node_modules/@nestjs/platform-express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@nestjs/platform-express/node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/@nestjs/platform-express/node_modules/express/node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/@nestjs/platform-express/node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@nestjs/platform-express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/@nestjs/platform-express/node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/@nestjs/platform-express/node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/@nestjs/platform-express/node_modules/tslib": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", @@ -16925,17 +17045,17 @@ "dev": true }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dev": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -16966,28 +17086,13 @@ "node": ">= 0.10.0" } }, - "node_modules/express/node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "node_modules/express/node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "dev": true, - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">= 0.6" } }, "node_modules/express/node_modules/debug": { @@ -17029,21 +17134,6 @@ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true }, - "node_modules/express/node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -37469,7 +37559,7 @@ "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", - "express": "4.17.3", + "express": "4.19.2", "mocha": "7.2.0", "nyc": "15.1.0", "rimraf": "5.0.5", @@ -37485,234 +37575,6 @@ "@opentelemetry/api": "^1.3.0" } }, - "plugins/node/opentelemetry-instrumentation-express/node_modules/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.7", - "raw-body": "2.4.3", - "type-is": "~1.6.18" - }, - "engines": { - "node": ">= 0.8" - } - }, - "plugins/node/opentelemetry-instrumentation-express/node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "plugins/node/opentelemetry-instrumentation-express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "plugins/node/opentelemetry-instrumentation-express/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "plugins/node/opentelemetry-instrumentation-express/node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", - "dev": true - }, - "plugins/node/opentelemetry-instrumentation-express/node_modules/express": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", - "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", - "dev": true, - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.19.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.4.2", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.9.7", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", - "setprototypeof": "1.2.0", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "plugins/node/opentelemetry-instrumentation-express/node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "plugins/node/opentelemetry-instrumentation-express/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "plugins/node/opentelemetry-instrumentation-express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "plugins/node/opentelemetry-instrumentation-express/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "plugins/node/opentelemetry-instrumentation-express/node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true - }, - "plugins/node/opentelemetry-instrumentation-express/node_modules/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", - "dev": true, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "plugins/node/opentelemetry-instrumentation-express/node_modules/raw-body": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", - "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "plugins/node/opentelemetry-instrumentation-express/node_modules/send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "1.8.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "plugins/node/opentelemetry-instrumentation-express/node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "plugins/node/opentelemetry-instrumentation-express/node_modules/serve-static": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", - "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "plugins/node/opentelemetry-instrumentation-express/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, "plugins/node/opentelemetry-instrumentation-fastify": { "name": "@opentelemetry/instrumentation-fastify", "version": "0.34.0", @@ -44599,6 +44461,115 @@ "tslib": "2.5.3" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + } + } + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, "tslib": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", @@ -46033,7 +46004,7 @@ "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", - "express": "4.17.3", + "express": "4.19.2", "mocha": "7.2.0", "nyc": "15.1.0", "rimraf": "5.0.5", @@ -46041,196 +46012,6 @@ "test-all-versions": "6.1.0", "ts-mocha": "10.0.0", "typescript": "4.4.4" - }, - "dependencies": { - "body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.7", - "raw-body": "2.4.3", - "type-is": "~1.6.18" - } - }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", - "dev": true - }, - "express": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", - "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", - "dev": true, - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.19.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.4.2", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.9.7", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", - "setprototypeof": "1.2.0", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - } - }, - "http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true - }, - "qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", - "dev": true - }, - "raw-body": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", - "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "1.8.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - } - } - }, - "serve-static": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.2" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true - } } }, "@opentelemetry/instrumentation-fastify": { @@ -54661,17 +54442,17 @@ "dev": true }, "express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dev": true, "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -54699,25 +54480,11 @@ "vary": "~1.1.2" }, "dependencies": { - "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - } + "cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true }, "debug": { "version": "2.6.9", @@ -54754,18 +54521,6 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } } } }, diff --git a/plugins/node/opentelemetry-instrumentation-express/package.json b/plugins/node/opentelemetry-instrumentation-express/package.json index 47525d970e..e5a0607326 100644 --- a/plugins/node/opentelemetry-instrumentation-express/package.json +++ b/plugins/node/opentelemetry-instrumentation-express/package.json @@ -53,7 +53,7 @@ "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", - "express": "4.17.3", + "express": "4.19.2", "mocha": "7.2.0", "nyc": "15.1.0", "rimraf": "5.0.5", From 23db21157d9e602cbff295cf2892e664da591a76 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 Mar 2024 16:45:16 +0100 Subject: [PATCH 011/121] chore(deps-dev): bump follow-redirects from 1.15.5 to 1.15.6 (#2012) Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.5 to 1.15.6. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.5...v1.15.6) --- updated-dependencies: - dependency-name: follow-redirects dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8902735a90..66b5c5382d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17930,9 +17930,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "dev": true, "funding": [ { @@ -55174,9 +55174,9 @@ "dev": true }, "follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "dev": true }, "for-each": { From b2bcbed296c8ed6bc2c9b98a671a1dcaab477d99 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 Mar 2024 16:46:19 +0100 Subject: [PATCH 012/121] chore(deps): bump follow-redirects in /examples/fastify (#2011) Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.4 to 1.15.6. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.4...v1.15.6) --- updated-dependencies: - dependency-name: follow-redirects dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Marc Pichler --- examples/fastify/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/fastify/package-lock.json b/examples/fastify/package-lock.json index 95de3dec92..3eb68c413c 100644 --- a/examples/fastify/package-lock.json +++ b/examples/fastify/package-lock.json @@ -1293,9 +1293,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -3292,9 +3292,9 @@ } }, "follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==" + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" }, "form-data": { "version": "4.0.0", From b9a877aa3e6acea30566583e6ea44e5716eb59c8 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Tue, 2 Apr 2024 08:32:01 -0400 Subject: [PATCH 013/121] chore: add maryliag as CODEOWNER of opentelemetry-instrumentation-pg (#2052) Add `maryliag` as CODEOWNER of `plugins/node/opentelemetry-instrumentation-pg` as discussed on SIG meeting of March 27. Signed-off-by: maryliag --- .github/component_owners.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/component_owners.yml b/.github/component_owners.yml index 713bea0bfa..be9a44a13b 100644 --- a/.github/component_owners.yml +++ b/.github/component_owners.yml @@ -111,6 +111,7 @@ components: plugins/node/opentelemetry-instrumentation-runtime-node: - d4nyll plugins/node/opentelemetry-instrumentation-pg: + - maryliag - rauno56 plugins/node/opentelemetry-instrumentation-pino: - seemk From 995b364c10b5d6247154dcc29286e6155ae56768 Mon Sep 17 00:00:00 2001 From: Jamie Danielson Date: Tue, 2 Apr 2024 08:34:30 -0400 Subject: [PATCH 014/121] refactor(instr-document-load): use exported strings for semconv (#2039) * refactor(instr-document-load): use exported strings for semconv * increase browserStartTimeout to 35000 * add chromeLauncher browser --------- Co-authored-by: Marc Pichler --- package-lock.json | 4 ++-- .../README.md | 11 +++++++++++ .../package.json | 2 +- .../src/instrumentation.ts | 16 ++++++++-------- .../test/documentLoad.test.ts | 13 ++++++++----- .../web-test-runner.config.mjs | 2 ++ 6 files changed, 32 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index 66b5c5382d..83c053ca8c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38614,7 +38614,7 @@ "@opentelemetry/instrumentation": "^0.49.1", "@opentelemetry/sdk-trace-base": "^1.0.0", "@opentelemetry/sdk-trace-web": "^1.15.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@babel/core": "7.22.17", @@ -45966,7 +45966,7 @@ "@opentelemetry/instrumentation": "^0.49.1", "@opentelemetry/sdk-trace-base": "^1.0.0", "@opentelemetry/sdk-trace-web": "^1.15.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", "@types/chai": "^4.3.10", diff --git a/plugins/web/opentelemetry-instrumentation-document-load/README.md b/plugins/web/opentelemetry-instrumentation-document-load/README.md index e0ec16ecdd..4ec62269ae 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/README.md +++ b/plugins/web/opentelemetry-instrumentation-document-load/README.md @@ -111,6 +111,17 @@ registerInstrumentations({ See [examples/tracer-web](https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/tracer-web) for a short example. +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | Notes | +| ----------------- | ------------------------------------------------------------------------------ | ------------------------------- | +| `http.url` | Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]` | Key: `SEMATTRS_HTTP_URL` | +| `http.user_agent` | Value of the HTTP User-Agent header sent by the client | Key: `SEMATTRS_HTTP_USER_AGENT` | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/web/opentelemetry-instrumentation-document-load/package.json b/plugins/web/opentelemetry-instrumentation-document-load/package.json index 89b6968221..c52463fbc9 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/package.json +++ b/plugins/web/opentelemetry-instrumentation-document-load/package.json @@ -72,7 +72,7 @@ "@opentelemetry/instrumentation": "^0.49.1", "@opentelemetry/sdk-trace-base": "^1.0.0", "@opentelemetry/sdk-trace-web": "^1.15.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/web/opentelemetry-instrumentation-document-load#readme" } diff --git a/plugins/web/opentelemetry-instrumentation-document-load/src/instrumentation.ts b/plugins/web/opentelemetry-instrumentation-document-load/src/instrumentation.ts index 78ab9162d1..ecc84b9f76 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/src/instrumentation.ts +++ b/plugins/web/opentelemetry-instrumentation-document-load/src/instrumentation.ts @@ -40,7 +40,10 @@ import { } from './types'; import { AttributeNames } from './enums/AttributeNames'; import { VERSION } from './version'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_HTTP_URL, + SEMATTRS_HTTP_USER_AGENT, +} from '@opentelemetry/semantic-conventions'; import { addSpanPerformancePaintEvents, getPerformanceNavigationEntries, @@ -115,7 +118,7 @@ export class DocumentLoadInstrumentation extends InstrumentationBase { entries ); if (fetchSpan) { - fetchSpan.setAttribute(SemanticAttributes.HTTP_URL, location.href); + fetchSpan.setAttribute(SEMATTRS_HTTP_URL, location.href); context.with(trace.setSpan(context.active(), fetchSpan), () => { addSpanNetworkEvents(fetchSpan, entries); this._addCustomAttributesOnSpan( @@ -127,11 +130,8 @@ export class DocumentLoadInstrumentation extends InstrumentationBase { } }); - rootSpan.setAttribute(SemanticAttributes.HTTP_URL, location.href); - rootSpan.setAttribute( - SemanticAttributes.HTTP_USER_AGENT, - navigator.userAgent - ); + rootSpan.setAttribute(SEMATTRS_HTTP_URL, location.href); + rootSpan.setAttribute(SEMATTRS_HTTP_USER_AGENT, navigator.userAgent); this._addResourcesSpans(rootSpan); @@ -196,7 +196,7 @@ export class DocumentLoadInstrumentation extends InstrumentationBase { parentSpan ); if (span) { - span.setAttribute(SemanticAttributes.HTTP_URL, resource.name); + span.setAttribute(SEMATTRS_HTTP_URL, resource.name); addSpanNetworkEvents(span, resource); this._addCustomAttributesOnResourceSpan( span, 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 4d31349f68..3dbf64dbe7 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/test/documentLoad.test.ts +++ b/plugins/web/opentelemetry-instrumentation-document-load/test/documentLoad.test.ts @@ -39,7 +39,10 @@ import { import chai from 'chai/chai.js'; import * as sinon from 'sinon'; import { DocumentLoadInstrumentation } from '../src'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH, + SEMATTRS_HTTP_URL, +} from '@opentelemetry/semantic-conventions'; import { EventNames } from '../src/enums/EventNames'; const { assert } = chai as typeof import('chai'); @@ -347,7 +350,7 @@ describe('DocumentLoad Instrumentation', () => { assert.strictEqual(rootSpan.name, 'documentFetch'); assert.ok( (rootSpan.attributes[ - SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH + SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH ] as number) > 0 ); assert.strictEqual(fetchSpan.name, 'documentLoad'); @@ -448,11 +451,11 @@ describe('DocumentLoad Instrumentation', () => { const srEvents2 = spanResource2.events; assert.strictEqual( - spanResource1.attributes[SemanticAttributes.HTTP_URL], + spanResource1.attributes[SEMATTRS_HTTP_URL], 'http://localhost:8090/bundle.js' ); assert.strictEqual( - spanResource2.attributes[SemanticAttributes.HTTP_URL], + spanResource2.attributes[SEMATTRS_HTTP_URL], 'http://localhost:8090/sockjs-node/info?t=1572620894466' ); @@ -484,7 +487,7 @@ describe('DocumentLoad Instrumentation', () => { const srEvents1 = spanResource1.events; assert.strictEqual( - spanResource1.attributes[SemanticAttributes.HTTP_URL], + spanResource1.attributes[SEMATTRS_HTTP_URL], 'http://localhost:8090/bundle.js' ); diff --git a/plugins/web/opentelemetry-instrumentation-document-load/web-test-runner.config.mjs b/plugins/web/opentelemetry-instrumentation-document-load/web-test-runner.config.mjs index aeef46fe8e..1989a756fd 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/web-test-runner.config.mjs +++ b/plugins/web/opentelemetry-instrumentation-document-load/web-test-runner.config.mjs @@ -18,6 +18,7 @@ import { nodeResolve as nodeResolveRollup } from '@rollup/plugin-node-resolve'; import commonjsRollup from '@rollup/plugin-commonjs'; import { esbuildPlugin } from '@web/dev-server-esbuild'; import { fromRollup } from '@web/dev-server-rollup'; +import { chromeLauncher } from '@web/test-runner'; const nodeResolve = fromRollup(nodeResolveRollup); const commonjs = fromRollup(commonjsRollup); @@ -25,6 +26,7 @@ const commonjs = fromRollup(commonjsRollup); export default { files: ['test/**/*.test.ts'], nodeResolve: true, + browsers: [chromeLauncher({ launchOptions: { args: ['--no-sandbox'] } })], plugins: [ esbuildPlugin({ ts: true }), nodeResolve({ browser: true, preferBuiltins: false }), From 70090c12070b7fa82614b378a27dc38877568d02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio=20Gomes?= Date: Tue, 2 Apr 2024 13:38:48 +0100 Subject: [PATCH 015/121] feat(koa): Use exported strings for attributes (#2033) * feat(koa): Use exported strings for attributes * feat(koa): Updated package-lock.json #2025 --------- Co-authored-by: Marc Pichler --- package-lock.json | 4 ++-- .../package.json | 2 +- .../src/utils.ts | 4 ++-- .../test/koa.test.ts | 23 ++++++++++--------- 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index 83c053ca8c..e2d7ebd47d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37828,7 +37828,7 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.49.1", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/koa": "2.14.0", "@types/koa__router": "12.0.3" }, @@ -46262,7 +46262,7 @@ "@opentelemetry/instrumentation-http": "^0.49.1", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/koa": "2.14.0", "@types/koa__router": "12.0.3", "@types/mocha": "7.0.2", diff --git a/plugins/node/opentelemetry-instrumentation-koa/package.json b/plugins/node/opentelemetry-instrumentation-koa/package.json index d5f255d676..2b89f7cc94 100644 --- a/plugins/node/opentelemetry-instrumentation-koa/package.json +++ b/plugins/node/opentelemetry-instrumentation-koa/package.json @@ -67,7 +67,7 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.49.1", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/koa": "2.14.0", "@types/koa__router": "12.0.3" }, diff --git a/plugins/node/opentelemetry-instrumentation-koa/src/utils.ts b/plugins/node/opentelemetry-instrumentation-koa/src/utils.ts index a50cad0b15..26c58fa6e3 100644 --- a/plugins/node/opentelemetry-instrumentation-koa/src/utils.ts +++ b/plugins/node/opentelemetry-instrumentation-koa/src/utils.ts @@ -17,7 +17,7 @@ import { KoaContext, KoaLayerType, KoaInstrumentationConfig } from './types'; import { KoaMiddleware } from './internal-types'; import { AttributeNames } from './enums/AttributeNames'; import { Attributes } from '@opentelemetry/api'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMATTRS_HTTP_ROUTE } from '@opentelemetry/semantic-conventions'; export const getMiddlewareMetadata = ( context: KoaContext, @@ -33,7 +33,7 @@ export const getMiddlewareMetadata = ( attributes: { [AttributeNames.KOA_NAME]: layerPath?.toString(), [AttributeNames.KOA_TYPE]: KoaLayerType.ROUTER, - [SemanticAttributes.HTTP_ROUTE]: layerPath?.toString(), + [SEMATTRS_HTTP_ROUTE]: layerPath?.toString(), }, name: context._matchedRouteName || `router - ${layerPath}`, }; diff --git a/plugins/node/opentelemetry-instrumentation-koa/test/koa.test.ts b/plugins/node/opentelemetry-instrumentation-koa/test/koa.test.ts index 8b38513a70..8d97864208 100644 --- a/plugins/node/opentelemetry-instrumentation-koa/test/koa.test.ts +++ b/plugins/node/opentelemetry-instrumentation-koa/test/koa.test.ts @@ -23,7 +23,11 @@ import { InMemorySpanExporter, SimpleSpanProcessor, } from '@opentelemetry/sdk-trace-base'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_EXCEPTION_MESSAGE, + SEMATTRS_HTTP_METHOD, + SEMATTRS_HTTP_ROUTE, +} from '@opentelemetry/semantic-conventions'; import { KoaInstrumentation } from '../src'; const plugin = new KoaInstrumentation(); @@ -175,7 +179,7 @@ describe('Koa Instrumentation', () => { ); assert.strictEqual( - requestHandlerSpan?.attributes[SemanticAttributes.HTTP_ROUTE], + requestHandlerSpan?.attributes[SEMATTRS_HTTP_ROUTE], '/post/:id' ); @@ -226,7 +230,7 @@ describe('Koa Instrumentation', () => { ); assert.strictEqual( - requestHandlerSpan?.attributes[SemanticAttributes.HTTP_ROUTE], + requestHandlerSpan?.attributes[SEMATTRS_HTTP_ROUTE], '/^\\/post/' ); @@ -273,7 +277,7 @@ describe('Koa Instrumentation', () => { ); assert.strictEqual( - requestHandlerSpan?.attributes[SemanticAttributes.HTTP_ROUTE], + requestHandlerSpan?.attributes[SEMATTRS_HTTP_ROUTE], '/post/:id' ); @@ -322,7 +326,7 @@ describe('Koa Instrumentation', () => { ); assert.strictEqual( - requestHandlerSpan?.attributes[SemanticAttributes.HTTP_ROUTE], + requestHandlerSpan?.attributes[SEMATTRS_HTTP_ROUTE], '/:first/post/:id' ); @@ -369,7 +373,7 @@ describe('Koa Instrumentation', () => { ); assert.strictEqual( - requestHandlerSpan?.attributes[SemanticAttributes.HTTP_ROUTE], + requestHandlerSpan?.attributes[SEMATTRS_HTTP_ROUTE], '/:first/post/:id' ); @@ -570,7 +574,7 @@ describe('Koa Instrumentation', () => { assert.ok(exceptionEvent, 'There should be an exception event recorded'); assert.deepStrictEqual(exceptionEvent.name, 'exception'); assert.deepStrictEqual( - exceptionEvent.attributes![SemanticAttributes.EXCEPTION_MESSAGE], + exceptionEvent.attributes![SEMATTRS_EXCEPTION_MESSAGE], 'I failed!' ); }); @@ -591,10 +595,7 @@ describe('Koa Instrumentation', () => { ); const requestHook = sinon.spy((span: Span, info: KoaRequestInfo) => { - span.setAttribute( - SemanticAttributes.HTTP_METHOD, - info.context.request.method - ); + span.setAttribute(SEMATTRS_HTTP_METHOD, info.context.request.method); throw Error('error thrown in requestHook'); }); From 35e6607f993745a5645b8221d4fba000f5aa9373 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Tue, 2 Apr 2024 08:39:39 -0400 Subject: [PATCH 016/121] chore(resource-detector-alibaba): use exported strings for attributes (#2046) Use exported strings for Semantic Resource Attributes, Cloud Platform Values and Cloud Provider Values. Signed-off-by: maryliag Co-authored-by: Marc Pichler --- .../package.json | 2 +- .../src/detectors/AlibabaCloudEcsDetector.ts | 31 +++++++++++-------- .../detectors/AlibabaCloudEcsDetector.test.ts | 4 +-- package-lock.json | 4 +-- 4 files changed, 23 insertions(+), 18 deletions(-) diff --git a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/package.json b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/package.json index 68162e3f2f..5009697401 100644 --- a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/package.json +++ b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/package.json @@ -57,7 +57,7 @@ }, "dependencies": { "@opentelemetry/resources": "^1.0.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.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 38e54df5ba..776e5dbccd 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 @@ -20,9 +20,16 @@ import { ResourceDetectionConfig, } from '@opentelemetry/resources'; import { - CloudPlatformValues, - CloudProviderValues, - SemanticResourceAttributes, + CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS, + CLOUDPROVIDERVALUES_ALIBABA_CLOUD, + SEMRESATTRS_CLOUD_ACCOUNT_ID, + SEMRESATTRS_CLOUD_AVAILABILITY_ZONE, + SEMRESATTRS_CLOUD_PLATFORM, + SEMRESATTRS_CLOUD_PROVIDER, + SEMRESATTRS_CLOUD_REGION, + SEMRESATTRS_HOST_ID, + SEMRESATTRS_HOST_NAME, + SEMRESATTRS_HOST_TYPE, } from '@opentelemetry/semantic-conventions'; import * as http from 'http'; @@ -61,16 +68,14 @@ class AlibabaCloudEcsDetector implements Detector { const hostname = await this._fetchHost(); return new Resource({ - [SemanticResourceAttributes.CLOUD_PROVIDER]: - CloudProviderValues.ALIBABA_CLOUD, - [SemanticResourceAttributes.CLOUD_PLATFORM]: - CloudPlatformValues.ALIBABA_CLOUD_ECS, - [SemanticResourceAttributes.CLOUD_ACCOUNT_ID]: accountId, - [SemanticResourceAttributes.CLOUD_REGION]: region, - [SemanticResourceAttributes.CLOUD_AVAILABILITY_ZONE]: availabilityZone, - [SemanticResourceAttributes.HOST_ID]: instanceId, - [SemanticResourceAttributes.HOST_TYPE]: instanceType, - [SemanticResourceAttributes.HOST_NAME]: hostname, + [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, }); } 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 14fa8ac1f4..c4a2c41d36 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 @@ -17,7 +17,7 @@ import * as nock from 'nock'; import * as assert from 'assert'; import { Resource } from '@opentelemetry/resources'; -import { CloudProviderValues } from '@opentelemetry/semantic-conventions'; +import { CLOUDPROVIDERVALUES_ALIBABA_CLOUD } from '@opentelemetry/semantic-conventions'; import { alibabaCloudEcsDetector } from '../../src'; import { assertCloudResource, @@ -70,7 +70,7 @@ describe('alibabaCloudEcsDetector', () => { assert.ok(resource); assertCloudResource(resource, { - provider: CloudProviderValues.ALIBABA_CLOUD, + provider: CLOUDPROVIDERVALUES_ALIBABA_CLOUD, accountId: 'my-owner-account-id', region: 'my-region-id', zone: 'my-zone-id', diff --git a/package-lock.json b/package-lock.json index e2d7ebd47d..0149d7bb23 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,7 +41,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/resources": "^1.0.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@opentelemetry/api": "^1.0.0", @@ -47597,7 +47597,7 @@ "@opentelemetry/api": "^1.0.0", "@opentelemetry/contrib-test-utils": "^0.37.0", "@opentelemetry/resources": "^1.0.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", From a9b10638f4558feeaf9863841826ae37734fa6f6 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Tue, 2 Apr 2024 11:27:59 -0400 Subject: [PATCH 017/121] chore(opentelemetry-instrumentation-pg): use exported strings for attributes (#2053) Use exported strings for Semantic Attributes Signed-off-by: maryliag --- package-lock.json | 4 +- .../package.json | 2 +- .../src/utils.ts | 36 ++++++++------ .../test/pg-pool.test.ts | 46 ++++++++++-------- .../test/pg.test.ts | 48 +++++++++++-------- .../test/utils.test.ts | 14 +++--- 6 files changed, 84 insertions(+), 66 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0149d7bb23..4c2130b743 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38293,7 +38293,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.49.1", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@opentelemetry/sql-common": "^0.40.0", "@types/pg": "8.6.1", "@types/pg-pool": "2.0.4" @@ -46679,7 +46679,7 @@ "@opentelemetry/instrumentation": "^0.49.1", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@opentelemetry/sql-common": "^0.40.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", diff --git a/plugins/node/opentelemetry-instrumentation-pg/package.json b/plugins/node/opentelemetry-instrumentation-pg/package.json index 8be89e00f1..6e64b683e4 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/package.json +++ b/plugins/node/opentelemetry-instrumentation-pg/package.json @@ -72,7 +72,7 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.49.1", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@opentelemetry/sql-common": "^0.40.0", "@types/pg": "8.6.1", "@types/pg-pool": "2.0.4" diff --git a/plugins/node/opentelemetry-instrumentation-pg/src/utils.ts b/plugins/node/opentelemetry-instrumentation-pg/src/utils.ts index 77f690dffd..f0325bbd77 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/src/utils.ts +++ b/plugins/node/opentelemetry-instrumentation-pg/src/utils.ts @@ -25,8 +25,14 @@ import { } from '@opentelemetry/api'; import { AttributeNames } from './enums/AttributeNames'; import { - SemanticAttributes, - DbSystemValues, + SEMATTRS_DB_SYSTEM, + SEMATTRS_DB_NAME, + SEMATTRS_DB_CONNECTION_STRING, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, + SEMATTRS_DB_USER, + SEMATTRS_DB_STATEMENT, + DBSYSTEMVALUES_POSTGRESQL, } from '@opentelemetry/semantic-conventions'; import { PgClientExtended, @@ -108,23 +114,23 @@ export function getSemanticAttributesFromConnection( params: PgParsedConnectionParams ) { return { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.POSTGRESQL, - [SemanticAttributes.DB_NAME]: params.database, // required - [SemanticAttributes.DB_CONNECTION_STRING]: getConnectionString(params), // required - [SemanticAttributes.NET_PEER_NAME]: params.host, // required - [SemanticAttributes.NET_PEER_PORT]: getPort(params.port), - [SemanticAttributes.DB_USER]: params.user, + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_POSTGRESQL, + [SEMATTRS_DB_NAME]: params.database, // required + [SEMATTRS_DB_CONNECTION_STRING]: getConnectionString(params), // required + [SEMATTRS_NET_PEER_NAME]: params.host, // required + [SEMATTRS_NET_PEER_PORT]: getPort(params.port), + [SEMATTRS_DB_USER]: params.user, }; } export function getSemanticAttributesFromPool(params: PgPoolOptionsParams) { return { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.POSTGRESQL, - [SemanticAttributes.DB_NAME]: params.database, // required - [SemanticAttributes.DB_CONNECTION_STRING]: getConnectionString(params), // required - [SemanticAttributes.NET_PEER_NAME]: params.host, // required - [SemanticAttributes.NET_PEER_PORT]: getPort(params.port), - [SemanticAttributes.DB_USER]: params.user, + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_POSTGRESQL, + [SEMATTRS_DB_NAME]: params.database, // required + [SEMATTRS_DB_CONNECTION_STRING]: getConnectionString(params), // required + [SEMATTRS_NET_PEER_NAME]: params.host, // required + [SEMATTRS_NET_PEER_PORT]: getPort(params.port), + [SEMATTRS_DB_USER]: params.user, [AttributeNames.IDLE_TIMEOUT_MILLIS]: params.idleTimeoutMillis, [AttributeNames.MAX_CLIENT]: params.maxClient, }; @@ -163,7 +169,7 @@ export function handleConfigQuery( // Set attributes if (queryConfig.text) { - span.setAttribute(SemanticAttributes.DB_STATEMENT, queryConfig.text); + span.setAttribute(SEMATTRS_DB_STATEMENT, queryConfig.text); } if ( 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 887c9236a4..62bfaf1711 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/test/pg-pool.test.ts +++ b/plugins/node/opentelemetry-instrumentation-pg/test/pg-pool.test.ts @@ -41,8 +41,14 @@ import * as pgPool from 'pg-pool'; import { AttributeNames } from '../src/enums/AttributeNames'; import { TimedEvent } from './types'; import { - SemanticAttributes, - DbSystemValues, + DBSYSTEMVALUES_POSTGRESQL, + SEMATTRS_DB_SYSTEM, + SEMATTRS_DB_NAME, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_DB_CONNECTION_STRING, + SEMATTRS_NET_PEER_PORT, + SEMATTRS_DB_USER, + SEMATTRS_DB_STATEMENT, } from '@opentelemetry/semantic-conventions'; const memoryExporter = new InMemorySpanExporter(); @@ -60,23 +66,23 @@ const CONFIG = { }; const DEFAULT_PGPOOL_ATTRIBUTES = { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.POSTGRESQL, - [SemanticAttributes.DB_NAME]: CONFIG.database, - [SemanticAttributes.NET_PEER_NAME]: CONFIG.host, - [SemanticAttributes.DB_CONNECTION_STRING]: `postgresql://${CONFIG.host}:${CONFIG.port}/${CONFIG.database}`, - [SemanticAttributes.NET_PEER_PORT]: CONFIG.port, - [SemanticAttributes.DB_USER]: CONFIG.user, + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_POSTGRESQL, + [SEMATTRS_DB_NAME]: CONFIG.database, + [SEMATTRS_NET_PEER_NAME]: CONFIG.host, + [SEMATTRS_DB_CONNECTION_STRING]: `postgresql://${CONFIG.host}:${CONFIG.port}/${CONFIG.database}`, + [SEMATTRS_NET_PEER_PORT]: CONFIG.port, + [SEMATTRS_DB_USER]: CONFIG.user, [AttributeNames.MAX_CLIENT]: CONFIG.maxClient, [AttributeNames.IDLE_TIMEOUT_MILLIS]: CONFIG.idleTimeoutMillis, }; const DEFAULT_PG_ATTRIBUTES = { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.POSTGRESQL, - [SemanticAttributes.DB_NAME]: CONFIG.database, - [SemanticAttributes.NET_PEER_NAME]: CONFIG.host, - [SemanticAttributes.DB_CONNECTION_STRING]: `postgresql://${CONFIG.host}:${CONFIG.port}/${CONFIG.database}`, - [SemanticAttributes.NET_PEER_PORT]: CONFIG.port, - [SemanticAttributes.DB_USER]: CONFIG.user, + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_POSTGRESQL, + [SEMATTRS_DB_NAME]: CONFIG.database, + [SEMATTRS_NET_PEER_NAME]: CONFIG.host, + [SEMATTRS_DB_CONNECTION_STRING]: `postgresql://${CONFIG.host}:${CONFIG.port}/${CONFIG.database}`, + [SEMATTRS_NET_PEER_PORT]: CONFIG.port, + [SEMATTRS_DB_USER]: CONFIG.user, }; const unsetStatus: SpanStatus = { @@ -179,7 +185,7 @@ describe('pg-pool', () => { }; const pgAttributes = { ...DEFAULT_PG_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: 'SELECT NOW()', + [SEMATTRS_DB_STATEMENT]: 'SELECT NOW()', }; const events: TimedEvent[] = []; const span = provider.getTracer('test-pg-pool').startSpan('test span'); @@ -211,7 +217,7 @@ describe('pg-pool', () => { }; const pgAttributes = { ...DEFAULT_PG_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: 'SELECT NOW()', + [SEMATTRS_DB_STATEMENT]: 'SELECT NOW()', }; const events: TimedEvent[] = []; const parentSpan = provider @@ -284,7 +290,7 @@ describe('pg-pool', () => { }; const pgAttributes = { ...DEFAULT_PG_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: 'SELECT NOW()', + [SEMATTRS_DB_STATEMENT]: 'SELECT NOW()', }; const events: TimedEvent[] = []; const span = provider.getTracer('test-pg-pool').startSpan('test span'); @@ -303,7 +309,7 @@ describe('pg-pool', () => { }; const pgAttributes = { ...DEFAULT_PG_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: 'SELECT NOW()', + [SEMATTRS_DB_STATEMENT]: 'SELECT NOW()', }; const events: TimedEvent[] = []; const parentSpan = provider @@ -340,7 +346,7 @@ describe('pg-pool', () => { }; const pgAttributes = { ...DEFAULT_PG_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: query, + [SEMATTRS_DB_STATEMENT]: query, [dataAttributeName]: '{"rowCount":1}', }; @@ -422,7 +428,7 @@ describe('pg-pool', () => { }; const pgAttributes = { ...DEFAULT_PG_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: query, + [SEMATTRS_DB_STATEMENT]: query, }; beforeEach(async () => { diff --git a/plugins/node/opentelemetry-instrumentation-pg/test/pg.test.ts b/plugins/node/opentelemetry-instrumentation-pg/test/pg.test.ts index dec92cd7ce..eb2e847328 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/test/pg.test.ts +++ b/plugins/node/opentelemetry-instrumentation-pg/test/pg.test.ts @@ -42,8 +42,14 @@ import { import { AttributeNames } from '../src/enums/AttributeNames'; import { TimedEvent } from './types'; import { - SemanticAttributes, - DbSystemValues, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, + SEMATTRS_DB_NAME, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_DB_CONNECTION_STRING, + SEMATTRS_NET_PEER_PORT, + SEMATTRS_DB_USER, + DBSYSTEMVALUES_POSTGRESQL, } from '@opentelemetry/semantic-conventions'; import { addSqlCommenterComment } from '@opentelemetry/sql-common'; @@ -60,12 +66,12 @@ const CONFIG = { }; const DEFAULT_ATTRIBUTES = { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.POSTGRESQL, - [SemanticAttributes.DB_NAME]: CONFIG.database, - [SemanticAttributes.NET_PEER_NAME]: CONFIG.host, - [SemanticAttributes.DB_CONNECTION_STRING]: `postgresql://${CONFIG.host}:${CONFIG.port}/${CONFIG.database}`, - [SemanticAttributes.NET_PEER_PORT]: CONFIG.port, - [SemanticAttributes.DB_USER]: CONFIG.user, + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_POSTGRESQL, + [SEMATTRS_DB_NAME]: CONFIG.database, + [SEMATTRS_NET_PEER_NAME]: CONFIG.host, + [SEMATTRS_DB_CONNECTION_STRING]: `postgresql://${CONFIG.host}:${CONFIG.port}/${CONFIG.database}`, + [SEMATTRS_NET_PEER_PORT]: CONFIG.port, + [SEMATTRS_DB_USER]: CONFIG.user, }; const unsetStatus: SpanStatus = { @@ -348,7 +354,7 @@ describe('pg', () => { it('should intercept client.query(text, callback)', done => { const attributes = { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: 'SELECT NOW()', + [SEMATTRS_DB_STATEMENT]: 'SELECT NOW()', }; const events: TimedEvent[] = []; const span = tracer.startSpan('test span'); @@ -368,7 +374,7 @@ describe('pg', () => { const values = ['0']; const attributes = { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: query, + [SEMATTRS_DB_STATEMENT]: query, }; const events: TimedEvent[] = []; const span = tracer.startSpan('test span'); @@ -387,7 +393,7 @@ describe('pg', () => { const query = 'SELECT NOW()'; const attributes = { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: query, + [SEMATTRS_DB_STATEMENT]: query, }; const events: TimedEvent[] = []; const span = tracer.startSpan('test span'); @@ -409,7 +415,7 @@ describe('pg', () => { const query = 'SELECT NOW()'; const attributes = { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: query, + [SEMATTRS_DB_STATEMENT]: query, }; const events: TimedEvent[] = []; const span = tracer.startSpan('test span'); @@ -429,7 +435,7 @@ describe('pg', () => { const values = ['0']; const attributes = { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: query, + [SEMATTRS_DB_STATEMENT]: query, }; const events: TimedEvent[] = []; const span = tracer.startSpan('test span'); @@ -449,7 +455,7 @@ describe('pg', () => { const values = ['0']; const attributes = { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: query, + [SEMATTRS_DB_STATEMENT]: query, }; const events: TimedEvent[] = []; const span = tracer.startSpan('test span'); @@ -474,7 +480,7 @@ describe('pg', () => { const attributes = { ...DEFAULT_ATTRIBUTES, [AttributeNames.PG_PLAN]: name, - [SemanticAttributes.DB_STATEMENT]: query, + [SEMATTRS_DB_STATEMENT]: query, }; const events: TimedEvent[] = []; const span = tracer.startSpan('test span'); @@ -498,7 +504,7 @@ describe('pg', () => { const query = 'SELECT NOW()'; const attributes = { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: query, + [SEMATTRS_DB_STATEMENT]: query, }; const events: TimedEvent[] = []; const span = tracer.startSpan('test span'); @@ -537,7 +543,7 @@ describe('pg', () => { const attributes = { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: query, + [SEMATTRS_DB_STATEMENT]: query, [AttributeNames.PG_VALUES]: [ 'Hello,World', 'abc', @@ -576,7 +582,7 @@ describe('pg', () => { // span if there is no requestHook. const attributes = { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: query, + [SEMATTRS_DB_STATEMENT]: query, }; // These are the attributes we expect on the span after the requestHook @@ -669,7 +675,7 @@ describe('pg', () => { describe('AND valid responseHook', () => { const attributes = { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: query, + [SEMATTRS_DB_STATEMENT]: query, [dataAttributeName]: '{"rowCount":1}', }; beforeEach(async () => { @@ -702,7 +708,7 @@ describe('pg', () => { it('should attach response hook data to resulting spans for query returning a Promise', async () => { const attributes = { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: query, + [SEMATTRS_DB_STATEMENT]: query, [dataAttributeName]: '{"rowCount":1}', }; @@ -727,7 +733,7 @@ describe('pg', () => { describe('AND invalid responseHook', () => { const attributes = { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: query, + [SEMATTRS_DB_STATEMENT]: query, }; beforeEach(async () => { diff --git a/plugins/node/opentelemetry-instrumentation-pg/test/utils.test.ts b/plugins/node/opentelemetry-instrumentation-pg/test/utils.test.ts index d3dca9aa3c..41ab6e5621 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/test/utils.test.ts +++ b/plugins/node/opentelemetry-instrumentation-pg/test/utils.test.ts @@ -28,7 +28,7 @@ import { PgInstrumentationConfig } from '../src'; import { AttributeNames } from '../src/enums/AttributeNames'; import { PgClientExtended } from '../src/internal-types'; import * as utils from '../src/utils'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMATTRS_NET_PEER_PORT } from '@opentelemetry/semantic-conventions'; const memoryExporter = new InMemorySpanExporter(); @@ -200,25 +200,25 @@ describe('utils.ts', () => { assert.strictEqual( utils.getSemanticAttributesFromConnection({ port: Infinity, - })[SemanticAttributes.NET_PEER_PORT], + })[SEMATTRS_NET_PEER_PORT], undefined ); assert.strictEqual( utils.getSemanticAttributesFromConnection({ port: -Infinity, - })[SemanticAttributes.NET_PEER_PORT], + })[SEMATTRS_NET_PEER_PORT], undefined ); assert.strictEqual( utils.getSemanticAttributesFromConnection({ port: NaN, - })[SemanticAttributes.NET_PEER_PORT], + })[SEMATTRS_NET_PEER_PORT], undefined ); assert.strictEqual( utils.getSemanticAttributesFromConnection({ port: 1.234, - })[SemanticAttributes.NET_PEER_PORT], + })[SEMATTRS_NET_PEER_PORT], undefined ); }); @@ -227,13 +227,13 @@ describe('utils.ts', () => { assert.strictEqual( utils.getSemanticAttributesFromConnection({ port: 1234, - })[SemanticAttributes.NET_PEER_PORT], + })[SEMATTRS_NET_PEER_PORT], 1234 ); assert.strictEqual( utils.getSemanticAttributesFromConnection({ port: Number.MAX_VALUE, - })[SemanticAttributes.NET_PEER_PORT], + })[SEMATTRS_NET_PEER_PORT], Number.MAX_VALUE ); }); From d5f079b3992395dcfb3b791c9fdaeefd6d6526f8 Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Wed, 3 Apr 2024 14:32:45 +0200 Subject: [PATCH 018/121] feat(deps): update otel-js to 1.23.0/0.50.0 (#2076) --- .../package.json | 2 +- .../auto-instrumentations-node/package.json | 8 +- .../auto-instrumentations-web/package.json | 6 +- package-lock.json | 904 +++++++++--------- .../opentelemetry-test-utils/package.json | 4 +- packages/winston-transport/package.json | 4 +- .../node/instrumentation-amqplib/package.json | 2 +- .../instrumentation-cucumber/package.json | 2 +- .../instrumentation-dataloader/package.json | 2 +- plugins/node/instrumentation-fs/package.json | 2 +- .../instrumentation-lru-memoizer/package.json | 2 +- .../instrumentation-mongoose/package.json | 2 +- .../instrumentation-runtime-node/package.json | 2 +- .../instrumentation-socket.io/package.json | 2 +- .../node/instrumentation-tedious/package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 6 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 4 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 4 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 4 +- 45 files changed, 508 insertions(+), 508 deletions(-) diff --git a/detectors/node/opentelemetry-resource-detector-instana/package.json b/detectors/node/opentelemetry-resource-detector-instana/package.json index adb3b93c1d..ba47abdbf1 100644 --- a/detectors/node/opentelemetry-resource-detector-instana/package.json +++ b/detectors/node/opentelemetry-resource-detector-instana/package.json @@ -39,7 +39,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.37.0", - "@opentelemetry/sdk-node": "^0.49.1", + "@opentelemetry/sdk-node": "^0.50.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/semver": "7.5.3", diff --git a/metapackages/auto-instrumentations-node/package.json b/metapackages/auto-instrumentations-node/package.json index 98ad37fa4f..2af86896f5 100644 --- a/metapackages/auto-instrumentations-node/package.json +++ b/metapackages/auto-instrumentations-node/package.json @@ -49,7 +49,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/instrumentation-amqplib": "^0.35.0", "@opentelemetry/instrumentation-aws-lambda": "^0.39.0", "@opentelemetry/instrumentation-aws-sdk": "^0.39.1", @@ -64,9 +64,9 @@ "@opentelemetry/instrumentation-fs": "^0.10.0", "@opentelemetry/instrumentation-generic-pool": "^0.34.0", "@opentelemetry/instrumentation-graphql": "^0.38.1", - "@opentelemetry/instrumentation-grpc": "^0.49.1", + "@opentelemetry/instrumentation-grpc": "^0.50.0", "@opentelemetry/instrumentation-hapi": "^0.35.0", - "@opentelemetry/instrumentation-http": "^0.49.1", + "@opentelemetry/instrumentation-http": "^0.50.0", "@opentelemetry/instrumentation-ioredis": "^0.38.0", "@opentelemetry/instrumentation-knex": "^0.34.0", "@opentelemetry/instrumentation-koa": "^0.38.0", @@ -92,7 +92,7 @@ "@opentelemetry/resource-detector-container": "^0.3.7", "@opentelemetry/resource-detector-gcp": "^0.29.7", "@opentelemetry/resources": "^1.12.0", - "@opentelemetry/sdk-node": "^0.49.1" + "@opentelemetry/sdk-node": "^0.50.0" }, "files": [ "build/src/**/*.js", diff --git a/metapackages/auto-instrumentations-web/package.json b/metapackages/auto-instrumentations-web/package.json index 0d0014a540..bc378454e8 100644 --- a/metapackages/auto-instrumentations-web/package.json +++ b/metapackages/auto-instrumentations-web/package.json @@ -61,11 +61,11 @@ "webpack-merge": "5.8.0" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/instrumentation-document-load": "^0.36.0", - "@opentelemetry/instrumentation-fetch": "^0.49.1", + "@opentelemetry/instrumentation-fetch": "^0.50.0", "@opentelemetry/instrumentation-user-interaction": "^0.36.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.49.1" + "@opentelemetry/instrumentation-xml-http-request": "^0.50.0" }, "files": [ "build/src/**/*.js", diff --git a/package-lock.json b/package-lock.json index 4c2130b743..451c7093b7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -255,7 +255,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.37.0", - "@opentelemetry/sdk-node": "^0.49.1", + "@opentelemetry/sdk-node": "^0.50.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/semver": "7.5.3", @@ -284,7 +284,7 @@ "version": "0.43.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/instrumentation-amqplib": "^0.35.0", "@opentelemetry/instrumentation-aws-lambda": "^0.39.0", "@opentelemetry/instrumentation-aws-sdk": "^0.39.1", @@ -299,9 +299,9 @@ "@opentelemetry/instrumentation-fs": "^0.10.0", "@opentelemetry/instrumentation-generic-pool": "^0.34.0", "@opentelemetry/instrumentation-graphql": "^0.38.1", - "@opentelemetry/instrumentation-grpc": "^0.49.1", + "@opentelemetry/instrumentation-grpc": "^0.50.0", "@opentelemetry/instrumentation-hapi": "^0.35.0", - "@opentelemetry/instrumentation-http": "^0.49.1", + "@opentelemetry/instrumentation-http": "^0.50.0", "@opentelemetry/instrumentation-ioredis": "^0.38.0", "@opentelemetry/instrumentation-knex": "^0.34.0", "@opentelemetry/instrumentation-koa": "^0.38.0", @@ -327,7 +327,7 @@ "@opentelemetry/resource-detector-container": "^0.3.7", "@opentelemetry/resource-detector-gcp": "^0.29.7", "@opentelemetry/resources": "^1.12.0", - "@opentelemetry/sdk-node": "^0.49.1" + "@opentelemetry/sdk-node": "^0.50.0" }, "devDependencies": { "@opentelemetry/api": "^1.4.1", @@ -353,11 +353,11 @@ "version": "0.37.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/instrumentation-document-load": "^0.36.0", - "@opentelemetry/instrumentation-fetch": "^0.49.1", + "@opentelemetry/instrumentation-fetch": "^0.50.0", "@opentelemetry/instrumentation-user-interaction": "^0.36.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.49.1" + "@opentelemetry/instrumentation-xml-http-request": "^0.50.0" }, "devDependencies": { "@babel/core": "7.22.17", @@ -8197,9 +8197,9 @@ } }, "node_modules/@opentelemetry/api-logs": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.49.1.tgz", - "integrity": "sha512-kaNl/T7WzyMUQHQlVq7q0oV4Kev6+0xFwqzofryC66jgGMacd0QH5TwfpbUwSTby+SdAdprAe5UKMvBw4tKS5Q==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.50.0.tgz", + "integrity": "sha512-JdZuKrhOYggqOpUljAq4WWNi5nB10PmgoF0y2CvedLGXd0kSawb/UBnWT8gg1ND3bHCNHStAIVT0ELlxJJRqrA==", "dependencies": { "@opentelemetry/api": "^1.0.0" }, @@ -8216,9 +8216,9 @@ "link": true }, "node_modules/@opentelemetry/context-async-hooks": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.22.0.tgz", - "integrity": "sha512-Nfdxyg8YtWqVWkyrCukkundAjPhUXi93JtVQmqDT1mZRVKqA7e2r7eJCrI+F651XUBMp0hsOJSGiFk3QSpaIJw==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.23.0.tgz", + "integrity": "sha512-wazGJZDRevibOJ+VgyrT+9+8sybZAxpZx2G7vy30OAtk92OpZCg7HgNxT11NUx0VBDWcRx1dOatMYGOVplQ7QA==", "engines": { "node": ">=14" }, @@ -8227,11 +8227,11 @@ } }, "node_modules/@opentelemetry/context-zone": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone/-/context-zone-1.22.0.tgz", - "integrity": "sha512-ukPkASKUt9l4P3g7Dggntb3jG3dVL4dPXfDc8FUZ6pOCiLa5NRrRPQPbDdCumytbw5Yor9paiXCg/oQgMyYMHw==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone/-/context-zone-1.23.0.tgz", + "integrity": "sha512-7piNTrpH+gZNMDDOHIJXCSwp0Xslh3R96HWH5HwXw+4PykR4+jVoXvd6jziQxudX9rFAfu2B64A10DHs4ZWrfA==", "dependencies": { - "@opentelemetry/context-zone-peer-dep": "1.22.0", + "@opentelemetry/context-zone-peer-dep": "1.23.0", "zone.js": "^0.11.0 || ^0.13.0 || ^0.14.0" }, "engines": { @@ -8239,9 +8239,9 @@ } }, "node_modules/@opentelemetry/context-zone-peer-dep": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-1.22.0.tgz", - "integrity": "sha512-kQ0K6syNQQYj4Pd5Q4yiUAsuthpzWDmVPPqMUSACh9ArRYLq8ZY9JdnkqkT1RyeecpSDh5uG+x5dbx6drpJ79g==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-1.23.0.tgz", + "integrity": "sha512-3ia5w2y3CGHIhMSggttliGbeRBWclIyMMXdfRCcit1NHg1ocieA9qYxyUEetbOvPrQpoti3O3k+5eyQUv7r8nw==", "engines": { "node": ">=14" }, @@ -8255,11 +8255,11 @@ "link": true }, "node_modules/@opentelemetry/core": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.22.0.tgz", - "integrity": "sha512-0VoAlT6x+Xzik1v9goJ3pZ2ppi6+xd3aUfg4brfrLkDBHRIVjMP0eBHrKrhB+NKcDyMAg8fAbGL3Npg/F6AwWA==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.23.0.tgz", + "integrity": "sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ==", "dependencies": { - "@opentelemetry/semantic-conventions": "1.22.0" + "@opentelemetry/semantic-conventions": "1.23.0" }, "engines": { "node": ">=14" @@ -8269,13 +8269,13 @@ } }, "node_modules/@opentelemetry/exporter-jaeger": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.22.0.tgz", - "integrity": "sha512-8kDUmx0nMgh+kLPi9hpQFS/bT0nrLYXKGoXTjsCQ24lbIEOanWAyA/lQFFu1Y/mZKsws/h3fBb1b9JSicNCWBw==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.23.0.tgz", + "integrity": "sha512-9GjZPS9kR4nC0ApOFQtj2xwYAGhQ3bO6KPx27DLqCOiso27OlJVUgvAtB3i+1On23OTcjfPtKbNo4a2npmV27A==", "dependencies": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/sdk-trace-base": "1.22.0", - "@opentelemetry/semantic-conventions": "1.22.0", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0", "jaeger-client": "^3.15.0" }, "engines": { @@ -8286,16 +8286,16 @@ } }, "node_modules/@opentelemetry/exporter-trace-otlp-grpc": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.49.1.tgz", - "integrity": "sha512-Zbd7f3zF7fI2587MVhBizaW21cO/SordyrZGtMtvhoxU6n4Qb02Gx71X4+PzXH620e0+JX+Pcr9bYb1HTeVyJA==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.50.0.tgz", + "integrity": "sha512-w/NF4TrwHxx+Uz1M0rCOSVr6KgcoQPv3zF9JRqcebY2euD7ddWnLP0hE8JavyA1uq4UchnMp9faAk9n7hTCePw==", "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.22.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.49.1", - "@opentelemetry/otlp-transformer": "0.49.1", - "@opentelemetry/resources": "1.22.0", - "@opentelemetry/sdk-trace-base": "1.22.0" + "@opentelemetry/core": "1.23.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.50.0", + "@opentelemetry/otlp-transformer": "0.50.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0" }, "engines": { "node": ">=14" @@ -8305,15 +8305,15 @@ } }, "node_modules/@opentelemetry/exporter-trace-otlp-http": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.49.1.tgz", - "integrity": "sha512-KOLtZfZvIrpGZLVvblKsiVQT7gQUZNKcUUH24Zz6Xbi7LJb9Vt6xtUZFYdR5IIjvt47PIqBKDWUQlU0o1wAsRw==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.50.0.tgz", + "integrity": "sha512-L7OtIMT7MsFqkmhbQlPBGRXt7152VN5esHpQEJYIBFedOEo3Da+yHpu5ojMZtPzpIvSpB5Xr5lnJUjJCbkttCA==", "dependencies": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/otlp-exporter-base": "0.49.1", - "@opentelemetry/otlp-transformer": "0.49.1", - "@opentelemetry/resources": "1.22.0", - "@opentelemetry/sdk-trace-base": "1.22.0" + "@opentelemetry/core": "1.23.0", + "@opentelemetry/otlp-exporter-base": "0.50.0", + "@opentelemetry/otlp-transformer": "0.50.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0" }, "engines": { "node": ">=14" @@ -8323,16 +8323,16 @@ } }, "node_modules/@opentelemetry/exporter-trace-otlp-proto": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.49.1.tgz", - "integrity": "sha512-n8ON/c9pdMyYAfSFWKkgsPwjYoxnki+6Olzo+klKfW7KqLWoyEkryNkbcMIYnGGNXwdkMIrjoaP0VxXB26Oxcg==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.50.0.tgz", + "integrity": "sha512-vavD9Ow6yOLiD+ocuS/oeciCsXNdsN41aYUrEljNaLXogvnkfMhJ+JLAhOnRSpzlVtRp7Ciw2BYGdYSebR0OsA==", "dependencies": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/otlp-exporter-base": "0.49.1", - "@opentelemetry/otlp-proto-exporter-base": "0.49.1", - "@opentelemetry/otlp-transformer": "0.49.1", - "@opentelemetry/resources": "1.22.0", - "@opentelemetry/sdk-trace-base": "1.22.0" + "@opentelemetry/core": "1.23.0", + "@opentelemetry/otlp-exporter-base": "0.50.0", + "@opentelemetry/otlp-proto-exporter-base": "0.50.0", + "@opentelemetry/otlp-transformer": "0.50.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0" }, "engines": { "node": ">=14" @@ -8342,14 +8342,14 @@ } }, "node_modules/@opentelemetry/exporter-zipkin": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.22.0.tgz", - "integrity": "sha512-XcFs6rGvcTz0qW5uY7JZDYD0yNEXdekXAb6sFtnZgY/cHY6BQ09HMzOjv9SX+iaXplRDcHr1Gta7VQKM1XXM6g==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.23.0.tgz", + "integrity": "sha512-2LOGvNUGONuIcWhynFaJorVyqv03uZkURScciLmOxvBf2lWTNPEj77br1dCpShIWBM+YlrH7Tc+JXAs+GC7DqA==", "dependencies": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/resources": "1.22.0", - "@opentelemetry/sdk-trace-base": "1.22.0", - "@opentelemetry/semantic-conventions": "1.22.0" + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" }, "engines": { "node": ">=14" @@ -8367,11 +8367,11 @@ "link": true }, "node_modules/@opentelemetry/instrumentation": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.49.1.tgz", - "integrity": "sha512-0DLtWtaIppuNNRRllSD4bjU8ZIiLp1cDXvJEbp752/Zf+y3gaLNaoGRGIlX4UHhcsrmtL+P2qxi3Hodi8VuKiQ==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.50.0.tgz", + "integrity": "sha512-bhGhbJiZKpuu7wTaSak4hyZcFPlnDeuSF/2vglze8B4w2LubcSbbOnkVTzTs5SXtzh4Xz8eRjaNnAm+u2GYufQ==", "dependencies": { - "@opentelemetry/api-logs": "0.49.1", + "@opentelemetry/api-logs": "0.50.0", "@types/shimmer": "^1.0.2", "import-in-the-middle": "1.7.1", "require-in-the-middle": "^7.1.1", @@ -8434,14 +8434,14 @@ "link": true }, "node_modules/@opentelemetry/instrumentation-fetch": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.49.1.tgz", - "integrity": "sha512-hizhULZXlq02y8YC0vPQ4WtUWiXcwxPdEqHBy8p75jzF9rAuP/ldrVr0Oxvz5Xr9qQcdEOFLvEl0ZxbVL76WKw==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.50.0.tgz", + "integrity": "sha512-CayteluGJbrfDvzEFQ0EWqLFkNAcO9H7nfDHptZjtonBpJRWF170XZoMkJVC2bxp0lIVwyuw6WlnGVRSNwEtKA==", "dependencies": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/instrumentation": "0.49.1", - "@opentelemetry/sdk-trace-web": "1.22.0", - "@opentelemetry/semantic-conventions": "1.22.0" + "@opentelemetry/core": "1.23.0", + "@opentelemetry/instrumentation": "0.50.0", + "@opentelemetry/sdk-trace-web": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" }, "engines": { "node": ">=14" @@ -8463,12 +8463,12 @@ "link": true }, "node_modules/@opentelemetry/instrumentation-grpc": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.49.1.tgz", - "integrity": "sha512-f8mQjFi5/PiP4SK3VDU1/3sUUgs6exMtBgcnNycgCKgN40htiPT+MuDRwdRnRMNI/4vNQ7p1/5r4Q5oN0GuRBw==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.50.0.tgz", + "integrity": "sha512-/ZFuvHtrHyxfRJX5CJ8yPKokAIcvTbIJAoR4AN+gBq1YqecWuCr4XG52p5YU5qDrbwOBtShOrC8d4GdFZOky6Q==", "dependencies": { - "@opentelemetry/instrumentation": "0.49.1", - "@opentelemetry/semantic-conventions": "1.22.0" + "@opentelemetry/instrumentation": "0.50.0", + "@opentelemetry/semantic-conventions": "1.23.0" }, "engines": { "node": ">=14" @@ -8482,13 +8482,13 @@ "link": true }, "node_modules/@opentelemetry/instrumentation-http": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.49.1.tgz", - "integrity": "sha512-Yib5zrW2s0V8wTeUK/B3ZtpyP4ldgXj9L3Ws/axXrW1dW0/mEFKifK50MxMQK9g5NNJQS9dWH7rvcEGZdWdQDA==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.50.0.tgz", + "integrity": "sha512-bsd6Nv0FtN9C6M6vX/kgPzvJY9UhJc4CZZNvqDbsfVQv3/MWvPrYgthf41AhrehqeDnpfn/QGzNKtdWUduGanQ==", "dependencies": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/instrumentation": "0.49.1", - "@opentelemetry/semantic-conventions": "1.22.0", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/instrumentation": "0.50.0", + "@opentelemetry/semantic-conventions": "1.23.0", "semver": "^7.5.2" }, "engines": { @@ -8591,14 +8591,14 @@ "link": true }, "node_modules/@opentelemetry/instrumentation-xml-http-request": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.49.1.tgz", - "integrity": "sha512-gCPd2o1geRXc1urJoLxWRnMKAF6Akbwlp1nfe+xg2akSUenlt4wopmq1gEIrJva4bXLsNSModVLrEVCTt5/fDA==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.50.0.tgz", + "integrity": "sha512-o9z6SDQByqc3GvmUcy6Npt/SAIrv2Pk0Hm0Hl54B3Ny8WUrTsrlt6MULx8d+EjuifE4uVo8op8DekmvKJ1FHoQ==", "dependencies": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/instrumentation": "0.49.1", - "@opentelemetry/sdk-trace-web": "1.22.0", - "@opentelemetry/semantic-conventions": "1.22.0" + "@opentelemetry/core": "1.23.0", + "@opentelemetry/instrumentation": "0.50.0", + "@opentelemetry/sdk-trace-web": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" }, "engines": { "node": ">=14" @@ -8608,11 +8608,11 @@ } }, "node_modules/@opentelemetry/otlp-exporter-base": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.49.1.tgz", - "integrity": "sha512-z6sHliPqDgJU45kQatAettY9/eVF58qVPaTuejw9YWfSRqid9pXPYeegDCSdyS47KAUgAtm+nC28K3pfF27HWg==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.50.0.tgz", + "integrity": "sha512-JUmjmrCmE1/fc4LjCQMqLfudgSl5OpUkzx7iA94b4jgeODM7zWxUoVXL7/CT7fWf47Cn+pmKjMvTCSESqZZ3mA==", "dependencies": { - "@opentelemetry/core": "1.22.0" + "@opentelemetry/core": "1.23.0" }, "engines": { "node": ">=14" @@ -8622,13 +8622,13 @@ } }, "node_modules/@opentelemetry/otlp-grpc-exporter-base": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.49.1.tgz", - "integrity": "sha512-DNDNUWmOqtKTFJAyOyHHKotVox0NQ/09ETX8fUOeEtyNVHoGekAVtBbvIA3AtK+JflP7LC0PTjlLfruPM3Wy6w==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.50.0.tgz", + "integrity": "sha512-J500AczSD7xEsjXpwNzSh5HQqxW73PT3CCNsi1VEWCE+8UPgVfkHYIGRHGoch35DV+CMe1svbi7gAk3e5eCSVA==", "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.22.0", - "@opentelemetry/otlp-exporter-base": "0.49.1", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/otlp-exporter-base": "0.50.0", "protobufjs": "^7.2.3" }, "engines": { @@ -8639,12 +8639,12 @@ } }, "node_modules/@opentelemetry/otlp-proto-exporter-base": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.49.1.tgz", - "integrity": "sha512-x1qB4EUC7KikUl2iNuxCkV8yRzrSXSyj4itfpIO674H7dhI7Zv37SFaOJTDN+8Z/F50gF2ISFH9CWQ4KCtGm2A==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.50.0.tgz", + "integrity": "sha512-hlbn3eZbhxoK79Sq1ddj1f7qcx+PzsPQC/SFpJvaWgTaqacCbqJmpzWDKfRRCAC7iGX2Hj/sgpf8vysazqyMOw==", "dependencies": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/otlp-exporter-base": "0.49.1", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/otlp-exporter-base": "0.50.0", "protobufjs": "^7.2.3" }, "engines": { @@ -8655,16 +8655,16 @@ } }, "node_modules/@opentelemetry/otlp-transformer": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.49.1.tgz", - "integrity": "sha512-Z+koA4wp9L9e3jkFacyXTGphSWTbOKjwwXMpb0CxNb0kjTHGUxhYRN8GnkLFsFo5NbZPjP07hwAqeEG/uCratQ==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.50.0.tgz", + "integrity": "sha512-s0sl1Yfqd5q1Kjrf6DqXPWzErL+XHhrXOfejh4Vc/SMTNqC902xDsC8JQxbjuramWt/+hibfguIvi7Ns8VLolA==", "dependencies": { - "@opentelemetry/api-logs": "0.49.1", - "@opentelemetry/core": "1.22.0", - "@opentelemetry/resources": "1.22.0", - "@opentelemetry/sdk-logs": "0.49.1", - "@opentelemetry/sdk-metrics": "1.22.0", - "@opentelemetry/sdk-trace-base": "1.22.0" + "@opentelemetry/api-logs": "0.50.0", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-logs": "0.50.0", + "@opentelemetry/sdk-metrics": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0" }, "engines": { "node": ">=14" @@ -8686,11 +8686,11 @@ "link": true }, "node_modules/@opentelemetry/propagator-b3": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.22.0.tgz", - "integrity": "sha512-qBItJm9ygg/jCB5rmivyGz1qmKZPsL/sX715JqPMFgq++Idm0x+N9sLQvWFHFt2+ZINnCSojw7FVBgFW6izcXA==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.23.0.tgz", + "integrity": "sha512-cZ6rl8y2bdxYQ4e+zP2CQ+QmuPebaLBLO1skjFpj3eEu7zar+6hBzUP3llMOUupkQeQSwXz+4c8dZ26OhYfG/g==", "dependencies": { - "@opentelemetry/core": "1.22.0" + "@opentelemetry/core": "1.23.0" }, "engines": { "node": ">=14" @@ -8708,11 +8708,11 @@ "link": true }, "node_modules/@opentelemetry/propagator-jaeger": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.22.0.tgz", - "integrity": "sha512-pMLgst3QIwrUfepraH5WG7xfpJ8J3CrPKrtINK0t7kBkuu96rn+HDYQ8kt3+0FXvrZI8YJE77MCQwnJWXIrgpA==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.23.0.tgz", + "integrity": "sha512-6iArixfgIl3ZgzeltQ5jyiKbjZygM+MbM84pXi1HL0Qs4x4Ck5rM6wEtjhZffFnlDMWEkEqrnM0xF6bTfbiMAQ==", "dependencies": { - "@opentelemetry/core": "1.22.0" + "@opentelemetry/core": "1.23.0" }, "engines": { "node": ">=14" @@ -8758,12 +8758,12 @@ "link": true }, "node_modules/@opentelemetry/resources": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.22.0.tgz", - "integrity": "sha512-+vNeIFPH2hfcNL0AJk/ykJXoUCtR1YaDUZM+p3wZNU4Hq98gzq+7b43xbkXjadD9VhWIUQqEwXyY64q6msPj6A==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.23.0.tgz", + "integrity": "sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg==", "dependencies": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/semantic-conventions": "1.22.0" + "@opentelemetry/core": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" }, "engines": { "node": ">=14" @@ -8773,12 +8773,12 @@ } }, "node_modules/@opentelemetry/sdk-logs": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.49.1.tgz", - "integrity": "sha512-gCzYWsJE0h+3cuh3/cK+9UwlVFyHvj3PReIOCDOmdeXOp90ZjKRoDOJBc3mvk1LL6wyl1RWIivR8Rg9OToyesw==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.50.0.tgz", + "integrity": "sha512-PeUEupBB29p9nlPNqXoa1PUWNLsZnxG0DCDj3sHqzae+8y76B/A5hvZjg03ulWdnvBLYpnJslqzylG9E0IL87g==", "dependencies": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/resources": "1.22.0" + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0" }, "engines": { "node": ">=14" @@ -8789,12 +8789,12 @@ } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.22.0.tgz", - "integrity": "sha512-k6iIx6H3TZ+BVMr2z8M16ri2OxWaljg5h8ihGJxi/KQWcjign6FEaEzuigXt5bK9wVEhqAcWLCfarSftaNWkkg==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.23.0.tgz", + "integrity": "sha512-4OkvW6+wST4h6LFG23rXSTf6nmTf201h9dzq7bE0z5R9ESEVLERZz6WXwE7PSgg1gdjlaznm1jLJf8GttypFDg==", "dependencies": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/resources": "1.22.0", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0", "lodash.merge": "^4.6.2" }, "engines": { @@ -8805,23 +8805,23 @@ } }, "node_modules/@opentelemetry/sdk-node": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.49.1.tgz", - "integrity": "sha512-feBIT85ndiSHXsQ2gfGpXC/sNeX4GCHLksC4A9s/bfpUbbgbCSl0RvzZlmEpCHarNrkZMwFRi4H0xFfgvJEjrg==", - "dependencies": { - "@opentelemetry/api-logs": "0.49.1", - "@opentelemetry/core": "1.22.0", - "@opentelemetry/exporter-trace-otlp-grpc": "0.49.1", - "@opentelemetry/exporter-trace-otlp-http": "0.49.1", - "@opentelemetry/exporter-trace-otlp-proto": "0.49.1", - "@opentelemetry/exporter-zipkin": "1.22.0", - "@opentelemetry/instrumentation": "0.49.1", - "@opentelemetry/resources": "1.22.0", - "@opentelemetry/sdk-logs": "0.49.1", - "@opentelemetry/sdk-metrics": "1.22.0", - "@opentelemetry/sdk-trace-base": "1.22.0", - "@opentelemetry/sdk-trace-node": "1.22.0", - "@opentelemetry/semantic-conventions": "1.22.0" + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.50.0.tgz", + "integrity": "sha512-LhIXHnvcnhRYcPwG9VG4G6lJ7x4ElYF6UYHHmXA7e4ZWzSUEFmAPfR1IBWv358aD1KwffcEBu7J6zeAR7lPZag==", + "dependencies": { + "@opentelemetry/api-logs": "0.50.0", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.50.0", + "@opentelemetry/exporter-trace-otlp-http": "0.50.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.50.0", + "@opentelemetry/exporter-zipkin": "1.23.0", + "@opentelemetry/instrumentation": "0.50.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-logs": "0.50.0", + "@opentelemetry/sdk-metrics": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0", + "@opentelemetry/sdk-trace-node": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" }, "engines": { "node": ">=14" @@ -8831,13 +8831,13 @@ } }, "node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.22.0.tgz", - "integrity": "sha512-pfTuSIpCKONC6vkTpv6VmACxD+P1woZf4q0K46nSUvXFvOFqjBYKFaAMkKD3M1mlKUUh0Oajwj35qNjMl80m1Q==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.23.0.tgz", + "integrity": "sha512-PzBmZM8hBomUqvCddF/5Olyyviayka44O5nDWq673np3ctnvwMOvNrsUORZjKja1zJbwEuD9niAGbnVrz3jwRQ==", "dependencies": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/resources": "1.22.0", - "@opentelemetry/semantic-conventions": "1.22.0" + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" }, "engines": { "node": ">=14" @@ -8847,15 +8847,15 @@ } }, "node_modules/@opentelemetry/sdk-trace-node": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.22.0.tgz", - "integrity": "sha512-gTGquNz7ue8uMeiWPwp3CU321OstQ84r7PCDtOaCicjbJxzvO8RZMlEC4geOipTeiF88kss5n6w+//A0MhP1lQ==", - "dependencies": { - "@opentelemetry/context-async-hooks": "1.22.0", - "@opentelemetry/core": "1.22.0", - "@opentelemetry/propagator-b3": "1.22.0", - "@opentelemetry/propagator-jaeger": "1.22.0", - "@opentelemetry/sdk-trace-base": "1.22.0", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.23.0.tgz", + "integrity": "sha512-dwnin5Go2r6VzJZkVc9JBPupssWp7j2EFto+S7qRkwQ00WDykWeq3x2Skk7I1Jr448FeBSvGCQVPgV5e6s6O3w==", + "dependencies": { + "@opentelemetry/context-async-hooks": "1.23.0", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/propagator-b3": "1.23.0", + "@opentelemetry/propagator-jaeger": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0", "semver": "^7.5.2" }, "engines": { @@ -8866,13 +8866,13 @@ } }, "node_modules/@opentelemetry/sdk-trace-web": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-1.22.0.tgz", - "integrity": "sha512-id5bUhWYg475xbm4hjwWA4PnWM4duNK1EyFRkZxa3BZNuCITwiKCLvDkVhlE9RK2kvuDOPmcRxgSbU1apF9/1w==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-1.23.0.tgz", + "integrity": "sha512-tx9N3hIkd6k567BeujBnpXYdhu3ptYVk0ZkhdcjyQ3I8ZDJ+/JkVtaVNLAuf8hp1buTqNDmxSipALMxEmK2fnw==", "dependencies": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/sdk-trace-base": "1.22.0", - "@opentelemetry/semantic-conventions": "1.22.0" + "@opentelemetry/core": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" }, "engines": { "node": ">=14" @@ -8882,9 +8882,9 @@ } }, "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.22.0.tgz", - "integrity": "sha512-CAOgFOKLybd02uj/GhCdEeeBjOS0yeoDeo/CA7ASBSmenpZHAKGB3iDm/rv3BQLcabb/OprDEsSQ1y0P8A7Siw==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.23.0.tgz", + "integrity": "sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg==", "engines": { "node": ">=14" } @@ -36703,9 +36703,9 @@ "dependencies": { "@opentelemetry/core": "^1.0.0", "@opentelemetry/exporter-jaeger": "^1.3.1", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-node": "^0.49.1", + "@opentelemetry/sdk-node": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0" @@ -36727,7 +36727,7 @@ "version": "0.1.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "^0.49.1", + "@opentelemetry/api-logs": "^0.50.0", "winston-transport": "4.*" }, "devDependencies": { @@ -36758,7 +36758,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -36797,7 +36797,7 @@ "version": "0.4.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -36864,7 +36864,7 @@ "version": "0.7.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1" + "@opentelemetry/instrumentation": "^0.50.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -36894,7 +36894,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -36925,7 +36925,7 @@ "version": "0.35.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1" + "@opentelemetry/instrumentation": "^0.50.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -36961,7 +36961,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -36997,7 +36997,7 @@ "version": "0.2.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1" + "@opentelemetry/instrumentation": "^0.50.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -37037,7 +37037,7 @@ "version": "0.37.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -37286,7 +37286,7 @@ "version": "0.8.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/tedious": "^4.0.10" }, @@ -37317,7 +37317,7 @@ "version": "0.39.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/propagator-aws-xray": "^1.3.1", "@opentelemetry/resources": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -37350,7 +37350,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/propagation-utils": "^0.30.7", "@opentelemetry/semantic-conventions": "^1.0.0" }, @@ -37397,14 +37397,14 @@ "version": "0.36.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "^0.49.1", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/api-logs": "^0.50.0", + "@opentelemetry/instrumentation": "^0.50.0", "@types/bunyan": "1.8.9" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-logs": "^0.49.1", + "@opentelemetry/sdk-logs": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -37440,7 +37440,7 @@ "version": "0.36.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -37474,7 +37474,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/connect": "3.4.36" }, @@ -37512,7 +37512,7 @@ "version": "0.34.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0", "semver": "^7.5.4" }, @@ -37546,7 +37546,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { @@ -37581,7 +37581,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -37589,7 +37589,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.37.0", - "@opentelemetry/instrumentation-http": "^0.49.1", + "@opentelemetry/instrumentation-http": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/express": "4.17.18", @@ -37629,7 +37629,7 @@ "version": "0.34.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -37694,7 +37694,7 @@ "version": "0.38.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1" + "@opentelemetry/instrumentation": "^0.50.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -37729,7 +37729,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/hapi__hapi": "20.0.13" }, @@ -37760,7 +37760,7 @@ "version": "0.38.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/ioredis4": "npm:@types/ioredis@^4.28.10" @@ -37796,7 +37796,7 @@ "version": "0.34.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -37827,7 +37827,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/koa": "2.14.0", "@types/koa__router": "12.0.3" @@ -37837,7 +37837,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.37.0", - "@opentelemetry/instrumentation-http": "^0.49.1", + "@opentelemetry/instrumentation-http": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -37864,7 +37864,7 @@ "version": "0.34.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/memcached": "^2.2.6" }, @@ -37896,7 +37896,7 @@ "version": "0.41.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-metrics": "^1.9.1", "@opentelemetry/semantic-conventions": "^1.0.0" }, @@ -38090,7 +38090,7 @@ "version": "0.36.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/mysql": "2.15.22" }, @@ -38123,7 +38123,7 @@ "version": "0.36.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@opentelemetry/sql-common": "^0.40.0" }, @@ -38189,7 +38189,7 @@ "version": "0.35.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -38262,7 +38262,7 @@ "version": "0.34.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -38292,7 +38292,7 @@ "version": "0.39.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@opentelemetry/sql-common": "^0.40.0", "@types/pg": "8.6.1", @@ -38331,7 +38331,7 @@ "version": "0.36.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1" + "@opentelemetry/instrumentation": "^0.50.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -38398,7 +38398,7 @@ "version": "0.37.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/semantic-conventions": "^1.0.0" }, @@ -38432,7 +38432,7 @@ "version": "0.37.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/semantic-conventions": "^1.0.0" }, @@ -38481,7 +38481,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -38547,7 +38547,7 @@ "version": "0.35.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -38576,7 +38576,7 @@ "version": "0.35.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1" + "@opentelemetry/instrumentation": "^0.50.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -38611,7 +38611,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.0.0", "@opentelemetry/sdk-trace-web": "^1.15.0", "@opentelemetry/semantic-conventions": "^1.22.0" @@ -38652,7 +38652,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-web": "^1.8.0" }, "devDependencies": { @@ -38698,7 +38698,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-web": "^1.8.0" }, "devDependencies": { @@ -38706,7 +38706,7 @@ "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-zone-peer-dep": "^1.8.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.49.1", + "@opentelemetry/instrumentation-xml-http-request": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/jquery": "3.5.20", "@types/mocha": "7.0.2", @@ -45396,9 +45396,9 @@ "integrity": "sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==" }, "@opentelemetry/api-logs": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.49.1.tgz", - "integrity": "sha512-kaNl/T7WzyMUQHQlVq7q0oV4Kev6+0xFwqzofryC66jgGMacd0QH5TwfpbUwSTby+SdAdprAe5UKMvBw4tKS5Q==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.50.0.tgz", + "integrity": "sha512-JdZuKrhOYggqOpUljAq4WWNi5nB10PmgoF0y2CvedLGXd0kSawb/UBnWT8gg1ND3bHCNHStAIVT0ELlxJJRqrA==", "requires": { "@opentelemetry/api": "^1.0.0" } @@ -45407,7 +45407,7 @@ "version": "file:metapackages/auto-instrumentations-node", "requires": { "@opentelemetry/api": "^1.4.1", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/instrumentation-amqplib": "^0.35.0", "@opentelemetry/instrumentation-aws-lambda": "^0.39.0", "@opentelemetry/instrumentation-aws-sdk": "^0.39.1", @@ -45422,9 +45422,9 @@ "@opentelemetry/instrumentation-fs": "^0.10.0", "@opentelemetry/instrumentation-generic-pool": "^0.34.0", "@opentelemetry/instrumentation-graphql": "^0.38.1", - "@opentelemetry/instrumentation-grpc": "^0.49.1", + "@opentelemetry/instrumentation-grpc": "^0.50.0", "@opentelemetry/instrumentation-hapi": "^0.35.0", - "@opentelemetry/instrumentation-http": "^0.49.1", + "@opentelemetry/instrumentation-http": "^0.50.0", "@opentelemetry/instrumentation-ioredis": "^0.38.0", "@opentelemetry/instrumentation-knex": "^0.34.0", "@opentelemetry/instrumentation-koa": "^0.38.0", @@ -45450,7 +45450,7 @@ "@opentelemetry/resource-detector-container": "^0.3.7", "@opentelemetry/resource-detector-gcp": "^0.29.7", "@opentelemetry/resources": "^1.12.0", - "@opentelemetry/sdk-node": "^0.49.1", + "@opentelemetry/sdk-node": "^0.50.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -45468,11 +45468,11 @@ "@babel/core": "7.22.17", "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/instrumentation-document-load": "^0.36.0", - "@opentelemetry/instrumentation-fetch": "^0.49.1", + "@opentelemetry/instrumentation-fetch": "^0.50.0", "@opentelemetry/instrumentation-user-interaction": "^0.36.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.49.1", + "@opentelemetry/instrumentation-xml-http-request": "^0.50.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -45505,24 +45505,24 @@ } }, "@opentelemetry/context-async-hooks": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.22.0.tgz", - "integrity": "sha512-Nfdxyg8YtWqVWkyrCukkundAjPhUXi93JtVQmqDT1mZRVKqA7e2r7eJCrI+F651XUBMp0hsOJSGiFk3QSpaIJw==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.23.0.tgz", + "integrity": "sha512-wazGJZDRevibOJ+VgyrT+9+8sybZAxpZx2G7vy30OAtk92OpZCg7HgNxT11NUx0VBDWcRx1dOatMYGOVplQ7QA==", "requires": {} }, "@opentelemetry/context-zone": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone/-/context-zone-1.22.0.tgz", - "integrity": "sha512-ukPkASKUt9l4P3g7Dggntb3jG3dVL4dPXfDc8FUZ6pOCiLa5NRrRPQPbDdCumytbw5Yor9paiXCg/oQgMyYMHw==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone/-/context-zone-1.23.0.tgz", + "integrity": "sha512-7piNTrpH+gZNMDDOHIJXCSwp0Xslh3R96HWH5HwXw+4PykR4+jVoXvd6jziQxudX9rFAfu2B64A10DHs4ZWrfA==", "requires": { - "@opentelemetry/context-zone-peer-dep": "1.22.0", + "@opentelemetry/context-zone-peer-dep": "1.23.0", "zone.js": "^0.11.0 || ^0.13.0 || ^0.14.0" } }, "@opentelemetry/context-zone-peer-dep": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-1.22.0.tgz", - "integrity": "sha512-kQ0K6syNQQYj4Pd5Q4yiUAsuthpzWDmVPPqMUSACh9ArRYLq8ZY9JdnkqkT1RyeecpSDh5uG+x5dbx6drpJ79g==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-1.23.0.tgz", + "integrity": "sha512-3ia5w2y3CGHIhMSggttliGbeRBWclIyMMXdfRCcit1NHg1ocieA9qYxyUEetbOvPrQpoti3O3k+5eyQUv7r8nw==", "requires": {} }, "@opentelemetry/contrib-test-utils": { @@ -45531,9 +45531,9 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/core": "^1.0.0", "@opentelemetry/exporter-jaeger": "^1.3.1", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-node": "^0.49.1", + "@opentelemetry/sdk-node": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -45542,71 +45542,71 @@ } }, "@opentelemetry/core": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.22.0.tgz", - "integrity": "sha512-0VoAlT6x+Xzik1v9goJ3pZ2ppi6+xd3aUfg4brfrLkDBHRIVjMP0eBHrKrhB+NKcDyMAg8fAbGL3Npg/F6AwWA==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.23.0.tgz", + "integrity": "sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ==", "requires": { - "@opentelemetry/semantic-conventions": "1.22.0" + "@opentelemetry/semantic-conventions": "1.23.0" } }, "@opentelemetry/exporter-jaeger": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.22.0.tgz", - "integrity": "sha512-8kDUmx0nMgh+kLPi9hpQFS/bT0nrLYXKGoXTjsCQ24lbIEOanWAyA/lQFFu1Y/mZKsws/h3fBb1b9JSicNCWBw==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.23.0.tgz", + "integrity": "sha512-9GjZPS9kR4nC0ApOFQtj2xwYAGhQ3bO6KPx27DLqCOiso27OlJVUgvAtB3i+1On23OTcjfPtKbNo4a2npmV27A==", "requires": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/sdk-trace-base": "1.22.0", - "@opentelemetry/semantic-conventions": "1.22.0", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0", "jaeger-client": "^3.15.0" } }, "@opentelemetry/exporter-trace-otlp-grpc": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.49.1.tgz", - "integrity": "sha512-Zbd7f3zF7fI2587MVhBizaW21cO/SordyrZGtMtvhoxU6n4Qb02Gx71X4+PzXH620e0+JX+Pcr9bYb1HTeVyJA==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.50.0.tgz", + "integrity": "sha512-w/NF4TrwHxx+Uz1M0rCOSVr6KgcoQPv3zF9JRqcebY2euD7ddWnLP0hE8JavyA1uq4UchnMp9faAk9n7hTCePw==", "requires": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.22.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.49.1", - "@opentelemetry/otlp-transformer": "0.49.1", - "@opentelemetry/resources": "1.22.0", - "@opentelemetry/sdk-trace-base": "1.22.0" + "@opentelemetry/core": "1.23.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.50.0", + "@opentelemetry/otlp-transformer": "0.50.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0" } }, "@opentelemetry/exporter-trace-otlp-http": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.49.1.tgz", - "integrity": "sha512-KOLtZfZvIrpGZLVvblKsiVQT7gQUZNKcUUH24Zz6Xbi7LJb9Vt6xtUZFYdR5IIjvt47PIqBKDWUQlU0o1wAsRw==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.50.0.tgz", + "integrity": "sha512-L7OtIMT7MsFqkmhbQlPBGRXt7152VN5esHpQEJYIBFedOEo3Da+yHpu5ojMZtPzpIvSpB5Xr5lnJUjJCbkttCA==", "requires": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/otlp-exporter-base": "0.49.1", - "@opentelemetry/otlp-transformer": "0.49.1", - "@opentelemetry/resources": "1.22.0", - "@opentelemetry/sdk-trace-base": "1.22.0" + "@opentelemetry/core": "1.23.0", + "@opentelemetry/otlp-exporter-base": "0.50.0", + "@opentelemetry/otlp-transformer": "0.50.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0" } }, "@opentelemetry/exporter-trace-otlp-proto": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.49.1.tgz", - "integrity": "sha512-n8ON/c9pdMyYAfSFWKkgsPwjYoxnki+6Olzo+klKfW7KqLWoyEkryNkbcMIYnGGNXwdkMIrjoaP0VxXB26Oxcg==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.50.0.tgz", + "integrity": "sha512-vavD9Ow6yOLiD+ocuS/oeciCsXNdsN41aYUrEljNaLXogvnkfMhJ+JLAhOnRSpzlVtRp7Ciw2BYGdYSebR0OsA==", "requires": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/otlp-exporter-base": "0.49.1", - "@opentelemetry/otlp-proto-exporter-base": "0.49.1", - "@opentelemetry/otlp-transformer": "0.49.1", - "@opentelemetry/resources": "1.22.0", - "@opentelemetry/sdk-trace-base": "1.22.0" + "@opentelemetry/core": "1.23.0", + "@opentelemetry/otlp-exporter-base": "0.50.0", + "@opentelemetry/otlp-proto-exporter-base": "0.50.0", + "@opentelemetry/otlp-transformer": "0.50.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0" } }, "@opentelemetry/exporter-zipkin": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.22.0.tgz", - "integrity": "sha512-XcFs6rGvcTz0qW5uY7JZDYD0yNEXdekXAb6sFtnZgY/cHY6BQ09HMzOjv9SX+iaXplRDcHr1Gta7VQKM1XXM6g==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.23.0.tgz", + "integrity": "sha512-2LOGvNUGONuIcWhynFaJorVyqv03uZkURScciLmOxvBf2lWTNPEj77br1dCpShIWBM+YlrH7Tc+JXAs+GC7DqA==", "requires": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/resources": "1.22.0", - "@opentelemetry/sdk-trace-base": "1.22.0", - "@opentelemetry/semantic-conventions": "1.22.0" + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" } }, "@opentelemetry/host-metrics": { @@ -45669,11 +45669,11 @@ } }, "@opentelemetry/instrumentation": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.49.1.tgz", - "integrity": "sha512-0DLtWtaIppuNNRRllSD4bjU8ZIiLp1cDXvJEbp752/Zf+y3gaLNaoGRGIlX4UHhcsrmtL+P2qxi3Hodi8VuKiQ==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.50.0.tgz", + "integrity": "sha512-bhGhbJiZKpuu7wTaSak4hyZcFPlnDeuSF/2vglze8B4w2LubcSbbOnkVTzTs5SXtzh4Xz8eRjaNnAm+u2GYufQ==", "requires": { - "@opentelemetry/api-logs": "0.49.1", + "@opentelemetry/api-logs": "0.50.0", "@types/shimmer": "^1.0.2", "import-in-the-middle": "1.7.1", "require-in-the-middle": "^7.1.1", @@ -45687,7 +45687,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.37.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/amqplib": "^0.5.17", "@types/lodash": "4.14.199", @@ -45718,7 +45718,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/propagator-aws-xray": "^1.3.1", "@opentelemetry/resources": "^1.8.0", "@opentelemetry/sdk-metrics": "^1.8.0", @@ -45747,7 +45747,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.37.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/propagation-utils": "^0.30.7", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -45779,10 +45779,10 @@ "version": "file:plugins/node/opentelemetry-instrumentation-bunyan", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/api-logs": "^0.49.1", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/api-logs": "^0.50.0", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-logs": "^0.49.1", + "@opentelemetry/sdk-logs": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -45816,7 +45816,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.37.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -45839,7 +45839,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -45870,7 +45870,7 @@ "@cucumber/cucumber": "^9.0.0", "@opentelemetry/api": "^1.0.0", "@opentelemetry/core": "^1.3.1", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.3.1", "@opentelemetry/sdk-trace-node": "^1.3.1", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -45919,7 +45919,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -45938,7 +45938,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -45963,7 +45963,7 @@ "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.0.0", "@opentelemetry/sdk-trace-web": "^1.15.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -45996,7 +45996,7 @@ "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.37.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46022,8 +46022,8 @@ "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.37.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", - "@opentelemetry/instrumentation-http": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation-http": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46056,14 +46056,14 @@ } }, "@opentelemetry/instrumentation-fetch": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.49.1.tgz", - "integrity": "sha512-hizhULZXlq02y8YC0vPQ4WtUWiXcwxPdEqHBy8p75jzF9rAuP/ldrVr0Oxvz5Xr9qQcdEOFLvEl0ZxbVL76WKw==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.50.0.tgz", + "integrity": "sha512-CayteluGJbrfDvzEFQ0EWqLFkNAcO9H7nfDHptZjtonBpJRWF170XZoMkJVC2bxp0lIVwyuw6WlnGVRSNwEtKA==", "requires": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/instrumentation": "0.49.1", - "@opentelemetry/sdk-trace-web": "1.22.0", - "@opentelemetry/semantic-conventions": "1.22.0" + "@opentelemetry/core": "1.23.0", + "@opentelemetry/instrumentation": "0.50.0", + "@opentelemetry/sdk-trace-web": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" } }, "@opentelemetry/instrumentation-fs": { @@ -46072,7 +46072,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/resources": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -46093,7 +46093,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46140,7 +46140,7 @@ "version": "file:plugins/node/opentelemetry-instrumentation-graphql", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.3.1", "@types/mocha": "8.2.3", @@ -46163,12 +46163,12 @@ } }, "@opentelemetry/instrumentation-grpc": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.49.1.tgz", - "integrity": "sha512-f8mQjFi5/PiP4SK3VDU1/3sUUgs6exMtBgcnNycgCKgN40htiPT+MuDRwdRnRMNI/4vNQ7p1/5r4Q5oN0GuRBw==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.50.0.tgz", + "integrity": "sha512-/ZFuvHtrHyxfRJX5CJ8yPKokAIcvTbIJAoR4AN+gBq1YqecWuCr4XG52p5YU5qDrbwOBtShOrC8d4GdFZOky6Q==", "requires": { - "@opentelemetry/instrumentation": "0.49.1", - "@opentelemetry/semantic-conventions": "1.22.0" + "@opentelemetry/instrumentation": "0.50.0", + "@opentelemetry/semantic-conventions": "1.23.0" } }, "@opentelemetry/instrumentation-hapi": { @@ -46178,7 +46178,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46194,13 +46194,13 @@ } }, "@opentelemetry/instrumentation-http": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.49.1.tgz", - "integrity": "sha512-Yib5zrW2s0V8wTeUK/B3ZtpyP4ldgXj9L3Ws/axXrW1dW0/mEFKifK50MxMQK9g5NNJQS9dWH7rvcEGZdWdQDA==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.50.0.tgz", + "integrity": "sha512-bsd6Nv0FtN9C6M6vX/kgPzvJY9UhJc4CZZNvqDbsfVQv3/MWvPrYgthf41AhrehqeDnpfn/QGzNKtdWUduGanQ==", "requires": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/instrumentation": "0.49.1", - "@opentelemetry/semantic-conventions": "1.22.0", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/instrumentation": "0.50.0", + "@opentelemetry/semantic-conventions": "1.23.0", "semver": "^7.5.2" } }, @@ -46210,7 +46210,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.37.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -46235,7 +46235,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46258,8 +46258,8 @@ "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.37.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", - "@opentelemetry/instrumentation-http": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation-http": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46285,7 +46285,7 @@ "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-web": "^1.8.0", "@types/jquery": "3.5.20", @@ -46319,7 +46319,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.37.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@types/lru-cache": "7.10.9", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -46347,7 +46347,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.37.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46369,7 +46369,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.37.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-metrics": "^1.9.1", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -46499,7 +46499,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.37.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/mocha": "8.2.3", @@ -46528,7 +46528,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.37.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-metrics": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46551,7 +46551,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.37.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@opentelemetry/sql-common": "^0.40.0", @@ -46604,7 +46604,7 @@ "@nestjs/websockets": "9.4.3", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46655,7 +46655,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46676,7 +46676,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.37.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46705,7 +46705,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.37.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -46755,7 +46755,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.37.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -46780,7 +46780,7 @@ "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.37.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -46819,7 +46819,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46868,7 +46868,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46886,7 +46886,7 @@ "version": "file:plugins/node/instrumentation-runtime-node", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-metrics": "^1.20.0", "@types/mocha": "^10.0.6", "@types/node": "^20.11.2", @@ -46919,7 +46919,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.37.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/mocha": "8.2.3", @@ -47112,7 +47112,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.37.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/mocha": "7.0.2", @@ -47135,8 +47135,8 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-zone-peer-dep": "^1.8.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", - "@opentelemetry/instrumentation-xml-http-request": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation-xml-http-request": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-web": "^1.8.0", "@types/jquery": "3.5.20", @@ -47170,7 +47170,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.21.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.21.0", "@opentelemetry/sdk-trace-node": "^1.21.0", "@opentelemetry/winston-transport": "^0.1.0", @@ -47190,56 +47190,56 @@ } }, "@opentelemetry/instrumentation-xml-http-request": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.49.1.tgz", - "integrity": "sha512-gCPd2o1geRXc1urJoLxWRnMKAF6Akbwlp1nfe+xg2akSUenlt4wopmq1gEIrJva4bXLsNSModVLrEVCTt5/fDA==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.50.0.tgz", + "integrity": "sha512-o9z6SDQByqc3GvmUcy6Npt/SAIrv2Pk0Hm0Hl54B3Ny8WUrTsrlt6MULx8d+EjuifE4uVo8op8DekmvKJ1FHoQ==", "requires": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/instrumentation": "0.49.1", - "@opentelemetry/sdk-trace-web": "1.22.0", - "@opentelemetry/semantic-conventions": "1.22.0" + "@opentelemetry/core": "1.23.0", + "@opentelemetry/instrumentation": "0.50.0", + "@opentelemetry/sdk-trace-web": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" } }, "@opentelemetry/otlp-exporter-base": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.49.1.tgz", - "integrity": "sha512-z6sHliPqDgJU45kQatAettY9/eVF58qVPaTuejw9YWfSRqid9pXPYeegDCSdyS47KAUgAtm+nC28K3pfF27HWg==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.50.0.tgz", + "integrity": "sha512-JUmjmrCmE1/fc4LjCQMqLfudgSl5OpUkzx7iA94b4jgeODM7zWxUoVXL7/CT7fWf47Cn+pmKjMvTCSESqZZ3mA==", "requires": { - "@opentelemetry/core": "1.22.0" + "@opentelemetry/core": "1.23.0" } }, "@opentelemetry/otlp-grpc-exporter-base": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.49.1.tgz", - "integrity": "sha512-DNDNUWmOqtKTFJAyOyHHKotVox0NQ/09ETX8fUOeEtyNVHoGekAVtBbvIA3AtK+JflP7LC0PTjlLfruPM3Wy6w==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.50.0.tgz", + "integrity": "sha512-J500AczSD7xEsjXpwNzSh5HQqxW73PT3CCNsi1VEWCE+8UPgVfkHYIGRHGoch35DV+CMe1svbi7gAk3e5eCSVA==", "requires": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.22.0", - "@opentelemetry/otlp-exporter-base": "0.49.1", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/otlp-exporter-base": "0.50.0", "protobufjs": "^7.2.3" } }, "@opentelemetry/otlp-proto-exporter-base": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.49.1.tgz", - "integrity": "sha512-x1qB4EUC7KikUl2iNuxCkV8yRzrSXSyj4itfpIO674H7dhI7Zv37SFaOJTDN+8Z/F50gF2ISFH9CWQ4KCtGm2A==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.50.0.tgz", + "integrity": "sha512-hlbn3eZbhxoK79Sq1ddj1f7qcx+PzsPQC/SFpJvaWgTaqacCbqJmpzWDKfRRCAC7iGX2Hj/sgpf8vysazqyMOw==", "requires": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/otlp-exporter-base": "0.49.1", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/otlp-exporter-base": "0.50.0", "protobufjs": "^7.2.3" } }, "@opentelemetry/otlp-transformer": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.49.1.tgz", - "integrity": "sha512-Z+koA4wp9L9e3jkFacyXTGphSWTbOKjwwXMpb0CxNb0kjTHGUxhYRN8GnkLFsFo5NbZPjP07hwAqeEG/uCratQ==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.50.0.tgz", + "integrity": "sha512-s0sl1Yfqd5q1Kjrf6DqXPWzErL+XHhrXOfejh4Vc/SMTNqC902xDsC8JQxbjuramWt/+hibfguIvi7Ns8VLolA==", "requires": { - "@opentelemetry/api-logs": "0.49.1", - "@opentelemetry/core": "1.22.0", - "@opentelemetry/resources": "1.22.0", - "@opentelemetry/sdk-logs": "0.49.1", - "@opentelemetry/sdk-metrics": "1.22.0", - "@opentelemetry/sdk-trace-base": "1.22.0" + "@opentelemetry/api-logs": "0.50.0", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-logs": "0.50.0", + "@opentelemetry/sdk-metrics": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0" } }, "@opentelemetry/plugin-react-load": { @@ -47341,11 +47341,11 @@ } }, "@opentelemetry/propagator-b3": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.22.0.tgz", - "integrity": "sha512-qBItJm9ygg/jCB5rmivyGz1qmKZPsL/sX715JqPMFgq++Idm0x+N9sLQvWFHFt2+ZINnCSojw7FVBgFW6izcXA==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.23.0.tgz", + "integrity": "sha512-cZ6rl8y2bdxYQ4e+zP2CQ+QmuPebaLBLO1skjFpj3eEu7zar+6hBzUP3llMOUupkQeQSwXz+4c8dZ26OhYfG/g==", "requires": { - "@opentelemetry/core": "1.22.0" + "@opentelemetry/core": "1.23.0" } }, "@opentelemetry/propagator-grpc-census-binary": { @@ -47535,11 +47535,11 @@ } }, "@opentelemetry/propagator-jaeger": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.22.0.tgz", - "integrity": "sha512-pMLgst3QIwrUfepraH5WG7xfpJ8J3CrPKrtINK0t7kBkuu96rn+HDYQ8kt3+0FXvrZI8YJE77MCQwnJWXIrgpA==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.23.0.tgz", + "integrity": "sha512-6iArixfgIl3ZgzeltQ5jyiKbjZygM+MbM84pXi1HL0Qs4x4Ck5rM6wEtjhZffFnlDMWEkEqrnM0xF6bTfbiMAQ==", "requires": { - "@opentelemetry/core": "1.22.0" + "@opentelemetry/core": "1.23.0" } }, "@opentelemetry/propagator-ot-trace": { @@ -47758,7 +47758,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.37.0", "@opentelemetry/resources": "^1.0.0", - "@opentelemetry/sdk-node": "^0.49.1", + "@opentelemetry/sdk-node": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -47780,90 +47780,90 @@ } }, "@opentelemetry/resources": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.22.0.tgz", - "integrity": "sha512-+vNeIFPH2hfcNL0AJk/ykJXoUCtR1YaDUZM+p3wZNU4Hq98gzq+7b43xbkXjadD9VhWIUQqEwXyY64q6msPj6A==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.23.0.tgz", + "integrity": "sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg==", "requires": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/semantic-conventions": "1.22.0" + "@opentelemetry/core": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" } }, "@opentelemetry/sdk-logs": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.49.1.tgz", - "integrity": "sha512-gCzYWsJE0h+3cuh3/cK+9UwlVFyHvj3PReIOCDOmdeXOp90ZjKRoDOJBc3mvk1LL6wyl1RWIivR8Rg9OToyesw==", + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.50.0.tgz", + "integrity": "sha512-PeUEupBB29p9nlPNqXoa1PUWNLsZnxG0DCDj3sHqzae+8y76B/A5hvZjg03ulWdnvBLYpnJslqzylG9E0IL87g==", "requires": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/resources": "1.22.0" + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0" } }, "@opentelemetry/sdk-metrics": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.22.0.tgz", - "integrity": "sha512-k6iIx6H3TZ+BVMr2z8M16ri2OxWaljg5h8ihGJxi/KQWcjign6FEaEzuigXt5bK9wVEhqAcWLCfarSftaNWkkg==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.23.0.tgz", + "integrity": "sha512-4OkvW6+wST4h6LFG23rXSTf6nmTf201h9dzq7bE0z5R9ESEVLERZz6WXwE7PSgg1gdjlaznm1jLJf8GttypFDg==", "requires": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/resources": "1.22.0", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0", "lodash.merge": "^4.6.2" } }, "@opentelemetry/sdk-node": { - "version": "0.49.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.49.1.tgz", - "integrity": "sha512-feBIT85ndiSHXsQ2gfGpXC/sNeX4GCHLksC4A9s/bfpUbbgbCSl0RvzZlmEpCHarNrkZMwFRi4H0xFfgvJEjrg==", - "requires": { - "@opentelemetry/api-logs": "0.49.1", - "@opentelemetry/core": "1.22.0", - "@opentelemetry/exporter-trace-otlp-grpc": "0.49.1", - "@opentelemetry/exporter-trace-otlp-http": "0.49.1", - "@opentelemetry/exporter-trace-otlp-proto": "0.49.1", - "@opentelemetry/exporter-zipkin": "1.22.0", - "@opentelemetry/instrumentation": "0.49.1", - "@opentelemetry/resources": "1.22.0", - "@opentelemetry/sdk-logs": "0.49.1", - "@opentelemetry/sdk-metrics": "1.22.0", - "@opentelemetry/sdk-trace-base": "1.22.0", - "@opentelemetry/sdk-trace-node": "1.22.0", - "@opentelemetry/semantic-conventions": "1.22.0" + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.50.0.tgz", + "integrity": "sha512-LhIXHnvcnhRYcPwG9VG4G6lJ7x4ElYF6UYHHmXA7e4ZWzSUEFmAPfR1IBWv358aD1KwffcEBu7J6zeAR7lPZag==", + "requires": { + "@opentelemetry/api-logs": "0.50.0", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.50.0", + "@opentelemetry/exporter-trace-otlp-http": "0.50.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.50.0", + "@opentelemetry/exporter-zipkin": "1.23.0", + "@opentelemetry/instrumentation": "0.50.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-logs": "0.50.0", + "@opentelemetry/sdk-metrics": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0", + "@opentelemetry/sdk-trace-node": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" } }, "@opentelemetry/sdk-trace-base": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.22.0.tgz", - "integrity": "sha512-pfTuSIpCKONC6vkTpv6VmACxD+P1woZf4q0K46nSUvXFvOFqjBYKFaAMkKD3M1mlKUUh0Oajwj35qNjMl80m1Q==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.23.0.tgz", + "integrity": "sha512-PzBmZM8hBomUqvCddF/5Olyyviayka44O5nDWq673np3ctnvwMOvNrsUORZjKja1zJbwEuD9niAGbnVrz3jwRQ==", "requires": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/resources": "1.22.0", - "@opentelemetry/semantic-conventions": "1.22.0" + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" } }, "@opentelemetry/sdk-trace-node": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.22.0.tgz", - "integrity": "sha512-gTGquNz7ue8uMeiWPwp3CU321OstQ84r7PCDtOaCicjbJxzvO8RZMlEC4geOipTeiF88kss5n6w+//A0MhP1lQ==", - "requires": { - "@opentelemetry/context-async-hooks": "1.22.0", - "@opentelemetry/core": "1.22.0", - "@opentelemetry/propagator-b3": "1.22.0", - "@opentelemetry/propagator-jaeger": "1.22.0", - "@opentelemetry/sdk-trace-base": "1.22.0", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.23.0.tgz", + "integrity": "sha512-dwnin5Go2r6VzJZkVc9JBPupssWp7j2EFto+S7qRkwQ00WDykWeq3x2Skk7I1Jr448FeBSvGCQVPgV5e6s6O3w==", + "requires": { + "@opentelemetry/context-async-hooks": "1.23.0", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/propagator-b3": "1.23.0", + "@opentelemetry/propagator-jaeger": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0", "semver": "^7.5.2" } }, "@opentelemetry/sdk-trace-web": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-1.22.0.tgz", - "integrity": "sha512-id5bUhWYg475xbm4hjwWA4PnWM4duNK1EyFRkZxa3BZNuCITwiKCLvDkVhlE9RK2kvuDOPmcRxgSbU1apF9/1w==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-1.23.0.tgz", + "integrity": "sha512-tx9N3hIkd6k567BeujBnpXYdhu3ptYVk0ZkhdcjyQ3I8ZDJ+/JkVtaVNLAuf8hp1buTqNDmxSipALMxEmK2fnw==", "requires": { - "@opentelemetry/core": "1.22.0", - "@opentelemetry/sdk-trace-base": "1.22.0", - "@opentelemetry/semantic-conventions": "1.22.0" + "@opentelemetry/core": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" } }, "@opentelemetry/semantic-conventions": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.22.0.tgz", - "integrity": "sha512-CAOgFOKLybd02uj/GhCdEeeBjOS0yeoDeo/CA7ASBSmenpZHAKGB3iDm/rv3BQLcabb/OprDEsSQ1y0P8A7Siw==" + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.23.0.tgz", + "integrity": "sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg==" }, "@opentelemetry/sql-common": { "version": "file:packages/opentelemetry-sql-common", @@ -47881,7 +47881,7 @@ "@opentelemetry/winston-transport": { "version": "file:packages/winston-transport", "requires": { - "@opentelemetry/api-logs": "^0.49.1", + "@opentelemetry/api-logs": "^0.50.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", diff --git a/packages/opentelemetry-test-utils/package.json b/packages/opentelemetry-test-utils/package.json index 556cf02d18..98f78fa47f 100644 --- a/packages/opentelemetry-test-utils/package.json +++ b/packages/opentelemetry-test-utils/package.json @@ -46,9 +46,9 @@ "dependencies": { "@opentelemetry/core": "^1.0.0", "@opentelemetry/exporter-jaeger": "^1.3.1", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-node": "^0.49.1", + "@opentelemetry/sdk-node": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0" diff --git a/packages/winston-transport/package.json b/packages/winston-transport/package.json index 2a9c16cd0f..133fd3f478 100644 --- a/packages/winston-transport/package.json +++ b/packages/winston-transport/package.json @@ -50,8 +50,8 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/api-logs": "^0.49.1", - "winston-transport" : "4.*" + "@opentelemetry/api-logs": "^0.50.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 aff68b3812..22dc0e6888 100644 --- a/plugins/node/instrumentation-amqplib/package.json +++ b/plugins/node/instrumentation-amqplib/package.json @@ -45,7 +45,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { diff --git a/plugins/node/instrumentation-cucumber/package.json b/plugins/node/instrumentation-cucumber/package.json index f9b059a750..0f26dfc8a3 100644 --- a/plugins/node/instrumentation-cucumber/package.json +++ b/plugins/node/instrumentation-cucumber/package.json @@ -62,7 +62,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-cucumber#readme" diff --git a/plugins/node/instrumentation-dataloader/package.json b/plugins/node/instrumentation-dataloader/package.json index 60d2612386..bbe813379d 100644 --- a/plugins/node/instrumentation-dataloader/package.json +++ b/plugins/node/instrumentation-dataloader/package.json @@ -58,7 +58,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1" + "@opentelemetry/instrumentation": "^0.50.0" }, "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 6978199449..90ba11c900 100644 --- a/plugins/node/instrumentation-fs/package.json +++ b/plugins/node/instrumentation-fs/package.json @@ -59,7 +59,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "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 305b0aefc2..a3ce6bfcc4 100644 --- a/plugins/node/instrumentation-lru-memoizer/package.json +++ b/plugins/node/instrumentation-lru-memoizer/package.json @@ -57,7 +57,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1" + "@opentelemetry/instrumentation": "^0.50.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 08867a6c51..c3a68f9aa0 100644 --- a/plugins/node/instrumentation-mongoose/package.json +++ b/plugins/node/instrumentation-mongoose/package.json @@ -61,7 +61,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.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 b559822d43..cda4b70287 100644 --- a/plugins/node/instrumentation-runtime-node/package.json +++ b/plugins/node/instrumentation-runtime-node/package.json @@ -39,7 +39,7 @@ "access": "public" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1" + "@opentelemetry/instrumentation": "^0.50.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", diff --git a/plugins/node/instrumentation-socket.io/package.json b/plugins/node/instrumentation-socket.io/package.json index 32e3f7ce00..c25d40c100 100644 --- a/plugins/node/instrumentation-socket.io/package.json +++ b/plugins/node/instrumentation-socket.io/package.json @@ -58,7 +58,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-socket.io#readme" diff --git a/plugins/node/instrumentation-tedious/package.json b/plugins/node/instrumentation-tedious/package.json index 5c012d966c..3b4a956c92 100644 --- a/plugins/node/instrumentation-tedious/package.json +++ b/plugins/node/instrumentation-tedious/package.json @@ -62,7 +62,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/tedious": "^4.0.10" }, diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json b/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json index a7b82a07f2..2f966618fa 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json @@ -56,7 +56,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/propagator-aws-xray": "^1.3.1", "@opentelemetry/resources": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json b/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json index 2e5e3a40ea..979e5872d3 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json @@ -45,7 +45,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/propagation-utils": "^0.30.7", "@opentelemetry/semantic-conventions": "^1.0.0" }, diff --git a/plugins/node/opentelemetry-instrumentation-bunyan/package.json b/plugins/node/opentelemetry-instrumentation-bunyan/package.json index e33b598bac..fb9f6c09c0 100644 --- a/plugins/node/opentelemetry-instrumentation-bunyan/package.json +++ b/plugins/node/opentelemetry-instrumentation-bunyan/package.json @@ -46,7 +46,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-logs": "^0.49.1", + "@opentelemetry/sdk-logs": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -63,8 +63,8 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/api-logs": "^0.49.1", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/api-logs": "^0.50.0", + "@opentelemetry/instrumentation": "^0.50.0", "@types/bunyan": "1.8.9" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-bunyan#readme" diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/package.json b/plugins/node/opentelemetry-instrumentation-cassandra/package.json index 235174f601..d4faffba2a 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/package.json +++ b/plugins/node/opentelemetry-instrumentation-cassandra/package.json @@ -61,7 +61,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-cassandra#readme" diff --git a/plugins/node/opentelemetry-instrumentation-connect/package.json b/plugins/node/opentelemetry-instrumentation-connect/package.json index 38b74be407..25b1b376e3 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/package.json +++ b/plugins/node/opentelemetry-instrumentation-connect/package.json @@ -56,7 +56,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/connect": "3.4.36" }, diff --git a/plugins/node/opentelemetry-instrumentation-dns/package.json b/plugins/node/opentelemetry-instrumentation-dns/package.json index 9faf0e713a..2abd3edd17 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/package.json +++ b/plugins/node/opentelemetry-instrumentation-dns/package.json @@ -59,7 +59,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0", "semver": "^7.5.4" }, diff --git a/plugins/node/opentelemetry-instrumentation-express/package.json b/plugins/node/opentelemetry-instrumentation-express/package.json index e5a0607326..570935ee21 100644 --- a/plugins/node/opentelemetry-instrumentation-express/package.json +++ b/plugins/node/opentelemetry-instrumentation-express/package.json @@ -64,7 +64,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-express#readme" diff --git a/plugins/node/opentelemetry-instrumentation-fastify/package.json b/plugins/node/opentelemetry-instrumentation-fastify/package.json index 5efd419db0..e22ed32332 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/package.json +++ b/plugins/node/opentelemetry-instrumentation-fastify/package.json @@ -47,7 +47,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.37.0", - "@opentelemetry/instrumentation-http": "^0.49.1", + "@opentelemetry/instrumentation-http": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/express": "4.17.18", @@ -65,7 +65,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.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-generic-pool/package.json b/plugins/node/opentelemetry-instrumentation-generic-pool/package.json index a80d6aaff1..4bdb0abd13 100644 --- a/plugins/node/opentelemetry-instrumentation-generic-pool/package.json +++ b/plugins/node/opentelemetry-instrumentation-generic-pool/package.json @@ -59,7 +59,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-generic-pool#readme" diff --git a/plugins/node/opentelemetry-instrumentation-graphql/package.json b/plugins/node/opentelemetry-instrumentation-graphql/package.json index 6cd46092cc..375a198d47 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/package.json +++ b/plugins/node/opentelemetry-instrumentation-graphql/package.json @@ -58,7 +58,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1" + "@opentelemetry/instrumentation": "^0.50.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-hapi/package.json b/plugins/node/opentelemetry-instrumentation-hapi/package.json index 395240380f..b0df890859 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/package.json +++ b/plugins/node/opentelemetry-instrumentation-hapi/package.json @@ -59,7 +59,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/hapi__hapi": "20.0.13" }, diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/package.json b/plugins/node/opentelemetry-instrumentation-ioredis/package.json index 6249ad9cb2..641b8a6239 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/package.json +++ b/plugins/node/opentelemetry-instrumentation-ioredis/package.json @@ -66,7 +66,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/ioredis4": "npm:@types/ioredis@^4.28.10" diff --git a/plugins/node/opentelemetry-instrumentation-knex/package.json b/plugins/node/opentelemetry-instrumentation-knex/package.json index 6e5d8365aa..4acd76aa27 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/package.json +++ b/plugins/node/opentelemetry-instrumentation-knex/package.json @@ -57,7 +57,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.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-koa/package.json b/plugins/node/opentelemetry-instrumentation-koa/package.json index 2b89f7cc94..90323eaccb 100644 --- a/plugins/node/opentelemetry-instrumentation-koa/package.json +++ b/plugins/node/opentelemetry-instrumentation-koa/package.json @@ -49,7 +49,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.37.0", - "@opentelemetry/instrumentation-http": "^0.49.1", + "@opentelemetry/instrumentation-http": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -66,7 +66,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/koa": "2.14.0", "@types/koa__router": "12.0.3" diff --git a/plugins/node/opentelemetry-instrumentation-memcached/package.json b/plugins/node/opentelemetry-instrumentation-memcached/package.json index 4008cc18f5..0272871e94 100644 --- a/plugins/node/opentelemetry-instrumentation-memcached/package.json +++ b/plugins/node/opentelemetry-instrumentation-memcached/package.json @@ -60,7 +60,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/memcached": "^2.2.6" }, diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/package.json b/plugins/node/opentelemetry-instrumentation-mongodb/package.json index c0ad347f68..4107916706 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/package.json +++ b/plugins/node/opentelemetry-instrumentation-mongodb/package.json @@ -66,7 +66,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-metrics": "^1.9.1", "@opentelemetry/semantic-conventions": "^1.0.0" }, diff --git a/plugins/node/opentelemetry-instrumentation-mysql/package.json b/plugins/node/opentelemetry-instrumentation-mysql/package.json index 5107f7c6b9..df63bd0e7c 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql/package.json @@ -59,7 +59,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/mysql": "2.15.22" }, diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/package.json b/plugins/node/opentelemetry-instrumentation-mysql2/package.json index 54f5877107..218eda16af 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql2/package.json @@ -61,7 +61,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@opentelemetry/sql-common": "^0.40.0" }, diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json index 63962fcc1a..a9524dcc9c 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json @@ -70,7 +70,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-nestjs-core#readme" diff --git a/plugins/node/opentelemetry-instrumentation-net/package.json b/plugins/node/opentelemetry-instrumentation-net/package.json index 8f8d498692..fca4ae84c9 100644 --- a/plugins/node/opentelemetry-instrumentation-net/package.json +++ b/plugins/node/opentelemetry-instrumentation-net/package.json @@ -58,7 +58,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-net#readme" diff --git a/plugins/node/opentelemetry-instrumentation-pg/package.json b/plugins/node/opentelemetry-instrumentation-pg/package.json index 6e64b683e4..061bb79b46 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/package.json +++ b/plugins/node/opentelemetry-instrumentation-pg/package.json @@ -71,7 +71,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@opentelemetry/sql-common": "^0.40.0", "@types/pg": "8.6.1", diff --git a/plugins/node/opentelemetry-instrumentation-pino/package.json b/plugins/node/opentelemetry-instrumentation-pino/package.json index 0c4dffa903..a8b2d535de 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/package.json +++ b/plugins/node/opentelemetry-instrumentation-pino/package.json @@ -64,7 +64,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1" + "@opentelemetry/instrumentation": "^0.50.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-redis-4/package.json b/plugins/node/opentelemetry-instrumentation-redis-4/package.json index 1d34bc044a..bc9101ca8b 100644 --- a/plugins/node/opentelemetry-instrumentation-redis-4/package.json +++ b/plugins/node/opentelemetry-instrumentation-redis-4/package.json @@ -66,7 +66,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/semantic-conventions": "^1.0.0" }, diff --git a/plugins/node/opentelemetry-instrumentation-redis/package.json b/plugins/node/opentelemetry-instrumentation-redis/package.json index fe5989774d..08afb618d2 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/package.json +++ b/plugins/node/opentelemetry-instrumentation-redis/package.json @@ -66,7 +66,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/semantic-conventions": "^1.0.0" }, diff --git a/plugins/node/opentelemetry-instrumentation-restify/package.json b/plugins/node/opentelemetry-instrumentation-restify/package.json index 52072266c9..91822577fa 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/package.json +++ b/plugins/node/opentelemetry-instrumentation-restify/package.json @@ -62,7 +62,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.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 8909fefd12..0fe968456e 100644 --- a/plugins/node/opentelemetry-instrumentation-router/package.json +++ b/plugins/node/opentelemetry-instrumentation-router/package.json @@ -56,7 +56,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.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-winston/package.json b/plugins/node/opentelemetry-instrumentation-winston/package.json index bdec39fcfd..7b097640e4 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/package.json +++ b/plugins/node/opentelemetry-instrumentation-winston/package.json @@ -64,7 +64,7 @@ "winston2": "npm:winston@2.4.7" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.49.1" + "@opentelemetry/instrumentation": "^0.50.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 c52463fbc9..a2dee508aa 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/package.json +++ b/plugins/web/opentelemetry-instrumentation-document-load/package.json @@ -69,7 +69,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.0.0", "@opentelemetry/sdk-trace-web": "^1.15.0", "@opentelemetry/semantic-conventions": "^1.22.0" diff --git a/plugins/web/opentelemetry-instrumentation-long-task/package.json b/plugins/web/opentelemetry-instrumentation-long-task/package.json index f7675334f8..8685d9ffd5 100644 --- a/plugins/web/opentelemetry-instrumentation-long-task/package.json +++ b/plugins/web/opentelemetry-instrumentation-long-task/package.json @@ -79,7 +79,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-web": "^1.8.0" }, "peerDependencies": { diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/package.json b/plugins/web/opentelemetry-instrumentation-user-interaction/package.json index 1066564f60..fb7b3f8e77 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/package.json +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/package.json @@ -52,7 +52,7 @@ "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-zone-peer-dep": "^1.8.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.49.1", + "@opentelemetry/instrumentation-xml-http-request": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/jquery": "3.5.20", "@types/mocha": "7.0.2", @@ -81,7 +81,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-web": "^1.8.0" }, "peerDependencies": { From 8c6ba2c285cf7f212dc1c44527ff9a01895b84ad Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Wed, 3 Apr 2024 09:29:26 -0400 Subject: [PATCH 019/121] chore(resource-detector-aws): use exported strings for attributes (#2047) Use exported strings for Semantic Resource Attributes, Cloud Platform Values and Cloud Provider Values. Signed-off-by: maryliag --- .../package.json | 2 +- .../src/detectors/AwsBeanstalkDetector.ts | 27 ++++---- .../src/detectors/AwsEc2Detector.ts | 29 +++++---- .../src/detectors/AwsEcsDetector.ts | 61 +++++++++++-------- .../src/detectors/AwsEksDetector.ts | 19 +++--- .../src/detectors/AwsLambdaDetector.ts | 24 ++++---- .../detectors/AwsBeanstalkDetector.test.ts | 6 +- .../test/detectors/AwsEcsDetector.test.ts | 42 ++++++++----- package-lock.json | 4 +- 9 files changed, 123 insertions(+), 91 deletions(-) diff --git a/detectors/node/opentelemetry-resource-detector-aws/package.json b/detectors/node/opentelemetry-resource-detector-aws/package.json index c5ce7d5cb6..f15b8b5af3 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/package.json +++ b/detectors/node/opentelemetry-resource-detector-aws/package.json @@ -57,7 +57,7 @@ "dependencies": { "@opentelemetry/core": "^1.0.0", "@opentelemetry/resources": "^1.0.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.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 44028c6ff6..a89178c30f 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsBeanstalkDetector.ts +++ b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsBeanstalkDetector.ts @@ -21,9 +21,14 @@ import { ResourceDetectionConfig, } from '@opentelemetry/resources'; import { - CloudProviderValues, - CloudPlatformValues, - SemanticResourceAttributes, + SEMRESATTRS_CLOUD_PROVIDER, + SEMRESATTRS_CLOUD_PLATFORM, + SEMRESATTRS_SERVICE_NAME, + SEMRESATTRS_SERVICE_NAMESPACE, + SEMRESATTRS_SERVICE_VERSION, + SEMRESATTRS_SERVICE_INSTANCE_ID, + CLOUDPROVIDERVALUES_AWS, + CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK, } from '@opentelemetry/semantic-conventions'; import * as fs from 'fs'; import * as util from 'util'; @@ -69,16 +74,12 @@ export class AwsBeanstalkDetector implements Detector { const parsedData = JSON.parse(rawData); return new Resource({ - [SemanticResourceAttributes.CLOUD_PROVIDER]: CloudProviderValues.AWS, - [SemanticResourceAttributes.CLOUD_PLATFORM]: - CloudPlatformValues.AWS_ELASTIC_BEANSTALK, - [SemanticResourceAttributes.SERVICE_NAME]: - CloudPlatformValues.AWS_ELASTIC_BEANSTALK, - [SemanticResourceAttributes.SERVICE_NAMESPACE]: - parsedData.environment_name, - [SemanticResourceAttributes.SERVICE_VERSION]: parsedData.version_label, - [SemanticResourceAttributes.SERVICE_INSTANCE_ID]: - parsedData.deployment_id, + [SEMRESATTRS_CLOUD_PROVIDER]: CLOUDPROVIDERVALUES_AWS, + [SEMRESATTRS_CLOUD_PLATFORM]: CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK, + [SEMRESATTRS_SERVICE_NAME]: CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK, + [SEMRESATTRS_SERVICE_NAMESPACE]: parsedData.environment_name, + [SEMRESATTRS_SERVICE_VERSION]: parsedData.version_label, + [SEMRESATTRS_SERVICE_INSTANCE_ID]: parsedData.deployment_id, }); } catch (e: any) { diag.debug(`AwsBeanstalkDetector failed: ${e.message}`); 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 e1176b3803..cc45e96f1d 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEc2Detector.ts +++ b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEc2Detector.ts @@ -20,9 +20,16 @@ import { ResourceDetectionConfig, } from '@opentelemetry/resources'; import { - CloudProviderValues, - CloudPlatformValues, - SemanticResourceAttributes, + SEMRESATTRS_CLOUD_PROVIDER, + SEMRESATTRS_CLOUD_PLATFORM, + SEMRESATTRS_CLOUD_REGION, + SEMRESATTRS_CLOUD_ACCOUNT_ID, + SEMRESATTRS_CLOUD_AVAILABILITY_ZONE, + SEMRESATTRS_HOST_ID, + SEMRESATTRS_HOST_TYPE, + SEMRESATTRS_HOST_NAME, + CLOUDPROVIDERVALUES_AWS, + CLOUDPLATFORMVALUES_AWS_EC2, } from '@opentelemetry/semantic-conventions'; import * as http from 'http'; @@ -62,14 +69,14 @@ class AwsEc2Detector implements Detector { const hostname = await this._fetchHost(token); return new Resource({ - [SemanticResourceAttributes.CLOUD_PROVIDER]: CloudProviderValues.AWS, - [SemanticResourceAttributes.CLOUD_PLATFORM]: CloudPlatformValues.AWS_EC2, - [SemanticResourceAttributes.CLOUD_ACCOUNT_ID]: accountId, - [SemanticResourceAttributes.CLOUD_REGION]: region, - [SemanticResourceAttributes.CLOUD_AVAILABILITY_ZONE]: availabilityZone, - [SemanticResourceAttributes.HOST_ID]: instanceId, - [SemanticResourceAttributes.HOST_TYPE]: instanceType, - [SemanticResourceAttributes.HOST_NAME]: hostname, + [SEMRESATTRS_CLOUD_PROVIDER]: CLOUDPROVIDERVALUES_AWS, + [SEMRESATTRS_CLOUD_PLATFORM]: CLOUDPLATFORMVALUES_AWS_EC2, + [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, }); } 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 700d41057e..e2e35af236 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEcsDetector.ts +++ b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEcsDetector.ts @@ -21,9 +21,25 @@ import { ResourceAttributes, } from '@opentelemetry/resources'; import { - CloudProviderValues, - CloudPlatformValues, - SemanticResourceAttributes, + SEMRESATTRS_CLOUD_PROVIDER, + SEMRESATTRS_CLOUD_PLATFORM, + SEMRESATTRS_CONTAINER_ID, + SEMRESATTRS_CONTAINER_NAME, + SEMRESATTRS_AWS_ECS_CONTAINER_ARN, + SEMRESATTRS_AWS_ECS_CLUSTER_ARN, + SEMRESATTRS_AWS_ECS_LAUNCHTYPE, + SEMRESATTRS_AWS_ECS_TASK_ARN, + SEMRESATTRS_AWS_ECS_TASK_FAMILY, + SEMRESATTRS_AWS_ECS_TASK_REVISION, + SEMRESATTRS_CLOUD_ACCOUNT_ID, + SEMRESATTRS_CLOUD_REGION, + SEMRESATTRS_CLOUD_AVAILABILITY_ZONE, + SEMRESATTRS_AWS_LOG_GROUP_NAMES, + SEMRESATTRS_AWS_LOG_GROUP_ARNS, + SEMRESATTRS_AWS_LOG_STREAM_NAMES, + SEMRESATTRS_AWS_LOG_STREAM_ARNS, + CLOUDPROVIDERVALUES_AWS, + CLOUDPLATFORMVALUES_AWS_ECS, } from '@opentelemetry/semantic-conventions'; import * as http from 'http'; import * as util from 'util'; @@ -58,8 +74,8 @@ export class AwsEcsDetector implements Detector { } let resource = new Resource({ - [SemanticResourceAttributes.CLOUD_PROVIDER]: CloudProviderValues.AWS, - [SemanticResourceAttributes.CLOUD_PLATFORM]: CloudPlatformValues.AWS_ECS, + [SEMRESATTRS_CLOUD_PROVIDER]: CLOUDPROVIDERVALUES_AWS, + [SEMRESATTRS_CLOUD_PLATFORM]: CLOUDPLATFORMVALUES_AWS_ECS, }).merge(await AwsEcsDetector._getContainerIdAndHostnameResource()); const metadataUrl = getEnv().ECS_CONTAINER_METADATA_URI_V4; @@ -114,8 +130,8 @@ export class AwsEcsDetector implements Detector { if (hostName || containerId) { return new Resource({ - [SemanticResourceAttributes.CONTAINER_NAME]: hostName || '', - [SemanticResourceAttributes.CONTAINER_ID]: containerId || '', + [SEMRESATTRS_CONTAINER_NAME]: hostName || '', + [SEMRESATTRS_CONTAINER_ID]: containerId || '', }); } @@ -145,23 +161,20 @@ export class AwsEcsDetector implements Detector { // 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]: - launchType?.toLowerCase(), - [SemanticResourceAttributes.AWS_ECS_TASK_ARN]: taskArn, - [SemanticResourceAttributes.AWS_ECS_TASK_FAMILY]: taskMetadata['Family'], - [SemanticResourceAttributes.AWS_ECS_TASK_REVISION]: - taskMetadata['Revision'], - - [SemanticResourceAttributes.CLOUD_ACCOUNT_ID]: accountId, - [SemanticResourceAttributes.CLOUD_REGION]: region, + [SEMRESATTRS_AWS_ECS_CONTAINER_ARN]: containerArn, + [SEMRESATTRS_AWS_ECS_CLUSTER_ARN]: clusterArn, + [SEMRESATTRS_AWS_ECS_LAUNCHTYPE]: launchType?.toLowerCase(), + [SEMRESATTRS_AWS_ECS_TASK_ARN]: taskArn, + [SEMRESATTRS_AWS_ECS_TASK_FAMILY]: taskMetadata['Family'], + [SEMRESATTRS_AWS_ECS_TASK_REVISION]: taskMetadata['Revision'], + + [SEMRESATTRS_CLOUD_ACCOUNT_ID]: accountId, + [SEMRESATTRS_CLOUD_REGION]: region, }; // The availability zone is not available in all Fargate runtimes if (availabilityZone) { - attributes[SemanticResourceAttributes.CLOUD_AVAILABILITY_ZONE] = - availabilityZone; + attributes[SEMRESATTRS_CLOUD_AVAILABILITY_ZONE] = availabilityZone; } return new Resource(attributes); @@ -192,10 +205,10 @@ export class AwsEcsDetector implements Detector { const logsStreamArn = `arn:aws:logs:${logsRegion}:${awsAccount}:log-group:${logsGroupName}:log-stream:${logsStreamName}`; return new Resource({ - [SemanticResourceAttributes.AWS_LOG_GROUP_NAMES]: [logsGroupName], - [SemanticResourceAttributes.AWS_LOG_GROUP_ARNS]: [logsGroupArn], - [SemanticResourceAttributes.AWS_LOG_STREAM_NAMES]: [logsStreamName], - [SemanticResourceAttributes.AWS_LOG_STREAM_ARNS]: [logsStreamArn], + [SEMRESATTRS_AWS_LOG_GROUP_NAMES]: [logsGroupName], + [SEMRESATTRS_AWS_LOG_GROUP_ARNS]: [logsGroupArn], + [SEMRESATTRS_AWS_LOG_STREAM_NAMES]: [logsStreamName], + [SEMRESATTRS_AWS_LOG_STREAM_ARNS]: [logsStreamArn], }); } 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 d85deb558e..a0369f9d71 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEksDetector.ts +++ b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEksDetector.ts @@ -20,9 +20,12 @@ import { ResourceDetectionConfig, } from '@opentelemetry/resources'; import { - CloudProviderValues, - CloudPlatformValues, - SemanticResourceAttributes, + SEMRESATTRS_CLOUD_PROVIDER, + SEMRESATTRS_CLOUD_PLATFORM, + SEMRESATTRS_K8S_CLUSTER_NAME, + SEMRESATTRS_CONTAINER_ID, + CLOUDPROVIDERVALUES_AWS, + CLOUDPLATFORMVALUES_AWS_EKS, } from '@opentelemetry/semantic-conventions'; import * as https from 'https'; import * as fs from 'fs'; @@ -79,12 +82,10 @@ export class AwsEksDetector implements Detector { return !containerId && !clusterName ? Resource.empty() : new Resource({ - [SemanticResourceAttributes.CLOUD_PROVIDER]: - CloudProviderValues.AWS, - [SemanticResourceAttributes.CLOUD_PLATFORM]: - CloudPlatformValues.AWS_EKS, - [SemanticResourceAttributes.K8S_CLUSTER_NAME]: clusterName || '', - [SemanticResourceAttributes.CONTAINER_ID]: containerId || '', + [SEMRESATTRS_CLOUD_PROVIDER]: CLOUDPROVIDERVALUES_AWS, + [SEMRESATTRS_CLOUD_PLATFORM]: CLOUDPLATFORMVALUES_AWS_EKS, + [SEMRESATTRS_K8S_CLUSTER_NAME]: clusterName || '', + [SEMRESATTRS_CONTAINER_ID]: containerId || '', }); } catch (e) { diag.warn('Process is not running on K8S', e); 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 6a3b8dbefd..389b030709 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsLambdaDetector.ts +++ b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsLambdaDetector.ts @@ -21,9 +21,13 @@ import { ResourceDetectionConfig, } from '@opentelemetry/resources'; import { - CloudProviderValues, - CloudPlatformValues, - SemanticResourceAttributes, + SEMRESATTRS_CLOUD_PROVIDER, + SEMRESATTRS_CLOUD_PLATFORM, + SEMRESATTRS_CLOUD_REGION, + SEMRESATTRS_FAAS_VERSION, + SEMRESATTRS_FAAS_NAME, + CLOUDPROVIDERVALUES_AWS, + CLOUDPLATFORMVALUES_AWS_LAMBDA, } from '@opentelemetry/semantic-conventions'; /** @@ -42,22 +46,18 @@ export class AwsLambdaDetector implements Detector { const region = process.env.AWS_REGION; const attributes: ResourceAttributes = { - [SemanticResourceAttributes.CLOUD_PROVIDER]: String( - CloudProviderValues.AWS - ), - [SemanticResourceAttributes.CLOUD_PLATFORM]: String( - CloudPlatformValues.AWS_LAMBDA - ), + [SEMRESATTRS_CLOUD_PROVIDER]: String(CLOUDPROVIDERVALUES_AWS), + [SEMRESATTRS_CLOUD_PLATFORM]: String(CLOUDPLATFORMVALUES_AWS_LAMBDA), }; if (region) { - attributes[SemanticResourceAttributes.CLOUD_REGION] = region; + attributes[SEMRESATTRS_CLOUD_REGION] = region; } if (functionName) { - attributes[SemanticResourceAttributes.FAAS_NAME] = functionName; + attributes[SEMRESATTRS_FAAS_NAME] = functionName; } if (functionVersion) { - attributes[SemanticResourceAttributes.FAAS_VERSION] = functionVersion; + attributes[SEMRESATTRS_FAAS_VERSION] = functionVersion; } return new Resource(attributes); 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 60e285fd58..92822e392b 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 @@ -21,7 +21,7 @@ import { assertEmptyResource, assertServiceResource, } from '@opentelemetry/contrib-test-utils'; -import { CloudPlatformValues } from '@opentelemetry/semantic-conventions'; +import { CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK } from '@opentelemetry/semantic-conventions'; describe('BeanstalkResourceDetector', () => { const err = new Error('failed to read config file'); @@ -58,7 +58,7 @@ describe('BeanstalkResourceDetector', () => { sinon.assert.calledOnce(readStub); assert.ok(resource); assertServiceResource(resource, { - name: CloudPlatformValues.AWS_ELASTIC_BEANSTALK, + name: CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK, namespace: 'scorekeep', version: 'app-5a56-170119_190650-stage-170119_190650', instanceId: '32', @@ -80,7 +80,7 @@ describe('BeanstalkResourceDetector', () => { sinon.assert.calledOnce(readStub); assert.ok(resource); assertServiceResource(resource, { - name: CloudPlatformValues.AWS_ELASTIC_BEANSTALK, + name: CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK, namespace: 'scorekeep', version: 'app-5a56-170119_190650-stage-170119_190650', instanceId: '32', 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 f084f9b968..6c9200b9cd 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 @@ -28,9 +28,19 @@ import { } from '@opentelemetry/contrib-test-utils'; import { Resource } from '@opentelemetry/resources'; import { - CloudProviderValues, - CloudPlatformValues, - SemanticResourceAttributes, + SEMRESATTRS_CLOUD_PLATFORM, + SEMRESATTRS_AWS_ECS_CONTAINER_ARN, + SEMRESATTRS_AWS_ECS_CLUSTER_ARN, + SEMRESATTRS_AWS_ECS_LAUNCHTYPE, + SEMRESATTRS_AWS_ECS_TASK_ARN, + SEMRESATTRS_AWS_ECS_TASK_REVISION, + SEMRESATTRS_AWS_ECS_TASK_FAMILY, + SEMRESATTRS_AWS_LOG_GROUP_NAMES, + SEMRESATTRS_AWS_LOG_GROUP_ARNS, + SEMRESATTRS_AWS_LOG_STREAM_NAMES, + SEMRESATTRS_AWS_LOG_STREAM_ARNS, + CLOUDPROVIDERVALUES_AWS, + CLOUDPLATFORMVALUES_AWS_ECS, } from '@opentelemetry/semantic-conventions'; import { readFileSync } from 'fs'; import * as os from 'os'; @@ -57,63 +67,63 @@ const assertEcsResource = ( validations: EcsResourceAttributes ) => { assertCloudResource(resource, { - provider: CloudProviderValues.AWS, + provider: CLOUDPROVIDERVALUES_AWS, accountId: validations.accountId, region: validations.region, zone: validations.zone, }); assert.strictEqual( - resource.attributes[SemanticResourceAttributes.CLOUD_PLATFORM], - CloudPlatformValues.AWS_ECS + resource.attributes[SEMRESATTRS_CLOUD_PLATFORM], + CLOUDPLATFORMVALUES_AWS_ECS ); if (validations.containerArn) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.AWS_ECS_CONTAINER_ARN], + resource.attributes[SEMRESATTRS_AWS_ECS_CONTAINER_ARN], validations.containerArn ); if (validations.clusterArn) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.AWS_ECS_CLUSTER_ARN], + resource.attributes[SEMRESATTRS_AWS_ECS_CLUSTER_ARN], validations.clusterArn ); if (validations.launchType) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.AWS_ECS_LAUNCHTYPE], + resource.attributes[SEMRESATTRS_AWS_ECS_LAUNCHTYPE], validations.launchType ); if (validations.taskArn) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.AWS_ECS_TASK_ARN], + resource.attributes[SEMRESATTRS_AWS_ECS_TASK_ARN], validations.taskArn ); if (validations.taskFamily) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.AWS_ECS_TASK_FAMILY], + resource.attributes[SEMRESATTRS_AWS_ECS_TASK_FAMILY], validations.taskFamily ); if (validations.taskRevision) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.AWS_ECS_TASK_REVISION], + resource.attributes[SEMRESATTRS_AWS_ECS_TASK_REVISION], validations.taskRevision ); if (validations.logGroupNames) assert.deepEqual( - resource.attributes[SemanticResourceAttributes.AWS_LOG_GROUP_NAMES], + resource.attributes[SEMRESATTRS_AWS_LOG_GROUP_NAMES], validations.logGroupNames ); if (validations.logGroupArns) assert.deepEqual( - resource.attributes[SemanticResourceAttributes.AWS_LOG_GROUP_ARNS], + resource.attributes[SEMRESATTRS_AWS_LOG_GROUP_ARNS], validations.logGroupArns ); if (validations.logStreamNames) assert.deepEqual( - resource.attributes[SemanticResourceAttributes.AWS_LOG_STREAM_NAMES], + resource.attributes[SEMRESATTRS_AWS_LOG_STREAM_NAMES], validations.logStreamNames ); if (validations.logStreamArns) assert.deepEqual( - resource.attributes[SemanticResourceAttributes.AWS_LOG_STREAM_ARNS], + resource.attributes[SEMRESATTRS_AWS_LOG_STREAM_ARNS], validations.logStreamArns ); }; diff --git a/package-lock.json b/package-lock.json index 451c7093b7..b6ffb22d1c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -77,7 +77,7 @@ "dependencies": { "@opentelemetry/core": "^1.0.0", "@opentelemetry/resources": "^1.0.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@opentelemetry/api": "^1.0.0", @@ -47625,7 +47625,7 @@ "@opentelemetry/contrib-test-utils": "^0.37.0", "@opentelemetry/core": "^1.0.0", "@opentelemetry/resources": "^1.0.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", From 17a0bc1da3baa472ba9b867eee3c60730cc130fb Mon Sep 17 00:00:00 2001 From: Daniel Dyla Date: Wed, 3 Apr 2024 12:35:18 -0400 Subject: [PATCH 020/121] chore: release main (#2007) * chore: release main * chore: release main * chore: sync package-lock.json --------- Co-authored-by: opentelemetrybot <107717825+opentelemetrybot@users.noreply.github.com> --- .release-please-manifest.json | 2 +- .../CHANGELOG.md | 9 + .../package.json | 4 +- .../CHANGELOG.md | 9 + .../package.json | 4 +- .../CHANGELOG.md | 9 + .../package.json | 4 +- .../CHANGELOG.md | 9 + .../package.json | 4 +- .../CHANGELOG.md | 9 + .../package.json | 4 +- .../CHANGELOG.md | 14 + .../package.json | 4 +- .../auto-instrumentations-node/CHANGELOG.md | 52 +++ .../auto-instrumentations-node/package.json | 80 ++-- .../auto-instrumentations-web/CHANGELOG.md | 15 + .../auto-instrumentations-web/package.json | 6 +- package-lock.json | 376 +++++++++--------- .../CHANGELOG.md | 9 + .../package.json | 4 +- .../opentelemetry-test-utils/CHANGELOG.md | 7 + .../opentelemetry-test-utils/package.json | 2 +- packages/winston-transport/CHANGELOG.md | 9 + packages/winston-transport/package.json | 2 +- .../node/instrumentation-amqplib/CHANGELOG.md | 14 + .../node/instrumentation-amqplib/package.json | 4 +- .../instrumentation-cucumber/CHANGELOG.md | 7 + .../instrumentation-cucumber/package.json | 2 +- .../instrumentation-dataloader/CHANGELOG.md | 7 + .../instrumentation-dataloader/package.json | 2 +- plugins/node/instrumentation-fs/CHANGELOG.md | 7 + plugins/node/instrumentation-fs/package.json | 2 +- .../instrumentation-lru-memoizer/CHANGELOG.md | 14 + .../instrumentation-lru-memoizer/package.json | 4 +- .../instrumentation-mongoose/CHANGELOG.md | 14 + .../instrumentation-mongoose/package.json | 4 +- .../instrumentation-runtime-node/CHANGELOG.md | 12 + .../instrumentation-runtime-node/package.json | 2 +- .../instrumentation-socket.io/CHANGELOG.md | 14 + .../instrumentation-socket.io/package.json | 4 +- .../node/instrumentation-tedious/CHANGELOG.md | 14 + .../node/instrumentation-tedious/package.json | 4 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- .../CHANGELOG.md | 16 + .../package.json | 6 +- .../CHANGELOG.md | 8 + .../package.json | 2 +- .../CHANGELOG.md | 14 + .../package.json | 4 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- .../CHANGELOG.md | 14 + .../package.json | 4 +- .../CHANGELOG.md | 14 + .../package.json | 4 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- .../CHANGELOG.md | 14 + .../package.json | 4 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- .../CHANGELOG.md | 15 + .../package.json | 4 +- .../CHANGELOG.md | 14 + .../package.json | 4 +- .../CHANGELOG.md | 19 + .../package.json | 4 +- .../CHANGELOG.md | 14 + .../package.json | 4 +- .../CHANGELOG.md | 14 + .../package.json | 4 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- .../CHANGELOG.md | 19 + .../package.json | 4 +- .../CHANGELOG.md | 14 + .../package.json | 4 +- .../CHANGELOG.md | 14 + .../package.json | 4 +- .../CHANGELOG.md | 14 + .../package.json | 4 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- .../CHANGELOG.md | 15 + .../package.json | 4 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- 102 files changed, 892 insertions(+), 308 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 5dc8b7e1bb..a58a58e654 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1 +1 @@ -{"detectors/node/opentelemetry-resource-detector-alibaba-cloud":"0.28.7","detectors/node/opentelemetry-resource-detector-aws":"1.4.0","detectors/node/opentelemetry-resource-detector-azure":"0.2.5","detectors/node/opentelemetry-resource-detector-container":"0.3.7","detectors/node/opentelemetry-resource-detector-gcp":"0.29.7","detectors/node/opentelemetry-resource-detector-github":"0.28.1","detectors/node/opentelemetry-resource-detector-instana":"0.7.0","metapackages/auto-instrumentations-node":"0.43.0","metapackages/auto-instrumentations-web":"0.37.0","packages/opentelemetry-host-metrics":"0.35.0","packages/opentelemetry-id-generator-aws-xray":"1.2.1","packages/opentelemetry-propagation-utils":"0.30.7","packages/opentelemetry-redis-common":"0.36.1","packages/opentelemetry-sql-common":"0.40.0","packages/opentelemetry-test-utils":"0.37.0","packages/winston-transport": "0.1.0","plugins/node/instrumentation-amqplib":"0.35.0","plugins/node/instrumentation-cucumber":"0.4.0","plugins/node/instrumentation-dataloader":"0.7.0","plugins/node/instrumentation-fs":"0.10.0","plugins/node/instrumentation-lru-memoizer":"0.35.0","plugins/node/instrumentation-mongoose":"0.36.0","plugins/node/instrumentation-runtime-node":"0.2.1","plugins/node/instrumentation-socket.io":"0.37.0","plugins/node/instrumentation-tedious":"0.8.0","plugins/node/opentelemetry-instrumentation-aws-lambda":"0.39.0","plugins/node/opentelemetry-instrumentation-aws-sdk":"0.39.1","plugins/node/opentelemetry-instrumentation-bunyan":"0.36.0","plugins/node/opentelemetry-instrumentation-cassandra":"0.36.0","plugins/node/opentelemetry-instrumentation-connect":"0.34.0","plugins/node/opentelemetry-instrumentation-dns":"0.34.0","plugins/node/opentelemetry-instrumentation-express":"0.36.1","plugins/node/opentelemetry-instrumentation-fastify":"0.34.0","plugins/node/opentelemetry-instrumentation-generic-pool":"0.34.0","plugins/node/opentelemetry-instrumentation-graphql":"0.38.1","plugins/node/opentelemetry-instrumentation-hapi":"0.35.0","plugins/node/opentelemetry-instrumentation-ioredis":"0.38.0","plugins/node/opentelemetry-instrumentation-knex":"0.34.0","plugins/node/opentelemetry-instrumentation-koa":"0.38.0","plugins/node/opentelemetry-instrumentation-memcached":"0.34.0","plugins/node/opentelemetry-instrumentation-mongodb":"0.41.0","plugins/node/opentelemetry-instrumentation-mysql":"0.36.0","plugins/node/opentelemetry-instrumentation-mysql2":"0.36.0","plugins/node/opentelemetry-instrumentation-nestjs-core":"0.35.0","plugins/node/opentelemetry-instrumentation-net":"0.34.0","plugins/node/opentelemetry-instrumentation-pg":"0.39.1","plugins/node/opentelemetry-instrumentation-pino":"0.36.0","plugins/node/opentelemetry-instrumentation-redis":"0.37.0","plugins/node/opentelemetry-instrumentation-redis-4":"0.37.0","plugins/node/opentelemetry-instrumentation-restify":"0.36.0","plugins/node/opentelemetry-instrumentation-router":"0.35.0","plugins/node/opentelemetry-instrumentation-winston":"0.35.0","plugins/web/opentelemetry-instrumentation-document-load":"0.36.0","plugins/web/opentelemetry-instrumentation-long-task":"0.36.0","plugins/web/opentelemetry-instrumentation-user-interaction":"0.36.0","plugins/web/opentelemetry-plugin-react-load":"0.30.0","propagators/opentelemetry-propagator-aws-xray":"1.3.1","propagators/opentelemetry-propagator-grpc-census-binary":"0.27.1","propagators/opentelemetry-propagator-instana":"0.3.1","propagators/opentelemetry-propagator-ot-trace":"0.27.1"} +{"detectors/node/opentelemetry-resource-detector-alibaba-cloud":"0.28.8","detectors/node/opentelemetry-resource-detector-aws":"1.4.1","detectors/node/opentelemetry-resource-detector-azure":"0.2.6","detectors/node/opentelemetry-resource-detector-container":"0.3.8","detectors/node/opentelemetry-resource-detector-gcp":"0.29.8","detectors/node/opentelemetry-resource-detector-github":"0.28.1","detectors/node/opentelemetry-resource-detector-instana":"0.8.0","metapackages/auto-instrumentations-node":"0.44.0","metapackages/auto-instrumentations-web":"0.38.0","packages/opentelemetry-host-metrics":"0.35.0","packages/opentelemetry-id-generator-aws-xray":"1.2.1","packages/opentelemetry-propagation-utils":"0.30.8","packages/opentelemetry-redis-common":"0.36.1","packages/opentelemetry-sql-common":"0.40.0","packages/opentelemetry-test-utils":"0.38.0","packages/winston-transport":"0.2.0","plugins/node/instrumentation-amqplib":"0.36.0","plugins/node/instrumentation-cucumber":"0.5.0","plugins/node/instrumentation-dataloader":"0.8.0","plugins/node/instrumentation-fs":"0.11.0","plugins/node/instrumentation-lru-memoizer":"0.36.0","plugins/node/instrumentation-mongoose":"0.37.0","plugins/node/instrumentation-runtime-node":"0.3.0","plugins/node/instrumentation-socket.io":"0.38.0","plugins/node/instrumentation-tedious":"0.9.0","plugins/node/opentelemetry-instrumentation-aws-lambda":"0.40.0","plugins/node/opentelemetry-instrumentation-aws-sdk":"0.40.0","plugins/node/opentelemetry-instrumentation-bunyan":"0.37.0","plugins/node/opentelemetry-instrumentation-cassandra":"0.37.0","plugins/node/opentelemetry-instrumentation-connect":"0.35.0","plugins/node/opentelemetry-instrumentation-dns":"0.35.0","plugins/node/opentelemetry-instrumentation-express":"0.37.0","plugins/node/opentelemetry-instrumentation-fastify":"0.35.0","plugins/node/opentelemetry-instrumentation-generic-pool":"0.35.0","plugins/node/opentelemetry-instrumentation-graphql":"0.39.0","plugins/node/opentelemetry-instrumentation-hapi":"0.36.0","plugins/node/opentelemetry-instrumentation-ioredis":"0.39.0","plugins/node/opentelemetry-instrumentation-knex":"0.35.0","plugins/node/opentelemetry-instrumentation-koa":"0.39.0","plugins/node/opentelemetry-instrumentation-memcached":"0.35.0","plugins/node/opentelemetry-instrumentation-mongodb":"0.42.0","plugins/node/opentelemetry-instrumentation-mysql":"0.37.0","plugins/node/opentelemetry-instrumentation-mysql2":"0.37.0","plugins/node/opentelemetry-instrumentation-nestjs-core":"0.36.0","plugins/node/opentelemetry-instrumentation-net":"0.35.0","plugins/node/opentelemetry-instrumentation-pg":"0.40.0","plugins/node/opentelemetry-instrumentation-pino":"0.37.0","plugins/node/opentelemetry-instrumentation-redis":"0.38.0","plugins/node/opentelemetry-instrumentation-redis-4":"0.38.0","plugins/node/opentelemetry-instrumentation-restify":"0.37.0","plugins/node/opentelemetry-instrumentation-router":"0.36.0","plugins/node/opentelemetry-instrumentation-winston":"0.36.0","plugins/web/opentelemetry-instrumentation-document-load":"0.37.0","plugins/web/opentelemetry-instrumentation-long-task":"0.37.0","plugins/web/opentelemetry-instrumentation-user-interaction":"0.37.0","plugins/web/opentelemetry-plugin-react-load":"0.30.0","propagators/opentelemetry-propagator-aws-xray":"1.3.1","propagators/opentelemetry-propagator-grpc-census-binary":"0.27.1","propagators/opentelemetry-propagator-instana":"0.3.1","propagators/opentelemetry-propagator-ot-trace":"0.27.1"} diff --git a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/CHANGELOG.md b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/CHANGELOG.md index 99376f45be..7036542f0d 100644 --- a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/CHANGELOG.md +++ b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/CHANGELOG.md @@ -72,6 +72,15 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.36.0 to ^0.37.0 +## [0.28.8](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-alibaba-cloud-v0.28.7...resource-detector-alibaba-cloud-v0.28.8) (2024-04-03) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.28.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-alibaba-cloud-v0.28.0...resource-detector-alibaba-cloud-v0.28.1) (2023-08-14) diff --git a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/package.json b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/package.json index 5009697401..6463fc2337 100644 --- a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/package.json +++ b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-alibaba-cloud", - "version": "0.28.7", + "version": "0.28.8", "description": "OpenTelemetry resource detector for Alibaba Cloud", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -40,7 +40,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", diff --git a/detectors/node/opentelemetry-resource-detector-aws/CHANGELOG.md b/detectors/node/opentelemetry-resource-detector-aws/CHANGELOG.md index 90e952f512..18ac8f2c17 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/CHANGELOG.md +++ b/detectors/node/opentelemetry-resource-detector-aws/CHANGELOG.md @@ -66,6 +66,15 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.35.1 to ^0.36.0 +## [1.4.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-aws-v1.4.0...resource-detector-aws-v1.4.1) (2024-04-03) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [1.4.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-aws-v1.3.6...resource-detector-aws-v1.4.0) (2024-03-06) diff --git a/detectors/node/opentelemetry-resource-detector-aws/package.json b/detectors/node/opentelemetry-resource-detector-aws/package.json index f15b8b5af3..6b611bc099 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/package.json +++ b/detectors/node/opentelemetry-resource-detector-aws/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-aws", - "version": "1.4.0", + "version": "1.4.1", "description": "OpenTelemetry SDK resource detector for AWS", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -39,7 +39,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", diff --git a/detectors/node/opentelemetry-resource-detector-azure/CHANGELOG.md b/detectors/node/opentelemetry-resource-detector-azure/CHANGELOG.md index c1d19d3b47..b8196ebfbf 100644 --- a/detectors/node/opentelemetry-resource-detector-azure/CHANGELOG.md +++ b/detectors/node/opentelemetry-resource-detector-azure/CHANGELOG.md @@ -12,6 +12,15 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.36.0 to ^0.37.0 +## [0.2.6](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-azure-v0.2.5...resource-detector-azure-v0.2.6) (2024-04-03) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.2.3](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-azure-v0.2.2...resource-detector-azure-v0.2.3) (2024-01-04) diff --git a/detectors/node/opentelemetry-resource-detector-azure/package.json b/detectors/node/opentelemetry-resource-detector-azure/package.json index 32468b8a2c..6e1f51ae42 100644 --- a/detectors/node/opentelemetry-resource-detector-azure/package.json +++ b/detectors/node/opentelemetry-resource-detector-azure/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-azure", - "version": "0.2.5", + "version": "0.2.6", "description": "OpenTelemetry SDK resource detector for Azure", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -32,7 +32,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", diff --git a/detectors/node/opentelemetry-resource-detector-container/CHANGELOG.md b/detectors/node/opentelemetry-resource-detector-container/CHANGELOG.md index 3f82a14038..182be674b8 100644 --- a/detectors/node/opentelemetry-resource-detector-container/CHANGELOG.md +++ b/detectors/node/opentelemetry-resource-detector-container/CHANGELOG.md @@ -60,6 +60,15 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.36.0 to ^0.37.0 +## [0.3.8](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-container-v0.3.7...resource-detector-container-v0.3.8) (2024-04-03) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.3.2](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-container-v0.3.1...resource-detector-container-v0.3.2) (2023-10-10) diff --git a/detectors/node/opentelemetry-resource-detector-container/package.json b/detectors/node/opentelemetry-resource-detector-container/package.json index 5a90550394..a6fa4c9c85 100644 --- a/detectors/node/opentelemetry-resource-detector-container/package.json +++ b/detectors/node/opentelemetry-resource-detector-container/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-container", - "version": "0.3.7", + "version": "0.3.8", "description": "Opentelemetry resource detector to get container resource attributes", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -34,7 +34,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", diff --git a/detectors/node/opentelemetry-resource-detector-gcp/CHANGELOG.md b/detectors/node/opentelemetry-resource-detector-gcp/CHANGELOG.md index 8febd065ce..56b1be8e1c 100644 --- a/detectors/node/opentelemetry-resource-detector-gcp/CHANGELOG.md +++ b/detectors/node/opentelemetry-resource-detector-gcp/CHANGELOG.md @@ -60,6 +60,15 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.36.0 to ^0.37.0 +## [0.29.8](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-gcp-v0.29.7...resource-detector-gcp-v0.29.8) (2024-04-03) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.29.3](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-gcp-v0.29.2...resource-detector-gcp-v0.29.3) (2023-11-13) diff --git a/detectors/node/opentelemetry-resource-detector-gcp/package.json b/detectors/node/opentelemetry-resource-detector-gcp/package.json index 1a928aec8d..6a3df59b58 100644 --- a/detectors/node/opentelemetry-resource-detector-gcp/package.json +++ b/detectors/node/opentelemetry-resource-detector-gcp/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-gcp", - "version": "0.29.7", + "version": "0.29.8", "description": "OpenTelemetry SDK resource detector for GCP", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -39,7 +39,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/semver": "7.5.3", diff --git a/detectors/node/opentelemetry-resource-detector-instana/CHANGELOG.md b/detectors/node/opentelemetry-resource-detector-instana/CHANGELOG.md index a0c837a9bf..c0bcedff8a 100644 --- a/detectors/node/opentelemetry-resource-detector-instana/CHANGELOG.md +++ b/detectors/node/opentelemetry-resource-detector-instana/CHANGELOG.md @@ -6,6 +6,20 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.8.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-instana-v0.7.0...resource-detector-instana-v0.8.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.7.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-instana-v0.6.0...resource-detector-instana-v0.7.0) (2024-03-06) diff --git a/detectors/node/opentelemetry-resource-detector-instana/package.json b/detectors/node/opentelemetry-resource-detector-instana/package.json index ba47abdbf1..dd4e3391c7 100644 --- a/detectors/node/opentelemetry-resource-detector-instana/package.json +++ b/detectors/node/opentelemetry-resource-detector-instana/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-instana", - "version": "0.7.0", + "version": "0.8.0", "description": "OpenTelemetry SDK resource detector for Instana", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -38,7 +38,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-node": "^0.50.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", diff --git a/metapackages/auto-instrumentations-node/CHANGELOG.md b/metapackages/auto-instrumentations-node/CHANGELOG.md index 31d53c91f1..b69ff3972e 100644 --- a/metapackages/auto-instrumentations-node/CHANGELOG.md +++ b/metapackages/auto-instrumentations-node/CHANGELOG.md @@ -152,6 +152,58 @@ * dependencies * @opentelemetry/instrumentation-aws-sdk bumped from ^0.38.0 to ^0.38.1 +## [0.44.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-node-v0.43.0...auto-instrumentations-node-v0.44.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/instrumentation-amqplib bumped from ^0.35.0 to ^0.36.0 + * @opentelemetry/instrumentation-aws-lambda bumped from ^0.39.0 to ^0.40.0 + * @opentelemetry/instrumentation-aws-sdk bumped from ^0.39.1 to ^0.40.0 + * @opentelemetry/instrumentation-bunyan bumped from ^0.36.0 to ^0.37.0 + * @opentelemetry/instrumentation-cassandra-driver bumped from ^0.36.0 to ^0.37.0 + * @opentelemetry/instrumentation-connect bumped from ^0.34.0 to ^0.35.0 + * @opentelemetry/instrumentation-cucumber bumped from ^0.4.0 to ^0.5.0 + * @opentelemetry/instrumentation-dataloader bumped from ^0.7.0 to ^0.8.0 + * @opentelemetry/instrumentation-dns bumped from ^0.34.0 to ^0.35.0 + * @opentelemetry/instrumentation-express bumped from ^0.36.1 to ^0.37.0 + * @opentelemetry/instrumentation-fastify bumped from ^0.34.0 to ^0.35.0 + * @opentelemetry/instrumentation-fs bumped from ^0.10.0 to ^0.11.0 + * @opentelemetry/instrumentation-generic-pool bumped from ^0.34.0 to ^0.35.0 + * @opentelemetry/instrumentation-graphql bumped from ^0.38.1 to ^0.39.0 + * @opentelemetry/instrumentation-hapi bumped from ^0.35.0 to ^0.36.0 + * @opentelemetry/instrumentation-ioredis bumped from ^0.38.0 to ^0.39.0 + * @opentelemetry/instrumentation-knex bumped from ^0.34.0 to ^0.35.0 + * @opentelemetry/instrumentation-koa bumped from ^0.38.0 to ^0.39.0 + * @opentelemetry/instrumentation-lru-memoizer bumped from ^0.35.0 to ^0.36.0 + * @opentelemetry/instrumentation-memcached bumped from ^0.34.0 to ^0.35.0 + * @opentelemetry/instrumentation-mongodb bumped from ^0.41.0 to ^0.42.0 + * @opentelemetry/instrumentation-mongoose bumped from ^0.36.0 to ^0.37.0 + * @opentelemetry/instrumentation-mysql bumped from ^0.36.0 to ^0.37.0 + * @opentelemetry/instrumentation-mysql2 bumped from ^0.36.0 to ^0.37.0 + * @opentelemetry/instrumentation-nestjs-core bumped from ^0.35.0 to ^0.36.0 + * @opentelemetry/instrumentation-net bumped from ^0.34.0 to ^0.35.0 + * @opentelemetry/instrumentation-pg bumped from ^0.39.1 to ^0.40.0 + * @opentelemetry/instrumentation-pino bumped from ^0.36.0 to ^0.37.0 + * @opentelemetry/instrumentation-redis bumped from ^0.37.0 to ^0.38.0 + * @opentelemetry/instrumentation-redis-4 bumped from ^0.37.0 to ^0.38.0 + * @opentelemetry/instrumentation-restify bumped from ^0.36.0 to ^0.37.0 + * @opentelemetry/instrumentation-router bumped from ^0.35.0 to ^0.36.0 + * @opentelemetry/instrumentation-socket.io bumped from ^0.37.0 to ^0.38.0 + * @opentelemetry/instrumentation-tedious bumped from ^0.8.0 to ^0.9.0 + * @opentelemetry/instrumentation-winston bumped from ^0.35.0 to ^0.36.0 + * @opentelemetry/resource-detector-alibaba-cloud bumped from ^0.28.7 to ^0.28.8 + * @opentelemetry/resource-detector-aws bumped from ^1.4.0 to ^1.4.1 + * @opentelemetry/resource-detector-container bumped from ^0.3.7 to ^0.3.8 + * @opentelemetry/resource-detector-gcp bumped from ^0.29.7 to ^0.29.8 + ## [0.43.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-node-v0.42.0...auto-instrumentations-node-v0.43.0) (2024-03-11) diff --git a/metapackages/auto-instrumentations-node/package.json b/metapackages/auto-instrumentations-node/package.json index 2af86896f5..e8c3bbe6b8 100644 --- a/metapackages/auto-instrumentations-node/package.json +++ b/metapackages/auto-instrumentations-node/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/auto-instrumentations-node", - "version": "0.43.0", + "version": "0.44.0", "description": "Metapackage which bundles opentelemetry node core and contrib instrumentations", "author": "OpenTelemetry Authors", "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/metapackages/auto-instrumentations-node#readme", @@ -50,47 +50,47 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/instrumentation-amqplib": "^0.35.0", - "@opentelemetry/instrumentation-aws-lambda": "^0.39.0", - "@opentelemetry/instrumentation-aws-sdk": "^0.39.1", - "@opentelemetry/instrumentation-bunyan": "^0.36.0", - "@opentelemetry/instrumentation-cassandra-driver": "^0.36.0", - "@opentelemetry/instrumentation-connect": "^0.34.0", - "@opentelemetry/instrumentation-cucumber": "^0.4.0", - "@opentelemetry/instrumentation-dataloader": "^0.7.0", - "@opentelemetry/instrumentation-dns": "^0.34.0", - "@opentelemetry/instrumentation-express": "^0.36.1", - "@opentelemetry/instrumentation-fastify": "^0.34.0", - "@opentelemetry/instrumentation-fs": "^0.10.0", - "@opentelemetry/instrumentation-generic-pool": "^0.34.0", - "@opentelemetry/instrumentation-graphql": "^0.38.1", + "@opentelemetry/instrumentation-amqplib": "^0.36.0", + "@opentelemetry/instrumentation-aws-lambda": "^0.40.0", + "@opentelemetry/instrumentation-aws-sdk": "^0.40.0", + "@opentelemetry/instrumentation-bunyan": "^0.37.0", + "@opentelemetry/instrumentation-cassandra-driver": "^0.37.0", + "@opentelemetry/instrumentation-connect": "^0.35.0", + "@opentelemetry/instrumentation-cucumber": "^0.5.0", + "@opentelemetry/instrumentation-dataloader": "^0.8.0", + "@opentelemetry/instrumentation-dns": "^0.35.0", + "@opentelemetry/instrumentation-express": "^0.37.0", + "@opentelemetry/instrumentation-fastify": "^0.35.0", + "@opentelemetry/instrumentation-fs": "^0.11.0", + "@opentelemetry/instrumentation-generic-pool": "^0.35.0", + "@opentelemetry/instrumentation-graphql": "^0.39.0", "@opentelemetry/instrumentation-grpc": "^0.50.0", - "@opentelemetry/instrumentation-hapi": "^0.35.0", + "@opentelemetry/instrumentation-hapi": "^0.36.0", "@opentelemetry/instrumentation-http": "^0.50.0", - "@opentelemetry/instrumentation-ioredis": "^0.38.0", - "@opentelemetry/instrumentation-knex": "^0.34.0", - "@opentelemetry/instrumentation-koa": "^0.38.0", - "@opentelemetry/instrumentation-lru-memoizer": "^0.35.0", - "@opentelemetry/instrumentation-memcached": "^0.34.0", - "@opentelemetry/instrumentation-mongodb": "^0.41.0", - "@opentelemetry/instrumentation-mongoose": "^0.36.0", - "@opentelemetry/instrumentation-mysql": "^0.36.0", - "@opentelemetry/instrumentation-mysql2": "^0.36.0", - "@opentelemetry/instrumentation-nestjs-core": "^0.35.0", - "@opentelemetry/instrumentation-net": "^0.34.0", - "@opentelemetry/instrumentation-pg": "^0.39.1", - "@opentelemetry/instrumentation-pino": "^0.36.0", - "@opentelemetry/instrumentation-redis": "^0.37.0", - "@opentelemetry/instrumentation-redis-4": "^0.37.0", - "@opentelemetry/instrumentation-restify": "^0.36.0", - "@opentelemetry/instrumentation-router": "^0.35.0", - "@opentelemetry/instrumentation-socket.io": "^0.37.0", - "@opentelemetry/instrumentation-tedious": "^0.8.0", - "@opentelemetry/instrumentation-winston": "^0.35.0", - "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.7", - "@opentelemetry/resource-detector-aws": "^1.4.0", - "@opentelemetry/resource-detector-container": "^0.3.7", - "@opentelemetry/resource-detector-gcp": "^0.29.7", + "@opentelemetry/instrumentation-ioredis": "^0.39.0", + "@opentelemetry/instrumentation-knex": "^0.35.0", + "@opentelemetry/instrumentation-koa": "^0.39.0", + "@opentelemetry/instrumentation-lru-memoizer": "^0.36.0", + "@opentelemetry/instrumentation-memcached": "^0.35.0", + "@opentelemetry/instrumentation-mongodb": "^0.42.0", + "@opentelemetry/instrumentation-mongoose": "^0.37.0", + "@opentelemetry/instrumentation-mysql": "^0.37.0", + "@opentelemetry/instrumentation-mysql2": "^0.37.0", + "@opentelemetry/instrumentation-nestjs-core": "^0.36.0", + "@opentelemetry/instrumentation-net": "^0.35.0", + "@opentelemetry/instrumentation-pg": "^0.40.0", + "@opentelemetry/instrumentation-pino": "^0.37.0", + "@opentelemetry/instrumentation-redis": "^0.38.0", + "@opentelemetry/instrumentation-redis-4": "^0.38.0", + "@opentelemetry/instrumentation-restify": "^0.37.0", + "@opentelemetry/instrumentation-router": "^0.36.0", + "@opentelemetry/instrumentation-socket.io": "^0.38.0", + "@opentelemetry/instrumentation-tedious": "^0.9.0", + "@opentelemetry/instrumentation-winston": "^0.36.0", + "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.8", + "@opentelemetry/resource-detector-aws": "^1.4.1", + "@opentelemetry/resource-detector-container": "^0.3.8", + "@opentelemetry/resource-detector-gcp": "^0.29.8", "@opentelemetry/resources": "^1.12.0", "@opentelemetry/sdk-node": "^0.50.0" }, diff --git a/metapackages/auto-instrumentations-web/CHANGELOG.md b/metapackages/auto-instrumentations-web/CHANGELOG.md index bbe2d6390a..145883734e 100644 --- a/metapackages/auto-instrumentations-web/CHANGELOG.md +++ b/metapackages/auto-instrumentations-web/CHANGELOG.md @@ -12,6 +12,21 @@ * dependencies * @opentelemetry/instrumentation-document-load bumped from ^0.31.1 to ^0.31.2 +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-web-v0.37.0...auto-instrumentations-web-v0.38.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/instrumentation-document-load bumped from ^0.36.0 to ^0.37.0 + * @opentelemetry/instrumentation-user-interaction bumped from ^0.36.0 to ^0.37.0 + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-web-v0.36.0...auto-instrumentations-web-v0.37.0) (2024-03-06) diff --git a/metapackages/auto-instrumentations-web/package.json b/metapackages/auto-instrumentations-web/package.json index bc378454e8..61e875742f 100644 --- a/metapackages/auto-instrumentations-web/package.json +++ b/metapackages/auto-instrumentations-web/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/auto-instrumentations-web", - "version": "0.37.0", + "version": "0.38.0", "description": "Metapackage which bundles opentelemetry node core and contrib instrumentations", "author": "OpenTelemetry Authors", "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/metapackages/auto-instrumentations-web#readme", @@ -62,9 +62,9 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/instrumentation-document-load": "^0.36.0", + "@opentelemetry/instrumentation-document-load": "^0.37.0", "@opentelemetry/instrumentation-fetch": "^0.50.0", - "@opentelemetry/instrumentation-user-interaction": "^0.36.0", + "@opentelemetry/instrumentation-user-interaction": "^0.37.0", "@opentelemetry/instrumentation-xml-http-request": "^0.50.0" }, "files": [ diff --git a/package-lock.json b/package-lock.json index b6ffb22d1c..b86482f96e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37,7 +37,7 @@ }, "detectors/node/opentelemetry-resource-detector-alibaba-cloud": { "name": "@opentelemetry/resource-detector-alibaba-cloud", - "version": "0.28.7", + "version": "0.28.8", "license": "Apache-2.0", "dependencies": { "@opentelemetry/resources": "^1.0.0", @@ -45,7 +45,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -72,7 +72,7 @@ }, "detectors/node/opentelemetry-resource-detector-aws": { "name": "@opentelemetry/resource-detector-aws", - "version": "1.4.0", + "version": "1.4.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.0.0", @@ -81,7 +81,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -108,7 +108,7 @@ }, "detectors/node/opentelemetry-resource-detector-azure": { "name": "@opentelemetry/resource-detector-azure", - "version": "0.2.5", + "version": "0.2.6", "license": "Apache-2.0", "dependencies": { "@opentelemetry/resources": "^1.10.1", @@ -116,7 +116,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -142,7 +142,7 @@ }, "detectors/node/opentelemetry-resource-detector-container": { "name": "@opentelemetry/resource-detector-container", - "version": "0.3.7", + "version": "0.3.8", "license": "Apache-2.0", "dependencies": { "@opentelemetry/resources": "^1.0.0", @@ -150,7 +150,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -178,7 +178,7 @@ }, "detectors/node/opentelemetry-resource-detector-gcp": { "name": "@opentelemetry/resource-detector-gcp", - "version": "0.29.7", + "version": "0.29.8", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.0.0", @@ -188,7 +188,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/semver": "7.5.3", @@ -246,7 +246,7 @@ }, "detectors/node/opentelemetry-resource-detector-instana": { "name": "@opentelemetry/resource-detector-instana", - "version": "0.7.0", + "version": "0.8.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/resources": "^1.0.0", @@ -254,7 +254,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-node": "^0.50.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -281,51 +281,51 @@ }, "metapackages/auto-instrumentations-node": { "name": "@opentelemetry/auto-instrumentations-node", - "version": "0.43.0", + "version": "0.44.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/instrumentation-amqplib": "^0.35.0", - "@opentelemetry/instrumentation-aws-lambda": "^0.39.0", - "@opentelemetry/instrumentation-aws-sdk": "^0.39.1", - "@opentelemetry/instrumentation-bunyan": "^0.36.0", - "@opentelemetry/instrumentation-cassandra-driver": "^0.36.0", - "@opentelemetry/instrumentation-connect": "^0.34.0", - "@opentelemetry/instrumentation-cucumber": "^0.4.0", - "@opentelemetry/instrumentation-dataloader": "^0.7.0", - "@opentelemetry/instrumentation-dns": "^0.34.0", - "@opentelemetry/instrumentation-express": "^0.36.1", - "@opentelemetry/instrumentation-fastify": "^0.34.0", - "@opentelemetry/instrumentation-fs": "^0.10.0", - "@opentelemetry/instrumentation-generic-pool": "^0.34.0", - "@opentelemetry/instrumentation-graphql": "^0.38.1", + "@opentelemetry/instrumentation-amqplib": "^0.36.0", + "@opentelemetry/instrumentation-aws-lambda": "^0.40.0", + "@opentelemetry/instrumentation-aws-sdk": "^0.40.0", + "@opentelemetry/instrumentation-bunyan": "^0.37.0", + "@opentelemetry/instrumentation-cassandra-driver": "^0.37.0", + "@opentelemetry/instrumentation-connect": "^0.35.0", + "@opentelemetry/instrumentation-cucumber": "^0.5.0", + "@opentelemetry/instrumentation-dataloader": "^0.8.0", + "@opentelemetry/instrumentation-dns": "^0.35.0", + "@opentelemetry/instrumentation-express": "^0.37.0", + "@opentelemetry/instrumentation-fastify": "^0.35.0", + "@opentelemetry/instrumentation-fs": "^0.11.0", + "@opentelemetry/instrumentation-generic-pool": "^0.35.0", + "@opentelemetry/instrumentation-graphql": "^0.39.0", "@opentelemetry/instrumentation-grpc": "^0.50.0", - "@opentelemetry/instrumentation-hapi": "^0.35.0", + "@opentelemetry/instrumentation-hapi": "^0.36.0", "@opentelemetry/instrumentation-http": "^0.50.0", - "@opentelemetry/instrumentation-ioredis": "^0.38.0", - "@opentelemetry/instrumentation-knex": "^0.34.0", - "@opentelemetry/instrumentation-koa": "^0.38.0", - "@opentelemetry/instrumentation-lru-memoizer": "^0.35.0", - "@opentelemetry/instrumentation-memcached": "^0.34.0", - "@opentelemetry/instrumentation-mongodb": "^0.41.0", - "@opentelemetry/instrumentation-mongoose": "^0.36.0", - "@opentelemetry/instrumentation-mysql": "^0.36.0", - "@opentelemetry/instrumentation-mysql2": "^0.36.0", - "@opentelemetry/instrumentation-nestjs-core": "^0.35.0", - "@opentelemetry/instrumentation-net": "^0.34.0", - "@opentelemetry/instrumentation-pg": "^0.39.1", - "@opentelemetry/instrumentation-pino": "^0.36.0", - "@opentelemetry/instrumentation-redis": "^0.37.0", - "@opentelemetry/instrumentation-redis-4": "^0.37.0", - "@opentelemetry/instrumentation-restify": "^0.36.0", - "@opentelemetry/instrumentation-router": "^0.35.0", - "@opentelemetry/instrumentation-socket.io": "^0.37.0", - "@opentelemetry/instrumentation-tedious": "^0.8.0", - "@opentelemetry/instrumentation-winston": "^0.35.0", - "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.7", - "@opentelemetry/resource-detector-aws": "^1.4.0", - "@opentelemetry/resource-detector-container": "^0.3.7", - "@opentelemetry/resource-detector-gcp": "^0.29.7", + "@opentelemetry/instrumentation-ioredis": "^0.39.0", + "@opentelemetry/instrumentation-knex": "^0.35.0", + "@opentelemetry/instrumentation-koa": "^0.39.0", + "@opentelemetry/instrumentation-lru-memoizer": "^0.36.0", + "@opentelemetry/instrumentation-memcached": "^0.35.0", + "@opentelemetry/instrumentation-mongodb": "^0.42.0", + "@opentelemetry/instrumentation-mongoose": "^0.37.0", + "@opentelemetry/instrumentation-mysql": "^0.37.0", + "@opentelemetry/instrumentation-mysql2": "^0.37.0", + "@opentelemetry/instrumentation-nestjs-core": "^0.36.0", + "@opentelemetry/instrumentation-net": "^0.35.0", + "@opentelemetry/instrumentation-pg": "^0.40.0", + "@opentelemetry/instrumentation-pino": "^0.37.0", + "@opentelemetry/instrumentation-redis": "^0.38.0", + "@opentelemetry/instrumentation-redis-4": "^0.38.0", + "@opentelemetry/instrumentation-restify": "^0.37.0", + "@opentelemetry/instrumentation-router": "^0.36.0", + "@opentelemetry/instrumentation-socket.io": "^0.38.0", + "@opentelemetry/instrumentation-tedious": "^0.9.0", + "@opentelemetry/instrumentation-winston": "^0.36.0", + "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.8", + "@opentelemetry/resource-detector-aws": "^1.4.1", + "@opentelemetry/resource-detector-container": "^0.3.8", + "@opentelemetry/resource-detector-gcp": "^0.29.8", "@opentelemetry/resources": "^1.12.0", "@opentelemetry/sdk-node": "^0.50.0" }, @@ -350,13 +350,13 @@ }, "metapackages/auto-instrumentations-web": { "name": "@opentelemetry/auto-instrumentations-web", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/instrumentation-document-load": "^0.36.0", + "@opentelemetry/instrumentation-document-load": "^0.37.0", "@opentelemetry/instrumentation-fetch": "^0.50.0", - "@opentelemetry/instrumentation-user-interaction": "^0.36.0", + "@opentelemetry/instrumentation-user-interaction": "^0.37.0", "@opentelemetry/instrumentation-xml-http-request": "^0.50.0" }, "devDependencies": { @@ -36623,11 +36623,11 @@ }, "packages/opentelemetry-propagation-utils": { "name": "@opentelemetry/propagation-utils", - "version": "0.30.7", + "version": "0.30.8", "license": "Apache-2.0", "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@types/mocha": "^9.1.1", "@types/node": "18.6.5", "@types/sinon": "^10.0.11", @@ -36698,7 +36698,7 @@ }, "packages/opentelemetry-test-utils": { "name": "@opentelemetry/contrib-test-utils", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.0.0", @@ -36724,7 +36724,7 @@ }, "packages/winston-transport": { "name": "@opentelemetry/winston-transport", - "version": "0.1.0", + "version": "0.2.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/api-logs": "^0.50.0", @@ -36754,7 +36754,7 @@ }, "plugins/node/instrumentation-amqplib": { "name": "@opentelemetry/instrumentation-amqplib", - "version": "0.35.0", + "version": "0.36.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -36763,7 +36763,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@types/amqplib": "^0.5.17", "@types/lodash": "4.14.199", "@types/mocha": "8.2.3", @@ -36794,7 +36794,7 @@ }, "plugins/node/instrumentation-cucumber": { "name": "@opentelemetry/instrumentation-cucumber", - "version": "0.4.0", + "version": "0.5.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", @@ -36861,7 +36861,7 @@ }, "plugins/node/instrumentation-dataloader": { "name": "@opentelemetry/instrumentation-dataloader", - "version": "0.7.0", + "version": "0.8.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0" @@ -36890,7 +36890,7 @@ }, "plugins/node/instrumentation-fs": { "name": "@opentelemetry/instrumentation-fs", - "version": "0.10.0", + "version": "0.11.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -36922,14 +36922,14 @@ }, "plugins/node/instrumentation-lru-memoizer": { "name": "@opentelemetry/instrumentation-lru-memoizer", - "version": "0.35.0", + "version": "0.36.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@types/lru-cache": "7.10.9", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -36957,7 +36957,7 @@ }, "plugins/node/instrumentation-mongoose": { "name": "@opentelemetry/instrumentation-mongoose", - "version": "0.36.0", + "version": "0.37.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -36966,7 +36966,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -36994,7 +36994,7 @@ }, "plugins/node/instrumentation-runtime-node": { "name": "@opentelemetry/instrumentation-runtime-node", - "version": "0.2.1", + "version": "0.3.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0" @@ -37034,7 +37034,7 @@ }, "plugins/node/instrumentation-socket.io": { "name": "@opentelemetry/instrumentation-socket.io", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", @@ -37042,7 +37042,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -37283,7 +37283,7 @@ }, "plugins/node/instrumentation-tedious": { "name": "@opentelemetry/instrumentation-tedious", - "version": "0.8.0", + "version": "0.9.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", @@ -37293,7 +37293,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", @@ -37314,7 +37314,7 @@ }, "plugins/node/opentelemetry-instrumentation-aws-lambda": { "name": "@opentelemetry/instrumentation-aws-lambda", - "version": "0.39.0", + "version": "0.40.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", @@ -37346,12 +37346,12 @@ }, "plugins/node/opentelemetry-instrumentation-aws-sdk": { "name": "@opentelemetry/instrumentation-aws-sdk", - "version": "0.39.1", + "version": "0.40.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/propagation-utils": "^0.30.7", + "@opentelemetry/propagation-utils": "^0.30.8", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -37362,7 +37362,7 @@ "@aws-sdk/client-sqs": "3.85.0", "@aws-sdk/types": "3.78.0", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -37394,7 +37394,7 @@ }, "plugins/node/opentelemetry-instrumentation-bunyan": { "name": "@opentelemetry/instrumentation-bunyan", - "version": "0.36.0", + "version": "0.37.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/api-logs": "^0.50.0", @@ -37437,7 +37437,7 @@ }, "plugins/node/opentelemetry-instrumentation-cassandra": { "name": "@opentelemetry/instrumentation-cassandra-driver", - "version": "0.36.0", + "version": "0.37.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", @@ -37446,7 +37446,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -37470,7 +37470,7 @@ }, "plugins/node/opentelemetry-instrumentation-connect": { "name": "@opentelemetry/instrumentation-connect", - "version": "0.34.0", + "version": "0.35.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -37509,7 +37509,7 @@ }, "plugins/node/opentelemetry-instrumentation-dns": { "name": "@opentelemetry/instrumentation-dns", - "version": "0.34.0", + "version": "0.35.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", @@ -37542,7 +37542,7 @@ }, "plugins/node/opentelemetry-instrumentation-express": { "name": "@opentelemetry/instrumentation-express", - "version": "0.36.1", + "version": "0.37.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -37552,7 +37552,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/express": "4.17.18", @@ -37577,7 +37577,7 @@ }, "plugins/node/opentelemetry-instrumentation-fastify": { "name": "@opentelemetry/instrumentation-fastify", - "version": "0.34.0", + "version": "0.35.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -37588,7 +37588,7 @@ "@fastify/express": "^2.0.2", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/instrumentation-http": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -37626,7 +37626,7 @@ }, "plugins/node/opentelemetry-instrumentation-generic-pool": { "name": "@opentelemetry/instrumentation-generic-pool", - "version": "0.34.0", + "version": "0.35.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", @@ -37691,7 +37691,7 @@ }, "plugins/node/opentelemetry-instrumentation-graphql": { "name": "@opentelemetry/instrumentation-graphql", - "version": "0.38.1", + "version": "0.39.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0" @@ -37725,7 +37725,7 @@ }, "plugins/node/opentelemetry-instrumentation-hapi": { "name": "@opentelemetry/instrumentation-hapi", - "version": "0.35.0", + "version": "0.36.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -37757,7 +37757,7 @@ }, "plugins/node/opentelemetry-instrumentation-ioredis": { "name": "@opentelemetry/instrumentation-ioredis", - "version": "0.38.0", + "version": "0.39.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", @@ -37768,7 +37768,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -37793,7 +37793,7 @@ }, "plugins/node/opentelemetry-instrumentation-knex": { "name": "@opentelemetry/instrumentation-knex", - "version": "0.34.0", + "version": "0.35.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", @@ -37823,7 +37823,7 @@ }, "plugins/node/opentelemetry-instrumentation-koa": { "name": "@opentelemetry/instrumentation-koa", - "version": "0.38.0", + "version": "0.39.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -37836,7 +37836,7 @@ "@koa/router": "12.0.0", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/instrumentation-http": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -37861,7 +37861,7 @@ }, "plugins/node/opentelemetry-instrumentation-memcached": { "name": "@opentelemetry/instrumentation-memcached", - "version": "0.34.0", + "version": "0.35.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", @@ -37871,7 +37871,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -37893,7 +37893,7 @@ }, "plugins/node/opentelemetry-instrumentation-mongodb": { "name": "@opentelemetry/instrumentation-mongodb", - "version": "0.41.0", + "version": "0.42.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", @@ -37903,7 +37903,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/bson": "4.0.5", @@ -38087,7 +38087,7 @@ }, "plugins/node/opentelemetry-instrumentation-mysql": { "name": "@opentelemetry/instrumentation-mysql", - "version": "0.36.0", + "version": "0.37.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", @@ -38097,7 +38097,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-metrics": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "7.0.2", @@ -38120,7 +38120,7 @@ }, "plugins/node/opentelemetry-instrumentation-mysql2": { "name": "@opentelemetry/instrumentation-mysql2", - "version": "0.36.0", + "version": "0.37.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", @@ -38130,7 +38130,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", @@ -38186,7 +38186,7 @@ }, "plugins/node/opentelemetry-instrumentation-nestjs-core": { "name": "@opentelemetry/instrumentation-nestjs-core", - "version": "0.35.0", + "version": "0.36.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", @@ -38259,7 +38259,7 @@ }, "plugins/node/opentelemetry-instrumentation-net": { "name": "@opentelemetry/instrumentation-net", - "version": "0.34.0", + "version": "0.35.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", @@ -38289,7 +38289,7 @@ }, "plugins/node/opentelemetry-instrumentation-pg": { "name": "@opentelemetry/instrumentation-pg", - "version": "0.39.1", + "version": "0.40.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", @@ -38301,7 +38301,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -38328,7 +38328,7 @@ }, "plugins/node/opentelemetry-instrumentation-pino": { "name": "@opentelemetry/instrumentation-pino", - "version": "0.36.0", + "version": "0.37.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0" @@ -38336,7 +38336,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -38395,7 +38395,7 @@ }, "plugins/node/opentelemetry-instrumentation-redis": { "name": "@opentelemetry/instrumentation-redis", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", @@ -38405,7 +38405,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -38429,7 +38429,7 @@ }, "plugins/node/opentelemetry-instrumentation-redis-4": { "name": "@opentelemetry/instrumentation-redis-4", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", @@ -38439,7 +38439,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -38477,7 +38477,7 @@ }, "plugins/node/opentelemetry-instrumentation-restify": { "name": "@opentelemetry/instrumentation-restify", - "version": "0.36.0", + "version": "0.37.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -38544,7 +38544,7 @@ }, "plugins/node/opentelemetry-instrumentation-router": { "name": "@opentelemetry/instrumentation-router", - "version": "0.35.0", + "version": "0.36.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", @@ -38573,7 +38573,7 @@ }, "plugins/node/opentelemetry-instrumentation-winston": { "name": "@opentelemetry/instrumentation-winston", - "version": "0.35.0", + "version": "0.36.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0" @@ -38583,7 +38583,7 @@ "@opentelemetry/context-async-hooks": "^1.21.0", "@opentelemetry/sdk-trace-base": "^1.21.0", "@opentelemetry/sdk-trace-node": "^1.21.0", - "@opentelemetry/winston-transport": "^0.1.0", + "@opentelemetry/winston-transport": "^0.2.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -38607,7 +38607,7 @@ }, "plugins/web/opentelemetry-instrumentation-document-load": { "name": "@opentelemetry/instrumentation-document-load", - "version": "0.36.0", + "version": "0.37.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -38648,7 +38648,7 @@ }, "plugins/web/opentelemetry-instrumentation-long-task": { "name": "@opentelemetry/instrumentation-long-task", - "version": "0.36.0", + "version": "0.37.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -38694,7 +38694,7 @@ }, "plugins/web/opentelemetry-instrumentation-user-interaction": { "name": "@opentelemetry/instrumentation-user-interaction", - "version": "0.36.0", + "version": "0.37.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -45408,47 +45408,47 @@ "requires": { "@opentelemetry/api": "^1.4.1", "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/instrumentation-amqplib": "^0.35.0", - "@opentelemetry/instrumentation-aws-lambda": "^0.39.0", - "@opentelemetry/instrumentation-aws-sdk": "^0.39.1", - "@opentelemetry/instrumentation-bunyan": "^0.36.0", - "@opentelemetry/instrumentation-cassandra-driver": "^0.36.0", - "@opentelemetry/instrumentation-connect": "^0.34.0", - "@opentelemetry/instrumentation-cucumber": "^0.4.0", - "@opentelemetry/instrumentation-dataloader": "^0.7.0", - "@opentelemetry/instrumentation-dns": "^0.34.0", - "@opentelemetry/instrumentation-express": "^0.36.1", - "@opentelemetry/instrumentation-fastify": "^0.34.0", - "@opentelemetry/instrumentation-fs": "^0.10.0", - "@opentelemetry/instrumentation-generic-pool": "^0.34.0", - "@opentelemetry/instrumentation-graphql": "^0.38.1", + "@opentelemetry/instrumentation-amqplib": "^0.36.0", + "@opentelemetry/instrumentation-aws-lambda": "^0.40.0", + "@opentelemetry/instrumentation-aws-sdk": "^0.40.0", + "@opentelemetry/instrumentation-bunyan": "^0.37.0", + "@opentelemetry/instrumentation-cassandra-driver": "^0.37.0", + "@opentelemetry/instrumentation-connect": "^0.35.0", + "@opentelemetry/instrumentation-cucumber": "^0.5.0", + "@opentelemetry/instrumentation-dataloader": "^0.8.0", + "@opentelemetry/instrumentation-dns": "^0.35.0", + "@opentelemetry/instrumentation-express": "^0.37.0", + "@opentelemetry/instrumentation-fastify": "^0.35.0", + "@opentelemetry/instrumentation-fs": "^0.11.0", + "@opentelemetry/instrumentation-generic-pool": "^0.35.0", + "@opentelemetry/instrumentation-graphql": "^0.39.0", "@opentelemetry/instrumentation-grpc": "^0.50.0", - "@opentelemetry/instrumentation-hapi": "^0.35.0", + "@opentelemetry/instrumentation-hapi": "^0.36.0", "@opentelemetry/instrumentation-http": "^0.50.0", - "@opentelemetry/instrumentation-ioredis": "^0.38.0", - "@opentelemetry/instrumentation-knex": "^0.34.0", - "@opentelemetry/instrumentation-koa": "^0.38.0", - "@opentelemetry/instrumentation-lru-memoizer": "^0.35.0", - "@opentelemetry/instrumentation-memcached": "^0.34.0", - "@opentelemetry/instrumentation-mongodb": "^0.41.0", - "@opentelemetry/instrumentation-mongoose": "^0.36.0", - "@opentelemetry/instrumentation-mysql": "^0.36.0", - "@opentelemetry/instrumentation-mysql2": "^0.36.0", - "@opentelemetry/instrumentation-nestjs-core": "^0.35.0", - "@opentelemetry/instrumentation-net": "^0.34.0", - "@opentelemetry/instrumentation-pg": "^0.39.1", - "@opentelemetry/instrumentation-pino": "^0.36.0", - "@opentelemetry/instrumentation-redis": "^0.37.0", - "@opentelemetry/instrumentation-redis-4": "^0.37.0", - "@opentelemetry/instrumentation-restify": "^0.36.0", - "@opentelemetry/instrumentation-router": "^0.35.0", - "@opentelemetry/instrumentation-socket.io": "^0.37.0", - "@opentelemetry/instrumentation-tedious": "^0.8.0", - "@opentelemetry/instrumentation-winston": "^0.35.0", - "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.7", - "@opentelemetry/resource-detector-aws": "^1.4.0", - "@opentelemetry/resource-detector-container": "^0.3.7", - "@opentelemetry/resource-detector-gcp": "^0.29.7", + "@opentelemetry/instrumentation-ioredis": "^0.39.0", + "@opentelemetry/instrumentation-knex": "^0.35.0", + "@opentelemetry/instrumentation-koa": "^0.39.0", + "@opentelemetry/instrumentation-lru-memoizer": "^0.36.0", + "@opentelemetry/instrumentation-memcached": "^0.35.0", + "@opentelemetry/instrumentation-mongodb": "^0.42.0", + "@opentelemetry/instrumentation-mongoose": "^0.37.0", + "@opentelemetry/instrumentation-mysql": "^0.37.0", + "@opentelemetry/instrumentation-mysql2": "^0.37.0", + "@opentelemetry/instrumentation-nestjs-core": "^0.36.0", + "@opentelemetry/instrumentation-net": "^0.35.0", + "@opentelemetry/instrumentation-pg": "^0.40.0", + "@opentelemetry/instrumentation-pino": "^0.37.0", + "@opentelemetry/instrumentation-redis": "^0.38.0", + "@opentelemetry/instrumentation-redis-4": "^0.38.0", + "@opentelemetry/instrumentation-restify": "^0.37.0", + "@opentelemetry/instrumentation-router": "^0.36.0", + "@opentelemetry/instrumentation-socket.io": "^0.38.0", + "@opentelemetry/instrumentation-tedious": "^0.9.0", + "@opentelemetry/instrumentation-winston": "^0.36.0", + "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.8", + "@opentelemetry/resource-detector-aws": "^1.4.1", + "@opentelemetry/resource-detector-container": "^0.3.8", + "@opentelemetry/resource-detector-gcp": "^0.29.8", "@opentelemetry/resources": "^1.12.0", "@opentelemetry/sdk-node": "^0.50.0", "@types/mocha": "7.0.2", @@ -45469,9 +45469,9 @@ "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/instrumentation-document-load": "^0.36.0", + "@opentelemetry/instrumentation-document-load": "^0.37.0", "@opentelemetry/instrumentation-fetch": "^0.50.0", - "@opentelemetry/instrumentation-user-interaction": "^0.36.0", + "@opentelemetry/instrumentation-user-interaction": "^0.37.0", "@opentelemetry/instrumentation-xml-http-request": "^0.50.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -45685,7 +45685,7 @@ "version": "file:plugins/node/instrumentation-amqplib", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -45745,10 +45745,10 @@ "@aws-sdk/client-sqs": "3.85.0", "@aws-sdk/types": "3.78.0", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/propagation-utils": "^0.30.7", + "@opentelemetry/propagation-utils": "^0.30.8", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/mocha": "8.2.3", @@ -45815,7 +45815,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -45994,7 +45994,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", @@ -46020,7 +46020,7 @@ "@fastify/express": "^2.0.2", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/instrumentation-http": "^0.50.0", @@ -46209,7 +46209,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/sdk-trace-base": "^1.8.0", @@ -46256,7 +46256,7 @@ "@koa/router": "12.0.0", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/instrumentation-http": "^0.50.0", @@ -46318,7 +46318,7 @@ "version": "file:plugins/node/instrumentation-lru-memoizer", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/instrumentation": "^0.50.0", "@types/lru-cache": "7.10.9", "@types/mocha": "8.2.3", @@ -46346,7 +46346,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -46368,7 +46368,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-metrics": "^1.9.1", "@opentelemetry/sdk-trace-base": "^1.8.0", @@ -46497,7 +46497,7 @@ "version": "file:plugins/node/instrumentation-mongoose", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", @@ -46527,7 +46527,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-metrics": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", @@ -46550,7 +46550,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46675,7 +46675,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -46704,7 +46704,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -46754,7 +46754,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/sdk-trace-base": "^1.8.0", @@ -46778,7 +46778,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/redis-common": "^0.36.1", @@ -46918,7 +46918,7 @@ "version": "file:plugins/node/instrumentation-socket.io", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -47111,7 +47111,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -47173,7 +47173,7 @@ "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.21.0", "@opentelemetry/sdk-trace-node": "^1.21.0", - "@opentelemetry/winston-transport": "^0.1.0", + "@opentelemetry/winston-transport": "^0.2.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -47288,7 +47288,7 @@ "version": "file:packages/opentelemetry-propagation-utils", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@types/mocha": "^9.1.1", "@types/node": "18.6.5", "@types/sinon": "^10.0.11", @@ -47595,7 +47595,7 @@ "version": "file:detectors/node/opentelemetry-resource-detector-alibaba-cloud", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/resources": "^1.0.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", @@ -47622,7 +47622,7 @@ "version": "file:detectors/node/opentelemetry-resource-detector-aws", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.0.0", "@opentelemetry/resources": "^1.0.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -47650,7 +47650,7 @@ "version": "file:detectors/node/opentelemetry-resource-detector-azure", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/resources": "^1.10.1", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/mocha": "8.2.3", @@ -47676,7 +47676,7 @@ "version": "file:detectors/node/opentelemetry-resource-detector-container", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/resources": "^1.0.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", @@ -47704,7 +47704,7 @@ "version": "file:detectors/node/opentelemetry-resource-detector-gcp", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.0.0", "@opentelemetry/resources": "^1.0.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -47756,7 +47756,7 @@ "version": "file:detectors/node/opentelemetry-resource-detector-instana", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/resources": "^1.0.0", "@opentelemetry/sdk-node": "^0.50.0", "@opentelemetry/semantic-conventions": "^1.0.0", diff --git a/packages/opentelemetry-propagation-utils/CHANGELOG.md b/packages/opentelemetry-propagation-utils/CHANGELOG.md index 5c53afe9c4..48fbd04979 100644 --- a/packages/opentelemetry-propagation-utils/CHANGELOG.md +++ b/packages/opentelemetry-propagation-utils/CHANGELOG.md @@ -60,6 +60,15 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.36.0 to ^0.37.0 +## [0.30.8](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagation-utils-v0.30.7...propagation-utils-v0.30.8) (2024-04-03) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.30.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagation-utils-v0.30.0...propagation-utils-v0.30.1) (2023-08-14) diff --git a/packages/opentelemetry-propagation-utils/package.json b/packages/opentelemetry-propagation-utils/package.json index aefc4537fe..ed5f41dcef 100644 --- a/packages/opentelemetry-propagation-utils/package.json +++ b/packages/opentelemetry-propagation-utils/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/propagation-utils", - "version": "0.30.7", + "version": "0.30.8", "description": "Propagation utilities for opentelemetry instrumentations", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -43,7 +43,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@types/mocha": "^9.1.1", "@types/node": "18.6.5", "@types/sinon": "^10.0.11", diff --git a/packages/opentelemetry-test-utils/CHANGELOG.md b/packages/opentelemetry-test-utils/CHANGELOG.md index 5478a2e4e7..1630f64d7c 100644 --- a/packages/opentelemetry-test-utils/CHANGELOG.md +++ b/packages/opentelemetry-test-utils/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/contrib-test-utils-v0.37.0...contrib-test-utils-v0.38.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/contrib-test-utils-v0.36.0...contrib-test-utils-v0.37.0) (2024-03-06) diff --git a/packages/opentelemetry-test-utils/package.json b/packages/opentelemetry-test-utils/package.json index 98f78fa47f..21162672d0 100644 --- a/packages/opentelemetry-test-utils/package.json +++ b/packages/opentelemetry-test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/contrib-test-utils", - "version": "0.37.0", + "version": "0.38.0", "description": "Test utilities for opentelemetry components", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/packages/winston-transport/CHANGELOG.md b/packages/winston-transport/CHANGELOG.md index e69de29bb2..e287c877ec 100644 --- a/packages/winston-transport/CHANGELOG.md +++ b/packages/winston-transport/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog + +## [0.2.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/winston-transport-v0.1.0...winston-transport-v0.2.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) +* **instrumentation-winston:** add log sending to Logs API ([#1837](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1837)) ([358345f](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/358345f1384635ae2cb072082b25907dcbcaebcb)) diff --git a/packages/winston-transport/package.json b/packages/winston-transport/package.json index 133fd3f478..485dfea31e 100644 --- a/packages/winston-transport/package.json +++ b/packages/winston-transport/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/winston-transport", - "version": "0.1.0", + "version": "0.2.0", "description": "OpenTelemetry Transport for winston", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/instrumentation-amqplib/CHANGELOG.md b/plugins/node/instrumentation-amqplib/CHANGELOG.md index e9dcf47ee9..2a1d51fd81 100644 --- a/plugins/node/instrumentation-amqplib/CHANGELOG.md +++ b/plugins/node/instrumentation-amqplib/CHANGELOG.md @@ -6,6 +6,20 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-amqplib-v0.35.0...instrumentation-amqplib-v0.36.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-amqplib-v0.34.0...instrumentation-amqplib-v0.35.0) (2024-03-06) diff --git a/plugins/node/instrumentation-amqplib/package.json b/plugins/node/instrumentation-amqplib/package.json index 22dc0e6888..00d8c4fc34 100644 --- a/plugins/node/instrumentation-amqplib/package.json +++ b/plugins/node/instrumentation-amqplib/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-amqplib", - "version": "0.35.0", + "version": "0.36.0", "description": "OpenTelemetry automatic instrumentation for the `amqplib` package", "keywords": [ "amqplib", @@ -50,7 +50,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@types/amqplib": "^0.5.17", "@types/lodash": "4.14.199", "@types/mocha": "8.2.3", diff --git a/plugins/node/instrumentation-cucumber/CHANGELOG.md b/plugins/node/instrumentation-cucumber/CHANGELOG.md index 867ca6cf2f..62cbee59f7 100644 --- a/plugins/node/instrumentation-cucumber/CHANGELOG.md +++ b/plugins/node/instrumentation-cucumber/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.5.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-cucumber-v0.4.0...instrumentation-cucumber-v0.5.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + ## [0.4.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-cucumber-v0.3.0...instrumentation-cucumber-v0.4.0) (2024-03-06) diff --git a/plugins/node/instrumentation-cucumber/package.json b/plugins/node/instrumentation-cucumber/package.json index 0f26dfc8a3..0fce8819e6 100644 --- a/plugins/node/instrumentation-cucumber/package.json +++ b/plugins/node/instrumentation-cucumber/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-cucumber", - "version": "0.4.0", + "version": "0.5.0", "description": "OpenTelemetry cucumber automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/instrumentation-dataloader/CHANGELOG.md b/plugins/node/instrumentation-dataloader/CHANGELOG.md index 2ef57c5031..54109c971e 100644 --- a/plugins/node/instrumentation-dataloader/CHANGELOG.md +++ b/plugins/node/instrumentation-dataloader/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.8.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-dataloader-v0.7.0...instrumentation-dataloader-v0.8.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + ## [0.7.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-dataloader-v0.6.0...instrumentation-dataloader-v0.7.0) (2024-03-06) diff --git a/plugins/node/instrumentation-dataloader/package.json b/plugins/node/instrumentation-dataloader/package.json index bbe813379d..b9e234c949 100644 --- a/plugins/node/instrumentation-dataloader/package.json +++ b/plugins/node/instrumentation-dataloader/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-dataloader", - "version": "0.7.0", + "version": "0.8.0", "description": "OpenTelemetry instrumentation for dataloader", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/instrumentation-fs/CHANGELOG.md b/plugins/node/instrumentation-fs/CHANGELOG.md index b2217c607c..e16b52dfbb 100644 --- a/plugins/node/instrumentation-fs/CHANGELOG.md +++ b/plugins/node/instrumentation-fs/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.11.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-fs-v0.10.0...instrumentation-fs-v0.11.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + ## [0.10.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-fs-v0.9.0...instrumentation-fs-v0.10.0) (2024-03-06) diff --git a/plugins/node/instrumentation-fs/package.json b/plugins/node/instrumentation-fs/package.json index 90ba11c900..2c41acd685 100644 --- a/plugins/node/instrumentation-fs/package.json +++ b/plugins/node/instrumentation-fs/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-fs", - "version": "0.10.0", + "version": "0.11.0", "description": "OpenTelemetry automatic instrumentation package for fs", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/instrumentation-lru-memoizer/CHANGELOG.md b/plugins/node/instrumentation-lru-memoizer/CHANGELOG.md index 0a593dd717..94ca8ba5f2 100644 --- a/plugins/node/instrumentation-lru-memoizer/CHANGELOG.md +++ b/plugins/node/instrumentation-lru-memoizer/CHANGELOG.md @@ -6,6 +6,20 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-lru-memoizer-v0.35.0...instrumentation-lru-memoizer-v0.36.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-lru-memoizer-v0.34.0...instrumentation-lru-memoizer-v0.35.0) (2024-03-06) diff --git a/plugins/node/instrumentation-lru-memoizer/package.json b/plugins/node/instrumentation-lru-memoizer/package.json index a3ce6bfcc4..25e412b828 100644 --- a/plugins/node/instrumentation-lru-memoizer/package.json +++ b/plugins/node/instrumentation-lru-memoizer/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-lru-memoizer", - "version": "0.35.0", + "version": "0.36.0", "description": "OpenTelemetry automatic instrumentation package for lru-memoizer", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -43,7 +43,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@types/lru-cache": "7.10.9", "@types/mocha": "8.2.3", "@types/node": "18.6.5", diff --git a/plugins/node/instrumentation-mongoose/CHANGELOG.md b/plugins/node/instrumentation-mongoose/CHANGELOG.md index ea40e26830..a3bbb65de2 100644 --- a/plugins/node/instrumentation-mongoose/CHANGELOG.md +++ b/plugins/node/instrumentation-mongoose/CHANGELOG.md @@ -6,6 +6,20 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mongoose-v0.36.0...instrumentation-mongoose-v0.37.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mongoose-v0.35.0...instrumentation-mongoose-v0.36.0) (2024-03-06) diff --git a/plugins/node/instrumentation-mongoose/package.json b/plugins/node/instrumentation-mongoose/package.json index c3a68f9aa0..1a3d149543 100644 --- a/plugins/node/instrumentation-mongoose/package.json +++ b/plugins/node/instrumentation-mongoose/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-mongoose", - "version": "0.36.0", + "version": "0.37.0", "description": "OpenTelemetry automatic instrumentation package for mongoose", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,7 +46,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", diff --git a/plugins/node/instrumentation-runtime-node/CHANGELOG.md b/plugins/node/instrumentation-runtime-node/CHANGELOG.md index e07cb0a242..2867662028 100644 --- a/plugins/node/instrumentation-runtime-node/CHANGELOG.md +++ b/plugins/node/instrumentation-runtime-node/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [0.3.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-runtime-node-v0.2.1...instrumentation-runtime-node-v0.3.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + + +### Bug Fixes + +* **instrumentation-runtime-node:** mixin default config in constructor ([#2036](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2036)) ([146edfa](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/146edfa89bef0b1405d573c7373af10d90639c2a)) + ## [0.2.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-runtime-node-v0.2.0...instrumentation-runtime-node-v0.2.1) (2024-03-11) diff --git a/plugins/node/instrumentation-runtime-node/package.json b/plugins/node/instrumentation-runtime-node/package.json index cda4b70287..80a1cc46bb 100644 --- a/plugins/node/instrumentation-runtime-node/package.json +++ b/plugins/node/instrumentation-runtime-node/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-runtime-node", - "version": "0.2.1", + "version": "0.3.0", "description": "OpenTelemetry Node.js Performance measurement API automatic instrumentation package", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/instrumentation-socket.io/CHANGELOG.md b/plugins/node/instrumentation-socket.io/CHANGELOG.md index a236e9c851..e1787d28a1 100644 --- a/plugins/node/instrumentation-socket.io/CHANGELOG.md +++ b/plugins/node/instrumentation-socket.io/CHANGELOG.md @@ -6,6 +6,20 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-socket.io-v0.37.0...instrumentation-socket.io-v0.38.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-socket.io-v0.36.0...instrumentation-socket.io-v0.37.0) (2024-03-06) diff --git a/plugins/node/instrumentation-socket.io/package.json b/plugins/node/instrumentation-socket.io/package.json index c25d40c100..11ab404b6b 100644 --- a/plugins/node/instrumentation-socket.io/package.json +++ b/plugins/node/instrumentation-socket.io/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-socket.io", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry automatic instrumentation package for socket.io", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -43,7 +43,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", diff --git a/plugins/node/instrumentation-tedious/CHANGELOG.md b/plugins/node/instrumentation-tedious/CHANGELOG.md index 2ea8a2cfbe..ea50ad6918 100644 --- a/plugins/node/instrumentation-tedious/CHANGELOG.md +++ b/plugins/node/instrumentation-tedious/CHANGELOG.md @@ -6,6 +6,20 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.9.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-tedious-v0.8.0...instrumentation-tedious-v0.9.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.8.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-tedious-v0.7.0...instrumentation-tedious-v0.8.0) (2024-03-06) diff --git a/plugins/node/instrumentation-tedious/package.json b/plugins/node/instrumentation-tedious/package.json index 3b4a956c92..0d73cf1922 100644 --- a/plugins/node/instrumentation-tedious/package.json +++ b/plugins/node/instrumentation-tedious/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-tedious", - "version": "0.8.0", + "version": "0.9.0", "description": "OpenTelemetry instrumentation for `tedious`", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -49,7 +49,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-aws-lambda/CHANGELOG.md index d780fc5ffe..6bfef574ff 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.40.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-aws-lambda-v0.39.0...instrumentation-aws-lambda-v0.40.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + ## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-aws-lambda-v0.38.0...instrumentation-aws-lambda-v0.39.0) (2024-03-06) diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json b/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json index 2f966618fa..92b33aefc3 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-aws-lambda", - "version": "0.39.0", + "version": "0.40.0", "description": "OpenTelemetry AWS Lambda automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-aws-sdk/CHANGELOG.md index ef8dd20b17..11054375eb 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## [0.40.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-aws-sdk-v0.39.1...instrumentation-aws-sdk-v0.40.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/propagation-utils bumped from ^0.30.7 to ^0.30.8 + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.39.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-aws-sdk-v0.39.0...instrumentation-aws-sdk-v0.39.1) (2024-03-11) diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json b/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json index 979e5872d3..9925809bb1 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-aws-sdk", - "version": "0.39.1", + "version": "0.40.0", "description": "OpenTelemetry automatic instrumentation for the `aws-sdk` package", "keywords": [ "aws", @@ -46,7 +46,7 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/propagation-utils": "^0.30.7", + "@opentelemetry/propagation-utils": "^0.30.8", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -57,7 +57,7 @@ "@aws-sdk/client-sqs": "3.85.0", "@aws-sdk/types": "3.78.0", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", diff --git a/plugins/node/opentelemetry-instrumentation-bunyan/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-bunyan/CHANGELOG.md index 33aa5ae93b..48e001d183 100644 --- a/plugins/node/opentelemetry-instrumentation-bunyan/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-bunyan/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-bunyan-v0.36.0...instrumentation-bunyan-v0.37.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) +* **instrumentation-bunyan:** Allow log level to be configured for log sending ([#1919](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1919)) ([4dc812e](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4dc812efed1c26eeab19d9eda7280631a761860e)) + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-bunyan-v0.35.0...instrumentation-bunyan-v0.36.0) (2024-03-06) diff --git a/plugins/node/opentelemetry-instrumentation-bunyan/package.json b/plugins/node/opentelemetry-instrumentation-bunyan/package.json index fb9f6c09c0..2ba62b7309 100644 --- a/plugins/node/opentelemetry-instrumentation-bunyan/package.json +++ b/plugins/node/opentelemetry-instrumentation-bunyan/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-bunyan", - "version": "0.36.0", + "version": "0.37.0", "description": "OpenTelemetry instrumentation for bunyan", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-cassandra/CHANGELOG.md index 7cd030cf28..9409eb0758 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-cassandra/CHANGELOG.md @@ -6,6 +6,20 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-cassandra-driver-v0.36.0...instrumentation-cassandra-driver-v0.37.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-cassandra-driver-v0.35.0...instrumentation-cassandra-driver-v0.36.0) (2024-03-06) diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/package.json b/plugins/node/opentelemetry-instrumentation-cassandra/package.json index d4faffba2a..ce04542bba 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/package.json +++ b/plugins/node/opentelemetry-instrumentation-cassandra/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-cassandra-driver", - "version": "0.36.0", + "version": "0.37.0", "description": "OpenTelemetry instrumentation for cassandra-driver", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -45,7 +45,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", diff --git a/plugins/node/opentelemetry-instrumentation-connect/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-connect/CHANGELOG.md index d6c870bfbd..b131149ea0 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-connect/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-connect-v0.34.0...instrumentation-connect-v0.35.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + ## [0.34.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-connect-v0.33.0...instrumentation-connect-v0.34.0) (2024-03-06) diff --git a/plugins/node/opentelemetry-instrumentation-connect/package.json b/plugins/node/opentelemetry-instrumentation-connect/package.json index 25b1b376e3..22a2df2ffc 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/package.json +++ b/plugins/node/opentelemetry-instrumentation-connect/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-connect", - "version": "0.34.0", + "version": "0.35.0", "description": "OpenTelemetry connect automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-dns/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-dns/CHANGELOG.md index 5199912fa1..532bace379 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-dns/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-dns-v0.34.0...instrumentation-dns-v0.35.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + ## [0.34.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-dns-v0.33.0...instrumentation-dns-v0.34.0) (2024-03-06) diff --git a/plugins/node/opentelemetry-instrumentation-dns/package.json b/plugins/node/opentelemetry-instrumentation-dns/package.json index 2abd3edd17..6f28ccf5fb 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/package.json +++ b/plugins/node/opentelemetry-instrumentation-dns/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-dns", - "version": "0.34.0", + "version": "0.35.0", "description": "OpenTelemetry dns automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-express/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-express/CHANGELOG.md index 2e33a749f5..1e48aed920 100644 --- a/plugins/node/opentelemetry-instrumentation-express/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-express/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-express-v0.36.1...instrumentation-express-v0.37.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.36.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-express-v0.36.0...instrumentation-express-v0.36.1) (2024-03-11) diff --git a/plugins/node/opentelemetry-instrumentation-express/package.json b/plugins/node/opentelemetry-instrumentation-express/package.json index 570935ee21..6c3aa8a2c0 100644 --- a/plugins/node/opentelemetry-instrumentation-express/package.json +++ b/plugins/node/opentelemetry-instrumentation-express/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-express", - "version": "0.36.1", + "version": "0.37.0", "description": "OpenTelemetry express automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,7 +46,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/express": "4.17.18", diff --git a/plugins/node/opentelemetry-instrumentation-fastify/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-fastify/CHANGELOG.md index 6354e5079c..ccca7532ed 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-fastify/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-fastify-v0.34.0...instrumentation-fastify-v0.35.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.34.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-fastify-v0.33.0...instrumentation-fastify-v0.34.0) (2024-03-06) diff --git a/plugins/node/opentelemetry-instrumentation-fastify/package.json b/plugins/node/opentelemetry-instrumentation-fastify/package.json index e22ed32332..70b5a4bd0d 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/package.json +++ b/plugins/node/opentelemetry-instrumentation-fastify/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-fastify", - "version": "0.34.0", + "version": "0.35.0", "description": "OpenTelemetry fastify automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,7 +46,7 @@ "@fastify/express": "^2.0.2", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/instrumentation-http": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", diff --git a/plugins/node/opentelemetry-instrumentation-generic-pool/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-generic-pool/CHANGELOG.md index 371dd43f4f..9d9de9fe99 100644 --- a/plugins/node/opentelemetry-instrumentation-generic-pool/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-generic-pool/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-generic-pool-v0.34.0...instrumentation-generic-pool-v0.35.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + ## [0.34.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-generic-pool-v0.33.0...instrumentation-generic-pool-v0.34.0) (2024-03-06) diff --git a/plugins/node/opentelemetry-instrumentation-generic-pool/package.json b/plugins/node/opentelemetry-instrumentation-generic-pool/package.json index 4bdb0abd13..05466afff6 100644 --- a/plugins/node/opentelemetry-instrumentation-generic-pool/package.json +++ b/plugins/node/opentelemetry-instrumentation-generic-pool/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-generic-pool", - "version": "0.34.0", + "version": "0.35.0", "description": "OpenTelemetry Generic Pool automatic instrumentation package", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-graphql/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-graphql/CHANGELOG.md index 2fa024d1e7..9a52f6e41b 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-graphql/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-graphql-v0.38.1...instrumentation-graphql-v0.39.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + ## [0.38.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-graphql-v0.38.0...instrumentation-graphql-v0.38.1) (2024-03-11) diff --git a/plugins/node/opentelemetry-instrumentation-graphql/package.json b/plugins/node/opentelemetry-instrumentation-graphql/package.json index 375a198d47..9594358c0a 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/package.json +++ b/plugins/node/opentelemetry-instrumentation-graphql/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-graphql", - "version": "0.38.1", + "version": "0.39.0", "description": "OpenTelemetry @opentelemetry/instrumentation-graphql automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-hapi/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-hapi/CHANGELOG.md index e08f6bc3bc..58289a6d2d 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-hapi/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-hapi-v0.35.0...instrumentation-hapi-v0.36.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + ## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-hapi-v0.34.0...instrumentation-hapi-v0.35.0) (2024-03-06) diff --git a/plugins/node/opentelemetry-instrumentation-hapi/package.json b/plugins/node/opentelemetry-instrumentation-hapi/package.json index b0df890859..d595016b9b 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/package.json +++ b/plugins/node/opentelemetry-instrumentation-hapi/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-hapi", - "version": "0.35.0", + "version": "0.36.0", "description": "OpenTelemetry Hapi automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-ioredis/CHANGELOG.md index 2ebb262e77..6750af082e 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-ioredis/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-ioredis-v0.38.0...instrumentation-ioredis-v0.39.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-ioredis-v0.37.0...instrumentation-ioredis-v0.38.0) (2024-03-06) diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/package.json b/plugins/node/opentelemetry-instrumentation-ioredis/package.json index 641b8a6239..688c37abba 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/package.json +++ b/plugins/node/opentelemetry-instrumentation-ioredis/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-ioredis", - "version": "0.38.0", + "version": "0.39.0", "description": "OpenTelemetry ioredis automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -49,7 +49,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", diff --git a/plugins/node/opentelemetry-instrumentation-knex/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-knex/CHANGELOG.md index 301d8cfd0c..edb2d1f024 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-knex/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-knex-v0.34.0...instrumentation-knex-v0.35.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + ## [0.34.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-knex-v0.33.0...instrumentation-knex-v0.34.0) (2024-03-06) diff --git a/plugins/node/opentelemetry-instrumentation-knex/package.json b/plugins/node/opentelemetry-instrumentation-knex/package.json index 4acd76aa27..0248695c58 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/package.json +++ b/plugins/node/opentelemetry-instrumentation-knex/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-knex", - "version": "0.34.0", + "version": "0.35.0", "description": "OpenTelemetry Knex automatic instrumentation package", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-koa/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-koa/CHANGELOG.md index 0e17f7750f..07c521997f 100644 --- a/plugins/node/opentelemetry-instrumentation-koa/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-koa/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-koa-v0.38.0...instrumentation-koa-v0.39.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) +* **koa:** Use exported strings for attributes ([#2033](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2033)) ([70090c1](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/70090c12070b7fa82614b378a27dc38877568d02)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-koa-v0.37.0...instrumentation-koa-v0.38.0) (2024-03-06) diff --git a/plugins/node/opentelemetry-instrumentation-koa/package.json b/plugins/node/opentelemetry-instrumentation-koa/package.json index 90323eaccb..e1a6f4f492 100644 --- a/plugins/node/opentelemetry-instrumentation-koa/package.json +++ b/plugins/node/opentelemetry-instrumentation-koa/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-koa", - "version": "0.38.0", + "version": "0.39.0", "description": "OpenTelemetry Koa automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -48,7 +48,7 @@ "@koa/router": "12.0.0", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/instrumentation-http": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", diff --git a/plugins/node/opentelemetry-instrumentation-memcached/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-memcached/CHANGELOG.md index a37fb7db7a..017dfd2c73 100644 --- a/plugins/node/opentelemetry-instrumentation-memcached/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-memcached/CHANGELOG.md @@ -6,6 +6,20 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-memcached-v0.34.0...instrumentation-memcached-v0.35.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.34.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-memcached-v0.33.0...instrumentation-memcached-v0.34.0) (2024-03-06) diff --git a/plugins/node/opentelemetry-instrumentation-memcached/package.json b/plugins/node/opentelemetry-instrumentation-memcached/package.json index 0272871e94..a329872649 100644 --- a/plugins/node/opentelemetry-instrumentation-memcached/package.json +++ b/plugins/node/opentelemetry-instrumentation-memcached/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-memcached", - "version": "0.34.0", + "version": "0.35.0", "description": "OpenTelemetry memcached automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,7 +46,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-mongodb/CHANGELOG.md index 730a7ac5a6..7d67259001 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-mongodb/CHANGELOG.md @@ -6,6 +6,25 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.42.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mongodb-v0.41.0...instrumentation-mongodb-v0.42.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + + +### Bug Fixes + +* **instr-mongodb:** `mongodb` >=v6.4.0 support ([#2001](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2001)) ([20328d4](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/20328d4a655b41b7f5546137c90dbdce1cce4e14)), closes [#1983](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1983) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.41.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mongodb-v0.40.0...instrumentation-mongodb-v0.41.0) (2024-03-11) diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/package.json b/plugins/node/opentelemetry-instrumentation-mongodb/package.json index 4107916706..967c35c088 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/package.json +++ b/plugins/node/opentelemetry-instrumentation-mongodb/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-mongodb", - "version": "0.41.0", + "version": "0.42.0", "description": "OpenTelemetry mongodb automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -50,7 +50,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/bson": "4.0.5", diff --git a/plugins/node/opentelemetry-instrumentation-mysql/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-mysql/CHANGELOG.md index 1280151aa0..de5e0cfc06 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-mysql/CHANGELOG.md @@ -6,6 +6,20 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql-v0.36.0...instrumentation-mysql-v0.37.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql-v0.35.0...instrumentation-mysql-v0.36.0) (2024-03-06) diff --git a/plugins/node/opentelemetry-instrumentation-mysql/package.json b/plugins/node/opentelemetry-instrumentation-mysql/package.json index df63bd0e7c..fccb9fe6ae 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-mysql", - "version": "0.36.0", + "version": "0.37.0", "description": "OpenTelemetry mysql automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -44,7 +44,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-metrics": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "7.0.2", diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-mysql2/CHANGELOG.md index d8453e65a8..2e7ce19c41 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-mysql2/CHANGELOG.md @@ -6,6 +6,20 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql2-v0.36.0...instrumentation-mysql2-v0.37.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql2-v0.35.0...instrumentation-mysql2-v0.36.0) (2024-03-06) diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/package.json b/plugins/node/opentelemetry-instrumentation-mysql2/package.json index 218eda16af..b20fb7aaf6 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql2/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-mysql2", - "version": "0.36.0", + "version": "0.37.0", "description": "OpenTelemetry mysql2 automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,7 +46,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-nestjs-core/CHANGELOG.md index 597586fa7d..20baee6a63 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-nestjs-core-v0.35.0...instrumentation-nestjs-core-v0.36.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + ## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-nestjs-core-v0.34.0...instrumentation-nestjs-core-v0.35.0) (2024-03-06) diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json index a9524dcc9c..b831d12ff9 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-nestjs-core", - "version": "0.35.0", + "version": "0.36.0", "description": "OpenTelemetry NestJS automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-net/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-net/CHANGELOG.md index edb3844abc..d9b707ccae 100644 --- a/plugins/node/opentelemetry-instrumentation-net/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-net/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-net-v0.34.0...instrumentation-net-v0.35.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + ## [0.34.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-net-v0.33.0...instrumentation-net-v0.34.0) (2024-03-06) diff --git a/plugins/node/opentelemetry-instrumentation-net/package.json b/plugins/node/opentelemetry-instrumentation-net/package.json index fca4ae84c9..60f25541be 100644 --- a/plugins/node/opentelemetry-instrumentation-net/package.json +++ b/plugins/node/opentelemetry-instrumentation-net/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-net", - "version": "0.34.0", + "version": "0.35.0", "description": "OpenTelemetry net module automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-pg/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-pg/CHANGELOG.md index 304aa672fb..d7abf286d3 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-pg/CHANGELOG.md @@ -6,6 +6,25 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.40.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-pg-v0.39.1...instrumentation-pg-v0.40.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + + +### Performance Improvements + +* **instrumentation-pg:** reduce temp objects allocations ([#2019](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2019)) ([84ef980](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/84ef980c0be84ca84e9957bb42254cab94185c99)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.39.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-pg-v0.39.0...instrumentation-pg-v0.39.1) (2024-03-11) diff --git a/plugins/node/opentelemetry-instrumentation-pg/package.json b/plugins/node/opentelemetry-instrumentation-pg/package.json index 061bb79b46..c99ceeaf68 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/package.json +++ b/plugins/node/opentelemetry-instrumentation-pg/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-pg", - "version": "0.39.1", + "version": "0.40.0", "description": "OpenTelemetry postgres automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -52,7 +52,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", diff --git a/plugins/node/opentelemetry-instrumentation-pino/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-pino/CHANGELOG.md index 71cb4e364f..90f157fe24 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-pino/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-pino-v0.36.0...instrumentation-pino-v0.37.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-pino-v0.35.0...instrumentation-pino-v0.36.0) (2024-03-06) diff --git a/plugins/node/opentelemetry-instrumentation-pino/package.json b/plugins/node/opentelemetry-instrumentation-pino/package.json index a8b2d535de..6e16aae45d 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/package.json +++ b/plugins/node/opentelemetry-instrumentation-pino/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-pino", - "version": "0.36.0", + "version": "0.37.0", "description": "OpenTelemetry instrumentation for pino", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,7 +46,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", diff --git a/plugins/node/opentelemetry-instrumentation-redis-4/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-redis-4/CHANGELOG.md index 2b9db2b538..a8df9ad4aa 100644 --- a/plugins/node/opentelemetry-instrumentation-redis-4/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-redis-4/CHANGELOG.md @@ -12,6 +12,20 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-redis-4-v0.37.0...instrumentation-redis-4-v0.38.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-redis-4-v0.36.0...instrumentation-redis-4-v0.37.0) (2024-03-06) diff --git a/plugins/node/opentelemetry-instrumentation-redis-4/package.json b/plugins/node/opentelemetry-instrumentation-redis-4/package.json index bc9101ca8b..08077ae594 100644 --- a/plugins/node/opentelemetry-instrumentation-redis-4/package.json +++ b/plugins/node/opentelemetry-instrumentation-redis-4/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-redis-4", - "version": "0.37.0", + "version": "0.38.0", "description": "Automatic OpenTelemetry instrumentation for redis package version 4", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -50,7 +50,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", diff --git a/plugins/node/opentelemetry-instrumentation-redis/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-redis/CHANGELOG.md index b4c8a83845..180b361521 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-redis/CHANGELOG.md @@ -12,6 +12,20 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-redis-v0.37.0...instrumentation-redis-v0.38.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.37.0 to ^0.38.0 + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-redis-v0.36.0...instrumentation-redis-v0.37.0) (2024-03-06) diff --git a/plugins/node/opentelemetry-instrumentation-redis/package.json b/plugins/node/opentelemetry-instrumentation-redis/package.json index 08afb618d2..67d8fc6c1a 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/package.json +++ b/plugins/node/opentelemetry-instrumentation-redis/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-redis", - "version": "0.37.0", + "version": "0.38.0", "description": "Automatic OpenTelemetry instrumentation for redis package version 2 and 3", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -50,7 +50,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.37.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", diff --git a/plugins/node/opentelemetry-instrumentation-restify/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-restify/CHANGELOG.md index ac53719e08..65e7120fbe 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-restify/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-restify-v0.36.0...instrumentation-restify-v0.37.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-restify-v0.35.0...instrumentation-restify-v0.36.0) (2024-03-06) diff --git a/plugins/node/opentelemetry-instrumentation-restify/package.json b/plugins/node/opentelemetry-instrumentation-restify/package.json index 91822577fa..ddd13d9b97 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/package.json +++ b/plugins/node/opentelemetry-instrumentation-restify/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-restify", - "version": "0.36.0", + "version": "0.37.0", "description": "OpenTelemetry restify automatic instrumentation package", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-router/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-router/CHANGELOG.md index 69d3b9bf4f..45643528b8 100644 --- a/plugins/node/opentelemetry-instrumentation-router/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-router/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-router-v0.35.0...instrumentation-router-v0.36.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + ## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-router-v0.34.0...instrumentation-router-v0.35.0) (2024-03-06) diff --git a/plugins/node/opentelemetry-instrumentation-router/package.json b/plugins/node/opentelemetry-instrumentation-router/package.json index 0fe968456e..b57544e4de 100644 --- a/plugins/node/opentelemetry-instrumentation-router/package.json +++ b/plugins/node/opentelemetry-instrumentation-router/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-router", - "version": "0.35.0", + "version": "0.36.0", "description": "OpenTelemetry Router automatic instrumentation package", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-winston/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-winston/CHANGELOG.md index 12c52ecf97..9fbe11524d 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-winston/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-winston-v0.35.0...instrumentation-winston-v0.36.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) +* **instrumentation-winston:** add log sending to Logs API ([#1837](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1837)) ([358345f](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/358345f1384635ae2cb072082b25907dcbcaebcb)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/winston-transport bumped from ^0.1.0 to ^0.2.0 + ## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-winston-v0.34.0...instrumentation-winston-v0.35.0) (2024-03-06) diff --git a/plugins/node/opentelemetry-instrumentation-winston/package.json b/plugins/node/opentelemetry-instrumentation-winston/package.json index 7b097640e4..faeb6280f3 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/package.json +++ b/plugins/node/opentelemetry-instrumentation-winston/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-winston", - "version": "0.35.0", + "version": "0.36.0", "description": "OpenTelemetry instrumentation for winston", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -48,7 +48,7 @@ "@opentelemetry/context-async-hooks": "^1.21.0", "@opentelemetry/sdk-trace-base": "^1.21.0", "@opentelemetry/sdk-trace-node": "^1.21.0", - "@opentelemetry/winston-transport": "^0.1.0", + "@opentelemetry/winston-transport": "^0.2.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", diff --git a/plugins/web/opentelemetry-instrumentation-document-load/CHANGELOG.md b/plugins/web/opentelemetry-instrumentation-document-load/CHANGELOG.md index b83b852577..df45a2651b 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/CHANGELOG.md +++ b/plugins/web/opentelemetry-instrumentation-document-load/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-document-load-v0.36.0...instrumentation-document-load-v0.37.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-document-load-v0.35.0...instrumentation-document-load-v0.36.0) (2024-03-06) diff --git a/plugins/web/opentelemetry-instrumentation-document-load/package.json b/plugins/web/opentelemetry-instrumentation-document-load/package.json index a2dee508aa..7d1a1de173 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/package.json +++ b/plugins/web/opentelemetry-instrumentation-document-load/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-document-load", - "version": "0.36.0", + "version": "0.37.0", "description": "OpenTelemetry document-load automatic instrumentation package.", "main": "build/src/index.js", "module": "build/esm/index.js", diff --git a/plugins/web/opentelemetry-instrumentation-long-task/CHANGELOG.md b/plugins/web/opentelemetry-instrumentation-long-task/CHANGELOG.md index 318edfa217..5e8311cd24 100644 --- a/plugins/web/opentelemetry-instrumentation-long-task/CHANGELOG.md +++ b/plugins/web/opentelemetry-instrumentation-long-task/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-long-task-v0.36.0...instrumentation-long-task-v0.37.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-long-task-v0.35.0...instrumentation-long-task-v0.36.0) (2024-03-06) diff --git a/plugins/web/opentelemetry-instrumentation-long-task/package.json b/plugins/web/opentelemetry-instrumentation-long-task/package.json index 8685d9ffd5..0c230f899d 100644 --- a/plugins/web/opentelemetry-instrumentation-long-task/package.json +++ b/plugins/web/opentelemetry-instrumentation-long-task/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-long-task", - "version": "0.36.0", + "version": "0.37.0", "description": "OpenTelemetry long task API automatic instrumentation package.", "main": "build/src/index.js", "module": "build/esm/index.js", diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/CHANGELOG.md b/plugins/web/opentelemetry-instrumentation-user-interaction/CHANGELOG.md index d2c3a95924..20ecf917d0 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/CHANGELOG.md +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-user-interaction-v0.36.0...instrumentation-user-interaction-v0.37.0) (2024-04-03) + + +### Features + +* **deps:** update otel-js to 1.23.0/0.50.0 ([#2076](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2076)) ([d5f079b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/d5f079b3992395dcfb3b791c9fdaeefd6d6526f8)) + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-user-interaction-v0.35.0...instrumentation-user-interaction-v0.36.0) (2024-03-06) diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/package.json b/plugins/web/opentelemetry-instrumentation-user-interaction/package.json index fb7b3f8e77..8f2658f700 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/package.json +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-user-interaction", - "version": "0.36.0", + "version": "0.37.0", "description": "OpenTelemetry UserInteraction automatic instrumentation package.", "main": "build/src/index.js", "module": "build/esm/index.js", From 1c9aec19059c69bc215c547186206d8efb300f6a Mon Sep 17 00:00:00 2001 From: David Luna Date: Thu, 4 Apr 2024 00:31:33 +0200 Subject: [PATCH 021/121] refactor(instr-fastify): use exported strings for attributes (#2078) Refs: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2025 --- package-lock.json | 4 +-- .../README.md | 10 +++++++ .../package.json | 2 +- .../src/instrumentation.ts | 13 +++------ .../test/fixtures/use-fastify.mjs | 1 - .../test/instrumentation.test.ts | 27 +++++++++---------- 6 files changed, 29 insertions(+), 28 deletions(-) diff --git a/package-lock.json b/package-lock.json index b86482f96e..c30bea59b2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37582,7 +37582,7 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@fastify/express": "^2.0.2", @@ -46026,7 +46026,7 @@ "@opentelemetry/instrumentation-http": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/express": "4.17.18", "@types/mocha": "7.0.2", "@types/node": "18.15.3", diff --git a/plugins/node/opentelemetry-instrumentation-fastify/README.md b/plugins/node/opentelemetry-instrumentation-fastify/README.md index a4a30e62cd..9f230b7b5b 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/README.md +++ b/plugins/node/opentelemetry-instrumentation-fastify/README.md @@ -68,6 +68,16 @@ const fastifyInstrumentation = new FastifyInstrumentation({ }); ``` +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | Notes | +| ------------ | ---------------------------------- | -------------------------- | +| `http.route` | The matched route (path template). | Key: `SEMATTRS_HTTP_ROUTE` | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/opentelemetry-instrumentation-fastify/package.json b/plugins/node/opentelemetry-instrumentation-fastify/package.json index 70b5a4bd0d..0f527fc875 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/package.json +++ b/plugins/node/opentelemetry-instrumentation-fastify/package.json @@ -66,7 +66,7 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-fastify#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts index dacc257e97..223ed28854 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts @@ -14,19 +14,14 @@ * limitations under the License. */ -import { - context, - SpanAttributes, - SpanStatusCode, - trace, -} from '@opentelemetry/api'; +import { context, Attributes, SpanStatusCode, trace } from '@opentelemetry/api'; import { getRPCMetadata, RPCType } from '@opentelemetry/core'; import { InstrumentationBase, InstrumentationNodeModuleDefinition, safeExecuteInTheMiddle, } from '@opentelemetry/instrumentation'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMATTRS_HTTP_ROUTE } from '@opentelemetry/semantic-conventions'; import type { HookHandlerDoneFunction, FastifyInstance, @@ -275,10 +270,10 @@ export class FastifyInstrumentation extends InstrumentationBase { handlerName || this.pluginName || ANONYMOUS_NAME }`; - const spanAttributes: SpanAttributes = { + const spanAttributes: Attributes = { [AttributeNames.PLUGIN_NAME]: this.pluginName, [AttributeNames.FASTIFY_TYPE]: FastifyTypes.REQUEST_HANDLER, - [SemanticAttributes.HTTP_ROUTE]: anyRequest.routeOptions + [SEMATTRS_HTTP_ROUTE]: anyRequest.routeOptions ? anyRequest.routeOptions.url // since fastify@4.10.0 : request.routerPath, }; diff --git a/plugins/node/opentelemetry-instrumentation-fastify/test/fixtures/use-fastify.mjs b/plugins/node/opentelemetry-instrumentation-fastify/test/fixtures/use-fastify.mjs index a0d81bcc38..4b234dcb7b 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/test/fixtures/use-fastify.mjs +++ b/plugins/node/opentelemetry-instrumentation-fastify/test/fixtures/use-fastify.mjs @@ -17,7 +17,6 @@ // Use fastify from an ES module: // node --experimental-loader=@opentelemetry/instrumentation/hook.mjs use-fastify.mjs -import { trace } from '@opentelemetry/api'; import { createTestNodeSdk } from '@opentelemetry/contrib-test-utils'; import { FastifyInstrumentation } from '../../build/src/index.js'; diff --git a/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts b/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts index 3c0f541b06..73fb586da1 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/test/instrumentation.test.ts @@ -16,7 +16,10 @@ import * as assert from 'assert'; import { context, SpanStatusCode } from '@opentelemetry/api'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_HTTP_ROUTE, + SEMATTRS_HTTP_METHOD, +} from '@opentelemetry/semantic-conventions'; import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks'; import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import { @@ -157,7 +160,7 @@ describe('fastify', () => { assert.deepStrictEqual(span.attributes, { 'fastify.type': 'request_handler', 'plugin.name': 'fastify -> @fastify/express', - [SemanticAttributes.HTTP_ROUTE]: '/test', + [SEMATTRS_HTTP_ROUTE]: '/test', }); assert.strictEqual( span.name, @@ -183,7 +186,7 @@ describe('fastify', () => { 'fastify.type': 'request_handler', 'fastify.name': 'namedHandler', 'plugin.name': 'fastify -> @fastify/express', - [SemanticAttributes.HTTP_ROUTE]: '/test', + [SEMATTRS_HTTP_ROUTE]: '/test', }); assert.strictEqual(span.name, 'request handler - namedHandler'); @@ -474,10 +477,7 @@ describe('fastify', () => { describe('using requestHook in config', () => { it('calls requestHook provided function when set in config', async () => { const requestHook = (span: Span, info: FastifyRequestInfo) => { - span.setAttribute( - SemanticAttributes.HTTP_METHOD, - info.request.method - ); + span.setAttribute(SEMATTRS_HTTP_METHOD, info.request.method); }; instrumentation.setConfig({ @@ -498,17 +498,14 @@ describe('fastify', () => { assert.deepStrictEqual(span.attributes, { 'fastify.type': 'request_handler', 'plugin.name': 'fastify -> @fastify/express', - [SemanticAttributes.HTTP_ROUTE]: '/test', - [SemanticAttributes.HTTP_METHOD]: 'GET', + [SEMATTRS_HTTP_ROUTE]: '/test', + [SEMATTRS_HTTP_METHOD]: 'GET', }); }); it('does not propagate an error from a requestHook that throws exception', async () => { const requestHook = (span: Span, info: FastifyRequestInfo) => { - span.setAttribute( - SemanticAttributes.HTTP_METHOD, - info.request.method - ); + span.setAttribute(SEMATTRS_HTTP_METHOD, info.request.method); throw Error('error thrown in requestHook'); }; @@ -531,8 +528,8 @@ describe('fastify', () => { assert.deepStrictEqual(span.attributes, { 'fastify.type': 'request_handler', 'plugin.name': 'fastify -> @fastify/express', - [SemanticAttributes.HTTP_ROUTE]: '/test', - [SemanticAttributes.HTTP_METHOD]: 'GET', + [SEMATTRS_HTTP_ROUTE]: '/test', + [SEMATTRS_HTTP_METHOD]: 'GET', }); }); }); From b006f7f4ce466611e437240508b9bc4deb622175 Mon Sep 17 00:00:00 2001 From: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com> Date: Thu, 4 Apr 2024 14:43:51 -0700 Subject: [PATCH 022/121] fix(winston-transport): Typescript issue with OpenTelemetryTransportV3 not assignable to TransportStream (#2079) Fixes: #2015 --- packages/winston-transport/src/OpenTelemetryTransportV3.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/winston-transport/src/OpenTelemetryTransportV3.ts b/packages/winston-transport/src/OpenTelemetryTransportV3.ts index 9ff40c4929..fe759676e9 100644 --- a/packages/winston-transport/src/OpenTelemetryTransportV3.ts +++ b/packages/winston-transport/src/OpenTelemetryTransportV3.ts @@ -15,14 +15,14 @@ */ import { Logger, logs } from '@opentelemetry/api-logs'; -import * as Transport from 'winston-transport'; +import TransportStream = require('winston-transport'); import { VERSION } from './version'; import { emitLogRecord } from './utils'; -export class OpenTelemetryTransportV3 extends Transport { +export class OpenTelemetryTransportV3 extends TransportStream { private _logger: Logger; - constructor(options?: Transport.TransportStreamOptions) { + constructor(options?: TransportStream.TransportStreamOptions) { super(options); this._logger = logs.getLogger('@opentelemetry/winston-transport', VERSION); } From fe18e2fbb2a6535cb72f314fdb1550a3a4160403 Mon Sep 17 00:00:00 2001 From: David Luna Date: Fri, 5 Apr 2024 00:21:52 +0200 Subject: [PATCH 023/121] feat(instr-undici): add instrumentation for `undici` versions `>=5 <7` and global `fetch` API (#1951) Closes: https://github.com/open-telemetry/opentelemetry-js/issues/4333 Co-authored-by: Jamie Danielson Co-authored-by: Trent Mick Co-authored-by: Marc Pichler --- .github/component_owners.yml | 3 + .release-please-manifest.json | 64 +- package-lock.json | 426 ++++++++++ .../node/instrumentation-undici/.eslintignore | 1 + .../node/instrumentation-undici/.eslintrc.js | 7 + plugins/node/instrumentation-undici/.tav.yml | 8 + plugins/node/instrumentation-undici/LICENSE | 201 +++++ plugins/node/instrumentation-undici/README.md | 100 +++ .../node/instrumentation-undici/package.json | 70 ++ .../src/enums/SemanticAttributes.ts | 168 ++++ .../node/instrumentation-undici/src/index.ts | 25 + .../src/internal-types.ts | 48 ++ .../node/instrumentation-undici/src/types.ts | 75 ++ .../node/instrumentation-undici/src/undici.ts | 483 ++++++++++++ .../instrumentation-undici/test/fetch.test.ts | 414 ++++++++++ .../test/metrics.test.ts | 194 +++++ .../test/undici.test.ts | 746 ++++++++++++++++++ .../test/utils/assertSpan.ts | 191 +++++ .../test/utils/mock-metrics-reader.ts | 47 ++ .../test/utils/mock-propagation.ts | 52 ++ .../test/utils/mock-server.ts | 74 ++ .../node/instrumentation-undici/tsconfig.json | 11 + release-please-config.json | 1 + 23 files changed, 3408 insertions(+), 1 deletion(-) create mode 100644 plugins/node/instrumentation-undici/.eslintignore create mode 100644 plugins/node/instrumentation-undici/.eslintrc.js create mode 100644 plugins/node/instrumentation-undici/.tav.yml create mode 100644 plugins/node/instrumentation-undici/LICENSE create mode 100644 plugins/node/instrumentation-undici/README.md create mode 100644 plugins/node/instrumentation-undici/package.json create mode 100644 plugins/node/instrumentation-undici/src/enums/SemanticAttributes.ts create mode 100644 plugins/node/instrumentation-undici/src/index.ts create mode 100644 plugins/node/instrumentation-undici/src/internal-types.ts create mode 100644 plugins/node/instrumentation-undici/src/types.ts create mode 100644 plugins/node/instrumentation-undici/src/undici.ts create mode 100644 plugins/node/instrumentation-undici/test/fetch.test.ts create mode 100644 plugins/node/instrumentation-undici/test/metrics.test.ts create mode 100644 plugins/node/instrumentation-undici/test/undici.test.ts create mode 100644 plugins/node/instrumentation-undici/test/utils/assertSpan.ts create mode 100644 plugins/node/instrumentation-undici/test/utils/mock-metrics-reader.ts create mode 100644 plugins/node/instrumentation-undici/test/utils/mock-propagation.ts create mode 100644 plugins/node/instrumentation-undici/test/utils/mock-server.ts create mode 100644 plugins/node/instrumentation-undici/tsconfig.json diff --git a/.github/component_owners.yml b/.github/component_owners.yml index be9a44a13b..fdc9c0fc10 100644 --- a/.github/component_owners.yml +++ b/.github/component_owners.yml @@ -123,6 +123,9 @@ components: - rauno56 plugins/node/opentelemetry-instrumentation-router: - rauno56 + plugins/node/opentelemetry-instrumentation-undici: + - david-luna + - trentm plugins/node/opentelemetry-instrumentation-winston: - seemk plugins/web/opentelemetry-instrumentation-document-load: diff --git a/.release-please-manifest.json b/.release-please-manifest.json index a58a58e654..da8e4144db 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1 +1,63 @@ -{"detectors/node/opentelemetry-resource-detector-alibaba-cloud":"0.28.8","detectors/node/opentelemetry-resource-detector-aws":"1.4.1","detectors/node/opentelemetry-resource-detector-azure":"0.2.6","detectors/node/opentelemetry-resource-detector-container":"0.3.8","detectors/node/opentelemetry-resource-detector-gcp":"0.29.8","detectors/node/opentelemetry-resource-detector-github":"0.28.1","detectors/node/opentelemetry-resource-detector-instana":"0.8.0","metapackages/auto-instrumentations-node":"0.44.0","metapackages/auto-instrumentations-web":"0.38.0","packages/opentelemetry-host-metrics":"0.35.0","packages/opentelemetry-id-generator-aws-xray":"1.2.1","packages/opentelemetry-propagation-utils":"0.30.8","packages/opentelemetry-redis-common":"0.36.1","packages/opentelemetry-sql-common":"0.40.0","packages/opentelemetry-test-utils":"0.38.0","packages/winston-transport":"0.2.0","plugins/node/instrumentation-amqplib":"0.36.0","plugins/node/instrumentation-cucumber":"0.5.0","plugins/node/instrumentation-dataloader":"0.8.0","plugins/node/instrumentation-fs":"0.11.0","plugins/node/instrumentation-lru-memoizer":"0.36.0","plugins/node/instrumentation-mongoose":"0.37.0","plugins/node/instrumentation-runtime-node":"0.3.0","plugins/node/instrumentation-socket.io":"0.38.0","plugins/node/instrumentation-tedious":"0.9.0","plugins/node/opentelemetry-instrumentation-aws-lambda":"0.40.0","plugins/node/opentelemetry-instrumentation-aws-sdk":"0.40.0","plugins/node/opentelemetry-instrumentation-bunyan":"0.37.0","plugins/node/opentelemetry-instrumentation-cassandra":"0.37.0","plugins/node/opentelemetry-instrumentation-connect":"0.35.0","plugins/node/opentelemetry-instrumentation-dns":"0.35.0","plugins/node/opentelemetry-instrumentation-express":"0.37.0","plugins/node/opentelemetry-instrumentation-fastify":"0.35.0","plugins/node/opentelemetry-instrumentation-generic-pool":"0.35.0","plugins/node/opentelemetry-instrumentation-graphql":"0.39.0","plugins/node/opentelemetry-instrumentation-hapi":"0.36.0","plugins/node/opentelemetry-instrumentation-ioredis":"0.39.0","plugins/node/opentelemetry-instrumentation-knex":"0.35.0","plugins/node/opentelemetry-instrumentation-koa":"0.39.0","plugins/node/opentelemetry-instrumentation-memcached":"0.35.0","plugins/node/opentelemetry-instrumentation-mongodb":"0.42.0","plugins/node/opentelemetry-instrumentation-mysql":"0.37.0","plugins/node/opentelemetry-instrumentation-mysql2":"0.37.0","plugins/node/opentelemetry-instrumentation-nestjs-core":"0.36.0","plugins/node/opentelemetry-instrumentation-net":"0.35.0","plugins/node/opentelemetry-instrumentation-pg":"0.40.0","plugins/node/opentelemetry-instrumentation-pino":"0.37.0","plugins/node/opentelemetry-instrumentation-redis":"0.38.0","plugins/node/opentelemetry-instrumentation-redis-4":"0.38.0","plugins/node/opentelemetry-instrumentation-restify":"0.37.0","plugins/node/opentelemetry-instrumentation-router":"0.36.0","plugins/node/opentelemetry-instrumentation-winston":"0.36.0","plugins/web/opentelemetry-instrumentation-document-load":"0.37.0","plugins/web/opentelemetry-instrumentation-long-task":"0.37.0","plugins/web/opentelemetry-instrumentation-user-interaction":"0.37.0","plugins/web/opentelemetry-plugin-react-load":"0.30.0","propagators/opentelemetry-propagator-aws-xray":"1.3.1","propagators/opentelemetry-propagator-grpc-census-binary":"0.27.1","propagators/opentelemetry-propagator-instana":"0.3.1","propagators/opentelemetry-propagator-ot-trace":"0.27.1"} +{ + "detectors/node/opentelemetry-resource-detector-alibaba-cloud": "0.28.8", + "detectors/node/opentelemetry-resource-detector-aws": "1.4.1", + "detectors/node/opentelemetry-resource-detector-azure": "0.2.6", + "detectors/node/opentelemetry-resource-detector-container": "0.3.8", + "detectors/node/opentelemetry-resource-detector-gcp": "0.29.8", + "detectors/node/opentelemetry-resource-detector-github": "0.28.1", + "detectors/node/opentelemetry-resource-detector-instana": "0.8.0", + "metapackages/auto-instrumentations-node": "0.44.0", + "metapackages/auto-instrumentations-web": "0.38.0", + "packages/opentelemetry-host-metrics": "0.35.0", + "packages/opentelemetry-id-generator-aws-xray": "1.2.1", + "packages/opentelemetry-propagation-utils": "0.30.8", + "packages/opentelemetry-redis-common": "0.36.1", + "packages/opentelemetry-sql-common": "0.40.0", + "packages/opentelemetry-test-utils": "0.38.0", + "packages/winston-transport": "0.2.0", + "plugins/node/instrumentation-amqplib": "0.36.0", + "plugins/node/instrumentation-cucumber": "0.5.0", + "plugins/node/instrumentation-dataloader": "0.8.0", + "plugins/node/instrumentation-fs": "0.11.0", + "plugins/node/instrumentation-lru-memoizer": "0.36.0", + "plugins/node/instrumentation-mongoose": "0.37.0", + "plugins/node/instrumentation-runtime-node": "0.3.0", + "plugins/node/instrumentation-socket.io": "0.38.0", + "plugins/node/instrumentation-tedious": "0.9.0", + "plugins/node/instrumentation-undici": "0.1.0", + "plugins/node/opentelemetry-instrumentation-aws-lambda": "0.40.0", + "plugins/node/opentelemetry-instrumentation-aws-sdk": "0.40.0", + "plugins/node/opentelemetry-instrumentation-bunyan": "0.37.0", + "plugins/node/opentelemetry-instrumentation-cassandra": "0.37.0", + "plugins/node/opentelemetry-instrumentation-connect": "0.35.0", + "plugins/node/opentelemetry-instrumentation-dns": "0.35.0", + "plugins/node/opentelemetry-instrumentation-express": "0.37.0", + "plugins/node/opentelemetry-instrumentation-fastify": "0.35.0", + "plugins/node/opentelemetry-instrumentation-generic-pool": "0.35.0", + "plugins/node/opentelemetry-instrumentation-graphql": "0.39.0", + "plugins/node/opentelemetry-instrumentation-hapi": "0.36.0", + "plugins/node/opentelemetry-instrumentation-ioredis": "0.39.0", + "plugins/node/opentelemetry-instrumentation-knex": "0.35.0", + "plugins/node/opentelemetry-instrumentation-koa": "0.39.0", + "plugins/node/opentelemetry-instrumentation-memcached": "0.35.0", + "plugins/node/opentelemetry-instrumentation-mongodb": "0.42.0", + "plugins/node/opentelemetry-instrumentation-mysql": "0.37.0", + "plugins/node/opentelemetry-instrumentation-mysql2": "0.37.0", + "plugins/node/opentelemetry-instrumentation-nestjs-core": "0.36.0", + "plugins/node/opentelemetry-instrumentation-net": "0.35.0", + "plugins/node/opentelemetry-instrumentation-pg": "0.40.0", + "plugins/node/opentelemetry-instrumentation-pino": "0.37.0", + "plugins/node/opentelemetry-instrumentation-redis": "0.38.0", + "plugins/node/opentelemetry-instrumentation-redis-4": "0.38.0", + "plugins/node/opentelemetry-instrumentation-restify": "0.37.0", + "plugins/node/opentelemetry-instrumentation-router": "0.36.0", + "plugins/node/opentelemetry-instrumentation-winston": "0.36.0", + "plugins/web/opentelemetry-instrumentation-document-load": "0.37.0", + "plugins/web/opentelemetry-instrumentation-long-task": "0.37.0", + "plugins/web/opentelemetry-instrumentation-user-interaction": "0.37.0", + "plugins/web/opentelemetry-plugin-react-load": "0.30.0", + "propagators/opentelemetry-propagator-aws-xray": "1.3.1", + "propagators/opentelemetry-propagator-grpc-census-binary": "0.27.1", + "propagators/opentelemetry-propagator-instana": "0.3.1", + "propagators/opentelemetry-propagator-ot-trace": "0.27.1" +} diff --git a/package-lock.json b/package-lock.json index c30bea59b2..9a502dc61d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8582,6 +8582,10 @@ "resolved": "plugins/node/instrumentation-tedious", "link": true }, + "node_modules/@opentelemetry/instrumentation-undici": { + "resolved": "plugins/node/instrumentation-undici", + "link": true + }, "node_modules/@opentelemetry/instrumentation-user-interaction": { "resolved": "plugins/web/opentelemetry-instrumentation-user-interaction", "link": true @@ -14780,6 +14784,12 @@ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true }, + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true + }, "node_modules/cookies": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", @@ -19264,6 +19274,15 @@ "node": ">= 0.6.0" } }, + "node_modules/hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/highlight.js": { "version": "10.7.3", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", @@ -32544,6 +32563,42 @@ "node": ">=4" } }, + "node_modules/superagent": { + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.9.tgz", + "integrity": "sha512-4C7Bh5pyHTvU33KpZgwrNKh/VQnvgtCSqPRfJAUdmrtSYePVzVg4E4OzsrbkhJj9O7SO6Bnv75K/F8XVZT8YHA==", + "dev": true, + "dependencies": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.4", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.1.2", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.11.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=6.4.0 <13 || >=14" + } + }, + "node_modules/superagent/node_modules/formidable": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz", + "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==", + "dev": true, + "dependencies": { + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0", + "qs": "^6.11.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, "node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -34373,6 +34428,15 @@ "ieee754": "^1.1.13" } }, + "node_modules/undici": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.10.1.tgz", + "integrity": "sha512-kSzmWrOx3XBKTgPm4Tal8Hyl3yf+hzlA00SAf4goxv8LZYafKmS6gJD/7Fe5HH/DMNiFTRXvkwhLo7mUn5fuQQ==", + "dev": true, + "engines": { + "node": ">=18.0" + } + }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", @@ -37312,6 +37376,169 @@ "@opentelemetry/api": "^1.3.0" } }, + "plugins/node/instrumentation-undici": { + "name": "@opentelemetry/instrumentation-undici", + "version": "0.1.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.49.1" + }, + "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", + "@types/mocha": "7.0.2", + "@types/node": "18.6.5", + "mocha": "7.2.0", + "nyc": "15.1.0", + "rimraf": "5.0.5", + "semver": "^7.6.0", + "superagent": "8.0.9", + "test-all-versions": "6.0.0", + "ts-mocha": "10.0.0", + "typescript": "4.4.4", + "undici": "6.10.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.7.0" + } + }, + "plugins/node/instrumentation-undici/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "plugins/node/instrumentation-undici/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "plugins/node/instrumentation-undici/node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "plugins/node/instrumentation-undici/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "plugins/node/instrumentation-undici/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "plugins/node/instrumentation-undici/node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "plugins/node/instrumentation-undici/node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "plugins/node/instrumentation-undici/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "plugins/node/instrumentation-undici/node_modules/test-all-versions": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-all-versions/-/test-all-versions-6.0.0.tgz", + "integrity": "sha512-/9wVTBRa7+arvItGinCYy/8+z7sHTsrs9cwEY/xAnzrkSEM7Tp2Cz49ewYZYuO1YYMLqxEaQp2g7Dnns7n7BGA==", + "dev": true, + "dependencies": { + "after-all-results": "^2.0.0", + "ansi-diff-stream": "^1.2.1", + "cli-spinners": "^2.9.2", + "deepmerge": "^4.3.1", + "import-fresh": "^3.3.0", + "is-ci": "^3.0.1", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimist": "^1.2.8", + "npm-package-versions": "^1.0.1", + "once": "^1.4.0", + "parse-env-string": "^1.0.1", + "resolve": "^1.22.8", + "semver": "^7.5.4", + "spawn-npm-install": "^1.2.0", + "which": "^2.0.2" + }, + "bin": { + "tav": "index.js" + }, + "engines": { + "node": ">=14" + } + }, "plugins/node/opentelemetry-instrumentation-aws-lambda": { "name": "@opentelemetry/instrumentation-aws-lambda", "version": "0.40.0", @@ -38571,6 +38798,39 @@ "@opentelemetry/api": "^1.3.0" } }, + "plugins/node/opentelemetry-instrumentation-undici": { + "name": "@opentelemetry/instrumentation-undici", + "version": "0.33.0", + "extraneous": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.49.1" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/sdk-metrics": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/sdk-trace-node": "^1.8.0", + "@types/mocha": "7.0.2", + "@types/node": "18.6.5", + "mocha": "7.2.0", + "nyc": "15.1.0", + "rimraf": "5.0.5", + "semver": "^7.6.0", + "superagent": "8.0.9", + "test-all-versions": "6.0.0", + "ts-mocha": "10.0.0", + "typescript": "4.4.4", + "undici": "^6.7.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, "plugins/node/opentelemetry-instrumentation-winston": { "name": "@opentelemetry/instrumentation-winston", "version": "0.36.0", @@ -47127,6 +47387,122 @@ "typescript": "4.4.4" } }, + "@opentelemetry/instrumentation-undici": { + "version": "file:plugins/node/instrumentation-undici", + "requires": { + "@opentelemetry/api": "^1.7.0", + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/sdk-metrics": "^1.8.0", + "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/sdk-trace-node": "^1.8.0", + "@types/mocha": "7.0.2", + "@types/node": "18.6.5", + "mocha": "7.2.0", + "nyc": "15.1.0", + "rimraf": "5.0.5", + "semver": "^7.6.0", + "superagent": "8.0.9", + "test-all-versions": "6.0.0", + "ts-mocha": "10.0.0", + "typescript": "4.4.4", + "undici": "6.10.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "requires": { + "ci-info": "^3.2.0" + } + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "test-all-versions": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-all-versions/-/test-all-versions-6.0.0.tgz", + "integrity": "sha512-/9wVTBRa7+arvItGinCYy/8+z7sHTsrs9cwEY/xAnzrkSEM7Tp2Cz49ewYZYuO1YYMLqxEaQp2g7Dnns7n7BGA==", + "dev": true, + "requires": { + "after-all-results": "^2.0.0", + "ansi-diff-stream": "^1.2.1", + "cli-spinners": "^2.9.2", + "deepmerge": "^4.3.1", + "import-fresh": "^3.3.0", + "is-ci": "^3.0.1", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimist": "^1.2.8", + "npm-package-versions": "^1.0.1", + "once": "^1.4.0", + "parse-env-string": "^1.0.1", + "resolve": "^1.22.8", + "semver": "^7.5.4", + "spawn-npm-install": "^1.2.0", + "which": "^2.0.2" + } + } + } + }, "@opentelemetry/instrumentation-user-interaction": { "version": "file:plugins/web/opentelemetry-instrumentation-user-interaction", "requires": { @@ -52659,6 +53035,12 @@ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true }, + "cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true + }, "cookies": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", @@ -56185,6 +56567,12 @@ } } }, + "hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", + "dev": true + }, "highlight.js": { "version": "10.7.3", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", @@ -66725,6 +67113,38 @@ "through": "^2.3.4" } }, + "superagent": { + "version": "8.0.9", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.9.tgz", + "integrity": "sha512-4C7Bh5pyHTvU33KpZgwrNKh/VQnvgtCSqPRfJAUdmrtSYePVzVg4E4OzsrbkhJj9O7SO6Bnv75K/F8XVZT8YHA==", + "dev": true, + "requires": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.4", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.1.2", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.11.0", + "semver": "^7.3.8" + }, + "dependencies": { + "formidable": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz", + "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==", + "dev": true, + "requires": { + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0", + "qs": "^6.11.0" + } + } + } + }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -68080,6 +68500,12 @@ } } }, + "undici": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.10.1.tgz", + "integrity": "sha512-kSzmWrOx3XBKTgPm4Tal8Hyl3yf+hzlA00SAf4goxv8LZYafKmS6gJD/7Fe5HH/DMNiFTRXvkwhLo7mUn5fuQQ==", + "dev": true + }, "undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", diff --git a/plugins/node/instrumentation-undici/.eslintignore b/plugins/node/instrumentation-undici/.eslintignore new file mode 100644 index 0000000000..378eac25d3 --- /dev/null +++ b/plugins/node/instrumentation-undici/.eslintignore @@ -0,0 +1 @@ +build diff --git a/plugins/node/instrumentation-undici/.eslintrc.js b/plugins/node/instrumentation-undici/.eslintrc.js new file mode 100644 index 0000000000..f756f4488b --- /dev/null +++ b/plugins/node/instrumentation-undici/.eslintrc.js @@ -0,0 +1,7 @@ +module.exports = { + "env": { + "mocha": true, + "node": true + }, + ...require('../../../eslint.config.js') +} diff --git a/plugins/node/instrumentation-undici/.tav.yml b/plugins/node/instrumentation-undici/.tav.yml new file mode 100644 index 0000000000..9ef69e2462 --- /dev/null +++ b/plugins/node/instrumentation-undici/.tav.yml @@ -0,0 +1,8 @@ +undici: + jobs: + - versions: ">=5 <6" + node: '>=14' + commands: npm run test + - versions: ">=6 <7" + node: '>=18' + commands: npm run test diff --git a/plugins/node/instrumentation-undici/LICENSE b/plugins/node/instrumentation-undici/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/plugins/node/instrumentation-undici/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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 + + http://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. diff --git a/plugins/node/instrumentation-undici/README.md b/plugins/node/instrumentation-undici/README.md new file mode 100644 index 0000000000..38b6fd6e9e --- /dev/null +++ b/plugins/node/instrumentation-undici/README.md @@ -0,0 +1,100 @@ +# OpenTelemetry Undici/fetch Instrumentation for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +**Note: This is an experimental package under active development. New releases may include breaking changes.** + +This module provides automatic instrumentation for [`undici`](https://undici.nodejs.org/) and Node.js global [`fetch`](https://nodejs.org/docs/latest/api/globals.html#fetch) API. +If you're looking the instrumentation for browser's `fetch` API it is located at [https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-fetch/](https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-fetch/) + +## Installation + +```bash +npm install --save @opentelemetry/instrumentation-undici +``` + +## Usage + +OpenTelemetry Undici/fetch Instrumentation allows the user to automatically collect trace data and export them to their backend of choice, to give observability to distributed systems. + +To load a specific instrumentation (Undici in this case), specify it in the Node Tracer's configuration. + +```js +const { UndiciInstrumentation } = require('@opentelemetry/instrumentation-undici'); +const { + ConsoleSpanExporter, + NodeTracerProvider, + SimpleSpanProcessor, +} = require('@opentelemetry/sdk-trace-node'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); + +const provider = new NodeTracerProvider(); + +provider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter())); +provider.register(); + +registerInstrumentations({ + instrumentations: [new UndiciInstrumentation()], +}); + +``` + +### Undici/Fetch instrumentation Options + +Undici instrumentation has few options available to choose from. You can set the following: + +| Options | Type | Description | +| ------- | ---- | ----------- | +| [`ignoreRequestHook`](https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/plugins/node/opentelemetry-instrumentation-undici/src/types.ts#63) | `IgnoreRequestFunction` | Undici instrumentation will not trace all incoming requests that matched with custom function. | +| [`requestHook`](https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/plugins/node/opentelemetry-instrumentation-undici/src/types.ts#65) | `RequestHookFunction` | Function for adding custom attributes before request is handled. | +| [`startSpanHook`](https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/plugins/node/opentelemetry-instrumentation-undici/src/types.ts#67) | `StartSpanHookFunction` | Function for adding custom attributes before a span is started. | +| [`requireParentforSpans`](https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/plugins/node/opentelemetry-instrumentation-undici/src/types.ts#69) | `Boolean` | Require a parent span is present to create new span for outgoing requests. | +| [`headersToSpanAttributes`](https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/plugins/node/opentelemetry-instrumentation-undici/src/types.ts#71) | `Object` | List of case insensitive HTTP headers to convert to span attributes. Headers will be converted to span attributes in the form of `http.{request\|response}.header.header-name` where the name is only lowercased, e.g. `http.response.header.content-length`| + +### Observations + +This instrumentation subscribes to certain [diagnostics_channel](https://nodejs.org/api/diagnostics_channel.html) to intercept the client requests +and generate traces and metrics. In particular tracing spans are started when [undici:request:create](https://undici.nodejs.org/#/docs/api/DiagnosticsChannel?id=undicirequestcreate) +channel receives a message and ended when [undici:request:trailers](https://undici.nodejs.org/#/docs/api/DiagnosticsChannel?id=undicirequesttrailers) channel receive a message. +This means the full response body has been received when the instrumentation ends the span. + +## Semantic Conventions + +This package uses Semantic Conventions [Version 1.24.0](https://github.com/open-telemetry/semantic-conventions/tree/v1.24.0/docs/http). As for now the Semantic Conventions +are bundled in this package but eventually will be imported from `@opentelemetry/semantic-conventions` package when it is updated to latest version. +Ref: [opentelemetry-js/issues/4235](https://github.com/open-telemetry/opentelemetry-js/issues/4235) + +Attributes collected: + +| Attribute | Short Description | Notes | +| ------------ | ---------------------------------- | ----------------- | +| `http.request.method` | HTTP request method. | Key: `HTTP_REQUEST_METHOD` | +| `http.request.method_original` | Original HTTP method sent by the client in the request line. | Key: `HTTP_REQUEST_METHOD_ORIGINAL` | +| `url.full` | Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986). | Key: `URL_FULL` | +| `url.path` | The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component. | Key: `URL_PATH` | +| `url.query` | The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component. | Key: `URL_QUERY` | +| `url.scheme` | HTTP request method. | Key: `URL_SCHEME` | +| `server.address` | Server domain name, IP address or Unix domain socket name. | Key: `HTTP_REQUEST_METHOD` | +| `server.port` | Server port number. | Key: `HTTP_REQUEST_METHOD` | +| `user_agent.original` | Value of the HTTP User-Agent header sent by the client. | Key: `USER_AGENT_ORIGINAL` | +| `network.peer.address` | Peer address of the network connection - IP address or Unix domain socket name. | Key: `NETWORK_PEER_ADDRESS` | +| `network.peer.port` | Peer port number of the network connection. | Key: `NETWORK_PEER_PORT` | +| `http.response.status_code` | [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). | Key: `HTTP_RESPONSE_STATUS_CODE` | +| `error.type` | Describes a class of error the operation ended with. | Key: `ERROR_TYPE` | + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-router +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-router.svg diff --git a/plugins/node/instrumentation-undici/package.json b/plugins/node/instrumentation-undici/package.json new file mode 100644 index 0000000000..b235be769a --- /dev/null +++ b/plugins/node/instrumentation-undici/package.json @@ -0,0 +1,70 @@ +{ + "name": "@opentelemetry/instrumentation-undici", + "version": "0.1.0", + "description": "OpenTelemetry undici/fetch automatic instrumentation package.", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": "open-telemetry/opentelemetry-js-contrib", + "scripts": { + "prepublishOnly": "npm run compile", + "compile": "tsc -p .", + "test": "nyc ts-mocha -p tsconfig.json test/**/*.test.ts", + "test-all-versions": "tav", + "tdd": "npm run test -- --watch-extensions ts --watch", + "clean": "rimraf build/*", + "lint": "eslint . --ext .ts", + "lint:fix": "eslint . --ext .ts --fix", + "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../", + "watch": "tsc -w", + "precompile": "tsc --version && lerna run version:update --scope @opentelemetry/instrumentation-undici --include-dependencies", + "prewatch": "npm run precompile", + "version:update": "node ../../../scripts/version-update.js" + }, + "keywords": [ + "opentelemetry", + "fetch", + "undici", + "nodejs", + "tracing", + "instrumentation" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "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", + "@types/mocha": "7.0.2", + "@types/node": "18.6.5", + "mocha": "7.2.0", + "nyc": "15.1.0", + "rimraf": "5.0.5", + "semver": "^7.6.0", + "superagent": "8.0.9", + "test-all-versions": "6.0.0", + "ts-mocha": "10.0.0", + "typescript": "4.4.4", + "undici": "6.10.1" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.7.0" + }, + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.50.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-undici#readme", + "sideEffects": false +} diff --git a/plugins/node/instrumentation-undici/src/enums/SemanticAttributes.ts b/plugins/node/instrumentation-undici/src/enums/SemanticAttributes.ts new file mode 100644 index 0000000000..0e65b51aeb --- /dev/null +++ b/plugins/node/instrumentation-undici/src/enums/SemanticAttributes.ts @@ -0,0 +1,168 @@ +/* + * 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. + */ + +// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2 +export const SemanticAttributes = { + /** + * State of the HTTP connection in the HTTP connection pool. + */ + HTTP_CONNECTION_STATE: 'http.connection.state', + + /** + * Describes a class of error the operation ended with. + * + * Note: The `error.type` SHOULD be predictable and SHOULD have low cardinality. +Instrumentations SHOULD document the list of errors they report. + +The cardinality of `error.type` within one instrumentation library SHOULD be low. +Telemetry consumers that aggregate data from multiple instrumentation libraries and applications +should be prepared for `error.type` to have high cardinality at query time when no +additional filters are applied. + +If the operation has completed successfully, instrumentations SHOULD NOT set `error.type`. + +If a specific domain defines its own set of error identifiers (such as HTTP or gRPC status codes), +it's RECOMMENDED to: + +* Use a domain-specific attribute +* Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not. + */ + ERROR_TYPE: 'error.type', + + /** + * The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + */ + HTTP_REQUEST_BODY_SIZE: 'http.request.body.size', + + /** + * HTTP request method. + * + * Note: HTTP request method value SHOULD be "known" to the instrumentation. +By default, this convention defines "known" methods as the ones listed in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods) +and the PATCH method defined in [RFC5789](https://www.rfc-editor.org/rfc/rfc5789.html). + +If the HTTP request method is not known to instrumentation, it MUST set the `http.request.method` attribute to `_OTHER`. + +If the HTTP instrumentation could end up converting valid HTTP request methods to `_OTHER`, then it MUST provide a way to override +the list of known HTTP methods. If this override is done via environment variable, then the environment variable MUST be named +OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated list of case-sensitive known HTTP methods +(this list MUST be a full override of the default known method, it is not a list of known methods in addition to the defaults). + +HTTP method names are case-sensitive and `http.request.method` attribute value MUST match a known HTTP method name exactly. +Instrumentations for specific web frameworks that consider HTTP methods to be case insensitive, SHOULD populate a canonical equivalent. +Tracing instrumentations that do so, MUST also set `http.request.method_original` to the original value. + */ + HTTP_REQUEST_METHOD: 'http.request.method', + + /** + * Original HTTP method sent by the client in the request line. + */ + HTTP_REQUEST_METHOD_ORIGINAL: 'http.request.method_original', + + /** + * The ordinal number of request resending attempt (for any reason, including redirects). + * + * Note: The resend count SHOULD be updated each time an HTTP request gets resent by the client, regardless of what was the cause of the resending (e.g. redirection, authorization failure, 503 Server Unavailable, network issues, or any other). + */ + HTTP_REQUEST_RESEND_COUNT: 'http.request.resend_count', + + /** + * The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. + */ + HTTP_RESPONSE_BODY_SIZE: 'http.response.body.size', + + /** + * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). + */ + HTTP_RESPONSE_STATUS_CODE: 'http.response.status_code', + + /** + * The matched route, that is, the path template in the format used by the respective server framework. + * + * Note: MUST NOT be populated when this is not supported by the HTTP server framework as the route attribute should have low-cardinality and the URI path can NOT substitute it. +SHOULD include the [application root](/docs/http/http-spans.md#http-server-definitions) if there is one. + */ + HTTP_ROUTE: 'http.route', + + /** + * Peer address of the network connection - IP address or Unix domain socket name. + */ + NETWORK_PEER_ADDRESS: 'network.peer.address', + + /** + * Peer port number of the network connection. + */ + NETWORK_PEER_PORT: 'network.peer.port', + + /** + * [OSI application layer](https://osi-model.com/application-layer/) or non-OSI equivalent. + * + * Note: The value SHOULD be normalized to lowercase. + */ + NETWORK_PROTOCOL_NAME: 'network.protocol.name', + + /** + * Version of the protocol specified in `network.protocol.name`. + * + * Note: `network.protocol.version` refers to the version of the protocol used and might be different from the protocol client's version. If the HTTP client has a version of `0.27.2`, but sends HTTP version `1.1`, this attribute should be set to `1.1`. + */ + NETWORK_PROTOCOL_VERSION: 'network.protocol.version', + + /** + * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * Note: When observed from the client side, and when communicating through an intermediary, `server.address` SHOULD represent the server address behind any intermediaries, for example proxies, if it's available. + */ + SERVER_ADDRESS: 'server.address', + + /** + * Server port number. + * + * Note: When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent the server port behind any intermediaries, for example proxies, if it's available. + */ + SERVER_PORT: 'server.port', + + /** + * Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986). + * + * Note: For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment is not transmitted over HTTP, but if it is known, it SHOULD be included nevertheless. +`url.full` MUST NOT contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case username and password SHOULD be redacted and attribute's value SHOULD be `https://REDACTED:REDACTED@www.example.com/`. +`url.full` SHOULD capture the absolute URL when it is available (or can be reconstructed) and SHOULD NOT be validated or modified except for sanitizing purposes. + */ + URL_FULL: 'url.full', + + /** + * The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component. + */ + URL_PATH: 'url.path', + + /** + * The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component. + * + * Note: Sensitive content provided in query string SHOULD be scrubbed when instrumentations can identify it. + */ + URL_QUERY: 'url.query', + + /** + * The [URI scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component identifying the used protocol. + */ + URL_SCHEME: 'url.scheme', + + /** + * Value of the [HTTP User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) header sent by the client. + */ + USER_AGENT_ORIGINAL: 'user_agent.original', +}; diff --git a/plugins/node/instrumentation-undici/src/index.ts b/plugins/node/instrumentation-undici/src/index.ts new file mode 100644 index 0000000000..80c6504fbc --- /dev/null +++ b/plugins/node/instrumentation-undici/src/index.ts @@ -0,0 +1,25 @@ +/* + * 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. + */ + +export { UndiciInstrumentation } from './undici'; +export { + UndiciRequest, + UndiciResponse, + IgnoreRequestFunction, + RequestHookFunction, + StartSpanHookFunction, + UndiciInstrumentationConfig, +} from './types'; diff --git a/plugins/node/instrumentation-undici/src/internal-types.ts b/plugins/node/instrumentation-undici/src/internal-types.ts new file mode 100644 index 0000000000..fee0e7294a --- /dev/null +++ b/plugins/node/instrumentation-undici/src/internal-types.ts @@ -0,0 +1,48 @@ +/* + * 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 type { Channel } from 'diagnostics_channel'; + +import { UndiciRequest, UndiciResponse } from './types'; + +export interface ListenerRecord { + name: string; + channel: Channel; + onMessage: (message: any, name: string) => void; +} + +export interface RequestMessage { + request: UndiciRequest; +} + +export interface RequestHeadersMessage { + request: UndiciRequest; + socket: any; +} + +export interface ResponseHeadersMessage { + request: UndiciRequest; + response: UndiciResponse; +} + +export interface RequestTrailersMessage { + request: UndiciRequest; + response: UndiciResponse; +} + +export interface RequestErrorMessage { + request: UndiciRequest; + error: Error; +} diff --git a/plugins/node/instrumentation-undici/src/types.ts b/plugins/node/instrumentation-undici/src/types.ts new file mode 100644 index 0000000000..0d28e1fff9 --- /dev/null +++ b/plugins/node/instrumentation-undici/src/types.ts @@ -0,0 +1,75 @@ +/* + * 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 type { InstrumentationConfig } from '@opentelemetry/instrumentation'; +import type { Attributes, Span } from '@opentelemetry/api'; + +export interface UndiciRequest { + origin: string; + method: string; + path: string; + /** + * Serialized string of headers in the form `name: value\r\n` for v5 + * Array of strings v6 + */ + headers: string | string[]; + /** + * Helper method to add headers (from v6) + */ + addHeader: (name: string, value: string) => void; + throwOnError: boolean; + completed: boolean; + aborted: boolean; + idempotent: boolean; + contentLength: number | null; + contentType: string | null; + body: any; +} + +export interface UndiciResponse { + headers: Buffer[]; + statusCode: number; +} + +export interface IgnoreRequestFunction { + (request: T): boolean; +} + +export interface RequestHookFunction { + (span: Span, request: T): void; +} + +export interface StartSpanHookFunction { + (request: T): Attributes; +} + +// This package will instrument HTTP requests made through `undici` or `fetch` global API +// so it seems logical to have similar options than the HTTP instrumentation +export interface UndiciInstrumentationConfig + extends InstrumentationConfig { + /** Not trace all outgoing requests that matched with custom function */ + ignoreRequestHook?: IgnoreRequestFunction; + /** Function for adding custom attributes before request is handled */ + requestHook?: RequestHookFunction; + /** Function for adding custom attributes before a span is started */ + startSpanHook?: StartSpanHookFunction; + /** Require parent to create span for outgoing requests */ + requireParentforSpans?: boolean; + /** Map the following HTTP headers to span attributes. */ + headersToSpanAttributes?: { + requestHeaders?: string[]; + responseHeaders?: string[]; + }; +} diff --git a/plugins/node/instrumentation-undici/src/undici.ts b/plugins/node/instrumentation-undici/src/undici.ts new file mode 100644 index 0000000000..262bea42cd --- /dev/null +++ b/plugins/node/instrumentation-undici/src/undici.ts @@ -0,0 +1,483 @@ +/* + * 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 diagch from 'diagnostics_channel'; +import { URL } from 'url'; + +import { + InstrumentationBase, + safeExecuteInTheMiddle, +} from '@opentelemetry/instrumentation'; +import { + Attributes, + context, + Histogram, + HrTime, + INVALID_SPAN_CONTEXT, + propagation, + Span, + SpanKind, + SpanStatusCode, + trace, + ValueType, +} from '@opentelemetry/api'; + +import { VERSION } from './version'; + +import { + ListenerRecord, + RequestHeadersMessage, + RequestMessage, + RequestTrailersMessage, + ResponseHeadersMessage, +} from './internal-types'; +import { UndiciInstrumentationConfig, UndiciRequest } from './types'; +import { SemanticAttributes } from './enums/SemanticAttributes'; +import { + hrTime, + hrTimeDuration, + hrTimeToMilliseconds, +} from '@opentelemetry/core'; + +interface InstrumentationRecord { + span: Span; + attributes: Attributes; + startTime: HrTime; +} + +// A combination of https://github.com/elastic/apm-agent-nodejs and +// https://github.com/gadget-inc/opentelemetry-instrumentations/blob/main/packages/opentelemetry-instrumentation-undici/src/index.ts +export class UndiciInstrumentation extends InstrumentationBase { + // Keep ref to avoid https://github.com/nodejs/node/issues/42170 bug and for + // unsubscribing. + private _channelSubs!: Array; + private _recordFromReq = new WeakMap(); + + private _httpClientDurationHistogram!: Histogram; + constructor(config?: UndiciInstrumentationConfig) { + super('@opentelemetry/instrumentation-undici', VERSION, config); + this.setConfig(config); + } + + // No need to instrument files/modules + protected override init() { + return undefined; + } + + override disable(): void { + if (!this._config.enabled) { + return; + } + + this._channelSubs.forEach(sub => sub.channel.unsubscribe(sub.onMessage)); + this._channelSubs.length = 0; + this._config.enabled = false; + } + + override enable(): void { + if (this._config.enabled) { + return; + } + this._config.enabled = true; + + // This method is called by the `InstrumentationAbstract` constructor before + // ours is called. So we need to ensure the property is initalized + this._channelSubs = this._channelSubs || []; + this.subscribeToChannel( + 'undici:request:create', + this.onRequestCreated.bind(this) + ); + this.subscribeToChannel( + 'undici:client:sendHeaders', + this.onRequestHeaders.bind(this) + ); + this.subscribeToChannel( + 'undici:request:headers', + this.onResponseHeaders.bind(this) + ); + this.subscribeToChannel('undici:request:trailers', this.onDone.bind(this)); + this.subscribeToChannel('undici:request:error', this.onError.bind(this)); + } + + override setConfig(config?: UndiciInstrumentationConfig): void { + super.setConfig(config); + + if (config?.enabled) { + this.enable(); + } else { + this.disable(); + } + } + + protected override _updateMetricInstruments() { + this._httpClientDurationHistogram = this.meter.createHistogram( + 'http.client.request.duration', + { + description: 'Measures the duration of outbound HTTP requests.', + unit: 's', + valueType: ValueType.DOUBLE, + advice: { + explicitBucketBoundaries: [ + 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, + 7.5, 10, + ], + }, + } + ); + } + + private _getConfig(): UndiciInstrumentationConfig { + return this._config as UndiciInstrumentationConfig; + } + + private subscribeToChannel( + diagnosticChannel: string, + onMessage: ListenerRecord['onMessage'] + ) { + const channel = diagch.channel(diagnosticChannel); + channel.subscribe(onMessage); + this._channelSubs.push({ + name: diagnosticChannel, + channel, + onMessage, + }); + } + + // This is the 1st message we receive for each request (fired after request creation). Here we will + // create the span and populate some atttributes, then link the span to the request for further + // span processing + private onRequestCreated({ request }: RequestMessage): void { + // Ignore if: + // - instrumentation is disabled + // - ignored by config + // - method is 'CONNECT' + const config = this._getConfig(); + const shouldIgnoreReq = safeExecuteInTheMiddle( + () => + !config.enabled || + request.method === 'CONNECT' || + config.ignoreRequestHook?.(request), + e => e && this._diag.error('caught ignoreRequestHook error: ', e), + true + ); + + if (shouldIgnoreReq) { + return; + } + + const startTime = hrTime(); + const requestUrl = new URL(request.origin + request.path); + const urlScheme = requestUrl.protocol.replace(':', ''); + const requestMethod = this.getRequestMethod(request.method); + const attributes: Attributes = { + [SemanticAttributes.HTTP_REQUEST_METHOD]: requestMethod, + [SemanticAttributes.HTTP_REQUEST_METHOD_ORIGINAL]: request.method, + [SemanticAttributes.URL_FULL]: requestUrl.toString(), + [SemanticAttributes.URL_PATH]: requestUrl.pathname, + [SemanticAttributes.URL_QUERY]: requestUrl.search, + [SemanticAttributes.URL_SCHEME]: urlScheme, + }; + + const schemePorts: Record = { https: '443', http: '80' }; + const serverAddress = requestUrl.hostname; + const serverPort = requestUrl.port || schemePorts[urlScheme]; + + attributes[SemanticAttributes.SERVER_ADDRESS] = serverAddress; + if (serverPort && !isNaN(Number(serverPort))) { + attributes[SemanticAttributes.SERVER_PORT] = Number(serverPort); + } + + // Get user agent from headers + let userAgent; + if (Array.isArray(request.headers)) { + const idx = request.headers.findIndex( + h => h.toLowerCase() === 'user-agent' + ); + userAgent = request.headers[idx + 1]; + } else if (typeof request.headers === 'string') { + const headers = request.headers.split('\r\n'); + const uaHeader = headers.find(h => + h.toLowerCase().startsWith('user-agent') + ); + userAgent = + uaHeader && uaHeader.substring(uaHeader.indexOf(':') + 1).trim(); + } + + if (userAgent) { + attributes[SemanticAttributes.USER_AGENT_ORIGINAL] = userAgent; + } + + // Get attributes from the hook if present + const hookAttributes = safeExecuteInTheMiddle( + () => config.startSpanHook?.(request), + e => e && this._diag.error('caught startSpanHook error: ', e), + true + ); + if (hookAttributes) { + Object.entries(hookAttributes).forEach(([key, val]) => { + attributes[key] = val; + }); + } + + // Check if parent span is required via config and: + // - if a parent is required but not present, we use a `NoopSpan` to still + // propagate context without recording it. + // - create a span otherwise + const activeCtx = context.active(); + const currentSpan = trace.getSpan(activeCtx); + let span: Span; + + if (config.requireParentforSpans && !currentSpan) { + span = trace.wrapSpanContext(INVALID_SPAN_CONTEXT); + } else { + span = this.tracer.startSpan( + requestMethod === '_OTHER' ? 'HTTP' : requestMethod, + { + kind: SpanKind.CLIENT, + attributes: attributes, + }, + activeCtx + ); + } + + // Execute the request hook if defined + safeExecuteInTheMiddle( + () => config.requestHook?.(span, request), + e => e && this._diag.error('caught requestHook error: ', e), + true + ); + + // Context propagation goes last so no hook can tamper + // the propagation headers + const requestContext = trace.setSpan(context.active(), span); + const addedHeaders: Record = {}; + propagation.inject(requestContext, addedHeaders); + + const headerEntries = Object.entries(addedHeaders); + + for (let i = 0; i < headerEntries.length; i++) { + const [k, v] = headerEntries[i]; + + if (typeof request.headers === 'string') { + request.headers += `${k}: ${v}\r\n`; + } else { + request.addHeader(k, v); + } + } + this._recordFromReq.set(request, { span, attributes, startTime }); + } + + // This is the 2nd message we receive for each request. It is fired when connection with + // the remote is established and about to send the first byte. Here we do have info about the + // remote address and port so we can populate some `network.*` attributes into the span + private onRequestHeaders({ request, socket }: RequestHeadersMessage): void { + const record = this._recordFromReq.get(request as UndiciRequest); + + if (!record) { + return; + } + + const config = this._getConfig(); + const { span } = record; + const { remoteAddress, remotePort } = socket; + const spanAttributes: Attributes = { + [SemanticAttributes.NETWORK_PEER_ADDRESS]: remoteAddress, + [SemanticAttributes.NETWORK_PEER_PORT]: remotePort, + }; + + // After hooks have been processed (which may modify request headers) + // we can collect the headers based on the configuration + if (config.headersToSpanAttributes?.requestHeaders) { + const headersToAttribs = new Set( + config.headersToSpanAttributes.requestHeaders.map(n => n.toLowerCase()) + ); + + // headers could be in form + // ['name: value', ...] for v5 + // ['name', 'value', ...] for v6 + const rawHeaders = Array.isArray(request.headers) + ? request.headers + : request.headers.split('\r\n'); + rawHeaders.forEach((h, idx) => { + const sepIndex = h.indexOf(':'); + const hasSeparator = sepIndex !== -1; + const name = ( + hasSeparator ? h.substring(0, sepIndex) : h + ).toLowerCase(); + const value = hasSeparator + ? h.substring(sepIndex + 1) + : rawHeaders[idx + 1]; + + if (headersToAttribs.has(name)) { + spanAttributes[`http.request.header.${name}`] = value.trim(); + } + }); + } + + span.setAttributes(spanAttributes); + } + + // This is the 3rd message we get for each request and it's fired when the server + // headers are received, body may not be accessible yet. + // From the response headers we can set the status and content length + private onResponseHeaders({ + request, + response, + }: ResponseHeadersMessage): void { + const record = this._recordFromReq.get(request); + + if (!record) { + return; + } + + const { span, attributes } = record; + const spanAttributes: Attributes = { + [SemanticAttributes.HTTP_RESPONSE_STATUS_CODE]: response.statusCode, + }; + + const config = this._getConfig(); + const headersToAttribs = new Set(); + + if (config.headersToSpanAttributes?.responseHeaders) { + config.headersToSpanAttributes?.responseHeaders.forEach(name => + headersToAttribs.add(name.toLowerCase()) + ); + } + + for (let idx = 0; idx < response.headers.length; idx = idx + 2) { + const name = response.headers[idx].toString().toLowerCase(); + const value = response.headers[idx + 1]; + + if (headersToAttribs.has(name)) { + spanAttributes[`http.response.header.${name}`] = value.toString(); + } + + if (name === 'content-length') { + const contentLength = Number(value.toString()); + if (!isNaN(contentLength)) { + spanAttributes['http.response.header.content-length'] = contentLength; + } + } + } + + span.setAttributes(spanAttributes); + span.setStatus({ + code: + response.statusCode >= 400 + ? SpanStatusCode.ERROR + : SpanStatusCode.UNSET, + }); + record.attributes = Object.assign(attributes, spanAttributes); + } + + // This is the last event we receive if the request went without any errors + private onDone({ request }: RequestTrailersMessage): void { + const record = this._recordFromReq.get(request); + + if (!record) { + return; + } + + const { span, attributes, startTime } = record; + + // End the span + span.end(); + this._recordFromReq.delete(request); + + // Record metrics + this.recordRequestDuration(attributes, startTime); + } + + // This is the event we get when something is wrong in the request like + // - invalid options when calling `fetch` global API or any undici method for request + // - connectivity errors such as unreachable host + // - requests aborted through an `AbortController.signal` + // NOTE: server errors are considered valid responses and it's the lib consumer + // who should deal with that. + private onError({ request, error }: any): void { + const record = this._recordFromReq.get(request); + + if (!record) { + return; + } + + const { span, attributes, startTime } = record; + + // NOTE: in `undici@6.3.0` when request aborted the error type changes from + // a custom error (`RequestAbortedError`) to a built-in `DOMException` carrying + // some differences: + // - `code` is from DOMEXception (ABORT_ERR: 20) + // - `message` changes + // - stacktrace is smaller and contains node internal frames + span.recordException(error); + span.setStatus({ + code: SpanStatusCode.ERROR, + message: error.message, + }); + span.end(); + this._recordFromReq.delete(request); + + // Record metrics (with the error) + attributes[SemanticAttributes.ERROR_TYPE] = error.message; + this.recordRequestDuration(attributes, startTime); + } + + private recordRequestDuration(attributes: Attributes, startTime: HrTime) { + // Time to record metrics + const metricsAttributes: Attributes = {}; + // Get the attribs already in span attributes + const keysToCopy = [ + SemanticAttributes.HTTP_RESPONSE_STATUS_CODE, + SemanticAttributes.HTTP_REQUEST_METHOD, + SemanticAttributes.SERVER_ADDRESS, + SemanticAttributes.SERVER_PORT, + SemanticAttributes.URL_SCHEME, + SemanticAttributes.ERROR_TYPE, + ]; + keysToCopy.forEach(key => { + if (key in attributes) { + metricsAttributes[key] = attributes[key]; + } + }); + + // Take the duration and record it + const durationSeconds = + hrTimeToMilliseconds(hrTimeDuration(startTime, hrTime())) / 1000; + this._httpClientDurationHistogram.record( + durationSeconds, + metricsAttributes + ); + } + + private getRequestMethod(original: string): string { + const knownMethods = { + CONNECT: true, + OPTIONS: true, + HEAD: true, + GET: true, + POST: true, + PUT: true, + PATCH: true, + DELETE: true, + TRACE: true, + }; + + if (original.toUpperCase() in knownMethods) { + return original.toUpperCase(); + } + + return '_OTHER'; + } +} diff --git a/plugins/node/instrumentation-undici/test/fetch.test.ts b/plugins/node/instrumentation-undici/test/fetch.test.ts new file mode 100644 index 0000000000..96fa7090f4 --- /dev/null +++ b/plugins/node/instrumentation-undici/test/fetch.test.ts @@ -0,0 +1,414 @@ +/* + * 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 { + SpanKind, + SpanStatusCode, + context, + propagation, + trace, +} from '@opentelemetry/api'; +import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks'; +import { + InMemorySpanExporter, + SimpleSpanProcessor, +} from '@opentelemetry/sdk-trace-base'; +import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; + +import { UndiciInstrumentation } from '../src/undici'; + +import { MockPropagation } from './utils/mock-propagation'; +import { MockServer } from './utils/mock-server'; +import { assertSpan } from './utils/assertSpan'; + +const instrumentation = new UndiciInstrumentation(); +instrumentation.enable(); +instrumentation.disable(); + +const protocol = 'http'; +const hostname = 'localhost'; +const mockServer = new MockServer(); +const memoryExporter = new InMemorySpanExporter(); +const provider = new NodeTracerProvider(); +provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); +instrumentation.setTracerProvider(provider); + +describe('UndiciInstrumentation `fetch` tests', function () { + before(function (done) { + // Do not test if the `fetch` global API is not available + // This applies to nodejs < v18 or nodejs < v16.15 wihtout the flag + // `--experimental-global-fetch` set + // https://nodejs.org/api/globals.html#fetch + if (typeof globalThis.fetch !== 'function') { + this.skip(); + } + + propagation.setGlobalPropagator(new MockPropagation()); + context.setGlobalContextManager(new AsyncHooksContextManager().enable()); + mockServer.start(done); + mockServer.mockListener((req, res) => { + // There are some situations where there is no way to access headers + // for trace propagation asserts like: + // const resp = await fetch('http://host:port') + // so we need to do the assertion here + try { + assert.ok( + req.headers[MockPropagation.TRACE_CONTEXT_KEY], + `trace propagation for ${MockPropagation.TRACE_CONTEXT_KEY} works` + ); + assert.ok( + req.headers[MockPropagation.SPAN_CONTEXT_KEY], + `trace propagation for ${MockPropagation.SPAN_CONTEXT_KEY} works` + ); + } catch (assertErr) { + // The exception will hang the server and the test so we set a header + // back to the test to make an assertion + res.setHeader('propagation-error', (assertErr as Error).message); + } + + // Retur a valid response always + res.statusCode = 200; + res.setHeader('content-type', 'application/json'); + res.setHeader('foo-server', 'bar'); + res.write(JSON.stringify({ success: true })); + res.end(); + }); + }); + + after(function (done) { + context.disable(); + propagation.disable(); + mockServer.mockListener(undefined); + mockServer.stop(done); + }); + + beforeEach(function () { + memoryExporter.reset(); + }); + + describe('disable()', function () { + it('should not create spans when disabled', async function () { + let spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 0); + + // Disable via config + instrumentation.setConfig({ enabled: false }); + + const fetchUrl = `${protocol}://${hostname}:${mockServer.port}/?query=test`; + const response = await fetch(fetchUrl); + assert.ok( + response.headers.get('propagation-error') != null, + 'propagation is not set if instrumentation disabled' + ); + + spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 0, 'no spans are created'); + }); + }); + + describe('enable()', function () { + beforeEach(function () { + instrumentation.enable(); + }); + afterEach(function () { + // Empty configuration & disable + instrumentation.setConfig({ enabled: false }); + }); + + it('should create valid spans even if the configuration hooks fail', async function () { + let spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 0); + + // Set the bad configuration + instrumentation.setConfig({ + enabled: true, + ignoreRequestHook: () => { + throw new Error('ignoreRequestHook error'); + }, + requestHook: () => { + throw new Error('requestHook error'); + }, + startSpanHook: () => { + throw new Error('startSpanHook error'); + }, + }); + + const fetchUrl = `${protocol}://${hostname}:${mockServer.port}/?query=test`; + const response = await fetch(fetchUrl); + assert.ok( + response.headers.get('propagation-error') == null, + 'propagation is set for instrumented requests' + ); + + spans = memoryExporter.getFinishedSpans(); + const span = spans[0]; + + assert.ok(span, 'a span is present'); + assert.strictEqual(spans.length, 1); + assertSpan(span, { + hostname: 'localhost', + httpStatusCode: response.status, + httpMethod: 'GET', + path: '/', + query: '?query=test', + resHeaders: response.headers, + }); + }); + + it('should create valid spans with empty configuration', async function () { + let spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 0); + + const fetchUrl = `${protocol}://${hostname}:${mockServer.port}/?query=test`; + const response = await fetch(fetchUrl); + assert.ok( + response.headers.get('propagation-error') == null, + 'propagation is set for instrumented requests' + ); + + spans = memoryExporter.getFinishedSpans(); + const span = spans[0]; + + assert.ok(span, 'a span is present'); + assert.strictEqual(spans.length, 1); + assertSpan(span, { + hostname: 'localhost', + httpStatusCode: response.status, + httpMethod: 'GET', + path: '/', + query: '?query=test', + resHeaders: response.headers, + }); + }); + + it('should create valid spans with the given configuration', async function () { + let spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 0); + + // Set configuration + instrumentation.setConfig({ + enabled: true, + ignoreRequestHook: req => { + return req.path.indexOf('/ignore/path') !== -1; + }, + requestHook: (span, req) => { + // We should mind the type of headers + if (typeof req.headers === 'string') { + req.headers += 'x-requested-with: undici\r\n'; + } else { + req.headers.push('x-requested-with', 'undici'); + } + }, + startSpanHook: request => { + return { + 'test.hook.attribute': 'hook-value', + }; + }, + headersToSpanAttributes: { + requestHeaders: ['foo-client', 'x-requested-with'], + responseHeaders: ['foo-server'], + }, + }); + + // Do some requests + const ignoreResponse = await fetch( + `${protocol}://${hostname}:${mockServer.port}/ignore/path` + ); + const reqInit = { + headers: new Headers({ + 'user-agent': 'custom', + 'foo-client': 'bar', + }), + }; + assert.ok( + ignoreResponse.headers.get('propagation-error'), + 'propagation is not set for ignored requests' + ); + + const queryResponse = await fetch( + `${protocol}://${hostname}:${mockServer.port}/?query=test`, + reqInit + ); + assert.ok( + queryResponse.headers.get('propagation-error') == null, + 'propagation is set for instrumented requests' + ); + + spans = memoryExporter.getFinishedSpans(); + const span = spans[0]; + assert.ok(span, 'a span is present'); + assert.strictEqual(spans.length, 1); + assertSpan(span, { + hostname: 'localhost', + httpStatusCode: queryResponse.status, + httpMethod: 'GET', + path: '/', + query: '?query=test', + reqHeaders: reqInit.headers, + resHeaders: queryResponse.headers, + }); + assert.strictEqual( + span.attributes['http.request.header.foo-client'], + 'bar', + 'request headers from fetch options are captured' + ); + assert.strictEqual( + span.attributes['http.request.header.x-requested-with'], + 'undici', + 'request headers from requestHook are captured' + ); + assert.strictEqual( + span.attributes['http.response.header.foo-server'], + 'bar', + 'response headers from the server are captured' + ); + assert.strictEqual( + span.attributes['test.hook.attribute'], + 'hook-value', + 'startSpanHook is called' + ); + }); + + it('should not create spans without parent if required in configuration', async function () { + let spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 0); + + instrumentation.setConfig({ + enabled: true, + requireParentforSpans: true, + }); + + const fetchUrl = `${protocol}://${hostname}:${mockServer.port}/?query=test`; + const response = await fetch(fetchUrl); + assert.ok( + response.headers.get('propagation-error') == null, + 'propagation is set for instrumented requests' + ); + + spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 0, 'no spans are created'); + }); + + it('should not create spans with parent if required in configuration', function (done) { + let spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 0); + + instrumentation.setConfig({ + enabled: true, + requireParentforSpans: true, + }); + + const tracer = provider.getTracer('default'); + const span = tracer.startSpan('parentSpan', { + kind: SpanKind.INTERNAL, + }); + + context.with(trace.setSpan(context.active(), span), async () => { + const fetchUrl = `${protocol}://${hostname}:${mockServer.port}/?query=test`; + const response = await fetch(fetchUrl); + + span.end(); + assert.ok( + response.headers.get('propagation-error') == null, + 'propagation is set for instrumented requests' + ); + + spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 2, 'child span is created'); + assert.strictEqual( + spans.filter(span => span.kind === SpanKind.CLIENT).length, + 1, + 'child span is created' + ); + assert.strictEqual( + spans.filter(span => span.kind === SpanKind.INTERNAL).length, + 1, + 'parent span is present' + ); + + done(); + }); + }); + + it('should capture errors using fetch API', async function () { + let spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 0); + + let fetchError; + try { + const fetchUrl = 'http://unexistent-host-name/path'; + await fetch(fetchUrl); + } catch (err) { + // Expected error + fetchError = err as Error; + } + + spans = memoryExporter.getFinishedSpans(); + const span = spans[0]; + assert.ok(span, 'a span is present'); + assert.strictEqual(spans.length, 1); + assertSpan(span, { + hostname: 'unexistent-host-name', + httpMethod: 'GET', + path: '/path', + error: fetchError, + noNetPeer: true, // do not check network attribs + forceStatus: { + code: SpanStatusCode.ERROR, + message: 'getaddrinfo ENOTFOUND unexistent-host-name', + }, + }); + }); + + it('should capture error if fetch request is aborted', async function () { + let spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 0); + + let fetchError; + const controller = new AbortController(); + const fetchUrl = `${protocol}://${hostname}:${mockServer.port}/?query=test`; + const fetchPromise = fetch(fetchUrl, { signal: controller.signal }); + controller.abort(); + try { + await fetchPromise; + } catch (err) { + // Expected error + fetchError = err as Error; + } + + // Let the error be published to diagnostics channel + await new Promise(r => setTimeout(r, 5)); + + spans = memoryExporter.getFinishedSpans(); + const span = spans[0]; + assert.ok(span, 'a span is present'); + assert.strictEqual(spans.length, 1); + assertSpan(span, { + hostname: 'localhost', + httpMethod: 'GET', + path: '/', + query: '?query=test', + error: fetchError, + noNetPeer: true, // do not check network attribs + forceStatus: { + code: SpanStatusCode.ERROR, + message: 'The operation was aborted.', + }, + }); + }); + }); +}); diff --git a/plugins/node/instrumentation-undici/test/metrics.test.ts b/plugins/node/instrumentation-undici/test/metrics.test.ts new file mode 100644 index 0000000000..0fc633ef19 --- /dev/null +++ b/plugins/node/instrumentation-undici/test/metrics.test.ts @@ -0,0 +1,194 @@ +/* + * 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 { context, propagation } from '@opentelemetry/api'; +import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks'; +import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; +import { + AggregationTemporality, + DataPointType, + InMemoryMetricExporter, + MeterProvider, +} from '@opentelemetry/sdk-metrics'; + +import { UndiciInstrumentation } from '../src/undici'; + +import { MockServer } from './utils/mock-server'; +import { MockMetricsReader } from './utils/mock-metrics-reader'; +import { SemanticAttributes } from '../src/enums/SemanticAttributes'; + +const instrumentation = new UndiciInstrumentation(); +instrumentation.enable(); +instrumentation.disable(); + +const protocol = 'http'; +const hostname = 'localhost'; +const mockServer = new MockServer(); +const provider = new NodeTracerProvider(); +const meterProvider = new MeterProvider(); +const metricsMemoryExporter = new InMemoryMetricExporter( + AggregationTemporality.DELTA +); +const metricReader = new MockMetricsReader(metricsMemoryExporter); +meterProvider.addMetricReader(metricReader); +instrumentation.setTracerProvider(provider); +instrumentation.setMeterProvider(meterProvider); + +describe('UndiciInstrumentation metrics tests', function () { + before(function (done) { + // Do not test if the `fetch` global API is not available + // This applies to nodejs < v18 or nodejs < v16.15 without the flag + // `--experimental-global-fetch` set + // https://nodejs.org/api/globals.html#fetch + if (typeof globalThis.fetch !== 'function') { + this.skip(); + } + + context.setGlobalContextManager(new AsyncHooksContextManager().enable()); + mockServer.start(done); + mockServer.mockListener((req, res) => { + // Return a valid response always + res.statusCode = 200; + res.setHeader('content-type', 'application/json'); + res.write(JSON.stringify({ success: true })); + res.end(); + }); + + // enable instrumentation for all tests + instrumentation.enable(); + }); + + after(function (done) { + instrumentation.disable(); + context.disable(); + propagation.disable(); + mockServer.mockListener(undefined); + mockServer.stop(done); + }); + + beforeEach(function () { + metricsMemoryExporter.reset(); + }); + + describe('with fetch API', function () { + before(function (done) { + // Do not test if the `fetch` global API is not available + // This applies to nodejs < v18 or nodejs < v16.15 without the flag + // `--experimental-global-fetch` set + // https://nodejs.org/api/globals.html#fetch + if (typeof globalThis.fetch !== 'function') { + this.skip(); + } + + done(); + }); + + it('should report "http.client.request.duration" metric', async () => { + const fetchUrl = `${protocol}://${hostname}:${mockServer.port}/?query=test`; + await fetch(fetchUrl); + + await metricReader.collectAndExport(); + const resourceMetrics = metricsMemoryExporter.getMetrics(); + const scopeMetrics = resourceMetrics[0].scopeMetrics; + const metrics = scopeMetrics[0].metrics; + + assert.strictEqual(scopeMetrics.length, 1, 'scopeMetrics count'); + assert.strictEqual(metrics.length, 1, 'metrics count'); + assert.strictEqual( + metrics[0].descriptor.name, + 'http.client.request.duration' + ); + assert.strictEqual( + metrics[0].descriptor.description, + 'Measures the duration of outbound HTTP requests.' + ); + assert.strictEqual(metrics[0].descriptor.unit, 's'); + assert.strictEqual(metrics[0].dataPointType, DataPointType.HISTOGRAM); + assert.strictEqual(metrics[0].dataPoints.length, 1); + + const metricAttributes = metrics[0].dataPoints[0].attributes; + assert.strictEqual( + metricAttributes[SemanticAttributes.URL_SCHEME], + 'http' + ); + assert.strictEqual( + metricAttributes[SemanticAttributes.HTTP_REQUEST_METHOD], + 'GET' + ); + assert.strictEqual( + metricAttributes[SemanticAttributes.SERVER_ADDRESS], + 'localhost' + ); + assert.strictEqual( + metricAttributes[SemanticAttributes.SERVER_PORT], + mockServer.port + ); + assert.strictEqual( + metricAttributes[SemanticAttributes.HTTP_RESPONSE_STATUS_CODE], + 200 + ); + }); + + it('should have error.type in "http.client.request.duration" metric', async () => { + const fetchUrl = 'http://unknownhost/'; + + try { + await fetch(fetchUrl); + } catch (err) { + // Expected error, do nothing + } + + await metricReader.collectAndExport(); + const resourceMetrics = metricsMemoryExporter.getMetrics(); + const scopeMetrics = resourceMetrics[0].scopeMetrics; + const metrics = scopeMetrics[0].metrics; + + assert.strictEqual(scopeMetrics.length, 1, 'scopeMetrics count'); + assert.strictEqual(metrics.length, 1, 'metrics count'); + assert.strictEqual( + metrics[0].descriptor.name, + 'http.client.request.duration' + ); + assert.strictEqual( + metrics[0].descriptor.description, + 'Measures the duration of outbound HTTP requests.' + ); + assert.strictEqual(metrics[0].descriptor.unit, 's'); + assert.strictEqual(metrics[0].dataPointType, DataPointType.HISTOGRAM); + assert.strictEqual(metrics[0].dataPoints.length, 1); + + const metricAttributes = metrics[0].dataPoints[0].attributes; + assert.strictEqual( + metricAttributes[SemanticAttributes.URL_SCHEME], + 'http' + ); + assert.strictEqual( + metricAttributes[SemanticAttributes.HTTP_REQUEST_METHOD], + 'GET' + ); + assert.strictEqual( + metricAttributes[SemanticAttributes.SERVER_ADDRESS], + 'unknownhost' + ); + assert.strictEqual(metricAttributes[SemanticAttributes.SERVER_PORT], 80); + assert.ok( + metricAttributes[SemanticAttributes.ERROR_TYPE], + `the metric contains "${SemanticAttributes.ERROR_TYPE}" attribute if request failed` + ); + }); + }); +}); diff --git a/plugins/node/instrumentation-undici/test/undici.test.ts b/plugins/node/instrumentation-undici/test/undici.test.ts new file mode 100644 index 0000000000..fd48803a3f --- /dev/null +++ b/plugins/node/instrumentation-undici/test/undici.test.ts @@ -0,0 +1,746 @@ +/* + * 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 { Writable } from 'stream'; + +import { + SpanKind, + SpanStatusCode, + context, + propagation, + trace, +} from '@opentelemetry/api'; +import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks'; +import { + InMemorySpanExporter, + SimpleSpanProcessor, +} from '@opentelemetry/sdk-trace-base'; +import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; + +import { UndiciInstrumentation } from '../src/undici'; + +import { MockPropagation } from './utils/mock-propagation'; +import { MockServer } from './utils/mock-server'; +import { assertSpan } from './utils/assertSpan'; + +import type { fetch, stream, request, Client, Dispatcher } from 'undici'; + +type PromisedValue = T extends Promise ? R : never; + +const instrumentation = new UndiciInstrumentation(); +instrumentation.enable(); +instrumentation.disable(); + +// Reference to the `undici` module +let undici: { + fetch: typeof fetch; + request: typeof request; + stream: typeof stream; + Client: typeof Client; +}; + +const protocol = 'http'; +const hostname = 'localhost'; +const mockServer = new MockServer(); +const memoryExporter = new InMemorySpanExporter(); +const provider = new NodeTracerProvider(); +provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); +instrumentation.setTracerProvider(provider); + +// Undici docs (https://github.com/nodejs/undici#garbage-collection) suggest +// that an undici response body should always be consumed. +async function consumeResponseBody(body: Dispatcher.ResponseData['body']) { + return new Promise(resolve => { + const devNull = new Writable({ + write(_chunk, _encoding, cb) { + setImmediate(cb); + }, + }); + body.pipe(devNull); + body.on('end', resolve); + }); +} + +describe('UndiciInstrumentation `undici` tests', function () { + before(function (done) { + // Load `undici`. It may fail if nodejs version is <18 because the module uses + // features only available from that version. In that case skip the test. + try { + undici = require('undici'); + } catch (loadErr) { + this.skip(); + } + + propagation.setGlobalPropagator(new MockPropagation()); + context.setGlobalContextManager(new AsyncHooksContextManager().enable()); + mockServer.start(done); + mockServer.mockListener((req, res) => { + // There are some situations where there is no way to access headers + // for trace propagation asserts like: + // const resp = await fetch('http://host:port') + // so we need to do the assertion here + try { + assert.ok( + req.headers[MockPropagation.TRACE_CONTEXT_KEY], + `trace propagation for ${MockPropagation.TRACE_CONTEXT_KEY} works` + ); + assert.ok( + req.headers[MockPropagation.SPAN_CONTEXT_KEY], + `trace propagation for ${MockPropagation.SPAN_CONTEXT_KEY} works` + ); + } catch (assertErr) { + // The exception will hang the server and the test so we set a header + // back to the test to make an assertion + res.setHeader('propagation-error', (assertErr as Error).message); + } + + // Retur a valid response always + res.statusCode = 200; + res.setHeader('content-type', 'application/json'); + res.setHeader('foo-server', 'bar'); + res.write(JSON.stringify({ success: true })); + res.end(); + }); + }); + + after(function (done) { + context.disable(); + propagation.disable(); + mockServer.mockListener(undefined); + mockServer.stop(done); + }); + + beforeEach(function () { + memoryExporter.reset(); + }); + + describe('disable()', function () { + it('should not create spans when disabled', async function () { + let spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 0); + + // Disable via config + instrumentation.setConfig({ enabled: false }); + + const requestUrl = `${protocol}://${hostname}:${mockServer.port}/?query=test`; + const { headers, body } = await undici.request(requestUrl); + await consumeResponseBody(body); + + assert.ok( + headers['propagation-error'] != null, + 'propagation is not set if instrumentation disabled' + ); + + spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 0, 'no spans are created'); + }); + }); + + describe('enable()', function () { + beforeEach(function () { + instrumentation.enable(); + // Set configuration + instrumentation.setConfig({ + enabled: true, + ignoreRequestHook: req => { + return req.path.indexOf('/ignore/path') !== -1; + }, + requestHook: (span, req) => { + // We should mind the type of headers + if (typeof req.headers === 'string') { + req.headers += 'x-requested-with: undici\r\n'; + } else { + req.headers.push('x-requested-with', 'undici'); + } + }, + startSpanHook: request => { + return { + 'test.hook.attribute': 'hook-value', + }; + }, + headersToSpanAttributes: { + requestHeaders: ['foo-client', 'x-requested-with'], + responseHeaders: ['foo-server'], + }, + }); + }); + afterEach(function () { + // Empty configuration & disable + instrumentation.setConfig({ enabled: false }); + }); + + it('should ignore requests based on the result of ignoreRequestHook', async function () { + let spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 0); + + // Do some requests + const headers = { + 'user-agent': 'custom', + 'foo-client': 'bar', + }; + + const ignoreRequestUrl = `${protocol}://${hostname}:${mockServer.port}/ignore/path`; + const ignoreResponse = await undici.request(ignoreRequestUrl, { + headers, + }); + await consumeResponseBody(ignoreResponse.body); + + assert.ok( + ignoreResponse.headers['propagation-error'], + 'propagation is not set for ignored requests' + ); + + spans = memoryExporter.getFinishedSpans(); + assert.ok(spans.length === 0, 'ignoreRequestHook is filtering requests'); + }); + + it('should create valid spans for different request methods', async function () { + let spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 0); + + // Do some requests + const headers = { + 'user-agent': 'custom', + 'foo-client': 'bar', + }; + + // In version v5 if `undici` you get the following error when requesting with a method + // that is not one of the known ones in uppercase. Using + // + // SocketError: other side closed + // at Socket.onSocketEnd (node_modules/undici/lib/client.js:1118:22) + // at endReadableNT (internal/streams/readable.js:1333:12) + // at processTicksAndRejections (internal/process/task_queues.js:82:21) + let firstQueryResponse: PromisedValue>; + let secondQueryResponse: PromisedValue>; + try { + const queryRequestUrl = `${protocol}://${hostname}:${mockServer.port}/?query=test`; + firstQueryResponse = await undici.request(queryRequestUrl, { + headers, + // @ts-expect-error - method type expects in uppercase + method: 'get', + }); + await consumeResponseBody(firstQueryResponse.body); + + secondQueryResponse = await undici.request(queryRequestUrl, { + headers, + // @ts-expect-error - method type expects known HTTP method (GET, POST, PUT, ...) + method: 'custom', + }); + await consumeResponseBody(secondQueryResponse.body); + } catch (undiciErr) { + const { stack } = undiciErr as Error; + + if (stack?.startsWith('SocketError: other side closed')) { + this.skip(); + } + } + + assert.ok( + firstQueryResponse!.headers['propagation-error'] === undefined, + 'propagation is set for instrumented requests' + ); + assert.ok( + secondQueryResponse!.headers['propagation-error'] === undefined, + 'propagation is set for instrumented requests' + ); + + spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 2); + assertSpan(spans[0], { + hostname: 'localhost', + httpStatusCode: firstQueryResponse!.statusCode, + httpMethod: 'GET', + path: '/', + query: '?query=test', + reqHeaders: headers, + resHeaders: firstQueryResponse!.headers, + }); + assert.strictEqual( + spans[0].attributes['http.request.method_original'], + 'get', + 'request original method is captured' + ); + + assertSpan(spans[1], { + hostname: 'localhost', + httpStatusCode: secondQueryResponse!.statusCode, + spanName: 'HTTP', + httpMethod: '_OTHER', + path: '/', + query: '?query=test', + reqHeaders: headers, + resHeaders: secondQueryResponse!.headers, + }); + assert.strictEqual( + spans[1].attributes['http.request.method_original'], + 'custom', + 'request original method is captured' + ); + }); + + it('should create valid spans for "request" method', async function () { + let spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 0); + + // Do some requests + const headers = { + 'user-agent': 'custom', + 'foo-client': 'bar', + }; + + const ignoreRequestUrl = `${protocol}://${hostname}:${mockServer.port}/ignore/path`; + const ignoreResponse = await undici.request(ignoreRequestUrl, { + headers, + }); + await consumeResponseBody(ignoreResponse.body); + + assert.ok( + ignoreResponse.headers['propagation-error'], + 'propagation is not set for ignored requests' + ); + + const queryRequestUrl = `${protocol}://${hostname}:${mockServer.port}/?query=test`; + const queryResponse = await undici.request(queryRequestUrl, { headers }); + await consumeResponseBody(queryResponse.body); + + assert.ok( + queryResponse.headers['propagation-error'] == null, + 'propagation is set for instrumented requests' + ); + + spans = memoryExporter.getFinishedSpans(); + const span = spans[0]; + assert.ok(span, 'a span is present'); + assert.strictEqual(spans.length, 1); + assertSpan(span, { + hostname: 'localhost', + httpStatusCode: queryResponse.statusCode, + httpMethod: 'GET', + path: '/', + query: '?query=test', + reqHeaders: headers, + resHeaders: queryResponse.headers, + }); + assert.strictEqual( + span.attributes['http.request.header.foo-client'], + 'bar', + 'request headers from fetch options are captured' + ); + assert.strictEqual( + span.attributes['http.request.header.x-requested-with'], + 'undici', + 'request headers from requestHook are captured' + ); + assert.strictEqual( + span.attributes['http.response.header.foo-server'], + 'bar', + 'response headers from the server are captured' + ); + assert.strictEqual( + span.attributes['test.hook.attribute'], + 'hook-value', + 'startSpanHook is called' + ); + }); + + it('should create valid spans for "fetch" method', async function () { + // Fetch method is available from node v16.5 + // we want to skip this test for lowe versions + // https://github.com/nodejs/undici/blob/08839e450aa6dd1b0e2c019d6e5869cd5b966be1/index.js#L95 + if (typeof undici.fetch === 'undefined') { + this.skip(); + } + + let spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 0); + + // Do some requests + const headers = { + 'user-agent': 'custom', + 'foo-client': 'bar', + }; + const queryRequestUrl = `${protocol}://${hostname}:${mockServer.port}/?query=test`; + const queryResponse = await undici.fetch(queryRequestUrl, { headers }); + await queryResponse.text(); + + assert.ok( + queryResponse.headers.get('propagation-error') == null, + 'propagation is set for instrumented requests' + ); + + spans = memoryExporter.getFinishedSpans(); + const span = spans[0]; + assert.ok(span, 'a span is present'); + assert.strictEqual(spans.length, 1); + assertSpan(span, { + hostname: 'localhost', + httpStatusCode: queryResponse.status, + httpMethod: 'GET', + path: '/', + query: '?query=test', + reqHeaders: headers, + resHeaders: queryResponse.headers as unknown as Headers, + }); + assert.strictEqual( + span.attributes['http.request.header.foo-client'], + 'bar', + 'request headers from fetch options are captured' + ); + assert.strictEqual( + span.attributes['http.request.header.x-requested-with'], + 'undici', + 'request headers from requestHook are captured' + ); + assert.strictEqual( + span.attributes['http.response.header.foo-server'], + 'bar', + 'response headers from the server are captured' + ); + assert.strictEqual( + span.attributes['test.hook.attribute'], + 'hook-value', + 'startSpanHook is called' + ); + }); + + it('should create valid spans for "stream" method', async function () { + let spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 0); + + // Do some requests + const headers = { + 'user-agent': 'custom', + 'foo-client': 'bar', + }; + // https://undici.nodejs.org/#/docs/api/Dispatcher?id=example-1-basic-get-stream-request + const queryRequestUrl = `${protocol}://${hostname}:${mockServer.port}/?query=test`; + const queryResponse: Record = {}; + const bufs: any[] = []; + await undici.stream( + queryRequestUrl, + { opaque: { bufs }, headers } as any, + ({ statusCode, headers, opaque }) => { + queryResponse.statusCode = statusCode; + queryResponse.headers = headers; + return new Writable({ + write(chunk, encoding, callback) { + (opaque as any).bufs.push(chunk); + callback(); + }, + }); + } + ); + + assert.ok( + queryResponse.headers['propagation-error'] == null, + 'propagation is set for instrumented requests' + ); + + spans = memoryExporter.getFinishedSpans(); + const span = spans[0]; + assert.ok(span, 'a span is present'); + assert.strictEqual(spans.length, 1); + assertSpan(span, { + hostname: 'localhost', + httpStatusCode: queryResponse.statusCode, + httpMethod: 'GET', + path: '/', + query: '?query=test', + reqHeaders: headers, + resHeaders: queryResponse.headers as unknown as Headers, + }); + assert.strictEqual( + span.attributes['http.request.header.foo-client'], + 'bar', + 'request headers from fetch options are captured' + ); + assert.strictEqual( + span.attributes['http.request.header.x-requested-with'], + 'undici', + 'request headers from requestHook are captured' + ); + assert.strictEqual( + span.attributes['http.response.header.foo-server'], + 'bar', + 'response headers from the server are captured' + ); + assert.strictEqual( + span.attributes['test.hook.attribute'], + 'hook-value', + 'startSpanHook is called' + ); + }); + + it('should create valid spans for "dispatch" method', async function () { + let spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 0); + + // Do some requests + const headers = { + 'user-agent': 'custom', + 'foo-client': 'bar', + }; + + const queryRequestUrl = `${protocol}://${hostname}:${mockServer.port}`; + const queryResponse: Record = {}; + const client = new undici.Client(queryRequestUrl); + await new Promise((resolve, reject) => { + client.dispatch( + { + path: '/?query=test', + method: 'GET', + headers, + }, + { + onHeaders: (statusCode, headers) => { + queryResponse.statusCode = statusCode; + queryResponse.headers = headers; + return true; // unidici types require to return boolean + }, + onError: reject, + onComplete: resolve, + // Although the types say these following handlers are optional they must + // be defined to avoid a TypeError + onConnect: () => undefined, + onData: () => true, + } + ); + }); + + assert.ok( + queryResponse.headers['propagation-error'] == null, + 'propagation is set for instrumented requests' + ); + + spans = memoryExporter.getFinishedSpans(); + const span = spans[0]; + assert.ok(span, 'a span is present'); + assert.strictEqual(spans.length, 1); + assertSpan(span, { + hostname: 'localhost', + httpStatusCode: queryResponse.statusCode, + httpMethod: 'GET', + path: '/', + query: '?query=test', + reqHeaders: headers, + resHeaders: queryResponse.headers as unknown as Headers, + }); + assert.strictEqual( + span.attributes['http.request.header.foo-client'], + 'bar', + 'request headers from fetch options are captured' + ); + assert.strictEqual( + span.attributes['http.request.header.x-requested-with'], + 'undici', + 'request headers from requestHook are captured' + ); + assert.strictEqual( + span.attributes['http.response.header.foo-server'], + 'bar', + 'response headers from the server are captured' + ); + assert.strictEqual( + span.attributes['test.hook.attribute'], + 'hook-value', + 'startSpanHook is called' + ); + }); + + it('should create valid spans even if the configuration hooks fail', async function () { + let spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 0); + + // Set the bad configuration + instrumentation.setConfig({ + enabled: true, + ignoreRequestHook: () => { + throw new Error('ignoreRequestHook error'); + }, + requestHook: () => { + throw new Error('requestHook error'); + }, + startSpanHook: () => { + throw new Error('startSpanHook error'); + }, + }); + + const requestUrl = `${protocol}://${hostname}:${mockServer.port}/?query=test`; + const { headers, statusCode, body } = await undici.request(requestUrl); + await consumeResponseBody(body); + + assert.ok( + headers['propagation-error'] == null, + 'propagation is set for instrumented requests' + ); + + spans = memoryExporter.getFinishedSpans(); + const span = spans[0]; + + assert.ok(span, 'a span is present'); + assert.strictEqual(spans.length, 1); + assertSpan(span, { + hostname: 'localhost', + httpStatusCode: statusCode, + httpMethod: 'GET', + path: '/', + query: '?query=test', + resHeaders: headers, + }); + }); + + it('should not create spans without parent if required in configuration', async function () { + let spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 0); + + instrumentation.setConfig({ + enabled: true, + requireParentforSpans: true, + }); + + const requestUrl = `${protocol}://${hostname}:${mockServer.port}/?query=test`; + const response = await undici.request(requestUrl); + await consumeResponseBody(response.body); + + assert.ok( + response.headers['propagation-error'] == null, + 'propagation is set for instrumented requests' + ); + + spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 0, 'no spans are created'); + }); + + it('should create spans with parent if required in configuration', function (done) { + let spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 0); + + instrumentation.setConfig({ + enabled: true, + requireParentforSpans: true, + }); + + const tracer = provider.getTracer('default'); + const span = tracer.startSpan('parentSpan', { + kind: SpanKind.INTERNAL, + }); + + context.with(trace.setSpan(context.active(), span), async () => { + const requestUrl = `${protocol}://${hostname}:${mockServer.port}/?query=test`; + const response = await undici.request(requestUrl); + await consumeResponseBody(response.body); + + span.end(); + assert.ok( + response.headers['propagation-error'] == null, + 'propagation is set for instrumented requests' + ); + + spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 2, 'child span is created'); + assert.strictEqual( + spans.filter(span => span.kind === SpanKind.CLIENT).length, + 1, + 'child span is created' + ); + assert.strictEqual( + spans.filter(span => span.kind === SpanKind.INTERNAL).length, + 1, + 'parent span is present' + ); + + done(); + }); + }); + + it('should capture errors while doing request', async function () { + let spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 0); + + let fetchError; + try { + const requestUrl = 'http://unexistent-host-name/path'; + await undici.request(requestUrl); + } catch (err) { + // Expected error + fetchError = err as Error; + } + + spans = memoryExporter.getFinishedSpans(); + const span = spans[0]; + assert.ok(span, 'a span is present'); + assert.strictEqual(spans.length, 1); + assertSpan(span, { + hostname: 'unexistent-host-name', + httpMethod: 'GET', + path: '/path', + error: fetchError, + noNetPeer: true, // do not check network attribs + forceStatus: { + code: SpanStatusCode.ERROR, + message: 'getaddrinfo ENOTFOUND unexistent-host-name', + }, + }); + }); + + it('should capture error if undici request is aborted', async function () { + // AbortController was added in: v15.0.0, v14.17.0 + // but we still run tests for node v14 + // https://nodejs.org/api/globals.html#class-abortcontroller + if (typeof AbortController === 'undefined') { + this.skip(); + } + + let spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 0); + + let requestError; + const controller = new AbortController(); + const requestUrl = `${protocol}://${hostname}:${mockServer.port}/?query=test`; + const requestPromise = undici.request(requestUrl, { + signal: controller.signal, + }); + controller.abort(); + try { + await requestPromise; + } catch (err) { + // Expected error + requestError = err as Error; + } + + // Let the error be published to diagnostics channel + await new Promise(r => setTimeout(r, 5)); + + spans = memoryExporter.getFinishedSpans(); + const span = spans[0]; + assert.ok(span, 'a span is present'); + assert.strictEqual(spans.length, 1); + assertSpan(span, { + hostname: 'localhost', + httpMethod: 'GET', + path: '/', + query: '?query=test', + error: requestError, + noNetPeer: true, // do not check network attribs + forceStatus: { + code: SpanStatusCode.ERROR, + message: requestError?.message, + }, + }); + }); + }); +}); diff --git a/plugins/node/instrumentation-undici/test/utils/assertSpan.ts b/plugins/node/instrumentation-undici/test/utils/assertSpan.ts new file mode 100644 index 0000000000..3ab0a66d7d --- /dev/null +++ b/plugins/node/instrumentation-undici/test/utils/assertSpan.ts @@ -0,0 +1,191 @@ +/* + * 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 { + SpanKind, + SpanStatus, + Exception, + SpanStatusCode, +} from '@opentelemetry/api'; +import { hrTimeToNanoseconds } from '@opentelemetry/core'; +import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; +import * as assert from 'assert'; +import { SemanticAttributes } from '../../src/enums/SemanticAttributes'; + +type IncomingHttpHeaders = Record; + +export const assertSpan = ( + span: ReadableSpan, + validations: { + httpStatusCode?: number; + httpMethod: string; + spanName?: string; + resHeaders?: Headers | IncomingHttpHeaders; + hostname: string; + reqHeaders?: Headers | IncomingHttpHeaders; + path?: string | null; + query?: string | null; + forceStatus?: SpanStatus; + noNetPeer?: boolean; // we don't expect net peer info when request throw before being sent + error?: Exception; + } +) => { + assert.strictEqual(span.spanContext().traceId.length, 32); + assert.strictEqual(span.spanContext().spanId.length, 16); + assert.strictEqual(span.kind, SpanKind.CLIENT, 'span.kind is correct'); + assert.strictEqual( + span.name, + validations.spanName || validations.httpMethod, + 'span.name is correct' + ); + assert.strictEqual( + span.attributes[SemanticAttributes.HTTP_REQUEST_METHOD], + validations.httpMethod, + `attributes['${SemanticAttributes.HTTP_REQUEST_METHOD}'] is correct` + ); + + if (validations.path) { + assert.strictEqual( + span.attributes[SemanticAttributes.URL_PATH], + validations.path, + `attributes['${SemanticAttributes.URL_PATH}'] is correct` + ); + } + + if (validations.query) { + assert.strictEqual( + span.attributes[SemanticAttributes.URL_QUERY], + validations.query, + `attributes['${SemanticAttributes.URL_QUERY}'] is correct` + ); + } + + assert.strictEqual( + span.attributes[SemanticAttributes.HTTP_RESPONSE_STATUS_CODE], + validations.httpStatusCode, + `attributes['${SemanticAttributes.HTTP_RESPONSE_STATUS_CODE}'] is correct ${ + span.attributes[SemanticAttributes.HTTP_RESPONSE_STATUS_CODE] + }` + ); + + assert.strictEqual(span.links.length, 0, 'there are no links'); + + if (validations.error) { + assert.strictEqual(span.events.length, 1, 'span contains one error event'); + assert.strictEqual( + span.events[0].name, + 'exception', + 'error event name is correct' + ); + + const eventAttributes = span.events[0].attributes; + assert.ok(eventAttributes != null, 'event has attributes'); + assert.deepStrictEqual( + Object.keys(eventAttributes), + ['exception.type', 'exception.message', 'exception.stacktrace'], + 'the event attribute names are correct' + ); + } else { + assert.strictEqual(span.events.length, 0, 'span contains no events'); + } + + // Error message changes between version se we will + // only assert its presence + if (validations.forceStatus) { + assert.equal( + span.status.code, + validations.forceStatus.code, + 'span `status.code` is correct' + ); + assert.ok(span.status.message, 'span `status.message` is present'); + } else { + const { httpStatusCode } = validations; + const isStatusUnset = + httpStatusCode && httpStatusCode >= 100 && httpStatusCode < 400; + assert.equal( + span.status.code, + isStatusUnset ? SpanStatusCode.UNSET : SpanStatusCode.ERROR, + 'span `status.code` is correct' + ); + } + + assert.ok(span.endTime, 'must be finished'); + assert.ok( + hrTimeToNanoseconds(span.duration) > 0, + 'must have positive duration' + ); + + if (validations.resHeaders) { + // Headers were added in v17.5.0, v16.15.0 + // https://nodejs.org/api/globals.html#class-headers + const { resHeaders } = validations; + const contentLengthHeader = getHeader(resHeaders, 'content-length'); + + if (contentLengthHeader) { + const contentLength = Number(contentLengthHeader); + + assert.strictEqual( + span.attributes['http.response.header.content-length'], + contentLength + ); + } + } + + assert.strictEqual( + span.attributes[SemanticAttributes.SERVER_ADDRESS], + validations.hostname, + 'must be consistent (SERVER_ADDRESS and hostname)' + ); + if (!validations.noNetPeer) { + assert.ok( + span.attributes[SemanticAttributes.NETWORK_PEER_ADDRESS], + `must have ${SemanticAttributes.NETWORK_PEER_ADDRESS}` + ); + assert.ok( + span.attributes[SemanticAttributes.NETWORK_PEER_PORT], + `must have ${SemanticAttributes.NETWORK_PEER_PORT}` + ); + } + assert.ok( + (span.attributes[SemanticAttributes.URL_FULL] as string).indexOf( + span.attributes[SemanticAttributes.SERVER_ADDRESS] as string + ) > -1, + `${SemanticAttributes.URL_FULL} & ${SemanticAttributes.SERVER_ADDRESS} must be consistent` + ); + + if (validations.reqHeaders) { + const userAgent = getHeader(validations.reqHeaders, 'user-agent'); + + if (userAgent) { + assert.strictEqual( + span.attributes[SemanticAttributes.USER_AGENT_ORIGINAL], + userAgent + ); + } + } +}; + +/** + * Gets a header by name regardless of the type + */ +function getHeader( + headers: Headers | IncomingHttpHeaders, + name: string +): string | string[] | null | undefined { + if (typeof headers.get === 'function') { + return headers.get(name); + } + return (headers as IncomingHttpHeaders)[name]; +} diff --git a/plugins/node/instrumentation-undici/test/utils/mock-metrics-reader.ts b/plugins/node/instrumentation-undici/test/utils/mock-metrics-reader.ts new file mode 100644 index 0000000000..c3ffbf0ae6 --- /dev/null +++ b/plugins/node/instrumentation-undici/test/utils/mock-metrics-reader.ts @@ -0,0 +1,47 @@ +/* + * 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 { MetricReader, PushMetricExporter } from '@opentelemetry/sdk-metrics'; + +export class MockMetricsReader extends MetricReader { + constructor(private _exporter: PushMetricExporter) { + super({ + aggregationTemporalitySelector: + _exporter.selectAggregationTemporality?.bind(_exporter), + }); + } + + protected onForceFlush(): Promise { + return Promise.resolve(undefined); + } + + protected onShutdown(): Promise { + return Promise.resolve(undefined); + } + + public async collectAndExport(): Promise { + const result = await this.collect(); + await new Promise((resolve, reject) => { + this._exporter.export(result.resourceMetrics, result => { + if (result.error != null) { + reject(result.error); + } else { + resolve(); + } + }); + }); + } +} diff --git a/plugins/node/instrumentation-undici/test/utils/mock-propagation.ts b/plugins/node/instrumentation-undici/test/utils/mock-propagation.ts new file mode 100644 index 0000000000..5c49e661d6 --- /dev/null +++ b/plugins/node/instrumentation-undici/test/utils/mock-propagation.ts @@ -0,0 +1,52 @@ +/* + * 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, + TextMapPropagator, + trace, + TraceFlags, +} from '@opentelemetry/api'; + +export class MockPropagation implements TextMapPropagator { + static TRACE_CONTEXT_KEY = 'x-mock-trace-id'; + static SPAN_CONTEXT_KEY = 'x-mock-span-id'; + extract(context: Context, carrier: Record) { + const extractedSpanContext = { + traceId: carrier[MockPropagation.TRACE_CONTEXT_KEY] as string, + spanId: carrier[MockPropagation.SPAN_CONTEXT_KEY] as string, + traceFlags: TraceFlags.SAMPLED, + isRemote: true, + }; + if (extractedSpanContext.traceId && extractedSpanContext.spanId) { + return trace.setSpanContext(context, extractedSpanContext); + } + return context; + } + inject(context: Context, carrier: Record): void { + const spanContext = trace.getSpanContext(context); + + if (spanContext) { + carrier[MockPropagation.TRACE_CONTEXT_KEY] = spanContext.traceId; + carrier[MockPropagation.SPAN_CONTEXT_KEY] = spanContext.spanId; + } + } + fields(): string[] { + return [ + MockPropagation.TRACE_CONTEXT_KEY, + MockPropagation.SPAN_CONTEXT_KEY, + ]; + } +} diff --git a/plugins/node/instrumentation-undici/test/utils/mock-server.ts b/plugins/node/instrumentation-undici/test/utils/mock-server.ts new file mode 100644 index 0000000000..8a160c8117 --- /dev/null +++ b/plugins/node/instrumentation-undici/test/utils/mock-server.ts @@ -0,0 +1,74 @@ +/* + * 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 http from 'http'; + +export class MockServer { + private _port: number | undefined; + private _httpServer: http.Server | undefined; + private _reqListener: http.RequestListener | undefined; + + get port(): number { + return this._port || 0; + } + + mockListener(handler: http.RequestListener | undefined): void { + this._reqListener = handler; + } + + start(cb: (err?: Error) => void) { + this._httpServer = http.createServer((req, res) => { + // Use the mock listener if defined + if (typeof this._reqListener === 'function') { + return this._reqListener(req, res); + } + + // If no mock function is provided fallback to a basic response + res.statusCode = 200; + res.setHeader('content-type', 'application/json'); + res.write(JSON.stringify({ success: true })); + res.end(); + }); + + this._httpServer.listen(0, () => { + const addr = this._httpServer!.address(); + if (addr == null) { + cb(new Error('unexpected addr null')); + return; + } + + if (typeof addr === 'string') { + cb(new Error(`unexpected addr ${addr}`)); + return; + } + + if (addr.port <= 0) { + cb(new Error('Could not get port')); + return; + } + this._port = addr.port; + cb(); + }); + } + + stop(cb: (err?: Error) => void) { + if (this._httpServer) { + this._httpServer.close(); + this._httpServer = undefined; + this._reqListener = undefined; + } + cb(); + } +} diff --git a/plugins/node/instrumentation-undici/tsconfig.json b/plugins/node/instrumentation-undici/tsconfig.json new file mode 100644 index 0000000000..28be80d266 --- /dev/null +++ b/plugins/node/instrumentation-undici/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../../tsconfig.base", + "compilerOptions": { + "rootDir": ".", + "outDir": "build" + }, + "include": [ + "src/**/*.ts", + "test/**/*.ts" + ] +} diff --git a/release-please-config.json b/release-please-config.json index 6db17aa16a..c0cace7d26 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -31,6 +31,7 @@ "plugins/node/instrumentation-runtime-node": {}, "plugins/node/instrumentation-socket.io": {}, "plugins/node/instrumentation-tedious": {}, + "plugins/node/instrumentation-undici": {}, "plugins/node/opentelemetry-instrumentation-aws-lambda": {}, "plugins/node/opentelemetry-instrumentation-aws-sdk": {}, "plugins/node/opentelemetry-instrumentation-bunyan": {}, From f09080137d786d57cb3666d00487abed5cb97f23 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Tue, 9 Apr 2024 16:06:24 -0400 Subject: [PATCH 024/121] chore(resource-detector-azure): use exported strings for attributes (#2048) Use exported strings for Semantic Resource Attributes, Cloud Platform Values and Cloud Provider Values. Signed-off-by: maryliag Co-authored-by: Jamie Danielson --- .../package.json | 2 +- .../src/detectors/AzureAppServiceDetector.ts | 27 ++++---- .../src/detectors/AzureFunctionsDetector.ts | 35 +++++----- .../src/detectors/AzureVmDetector.ts | 26 +++++--- .../detectors/AzureAppServiceDetector.test.ts | 64 +++++++------------ .../detectors/AzureFunctionsDetector.test.ts | 45 ++++++------- package-lock.json | 4 +- 7 files changed, 97 insertions(+), 106 deletions(-) diff --git a/detectors/node/opentelemetry-resource-detector-azure/package.json b/detectors/node/opentelemetry-resource-detector-azure/package.json index 6e1f51ae42..7690843f9d 100644 --- a/detectors/node/opentelemetry-resource-detector-azure/package.json +++ b/detectors/node/opentelemetry-resource-detector-azure/package.json @@ -48,7 +48,7 @@ }, "dependencies": { "@opentelemetry/resources": "^1.10.1", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.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 430899b81c..7811ba4fa3 100644 --- a/detectors/node/opentelemetry-resource-detector-azure/src/detectors/AzureAppServiceDetector.ts +++ b/detectors/node/opentelemetry-resource-detector-azure/src/detectors/AzureAppServiceDetector.ts @@ -29,16 +29,22 @@ import { FUNCTIONS_VERSION, } from '../types'; import { - CloudProviderValues, - CloudPlatformValues, - SemanticResourceAttributes, + SEMRESATTRS_CLOUD_REGION, + SEMRESATTRS_DEPLOYMENT_ENVIRONMENT, + SEMRESATTRS_HOST_ID, + SEMRESATTRS_SERVICE_INSTANCE_ID, + SEMRESATTRS_SERVICE_NAME, + SEMRESATTRS_CLOUD_PROVIDER, + SEMRESATTRS_CLOUD_PLATFORM, + CLOUDPROVIDERVALUES_AZURE, + CLOUDPLATFORMVALUES_AZURE_APP_SERVICE, } from '@opentelemetry/semantic-conventions'; const APP_SERVICE_ATTRIBUTE_ENV_VARS = { - [SemanticResourceAttributes.CLOUD_REGION]: REGION_NAME, - [SemanticResourceAttributes.DEPLOYMENT_ENVIRONMENT]: WEBSITE_SLOT_NAME, - [SemanticResourceAttributes.HOST_ID]: WEBSITE_HOSTNAME, - [SemanticResourceAttributes.SERVICE_INSTANCE_ID]: WEBSITE_INSTANCE_ID, + [SEMRESATTRS_CLOUD_REGION]: REGION_NAME, + [SEMRESATTRS_DEPLOYMENT_ENVIRONMENT]: WEBSITE_SLOT_NAME, + [SEMRESATTRS_HOST_ID]: WEBSITE_HOSTNAME, + [SEMRESATTRS_SERVICE_INSTANCE_ID]: WEBSITE_INSTANCE_ID, [AZURE_APP_SERVICE_STAMP_RESOURCE_ATTRIBUTE]: WEBSITE_HOME_STAMPNAME, }; @@ -54,16 +60,15 @@ class AzureAppServiceDetector implements DetectorSync { if (websiteSiteName && !isAzureFunction) { attributes = { ...attributes, - [SemanticResourceAttributes.SERVICE_NAME]: websiteSiteName, + [SEMRESATTRS_SERVICE_NAME]: websiteSiteName, }; attributes = { ...attributes, - [SemanticResourceAttributes.CLOUD_PROVIDER]: CloudProviderValues.AZURE, + [SEMRESATTRS_CLOUD_PROVIDER]: CLOUDPROVIDERVALUES_AZURE, }; attributes = { ...attributes, - [SemanticResourceAttributes.CLOUD_PLATFORM]: - CloudPlatformValues.AZURE_APP_SERVICE, + [SEMRESATTRS_CLOUD_PLATFORM]: CLOUDPLATFORMVALUES_AZURE_APP_SERVICE, }; const azureResourceUri = this.getAzureResourceUri(websiteSiteName); 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 2a695fd2d6..38b2f62f5e 100644 --- a/detectors/node/opentelemetry-resource-detector-azure/src/detectors/AzureFunctionsDetector.ts +++ b/detectors/node/opentelemetry-resource-detector-azure/src/detectors/AzureFunctionsDetector.ts @@ -17,9 +17,15 @@ import { DetectorSync, IResource, Resource } from '@opentelemetry/resources'; import { - CloudProviderValues, - CloudPlatformValues, - SemanticResourceAttributes, + SEMRESATTRS_FAAS_NAME, + SEMRESATTRS_FAAS_VERSION, + SEMRESATTRS_FAAS_MAX_MEMORY, + SEMRESATTRS_FAAS_INSTANCE, + SEMRESATTRS_CLOUD_PROVIDER, + SEMRESATTRS_CLOUD_PLATFORM, + SEMRESATTRS_CLOUD_REGION, + CLOUDPROVIDERVALUES_AZURE, + CLOUDPLATFORMVALUES_AZURE_FUNCTIONS, } from '@opentelemetry/semantic-conventions'; import { WEBSITE_SITE_NAME, @@ -30,10 +36,10 @@ import { } from '../types'; const AZURE_FUNCTIONS_ATTRIBUTE_ENV_VARS = { - [SemanticResourceAttributes.FAAS_NAME]: WEBSITE_SITE_NAME, - [SemanticResourceAttributes.FAAS_VERSION]: FUNCTIONS_VERSION, - [SemanticResourceAttributes.FAAS_INSTANCE]: WEBSITE_INSTANCE_ID, - [SemanticResourceAttributes.FAAS_MAX_MEMORY]: FUNCTIONS_MEM_LIMIT, + [SEMRESATTRS_FAAS_NAME]: WEBSITE_SITE_NAME, + [SEMRESATTRS_FAAS_VERSION]: FUNCTIONS_VERSION, + [SEMRESATTRS_FAAS_INSTANCE]: WEBSITE_INSTANCE_ID, + [SEMRESATTRS_FAAS_MAX_MEMORY]: FUNCTIONS_MEM_LIMIT, }; /** @@ -50,34 +56,33 @@ class AzureFunctionsDetector implements DetectorSync { const functionMemLimit = process.env[FUNCTIONS_MEM_LIMIT]; attributes = { - [SemanticResourceAttributes.CLOUD_PROVIDER]: CloudProviderValues.AZURE, - [SemanticResourceAttributes.CLOUD_PLATFORM]: - CloudPlatformValues.AZURE_FUNCTIONS, - [SemanticResourceAttributes.CLOUD_REGION]: process.env[REGION_NAME], + [SEMRESATTRS_CLOUD_PROVIDER]: CLOUDPROVIDERVALUES_AZURE, + [SEMRESATTRS_CLOUD_PLATFORM]: CLOUDPLATFORMVALUES_AZURE_FUNCTIONS, + [SEMRESATTRS_CLOUD_REGION]: process.env[REGION_NAME], }; if (functionName) { attributes = { ...attributes, - [SemanticResourceAttributes.FAAS_NAME]: functionName, + [SEMRESATTRS_FAAS_NAME]: functionName, }; } if (functionVersion) { attributes = { ...attributes, - [SemanticResourceAttributes.FAAS_VERSION]: functionVersion, + [SEMRESATTRS_FAAS_VERSION]: functionVersion, }; } if (functionInstance) { attributes = { ...attributes, - [SemanticResourceAttributes.FAAS_INSTANCE]: functionInstance, + [SEMRESATTRS_FAAS_INSTANCE]: functionInstance, }; } if (functionMemLimit) { attributes = { ...attributes, - [SemanticResourceAttributes.FAAS_MAX_MEMORY]: functionMemLimit, + [SEMRESATTRS_FAAS_MAX_MEMORY]: functionMemLimit, }; } 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 9de9bc330b..1dfc6da705 100644 --- a/detectors/node/opentelemetry-resource-detector-azure/src/detectors/AzureVmDetector.ts +++ b/detectors/node/opentelemetry-resource-detector-azure/src/detectors/AzureVmDetector.ts @@ -22,9 +22,15 @@ import { ResourceAttributes, } from '@opentelemetry/resources'; import { - CloudPlatformValues, - CloudProviderValues, - SemanticResourceAttributes, + CLOUDPLATFORMVALUES_AZURE_VM, + CLOUDPROVIDERVALUES_AZURE, + SEMRESATTRS_CLOUD_PLATFORM, + SEMRESATTRS_CLOUD_PROVIDER, + SEMRESATTRS_CLOUD_REGION, + SEMRESATTRS_HOST_ID, + SEMRESATTRS_HOST_NAME, + SEMRESATTRS_HOST_TYPE, + SEMRESATTRS_OS_VERSION, } from '@opentelemetry/semantic-conventions'; import { CLOUD_RESOURCE_ID_RESOURCE_ATTRIBUTE, @@ -90,14 +96,14 @@ class AzureVmResourceDetector implements DetectorSync { const attributes = { [AZURE_VM_SCALE_SET_NAME_ATTRIBUTE]: metadata['vmScaleSetName'], [AZURE_VM_SKU_ATTRIBUTE]: metadata['sku'], - [SemanticResourceAttributes.CLOUD_PLATFORM]: CloudPlatformValues.AZURE_VM, - [SemanticResourceAttributes.CLOUD_PROVIDER]: CloudProviderValues.AZURE, - [SemanticResourceAttributes.CLOUD_REGION]: metadata['location'], + [SEMRESATTRS_CLOUD_PLATFORM]: CLOUDPLATFORMVALUES_AZURE_VM, + [SEMRESATTRS_CLOUD_PROVIDER]: CLOUDPROVIDERVALUES_AZURE, + [SEMRESATTRS_CLOUD_REGION]: metadata['location'], [CLOUD_RESOURCE_ID_RESOURCE_ATTRIBUTE]: metadata['resourceId'], - [SemanticResourceAttributes.HOST_ID]: metadata['vmId'], - [SemanticResourceAttributes.HOST_NAME]: metadata['name'], - [SemanticResourceAttributes.HOST_TYPE]: metadata['vmSize'], - [SemanticResourceAttributes.OS_VERSION]: metadata['version'], + [SEMRESATTRS_HOST_ID]: metadata['vmId'], + [SEMRESATTRS_HOST_NAME]: metadata['name'], + [SEMRESATTRS_HOST_TYPE]: metadata['vmSize'], + [SEMRESATTRS_OS_VERSION]: metadata['version'], }; return attributes; } 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 46796d3a6a..c178106f32 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 @@ -16,7 +16,15 @@ import * as assert from 'assert'; import { azureAppServiceDetector } from '../../src/detectors/AzureAppServiceDetector'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMRESATTRS_CLOUD_PLATFORM, + SEMRESATTRS_CLOUD_PROVIDER, + SEMRESATTRS_CLOUD_REGION, + SEMRESATTRS_DEPLOYMENT_ENVIRONMENT, + SEMRESATTRS_HOST_ID, + SEMRESATTRS_SERVICE_INSTANCE_ID, + SEMRESATTRS_SERVICE_NAME, +} from '@opentelemetry/semantic-conventions'; import { azureFunctionsDetector } from '../../src'; import { detectResourcesSync } from '@opentelemetry/resources'; @@ -45,36 +53,24 @@ describe('AzureAppServiceDetector', () => { }); assert.ok(resource); const attributes = resource.attributes; + assert.strictEqual(attributes[SEMRESATTRS_SERVICE_NAME], 'test-site'); + assert.strictEqual(attributes[SEMRESATTRS_CLOUD_PROVIDER], 'azure'); assert.strictEqual( - attributes[SemanticResourceAttributes.SERVICE_NAME], - 'test-site' - ); - assert.strictEqual( - attributes[SemanticResourceAttributes.CLOUD_PROVIDER], - 'azure' - ); - assert.strictEqual( - attributes[SemanticResourceAttributes.CLOUD_PLATFORM], + attributes[SEMRESATTRS_CLOUD_PLATFORM], 'azure_app_service' ); assert.strictEqual( attributes['cloud.resource_id'], `/subscriptions/${process.env.WEBSITE_OWNER_NAME}/resourceGroups/${process.env.WEBSITE_RESOURCE_GROUP}/providers/Microsoft.Web/sites/${process.env.WEBSITE_SITE_NAME}` ); + assert.strictEqual(attributes[SEMRESATTRS_CLOUD_REGION], 'test-region'); assert.strictEqual( - attributes[SemanticResourceAttributes.CLOUD_REGION], - 'test-region' - ); - assert.strictEqual( - attributes[SemanticResourceAttributes.DEPLOYMENT_ENVIRONMENT], + attributes[SEMRESATTRS_DEPLOYMENT_ENVIRONMENT], 'test-slot' ); + assert.strictEqual(attributes[SEMRESATTRS_HOST_ID], 'test-hostname'); assert.strictEqual( - attributes[SemanticResourceAttributes.HOST_ID], - 'test-hostname' - ); - assert.strictEqual( - attributes[SemanticResourceAttributes.SERVICE_INSTANCE_ID], + attributes[SEMRESATTRS_SERVICE_INSTANCE_ID], 'test-instance-id' ); assert.strictEqual( @@ -97,20 +93,14 @@ describe('AzureAppServiceDetector', () => { }); assert.ok(resource); const attributes = resource.attributes; + assert.strictEqual(attributes[SEMRESATTRS_CLOUD_REGION], 'test-region'); assert.strictEqual( - attributes[SemanticResourceAttributes.CLOUD_REGION], - 'test-region' - ); - assert.strictEqual( - attributes[SemanticResourceAttributes.DEPLOYMENT_ENVIRONMENT], + attributes[SEMRESATTRS_DEPLOYMENT_ENVIRONMENT], 'test-slot' ); + assert.strictEqual(attributes[SEMRESATTRS_HOST_ID], 'test-hostname'); assert.strictEqual( - attributes[SemanticResourceAttributes.HOST_ID], - 'test-hostname' - ); - assert.strictEqual( - attributes[SemanticResourceAttributes.SERVICE_INSTANCE_ID], + attributes[SEMRESATTRS_SERVICE_INSTANCE_ID], 'test-instance-id' ); assert.strictEqual( @@ -134,20 +124,14 @@ describe('AzureAppServiceDetector', () => { }); assert.ok(resource); const attributes = resource.attributes; + assert.strictEqual(attributes[SEMRESATTRS_CLOUD_REGION], 'test-region'); assert.strictEqual( - attributes[SemanticResourceAttributes.CLOUD_REGION], - 'test-region' - ); - assert.strictEqual( - attributes[SemanticResourceAttributes.DEPLOYMENT_ENVIRONMENT], + attributes[SEMRESATTRS_DEPLOYMENT_ENVIRONMENT], 'test-slot' ); + assert.strictEqual(attributes[SEMRESATTRS_HOST_ID], 'test-hostname'); assert.strictEqual( - attributes[SemanticResourceAttributes.HOST_ID], - 'test-hostname' - ); - assert.strictEqual( - attributes[SemanticResourceAttributes.SERVICE_INSTANCE_ID], + attributes[SEMRESATTRS_SERVICE_INSTANCE_ID], 'test-instance-id' ); assert.strictEqual( 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 2918f245f5..0a334ab66f 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 @@ -17,7 +17,16 @@ import * as assert from 'assert'; import { azureFunctionsDetector } from '../../src/detectors/AzureFunctionsDetector'; import { azureAppServiceDetector } from '../../src/detectors/AzureAppServiceDetector'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMRESATTRS_CLOUD_PLATFORM, + SEMRESATTRS_CLOUD_PROVIDER, + SEMRESATTRS_CLOUD_REGION, + SEMRESATTRS_FAAS_INSTANCE, + SEMRESATTRS_FAAS_MAX_MEMORY, + SEMRESATTRS_FAAS_NAME, + SEMRESATTRS_FAAS_VERSION, + SEMRESATTRS_SERVICE_INSTANCE_ID, +} from '@opentelemetry/semantic-conventions'; import { detectResourcesSync } from '@opentelemetry/resources'; import { AZURE_APP_SERVICE_STAMP_RESOURCE_ATTRIBUTE } from '../../src/types'; @@ -43,40 +52,22 @@ describe('AzureFunctionsDetector', () => { }); assert.ok(resource); const attributes = resource.attributes; + assert.strictEqual(attributes[SEMRESATTRS_FAAS_NAME], 'test-function'); + assert.strictEqual(attributes[SEMRESATTRS_CLOUD_PROVIDER], 'azure'); assert.strictEqual( - attributes[SemanticResourceAttributes.FAAS_NAME], - 'test-function' - ); - assert.strictEqual( - attributes[SemanticResourceAttributes.CLOUD_PROVIDER], - 'azure' - ); - assert.strictEqual( - attributes[SemanticResourceAttributes.CLOUD_PLATFORM], + attributes[SEMRESATTRS_CLOUD_PLATFORM], 'azure_functions' ); + assert.strictEqual(attributes[SEMRESATTRS_CLOUD_REGION], 'test-region'); assert.strictEqual( - attributes[SemanticResourceAttributes.CLOUD_REGION], - 'test-region' - ); - assert.strictEqual( - attributes[SemanticResourceAttributes.FAAS_INSTANCE], + attributes[SEMRESATTRS_FAAS_INSTANCE], 'test-instance-id' ); - assert.strictEqual( - attributes[SemanticResourceAttributes.FAAS_MAX_MEMORY], - '1000' - ); - assert.strictEqual( - attributes[SemanticResourceAttributes.FAAS_VERSION], - '~4' - ); + assert.strictEqual(attributes[SEMRESATTRS_FAAS_MAX_MEMORY], '1000'); + assert.strictEqual(attributes[SEMRESATTRS_FAAS_VERSION], '~4'); // Should not detect app service values - assert.strictEqual( - attributes[SemanticResourceAttributes.SERVICE_INSTANCE_ID], - undefined - ); + assert.strictEqual(attributes[SEMRESATTRS_SERVICE_INSTANCE_ID], undefined); assert.strictEqual( attributes[AZURE_APP_SERVICE_STAMP_RESOURCE_ATTRIBUTE], diff --git a/package-lock.json b/package-lock.json index 9a502dc61d..f215b16732 100644 --- a/package-lock.json +++ b/package-lock.json @@ -112,7 +112,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/resources": "^1.10.1", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@opentelemetry/api": "^1.0.0", @@ -48028,7 +48028,7 @@ "@opentelemetry/api": "^1.0.0", "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/resources": "^1.10.1", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", From cf25c50362900c177cecf4ef58a5f79c43418898 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Tue, 9 Apr 2024 17:01:55 -0400 Subject: [PATCH 025/121] chore(resource-detector-instana): use exported strings for attributes (#2051) Use exported strings for Semantic Resource Attributes --- .../opentelemetry-resource-detector-instana/README.md | 4 ++-- .../opentelemetry-resource-detector-instana/package.json | 2 +- .../src/detectors/InstanaAgentDetector.ts | 9 ++++++--- .../test/InstanaAgentDetectorIntegrationTest.test.ts | 6 +++--- package-lock.json | 4 ++-- 5 files changed, 14 insertions(+), 11 deletions(-) diff --git a/detectors/node/opentelemetry-resource-detector-instana/README.md b/detectors/node/opentelemetry-resource-detector-instana/README.md index fef7b05bbd..203b5a2280 100644 --- a/detectors/node/opentelemetry-resource-detector-instana/README.md +++ b/detectors/node/opentelemetry-resource-detector-instana/README.md @@ -26,12 +26,12 @@ import { processDetector, envDetector, } from "@opentelemetry/resources"; -import { SemanticResourceAttributes } from "@opentelemetry/semantic-conventions"; +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({ - [SemanticResourceAttributes.SERVICE_NAME]: "TestService", + [SEMRESATTRS_SERVICE_NAME]: "TestService", }); const sdk = new NodeSDK({ diff --git a/detectors/node/opentelemetry-resource-detector-instana/package.json b/detectors/node/opentelemetry-resource-detector-instana/package.json index dd4e3391c7..2bc2b34f36 100644 --- a/detectors/node/opentelemetry-resource-detector-instana/package.json +++ b/detectors/node/opentelemetry-resource-detector-instana/package.json @@ -52,7 +52,7 @@ }, "dependencies": { "@opentelemetry/resources": "^1.0.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" 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 e036523240..ed0a11284c 100644 --- a/detectors/node/opentelemetry-resource-detector-instana/src/detectors/InstanaAgentDetector.ts +++ b/detectors/node/opentelemetry-resource-detector-instana/src/detectors/InstanaAgentDetector.ts @@ -15,7 +15,10 @@ */ import { Detector, Resource, IResource } from '@opentelemetry/resources'; import { diag } from '@opentelemetry/api'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMRESATTRS_PROCESS_PID, + SEMRESATTRS_SERVICE_INSTANCE_ID, +} from '@opentelemetry/semantic-conventions'; import * as http from 'http'; class InstanaAgentDetector implements Detector { @@ -32,8 +35,8 @@ class InstanaAgentDetector implements Detector { const data = await this._retryHandler(host, port, 0); return new Resource({ - [SemanticResourceAttributes.PROCESS_PID]: data.pid, - [SemanticResourceAttributes.SERVICE_INSTANCE_ID]: data.agentUuid, + [SEMRESATTRS_PROCESS_PID]: data.pid, + [SEMRESATTRS_SERVICE_INSTANCE_ID]: data.agentUuid, }); } 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 ee8124f3cc..e99aa78487 100644 --- a/detectors/node/opentelemetry-resource-detector-instana/test/InstanaAgentDetectorIntegrationTest.test.ts +++ b/detectors/node/opentelemetry-resource-detector-instana/test/InstanaAgentDetectorIntegrationTest.test.ts @@ -21,7 +21,7 @@ import { processDetector, envDetector, } from '@opentelemetry/resources'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; import { NodeSDK } from '@opentelemetry/sdk-node'; import { instanaAgentDetector } from '../src'; @@ -54,7 +54,7 @@ describe('[Integration] instanaAgentDetector', () => { const serviceName = 'TestService'; const globalResource = new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: serviceName, + [SEMRESATTRS_SERVICE_NAME]: serviceName, }); const sdk = new NodeSDK({ @@ -93,7 +93,7 @@ describe('[Integration] instanaAgentDetector', () => { const serviceName = 'TestService'; const globalResource = new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: serviceName, + [SEMRESATTRS_SERVICE_NAME]: serviceName, }); const sdk = new NodeSDK({ diff --git a/package-lock.json b/package-lock.json index f215b16732..856082a284 100644 --- a/package-lock.json +++ b/package-lock.json @@ -250,7 +250,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/resources": "^1.0.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -48135,7 +48135,7 @@ "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/resources": "^1.0.0", "@opentelemetry/sdk-node": "^0.50.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/semver": "7.5.3", From 4da02680b6441e0662f21f690714097e63076fa7 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Tue, 9 Apr 2024 17:03:09 -0400 Subject: [PATCH 026/121] chore: update readme for gcp resource detector (#2062) Update README of GCP Resource Detector to clarify the source of the data and add semantic conventions. Part Of #2055 Part Of #2025 --- .../README.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/detectors/node/opentelemetry-resource-detector-gcp/README.md b/detectors/node/opentelemetry-resource-detector-gcp/README.md index 5262d02c33..5eee1f8820 100644 --- a/detectors/node/opentelemetry-resource-detector-gcp/README.md +++ b/detectors/node/opentelemetry-resource-detector-gcp/README.md @@ -27,6 +27,24 @@ const resource = await detectResources({ const tracerProvider = new NodeTracerProvider({ resource }); ``` +## Available detectors + +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) + +### GCP Detector + +| Resource Attribute | Description | +|-------------------------|---------------------------------------------------------------| +| cloud.account.id | Value of `project-id` from GCP Metadata project | +| cloud.availability_zone | Value of `zone` from GCP Metadata instance | +| cloud.provider | The cloud provider. In this context, it's always "gcp" | +| container.name | Value of Environment Variable `CONTAINER_NAME` | +| host.id | Value of `id` from GCP Metadata instance | +| host.name | Value of `hostname` from GCP Metadata instance | +| k8s.cluster.name | Value of `attributes/cluster-name` from GCP Metadata instance | +| k8s.namespace.name | Value of Environment Variable `NAMESPACE` | +| k8s.pod.name | Value of Environment Variable `HOSTNAME` | + ## Useful links - [GCP Metadata Documentation][] From 1a7b87a200b84b1df10f0a5b56ce034676277f51 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Tue, 9 Apr 2024 18:42:45 -0400 Subject: [PATCH 027/121] chore(test-utils): update semantic resource attributes (#2080) Update Semantic Resource Attributes Part Of #2025 --- package-lock.json | 4 +- packages/opentelemetry-test-utils/README.md | 4 + .../opentelemetry-test-utils/package.json | 2 +- .../src/instrumentations/index.ts | 4 +- .../src/resource-assertions.ts | 84 ++++++++++++------- 5 files changed, 64 insertions(+), 34 deletions(-) diff --git a/package-lock.json b/package-lock.json index 856082a284..eef1558af7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36772,7 +36772,7 @@ "@opentelemetry/sdk-node": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -45796,7 +45796,7 @@ "@opentelemetry/sdk-node": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/node": "18.6.5", "typescript": "4.4.4" } diff --git a/packages/opentelemetry-test-utils/README.md b/packages/opentelemetry-test-utils/README.md index 5820ef175e..62219eb7c3 100644 --- a/packages/opentelemetry-test-utils/README.md +++ b/packages/opentelemetry-test-utils/README.md @@ -65,6 +65,10 @@ it('some test', () => { That's it - supper short and easy. +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/packages/opentelemetry-test-utils/package.json b/packages/opentelemetry-test-utils/package.json index 21162672d0..0b77a8acbf 100644 --- a/packages/opentelemetry-test-utils/package.json +++ b/packages/opentelemetry-test-utils/package.json @@ -51,6 +51,6 @@ "@opentelemetry/sdk-node": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" } } diff --git a/packages/opentelemetry-test-utils/src/instrumentations/index.ts b/packages/opentelemetry-test-utils/src/instrumentations/index.ts index 0a8f456236..b480032e8e 100644 --- a/packages/opentelemetry-test-utils/src/instrumentations/index.ts +++ b/packages/opentelemetry-test-utils/src/instrumentations/index.ts @@ -14,7 +14,7 @@ * limitations under the License. */ import { Resource } from '@opentelemetry/resources'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; import { getInstrumentation } from './instrumentation-singleton'; import { registerInstrumentationTestingProvider } from './otel-default-provider'; import { resetMemoryExporter } from './otel-provider-api'; @@ -40,7 +40,7 @@ export const mochaHooks = { } const provider = registerInstrumentationTestingProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: serviceName, + [SEMRESATTRS_SERVICE_NAME]: serviceName, }), }); getInstrumentation()?.setTracerProvider(provider); diff --git a/packages/opentelemetry-test-utils/src/resource-assertions.ts b/packages/opentelemetry-test-utils/src/resource-assertions.ts index fb179fb40e..eb248d41d8 100644 --- a/packages/opentelemetry-test-utils/src/resource-assertions.ts +++ b/packages/opentelemetry-test-utils/src/resource-assertions.ts @@ -19,6 +19,32 @@ import * as assert from 'assert'; import { Resource } from '@opentelemetry/resources'; import { SemanticResourceAttributes, + SEMRESATTRS_CLOUD_ACCOUNT_ID, + SEMRESATTRS_CLOUD_AVAILABILITY_ZONE, + SEMRESATTRS_CLOUD_PROVIDER, + SEMRESATTRS_CLOUD_REGION, + SEMRESATTRS_CONTAINER_ID, + SEMRESATTRS_CONTAINER_IMAGE_NAME, + SEMRESATTRS_CONTAINER_IMAGE_TAG, + SEMRESATTRS_CONTAINER_NAME, + SEMRESATTRS_HOST_ID, + SEMRESATTRS_HOST_IMAGE_ID, + SEMRESATTRS_HOST_IMAGE_NAME, + SEMRESATTRS_HOST_IMAGE_VERSION, + SEMRESATTRS_HOST_NAME, + SEMRESATTRS_HOST_TYPE, + SEMRESATTRS_K8S_CLUSTER_NAME, + SEMRESATTRS_K8S_DEPLOYMENT_NAME, + SEMRESATTRS_K8S_NAMESPACE_NAME, + SEMRESATTRS_K8S_POD_NAME, + SEMRESATTRS_PROCESS_COMMAND, + SEMRESATTRS_PROCESS_COMMAND_LINE, + SEMRESATTRS_PROCESS_EXECUTABLE_NAME, + SEMRESATTRS_PROCESS_PID, + SEMRESATTRS_SERVICE_INSTANCE_ID, + SEMRESATTRS_SERVICE_NAME, + SEMRESATTRS_SERVICE_NAMESPACE, + SEMRESATTRS_SERVICE_VERSION, SEMRESATTRS_TELEMETRY_SDK_LANGUAGE, SEMRESATTRS_TELEMETRY_SDK_NAME, SEMRESATTRS_TELEMETRY_SDK_VERSION, @@ -42,22 +68,22 @@ export const assertCloudResource = ( assertHasOneLabel('CLOUD', resource); if (validations.provider) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.CLOUD_PROVIDER], + resource.attributes[SEMRESATTRS_CLOUD_PROVIDER], validations.provider ); if (validations.accountId) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.CLOUD_ACCOUNT_ID], + resource.attributes[SEMRESATTRS_CLOUD_ACCOUNT_ID], validations.accountId ); if (validations.region) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.CLOUD_REGION], + resource.attributes[SEMRESATTRS_CLOUD_REGION], validations.region ); if (validations.zone) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.CLOUD_AVAILABILITY_ZONE], + resource.attributes[SEMRESATTRS_CLOUD_AVAILABILITY_ZONE], validations.zone ); }; @@ -80,22 +106,22 @@ export const assertContainerResource = ( assertHasOneLabel('CONTAINER', resource); if (validations.name) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.CONTAINER_NAME], + resource.attributes[SEMRESATTRS_CONTAINER_NAME], validations.name ); if (validations.id) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.CONTAINER_ID], + resource.attributes[SEMRESATTRS_CONTAINER_ID], validations.id ); if (validations.imageName) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.CONTAINER_IMAGE_NAME], + resource.attributes[SEMRESATTRS_CONTAINER_IMAGE_NAME], validations.imageName ); if (validations.imageTag) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.CONTAINER_IMAGE_TAG], + resource.attributes[SEMRESATTRS_CONTAINER_IMAGE_TAG], validations.imageTag ); }; @@ -120,32 +146,32 @@ export const assertHostResource = ( assertHasOneLabel('HOST', resource); if (validations.id) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.HOST_ID], + resource.attributes[SEMRESATTRS_HOST_ID], validations.id ); if (validations.name) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.HOST_NAME], + resource.attributes[SEMRESATTRS_HOST_NAME], validations.name ); if (validations.hostType) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.HOST_TYPE], + resource.attributes[SEMRESATTRS_HOST_TYPE], validations.hostType ); if (validations.imageName) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.HOST_IMAGE_NAME], + resource.attributes[SEMRESATTRS_HOST_IMAGE_NAME], validations.imageName ); if (validations.imageId) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.HOST_IMAGE_ID], + resource.attributes[SEMRESATTRS_HOST_IMAGE_ID], validations.imageId ); if (validations.imageVersion) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.HOST_IMAGE_VERSION], + resource.attributes[SEMRESATTRS_HOST_IMAGE_VERSION], validations.imageVersion ); }; @@ -168,22 +194,22 @@ export const assertK8sResource = ( assertHasOneLabel('K8S', resource); if (validations.clusterName) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.K8S_CLUSTER_NAME], + resource.attributes[SEMRESATTRS_K8S_CLUSTER_NAME], validations.clusterName ); if (validations.namespaceName) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.K8S_NAMESPACE_NAME], + resource.attributes[SEMRESATTRS_K8S_NAMESPACE_NAME], validations.namespaceName ); if (validations.podName) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.K8S_POD_NAME], + resource.attributes[SEMRESATTRS_K8S_POD_NAME], validations.podName ); if (validations.deploymentName) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.K8S_DEPLOYMENT_NAME], + resource.attributes[SEMRESATTRS_K8S_DEPLOYMENT_NAME], validations.deploymentName ); }; @@ -211,17 +237,17 @@ export const assertTelemetrySDKResource = ( if (validations.name) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.TELEMETRY_SDK_NAME], + resource.attributes[SEMRESATTRS_TELEMETRY_SDK_NAME], validations.name ); if (validations.language) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.TELEMETRY_SDK_LANGUAGE], + resource.attributes[SEMRESATTRS_TELEMETRY_SDK_LANGUAGE], validations.language ); if (validations.version) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.TELEMETRY_SDK_VERSION], + resource.attributes[SEMRESATTRS_TELEMETRY_SDK_VERSION], validations.version ); }; @@ -242,21 +268,21 @@ export const assertServiceResource = ( } ) => { assert.strictEqual( - resource.attributes[SemanticResourceAttributes.SERVICE_NAME], + resource.attributes[SEMRESATTRS_SERVICE_NAME], validations.name ); assert.strictEqual( - resource.attributes[SemanticResourceAttributes.SERVICE_INSTANCE_ID], + resource.attributes[SEMRESATTRS_SERVICE_INSTANCE_ID], validations.instanceId ); if (validations.namespace) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.SERVICE_NAMESPACE], + resource.attributes[SEMRESATTRS_SERVICE_NAMESPACE], validations.namespace ); if (validations.version) assert.strictEqual( - resource.attributes[SemanticResourceAttributes.SERVICE_VERSION], + resource.attributes[SEMRESATTRS_SERVICE_VERSION], validations.version ); }; @@ -277,24 +303,24 @@ export const assertProcessResource = ( } ) => { assert.strictEqual( - resource.attributes[SemanticResourceAttributes.PROCESS_PID], + resource.attributes[SEMRESATTRS_PROCESS_PID], validations.pid ); if (validations.name) { assert.strictEqual( - resource.attributes[SemanticResourceAttributes.PROCESS_EXECUTABLE_NAME], + resource.attributes[SEMRESATTRS_PROCESS_EXECUTABLE_NAME], validations.name ); } if (validations.command) { assert.strictEqual( - resource.attributes[SemanticResourceAttributes.PROCESS_COMMAND], + resource.attributes[SEMRESATTRS_PROCESS_COMMAND], validations.command ); } if (validations.commandLine) { assert.strictEqual( - resource.attributes[SemanticResourceAttributes.PROCESS_COMMAND_LINE], + resource.attributes[SEMRESATTRS_PROCESS_COMMAND_LINE], validations.commandLine ); } From 6bd62a27a81564b4518a15732967cdebc73d6e54 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Tue, 9 Apr 2024 18:43:03 -0400 Subject: [PATCH 028/121] chore(resource-detector-gcp): use exported strings for attributes (#2050) Use exported strings for Semantic Resource Attributes and Cloud Provider Values. Signed-off-by: maryliag --- .../package.json | 2 +- .../src/detectors/GcpDetector.ts | 31 ++++++++++++------- package-lock.json | 4 +-- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/detectors/node/opentelemetry-resource-detector-gcp/package.json b/detectors/node/opentelemetry-resource-detector-gcp/package.json index 6a3df59b58..cc070b0c5b 100644 --- a/detectors/node/opentelemetry-resource-detector-gcp/package.json +++ b/detectors/node/opentelemetry-resource-detector-gcp/package.json @@ -56,7 +56,7 @@ "dependencies": { "@opentelemetry/core": "^1.0.0", "@opentelemetry/resources": "^1.0.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "gcp-metadata": "^6.0.0" }, "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-gcp/src/detectors/GcpDetector.ts b/detectors/node/opentelemetry-resource-detector-gcp/src/detectors/GcpDetector.ts index 206bb4d1d3..142885eaa6 100644 --- a/detectors/node/opentelemetry-resource-detector-gcp/src/detectors/GcpDetector.ts +++ b/detectors/node/opentelemetry-resource-detector-gcp/src/detectors/GcpDetector.ts @@ -24,8 +24,16 @@ import { } from '@opentelemetry/resources'; import { getEnv } from '@opentelemetry/core'; import { - CloudProviderValues, - SemanticResourceAttributes, + CLOUDPROVIDERVALUES_GCP, + SEMRESATTRS_CLOUD_ACCOUNT_ID, + SEMRESATTRS_CLOUD_AVAILABILITY_ZONE, + SEMRESATTRS_CLOUD_PROVIDER, + SEMRESATTRS_CONTAINER_NAME, + SEMRESATTRS_HOST_ID, + SEMRESATTRS_HOST_NAME, + SEMRESATTRS_K8S_CLUSTER_NAME, + SEMRESATTRS_K8S_NAMESPACE_NAME, + SEMRESATTRS_K8S_POD_NAME, } from '@opentelemetry/semantic-conventions'; /** @@ -58,12 +66,11 @@ class GcpDetector implements Detector { ]); const attributes: ResourceAttributes = {}; - attributes[SemanticResourceAttributes.CLOUD_ACCOUNT_ID] = projectId; - attributes[SemanticResourceAttributes.HOST_ID] = instanceId; - attributes[SemanticResourceAttributes.HOST_NAME] = hostname; - attributes[SemanticResourceAttributes.CLOUD_AVAILABILITY_ZONE] = zoneId; - attributes[SemanticResourceAttributes.CLOUD_PROVIDER] = - CloudProviderValues.GCP; + 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; if (getEnv().KUBERNETES_SERVICE_HOST) this._addK8sAttributes(attributes, clusterName); @@ -78,10 +85,10 @@ class GcpDetector implements Detector { ): void { const env = getEnv(); - attributes[SemanticResourceAttributes.K8S_CLUSTER_NAME] = clusterName; - attributes[SemanticResourceAttributes.K8S_NAMESPACE_NAME] = env.NAMESPACE; - attributes[SemanticResourceAttributes.K8S_POD_NAME] = env.HOSTNAME; - attributes[SemanticResourceAttributes.CONTAINER_NAME] = env.CONTAINER_NAME; + attributes[SEMRESATTRS_K8S_CLUSTER_NAME] = clusterName; + attributes[SEMRESATTRS_K8S_NAMESPACE_NAME] = env.NAMESPACE; + attributes[SEMRESATTRS_K8S_POD_NAME] = env.HOSTNAME; + attributes[SEMRESATTRS_CONTAINER_NAME] = env.CONTAINER_NAME; } /** Gets project id from GCP project metadata. */ diff --git a/package-lock.json b/package-lock.json index eef1558af7..ba9b0c9ab0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -183,7 +183,7 @@ "dependencies": { "@opentelemetry/core": "^1.0.0", "@opentelemetry/resources": "^1.0.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "gcp-metadata": "^6.0.0" }, "devDependencies": { @@ -48083,7 +48083,7 @@ "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.0.0", "@opentelemetry/resources": "^1.0.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/semver": "7.5.3", From 10c0c93e58d7921119cda7d454ee13b606638904 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Tue, 9 Apr 2024 18:45:35 -0400 Subject: [PATCH 029/121] docs(resource-detector-container): update readme for container resource detector (#2061) Refs: #2055 Signed-off-by: maryliag --- .../README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/detectors/node/opentelemetry-resource-detector-container/README.md b/detectors/node/opentelemetry-resource-detector-container/README.md index 8e8baa4e45..f798241a28 100644 --- a/detectors/node/opentelemetry-resource-detector-container/README.md +++ b/detectors/node/opentelemetry-resource-detector-container/README.md @@ -28,7 +28,15 @@ const tracerProvider = new NodeTracerProvider({ resource }); ## Available detectors -- `containerDetector`: Populates `container.id` for processes running on containers supporting : docker( cgroup v1 or v2 ) or with containerd +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 + +Populates `container.id` for processes running on containers supporting : docker( cgroup v1 or v2 ) or with containerd + +| Resource Attribute | Description | +|--------------------|------------------------------------------------------------------------------------------------------------------------------------------| +| `container.id` | Value parsed from file `/proc/self/cgroup` (cgroup v1). If it doesn't exist, parse the value from file `/proc/self/mountinfo` (cgroup v2)| ## Useful links From 69e8077caa2949d2243ccd998a66b88c900b7744 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Tue, 9 Apr 2024 18:46:46 -0400 Subject: [PATCH 030/121] docs(resource-detector-aws): update readme for aws resource detector (#2060) Refs: #2055 Signed-off-by: maryliag --- .../README.md | 85 +++++++++++++++++-- 1 file changed, 78 insertions(+), 7 deletions(-) diff --git a/detectors/node/opentelemetry-resource-detector-aws/README.md b/detectors/node/opentelemetry-resource-detector-aws/README.md index 690c25700d..aeb075c237 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/README.md +++ b/detectors/node/opentelemetry-resource-detector-aws/README.md @@ -33,13 +33,84 @@ const tracerProvider = new NodeTracerProvider({ resource }); ## Available detectors -- `awsBeanstalkDetector`: Populates `service` for processes running on [AWS Elastic Beanstalk](https://aws.amazon.com/elasticbeanstalk/) -- `awsEc2Detector`: Populates `cloud` and `host` for processes running on [Amazon EC2](https://aws.amazon.com/ec2/), including abstractions such as ECS on EC2. Notably, it does not populate anything on AWS Fargate -- `awsEcsDetector`: Populates `container` for containers running on [Amazon ECS](https://aws.amazon.com/ecs/) -- `awsEksDetector`: Populates `container` and `k8s.cluster_name` for containers running on [Amazon EKS](https://aws.amazon.com/eks/) - - `k8s.cluster_name` is not always available depending on the configuration of CloudWatch monitoring for the EKS cluster -- `awsLambdaDetector`: Populates `faas` and `cloud` for functions running on [AWS Lambda](https://aws.amazon.com/lambda/) - - `faas.id` is currently not populated as it is not provided by the runtime at startup +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) + +### AWS Beanstalk Detector + +Populates `service` for processes running on [AWS Elastic Beanstalk](https://aws.amazon.com/elasticbeanstalk/) + +| Resource Attribute | Description | +|---------------------|--------------------------------------------------------------------------| +| cloud.platform | The cloud platform. In this context, it's always "aws_elastic_beanstalk" | +| cloud.provider | The cloud provider. In this context, it's always "aws" | +| service.instance.id | Value of `deployment_id` from config file `environment.conf` | +| service.name | The service name. In this context, it's always "aws_elastic_beanstalk" | +| service.namespace | Value of `environment_name` from config file `environment.conf` | +| service.version | Value of `version_label` from config file `environment.conf` | + +### AWS EC2 Detector + +Populates `cloud` and `host` for processes running on [Amazon EC2](https://aws.amazon.com/ec2/), including abstractions such as ECS on EC2. Notably, it does not populate anything on AWS Fargate. + +| Resource Attribute | Description | +|-------------------------|---------------------------------------------------------------------------------------| +| cloud.account.id | Value of `accountId` from `/latest/dynamic/instance-identity/document` request | +| cloud.availability_zone | Value of `availabilityZone` from `/latest/dynamic/instance-identity/document` request | +| cloud.platform | The cloud platform. In this context, it's always "aws_ec2" | +| cloud.provider | The cloud provider. In this context, it's always "aws" | +| cloud.region | Value of `region` from `/latest/dynamic/instance-identity/document` request | +| host.id | Value of `instanceId` from `/latest/dynamic/instance-identity/document` request | +| host.name | Value of `hostname` from `/latest/dynamic/instance-identity/document` request | +| host.type | Value of `instanceType` from `/latest/dynamic/instance-identity/document` request | + +### AWS ECS Detector + +Populates `container` for containers running on [Amazon ECS](https://aws.amazon.com/ecs/). + +| Resource Attribute | Description | +|-------------------------|----------------------------------------------------------------------------------------| +| aws.ecs.container.arn | Value of `ContainerARN` from the request to the metadata Uri. The Metadata Uri is stored on the Environment Variable `ECS_CONTAINER_METADATA_URI_V4` | +| aws.ecs.cluster.arn | Value in the format `${baseArn}:cluster/${cluster}`, with `baseArn` and `cluster` from a `ECS_CONTAINER_METADATA_URI_V4/task` request, with values from `TaskARN` and `Cluster` respectively | +| aws.ecs.launchtype | Value of `LaunchType` from `ECS_CONTAINER_METADATA_URI_V4/task` request | +| aws.ecs.task.arn | Value of `TaskARN` from `ECS_CONTAINER_METADATA_URI_V4/task` request | +| aws.ecs.task.family | Value of `Family` from `ECS_CONTAINER_METADATA_URI_V4/task` request | +| aws.ecs.task.revision | Value of `Revision` from `ECS_CONTAINER_METADATA_URI_V4/task` request | +| aws.log.group.arns | Value on format `arn:aws:logs:${logsRegion}:${awsAccount}:log-group:${logsGroupName}`, with `logsRegions` and `logsGroupName` from logs metadata, values of `awslogs-region` and `awslogs-group` respectively, and `awsAccount` parsed value from the `TaskARN`. Logs metadata values come from `LogOptions` on `ECS_CONTAINER_METADATA_URI_V4` request | +| aws.log.group.names | Value of `awslogs-group` from logs metadata. Logs metadata values come from `LogOptions` on `ECS_CONTAINER_METADATA_URI_V4` request | +| aws.log.stream.arns | Value on format `arn:aws:logs:${logsRegion}:${awsAccount}:log-group:${logsGroupName}:log-stream:${logsStreamName}`, with `logsRegions`, `logsGroupName` and `logsStreamName` from logs metadata, values of `awslogs-region`, `awslogs-group` and `awslogs-stream` respectively, and `awsAccount` parsed value from the `TaskARN` | +| aws.log.stream.names | Value of `awslogs-stream` from logs metadata | +| cloud.account.id | Parsed value from the `TaskARN` | +| cloud.availability_zone | Value of `AvailabilityZone` from `ECS_CONTAINER_METADATA_URI_V4/task` request. This value is not available in all Fargate runtimes | +| cloud.platform | The cloud platform. In this context, it's always "aws_ecs" | +| cloud.provider | The cloud provider. In this context, it's always "aws" | +| cloud.region | Parsed value from the `TaskARN` | +| container.id | Value of from file `/proc/self/cgroup` | +| container.name | The hostname of the operating system | + +### AWS EKS Detector + +Populates `container` and `k8s.cluster_name` for containers running on [Amazon EKS](https://aws.amazon.com/eks/). +`k8s.cluster_name` is not always available depending on the configuration of CloudWatch monitoring for the EKS cluster. + +| Resource Attribute | Description | +|--------------------|-----------------------------------------------------------------------------------------------------| +| cloud.platform | The cloud platform. In this context, it's always "aws_eks" | +| cloud.provider | The cloud provider. In this context, it's always "aws" | +| container.id | Value from config file `/proc/self/cgroup` | +| k8s.cluster.name | Value of `cluster.name` from `/api/v1/namespaces/amazon-cloudwatch/configmaps/cluster-info` request | + +### AWS Lambda Detector + +Populates `faas` and `cloud` for functions running on [AWS Lambda](https://aws.amazon.com/lambda/). +`faas.id` is currently not populated as it is not provided by the runtime at startup. + +| Resource Attribute | Description | +|--------------------|---------------------------------------------------------------------| +| cloud.platform | The cloud platform. In this context, it's always "aws_lambda" | +| cloud.provider | The cloud provider. In this context, it's always "aws" | +| cloud.region | Value of Process Environment Variable `AWS_REGION` | +| faas.name | Value of Process Environment Variable `AWS_LAMBDA_FUNCTION_NAME` | +| faas.version | Value of Process Environment Variable `AWS_LAMBDA_FUNCTION_VERSION` | ## Useful links From 13b49b3f3b26b1405eb3be62d0985f8874f898b2 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Tue, 9 Apr 2024 19:02:27 -0400 Subject: [PATCH 031/121] docs(resource-detector-instana): update readme for instana resource detector (#2063) Refs: #2055 Signed-off-by: maryliag --- .../opentelemetry-resource-detector-instana/README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/detectors/node/opentelemetry-resource-detector-instana/README.md b/detectors/node/opentelemetry-resource-detector-instana/README.md index 203b5a2280..8845808cdf 100644 --- a/detectors/node/opentelemetry-resource-detector-instana/README.md +++ b/detectors/node/opentelemetry-resource-detector-instana/README.md @@ -42,6 +42,17 @@ const sdk = new NodeSDK({ sdk.start() ``` +## Available detectors + +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) + +### Instana Agent Detector + +| Resource Attribute | Description | +|------------------------------|--------------------------------------------------------------------------------------------------------------------------| +| process.pid | The ID of the process. Value of parameter `pid` from the response to a request to `/com.instana.plugin.nodejs.discovery` | +| service.instance.id | The agent UUID. Value of parameter `agentUuid` from the response to a request to `/com.instana.plugin.nodejs.discovery` | + ## Useful links - For more information about Instana Agent, visit: From 88514d96d9d6d48d56ca0e79b9214303593a64f7 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Tue, 9 Apr 2024 19:57:54 -0400 Subject: [PATCH 032/121] docs(resource-detector-azure): update readme for azure resource detector (#2057) Update README of Azure Resource Detector to clarify the source of the data and also remove values from the table that were not actually being set. Add Semantic conventions to README Refs: #2055 Refs: #2025 Signed-off-by: maryliag Co-authored-by: Jamie Danielson Co-authored-by: Trent Mick --- .../README.md | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/detectors/node/opentelemetry-resource-detector-azure/README.md b/detectors/node/opentelemetry-resource-detector-azure/README.md index ea4efc6862..c900a48663 100644 --- a/detectors/node/opentelemetry-resource-detector-azure/README.md +++ b/detectors/node/opentelemetry-resource-detector-azure/README.md @@ -27,48 +27,48 @@ const tracerProvider = new NodeTracerProvider({ resource }); ## Available Detectors +This package implements Semantic Convention [Version 1.19.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.19.0/semantic_conventions/README.md). + ### App Service Resource Detector -| Attribute | Description | +| Resource Attribute | Description | |-------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| azure.app.service.stamp | The specific "stamp" cluster within Azure where the App Service is running, e.g., "waws-prod-sn1-001". | +| azure.app.service.stamp | The specific "stamp" cluster within Azure where the App Service is running, e.g., "waws-prod-sn1-001". Value of Process Environment Variable `APP_SERVICE_ATTRIBUTE_ENV_VARS`. | | cloud.platform | The cloud platform. Here, it's always "azure_app_service". | | cloud.provider | The cloud service provider. In this context, it's always "azure". | -| cloud.resource_id | The Azure Resource Manager URI uniquely identifying the Azure App Service. Typically in the format "/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.Web/sites/{siteName}". | -| cloud.region | The Azure region where the App Service is hosted, e.g., "East US", "West Europe", etc. | -| deployment.environment | The deployment slot where the Azure App Service is running, such as "staging", "production", etc. | -| host.id | The primary hostname for the app, excluding any custom hostnames. | -| service.instance.id | The specific instance of the Azure App Service, useful in a scaled-out configuration. | -| service.name | The name of the Azure App Service. | +| cloud.region | The Azure region where the App Service is hosted, e.g., "East US", "West Europe", etc. Value of Process Environment Variable `REGION_NAME`. | +| cloud.resource_id | The Azure Resource Manager URI uniquely identifying the Azure App Service. Typically in the format `/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.Web/sites/{siteName}`. | +| deployment.environment | The deployment slot where the Azure App Service is running, such as "staging", "production", etc. Value of Process Environment Variable `WEBSITE_SLOT_NAME`. | +| host.id | The primary hostname for the app, excluding any custom hostnames. Value of Process Environment Variable `WEBSITE_HOSTNAME`. | +| service.instance.id | The specific instance of the Azure App Service, useful in a scaled-out configuration. Value of Process Environment Variable `WEBSITE_INSTANCE_ID`. | +| service.name | The name of the Azure App Service. Value of Process Environment Variable `WEBSITE_SITE_NAME`. | ### VM Resource Detector -| Attribute | Description | -|--------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| azure.vm.scaleset.name | The name of the Virtual Machine Scale Set if the VM is part of one. | -| azure.vm.sku | The SKU of the Azure Virtual Machine's operating system. For instance, for a VM running Windows Server 2019 Datacenter edition, this value would be "2019-Datacenter". | -| cloud.platform | The cloud platform, which is always set to "azure_vm" in this context. | -| cloud.provider | The cloud service provider, which is always set to "azure" in this context. | -| cloud.region | The Azure region where the Virtual Machine is hosted, such as "East US", "West Europe", etc. | -| cloud.resource_id | The Azure Resource Manager URI uniquely identifying the Azure Virtual Machine. It typically follows this format: "/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.Compute/virtualMachines/{vmName}". | -| host.id | A unique identifier for the VM host, for instance, "02aab8a4-74ef-476e-8182-f6d2ba4166a6". | -| host.name | The name of the host machine. | -| host.type | The size of the VM instance, for example, "Standard_D2s_v3". | -| os.type | The type of operating system running on the VM, such as "Linux" or "Windows". | -| os.version | The version of the operating system running on the VM. | -| service.instance.id | An identifier for a specific instance of the service running on the Azure VM, for example, "02aab8a4-74ef-476e-8182-f6d2ba4166a6". | +| Resource Attribute | Description | +|--------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| azure.vm.scaleset.name | The name of the Virtual Machine Scale Set if the VM is part of one. Value from `vmScaleSetName` key on `/metadata/instance/compute` request. | +| azure.vm.sku | The SKU of the Azure Virtual Machine's operating system. For instance, for a VM running Windows Server 2019 Datacenter edition, this value would be "2019-Datacenter". Value from `sku` key on `/metadata/instance/compute` request. | +| cloud.platform | The cloud platform, which is always set to "azure_vm" in this context. | +| cloud.provider | The cloud service provider, which is always set to "azure" in this context. | +| cloud.region | The Azure region where the Virtual Machine is hosted, such as "East US", "West Europe", etc. Value from `location` key on `/metadata/instance/compute` request. | +| cloud.resource_id | The Azure Resource Manager URI uniquely identifying the Azure Virtual Machine. It typically follows this format: `/subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.Compute/virtualMachines/{vmName}`. Value from `resourceId` key on `/metadata/instance/compute` request.| +| host.id | A unique identifier for the VM host, for instance, "02aab8a4-74ef-476e-8182-f6d2ba4166a6". Value from `vmId` key on `/metadata/instance/compute` request. | +| host.name | The name of the host machine. Value from `name` key on `/metadata/instance/compute` request. | +| host.type | The size of the VM instance, for example, "Standard_D2s_v3". Value from `vmSize` key on `/metadata/instance/compute` request. | +| os.version | The version of the operating system running on the VM. Value from `version` key on `/metadata/instance/compute` request. | ### Azure Functions Resource Detector -| Attribute | Description | -|-------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| cloud.platform | The cloud platform. Here, it's always "azure_functions". | -| cloud.provider | The cloud service provider. In this context, it's always "azure". | -| cloud.region | The Azure region where the Azure Function is hosted, e.g., "East US", "West Europe", etc. | -| faas.instance | The specific instance of the Azure App Service, useful in a scaled-out configuration. | -| faas.name | The name of the Azure App Service. | -| faas.version | The version of the Azure Function being executed, e.g., "~4". | -| faas.max_memory | The amount of memory available to the Azure Function expressed in MiB. | +| Resource Attribute | Description | +|-------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------| +| cloud.platform | The cloud platform. Here, it's always "azure_functions". | +| cloud.provider | The cloud service provider. In this context, it's always "azure". | +| cloud.region | The Azure region where the Azure Function is hosted, e.g., "East US", "West Europe", etc. Value of Process Environment Variable `REGION_NAME`. | +| faas.instance | The specific instance of the Azure App Service, useful in a scaled-out configuration. Value from Process Environment Variable `WEBSITE_INSTANCE_ID`. | +| faas.max_memory | The amount of memory available to the Azure Function expressed in MiB. value from Process Environment Variable `WEBSITE_MEMORY_LIMIT_MB`. | +| faas.name | The name of the Azure App Service. Value from Process Environment Variable `WEBSITE_SITE_NAME`. | +| faas.version | The version of the Azure Function being executed, e.g., "~4". value from Process Environment Variable `FUNCTIONS_EXTENSION_VERSION`. | ## Useful links From eaa99f8fd0d9ac1b454d0672e579461d06330bce Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Tue, 9 Apr 2024 19:59:06 -0400 Subject: [PATCH 033/121] chore: update readme for github resource detector (#2064) Update README of GitHub Resource Detector to clarify the source of the data. Refs: #2055 Signed-off-by: maryliag --- .../README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/detectors/node/opentelemetry-resource-detector-github/README.md b/detectors/node/opentelemetry-resource-detector-github/README.md index 8f2066af71..31cdf85839 100644 --- a/detectors/node/opentelemetry-resource-detector-github/README.md +++ b/detectors/node/opentelemetry-resource-detector-github/README.md @@ -33,6 +33,21 @@ async function run() { run() ``` +## Available detectors + +### GitHub Detector + +| Resource Attribute | Description | +|--------------------|-----------------------------------------------------------| +| github.actor | Value of Process Environment Variable `GITHUB_ACTOR` | +| github.base_ref | Value of Process Environment Variable `GITHUB_BASE_REF` | +| github.head_ref | Value of Process Environment Variable `GITHUB_HEAD_REF` | +| github.ref | Value of Process Environment Variable `GITHUB_REF` | +| github.run_id | Value of Process Environment Variable `GITHUB_RUN_ID` | +| github.run_number | Value of Process Environment Variable `GITHUB_RUN_NUMBER` | +| github.sha | Value of Process Environment Variable `GITHUB_SHA` | +| github.workflow | Value of Process Environment Variable `GITHUB_WORKFLOW` | + ## Useful links - [GitHub Action Environment Variables](https://docs.github.com/en/free-pro-team@latest/actions/reference/environment-variables) From a172f8affa2d54b13542c3dfc103dd54ccf031ad Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Wed, 10 Apr 2024 12:45:30 +0200 Subject: [PATCH 034/121] fix(instrumentation-ioredis): drop @types/ioredis dependency (#2069) --- package-lock.json | 8 +++++--- .../opentelemetry-instrumentation-ioredis/package.json | 6 +++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index ba9b0c9ab0..2386287d84 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10574,6 +10574,7 @@ "version": "4.28.10", "resolved": "https://registry.npmjs.org/@types/ioredis/-/ioredis-4.28.10.tgz", "integrity": "sha512-69LyhUgrXdgcNDv7ogs1qXZomnfOEnSmrmMFqKgt1XMJxmoOSG/u3wYy13yACIfKuMJ8IhKgHafDO3sx19zVQQ==", + "dev": true, "dependencies": { "@types/node": "*" } @@ -37989,8 +37990,7 @@ "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/redis-common": "^0.36.1", - "@opentelemetry/semantic-conventions": "^1.0.0", - "@types/ioredis4": "npm:@types/ioredis@^4.28.10" + "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -37998,6 +37998,7 @@ "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", + "@types/ioredis4": "npm:@types/ioredis@4.28.10", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -46475,7 +46476,7 @@ "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", - "@types/ioredis4": "npm:@types/ioredis@^4.28.10", + "@types/ioredis4": "npm:@types/ioredis@4.28.10", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -49647,6 +49648,7 @@ "version": "npm:@types/ioredis@4.28.10", "resolved": "https://registry.npmjs.org/@types/ioredis/-/ioredis-4.28.10.tgz", "integrity": "sha512-69LyhUgrXdgcNDv7ogs1qXZomnfOEnSmrmMFqKgt1XMJxmoOSG/u3wYy13yACIfKuMJ8IhKgHafDO3sx19zVQQ==", + "dev": true, "requires": { "@types/node": "*" } diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/package.json b/plugins/node/opentelemetry-instrumentation-ioredis/package.json index 688c37abba..4ecc2eb1b3 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/package.json +++ b/plugins/node/opentelemetry-instrumentation-ioredis/package.json @@ -63,13 +63,13 @@ "sinon": "15.2.0", "test-all-versions": "6.1.0", "ts-mocha": "10.0.0", - "typescript": "4.4.4" + "typescript": "4.4.4", + "@types/ioredis4": "npm:@types/ioredis@4.28.10" }, "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/redis-common": "^0.36.1", - "@opentelemetry/semantic-conventions": "^1.0.0", - "@types/ioredis4": "npm:@types/ioredis@^4.28.10" + "@opentelemetry/semantic-conventions": "^1.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-ioredis#readme" } From 66d9cea9c963c03e5e3736b59520cecd27403b22 Mon Sep 17 00:00:00 2001 From: David Luna Date: Wed, 10 Apr 2024 13:10:41 +0200 Subject: [PATCH 035/121] refactor(instr-mongodb): use exported strings for attributes (#2088) * refactor(instr-mongodb): use exported strings for attributes * refactor(instr-mongodb): update README --------- Co-authored-by: Marc Pichler --- package-lock.json | 4 +-- .../README.md | 16 +++++++++++ .../package.json | 2 +- .../src/instrumentation.ts | 27 ++++++++++++------- 4 files changed, 36 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2386287d84..e43fb44c4b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38126,7 +38126,7 @@ "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-metrics": "^1.9.1", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -46634,7 +46634,7 @@ "@opentelemetry/sdk-metrics": "^1.9.1", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/bson": "4.0.5", "@types/mocha": "7.0.2", "@types/mongodb": "3.6.20", diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/README.md b/plugins/node/opentelemetry-instrumentation-mongodb/README.md index 07b50e95d2..efec965ee9 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/README.md +++ b/plugins/node/opentelemetry-instrumentation-mongodb/README.md @@ -55,6 +55,22 @@ Mongodb instrumentation has few options available to choose from. You can set th | `responseHook` | `MongoDBInstrumentationExecutionResponseHook` (function) | Function for adding custom attributes from db response | | `dbStatementSerializer` | `DbStatementSerializer` (function) | Custom serializer function for the db.statement tag | +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | +| ----------------------- | ------------------------------------------------------------------------------ | +| `db.system` | An identifier for the database management system (DBMS) product being used. | +| `db.connection_string` | The connection string used to connect to the database. | +| `db.name` | This attribute is used to report the name of the database being accessed. | +| `db.operation` | The name of the operation being executed. | +| `db.mongodb.collection` | The collection being accessed within the database stated in `db.name`. | +| `net.peer.name` | Remote hostname or similar. | +| `net.peer.port` | Remote port number. | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/package.json b/plugins/node/opentelemetry-instrumentation-mongodb/package.json index 967c35c088..f3d704c7da 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/package.json +++ b/plugins/node/opentelemetry-instrumentation-mongodb/package.json @@ -68,7 +68,7 @@ "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-metrics": "^1.9.1", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-mongodb#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts index 0a1dad9af9..d5239d9706 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts @@ -29,8 +29,15 @@ import { safeExecuteInTheMiddle, } from '@opentelemetry/instrumentation'; import { - DbSystemValues, - SemanticAttributes, + DBSYSTEMVALUES_MONGODB, + SEMATTRS_DB_CONNECTION_STRING, + SEMATTRS_DB_MONGODB_COLLECTION, + SEMATTRS_DB_NAME, + SEMATTRS_DB_OPERATION, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, } from '@opentelemetry/semantic-conventions'; import { MongoDBInstrumentationConfig, CommandResult } from './types'; import { @@ -898,18 +905,18 @@ export class MongoDBInstrumentation extends InstrumentationBase { ) { // add database related attributes span.setAttributes({ - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.MONGODB, - [SemanticAttributes.DB_NAME]: dbName, - [SemanticAttributes.DB_MONGODB_COLLECTION]: dbCollection, - [SemanticAttributes.DB_OPERATION]: operation, - [SemanticAttributes.DB_CONNECTION_STRING]: `mongodb://${host}:${port}/${dbName}`, + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_MONGODB, + [SEMATTRS_DB_NAME]: dbName, + [SEMATTRS_DB_MONGODB_COLLECTION]: dbCollection, + [SEMATTRS_DB_OPERATION]: operation, + [SEMATTRS_DB_CONNECTION_STRING]: `mongodb://${host}:${port}/${dbName}`, }); if (host && port) { - span.setAttribute(SemanticAttributes.NET_PEER_NAME, host); + span.setAttribute(SEMATTRS_NET_PEER_NAME, host); const portNumber = parseInt(port, 10); if (!isNaN(portNumber)) { - span.setAttribute(SemanticAttributes.NET_PEER_PORT, portNumber); + span.setAttribute(SEMATTRS_NET_PEER_PORT, portNumber); } } if (!commandObj) return; @@ -921,7 +928,7 @@ export class MongoDBInstrumentation extends InstrumentationBase { safeExecuteInTheMiddle( () => { const query = dbStatementSerializer(commandObj); - span.setAttribute(SemanticAttributes.DB_STATEMENT, query); + span.setAttribute(SEMATTRS_DB_STATEMENT, query); }, err => { if (err) { From 1af49014b8a77d34058750ce2a87bd58211ebe70 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Wed, 10 Apr 2024 08:59:18 -0700 Subject: [PATCH 036/121] chore(instr-undici): updates/tweaks for new undici instrumentation (#2085) - set min supported undici to v5.12.0 - 'codecov' npm script was copypasta from core repo - update to same test-all-versions ver as other pkgs in the workspace - update undici to latest (it is a security update) - add label-prs workflow support pkg:instrumentation-undici - reduce number of versions tested with TAV --- .github/component-label-map.yml | 4 + package-lock.json | 282 +----------------- plugins/node/instrumentation-undici/.tav.yml | 8 +- plugins/node/instrumentation-undici/README.md | 4 + .../node/instrumentation-undici/package.json | 7 +- .../node/instrumentation-undici/src/undici.ts | 9 +- .../test/undici.test.ts | 47 +-- 7 files changed, 49 insertions(+), 312 deletions(-) diff --git a/.github/component-label-map.yml b/.github/component-label-map.yml index de2ff8c3ef..d49f02ac12 100644 --- a/.github/component-label-map.yml +++ b/.github/component-label-map.yml @@ -225,6 +225,10 @@ pkg:instrumentation-tedious: - any-glob-to-any-file: - plugins/node/instrumentation-tedious/** - packages/opentelemetry-test-utils/** +pkg:instrumentation-undici: + - changed-files: + - any-glob-to-any-file: + - plugins/node/instrumentation-undici/** pkg:instrumentation-user-interaction: - changed-files: - any-glob-to-any-file: diff --git a/package-lock.json b/package-lock.json index e43fb44c4b..0f7fb562c3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34430,9 +34430,9 @@ } }, "node_modules/undici": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.10.1.tgz", - "integrity": "sha512-kSzmWrOx3XBKTgPm4Tal8Hyl3yf+hzlA00SAf4goxv8LZYafKmS6gJD/7Fe5HH/DMNiFTRXvkwhLo7mUn5fuQQ==", + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.11.1.tgz", + "integrity": "sha512-KyhzaLJnV1qa3BSHdj4AZ2ndqI0QWPxYzaIOio0WzcEJB9gvuysprJSLtpvc2D9mhR9jPDUk7xlJlZbH2KR5iw==", "dev": true, "engines": { "node": ">=18.0" @@ -37383,7 +37383,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1" + "@opentelemetry/instrumentation": "^0.50.0" }, "devDependencies": { "@opentelemetry/api": "^1.7.0", @@ -37397,10 +37397,10 @@ "rimraf": "5.0.5", "semver": "^7.6.0", "superagent": "8.0.9", - "test-all-versions": "6.0.0", + "test-all-versions": "6.1.0", "ts-mocha": "10.0.0", "typescript": "4.4.4", - "undici": "6.10.1" + "undici": "6.11.1" }, "engines": { "node": ">=14" @@ -37409,137 +37409,6 @@ "@opentelemetry/api": "^1.7.0" } }, - "plugins/node/instrumentation-undici/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "plugins/node/instrumentation-undici/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "plugins/node/instrumentation-undici/node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "plugins/node/instrumentation-undici/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "plugins/node/instrumentation-undici/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "plugins/node/instrumentation-undici/node_modules/is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", - "dev": true, - "dependencies": { - "ci-info": "^3.2.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "plugins/node/instrumentation-undici/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "plugins/node/instrumentation-undici/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "plugins/node/instrumentation-undici/node_modules/test-all-versions": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-all-versions/-/test-all-versions-6.0.0.tgz", - "integrity": "sha512-/9wVTBRa7+arvItGinCYy/8+z7sHTsrs9cwEY/xAnzrkSEM7Tp2Cz49ewYZYuO1YYMLqxEaQp2g7Dnns7n7BGA==", - "dev": true, - "dependencies": { - "after-all-results": "^2.0.0", - "ansi-diff-stream": "^1.2.1", - "cli-spinners": "^2.9.2", - "deepmerge": "^4.3.1", - "import-fresh": "^3.3.0", - "is-ci": "^3.0.1", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimist": "^1.2.8", - "npm-package-versions": "^1.0.1", - "once": "^1.4.0", - "parse-env-string": "^1.0.1", - "resolve": "^1.22.8", - "semver": "^7.5.4", - "spawn-npm-install": "^1.2.0", - "which": "^2.0.2" - }, - "bin": { - "tav": "index.js" - }, - "engines": { - "node": ">=14" - } - }, "plugins/node/opentelemetry-instrumentation-aws-lambda": { "name": "@opentelemetry/instrumentation-aws-lambda", "version": "0.40.0", @@ -38799,39 +38668,6 @@ "@opentelemetry/api": "^1.3.0" } }, - "plugins/node/opentelemetry-instrumentation-undici": { - "name": "@opentelemetry/instrumentation-undici", - "version": "0.33.0", - "extraneous": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1" - }, - "devDependencies": { - "@opentelemetry/api": "^1.3.0", - "@opentelemetry/sdk-metrics": "^1.8.0", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/sdk-trace-node": "^1.8.0", - "@types/mocha": "7.0.2", - "@types/node": "18.6.5", - "mocha": "7.2.0", - "nyc": "15.1.0", - "rimraf": "5.0.5", - "semver": "^7.6.0", - "superagent": "8.0.9", - "test-all-versions": "6.0.0", - "ts-mocha": "10.0.0", - "typescript": "4.4.4", - "undici": "^6.7.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, "plugins/node/opentelemetry-instrumentation-winston": { "name": "@opentelemetry/instrumentation-winston", "version": "0.36.0", @@ -47393,7 +47229,7 @@ "requires": { "@opentelemetry/api": "^1.7.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.49.1", + "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-metrics": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -47404,104 +47240,10 @@ "rimraf": "5.0.5", "semver": "^7.6.0", "superagent": "8.0.9", - "test-all-versions": "6.0.0", + "test-all-versions": "6.1.0", "ts-mocha": "10.0.0", "typescript": "4.4.4", - "undici": "6.10.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", - "dev": true, - "requires": { - "ci-info": "^3.2.0" - } - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "test-all-versions": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-all-versions/-/test-all-versions-6.0.0.tgz", - "integrity": "sha512-/9wVTBRa7+arvItGinCYy/8+z7sHTsrs9cwEY/xAnzrkSEM7Tp2Cz49ewYZYuO1YYMLqxEaQp2g7Dnns7n7BGA==", - "dev": true, - "requires": { - "after-all-results": "^2.0.0", - "ansi-diff-stream": "^1.2.1", - "cli-spinners": "^2.9.2", - "deepmerge": "^4.3.1", - "import-fresh": "^3.3.0", - "is-ci": "^3.0.1", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimist": "^1.2.8", - "npm-package-versions": "^1.0.1", - "once": "^1.4.0", - "parse-env-string": "^1.0.1", - "resolve": "^1.22.8", - "semver": "^7.5.4", - "spawn-npm-install": "^1.2.0", - "which": "^2.0.2" - } - } + "undici": "6.11.1" } }, "@opentelemetry/instrumentation-user-interaction": { @@ -68503,9 +68245,9 @@ } }, "undici": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.10.1.tgz", - "integrity": "sha512-kSzmWrOx3XBKTgPm4Tal8Hyl3yf+hzlA00SAf4goxv8LZYafKmS6gJD/7Fe5HH/DMNiFTRXvkwhLo7mUn5fuQQ==", + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.11.1.tgz", + "integrity": "sha512-KyhzaLJnV1qa3BSHdj4AZ2ndqI0QWPxYzaIOio0WzcEJB9gvuysprJSLtpvc2D9mhR9jPDUk7xlJlZbH2KR5iw==", "dev": true }, "undici-types": { diff --git a/plugins/node/instrumentation-undici/.tav.yml b/plugins/node/instrumentation-undici/.tav.yml index 9ef69e2462..88b92a7898 100644 --- a/plugins/node/instrumentation-undici/.tav.yml +++ b/plugins/node/instrumentation-undici/.tav.yml @@ -1,8 +1,12 @@ undici: jobs: - - versions: ">=5 <6" + - versions: + include: ">=5.12.0 <6" + mode: max-7 node: '>=14' commands: npm run test - - versions: ">=6 <7" + - versions: + include: ">=6 <7" + mode: max-7 node: '>=18' commands: npm run test diff --git a/plugins/node/instrumentation-undici/README.md b/plugins/node/instrumentation-undici/README.md index 38b6fd6e9e..08a7128404 100644 --- a/plugins/node/instrumentation-undici/README.md +++ b/plugins/node/instrumentation-undici/README.md @@ -14,6 +14,10 @@ If you're looking the instrumentation for browser's `fetch` API it is located at npm install --save @opentelemetry/instrumentation-undici ``` +## Supported Versions + +- `undici@>=5.12.0` + ## Usage OpenTelemetry Undici/fetch Instrumentation allows the user to automatically collect trace data and export them to their backend of choice, to give observability to distributed systems. diff --git a/plugins/node/instrumentation-undici/package.json b/plugins/node/instrumentation-undici/package.json index b235be769a..fd21b60b47 100644 --- a/plugins/node/instrumentation-undici/package.json +++ b/plugins/node/instrumentation-undici/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-undici", "version": "0.1.0", - "description": "OpenTelemetry undici/fetch automatic instrumentation package.", + "description": "OpenTelemetry instrumentation for undici and Node.js fetch().", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", @@ -14,7 +14,6 @@ "clean": "rimraf build/*", "lint": "eslint . --ext .ts", "lint:fix": "eslint . --ext .ts --fix", - "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../", "watch": "tsc -w", "precompile": "tsc --version && lerna run version:update --scope @opentelemetry/instrumentation-undici --include-dependencies", "prewatch": "npm run precompile", @@ -53,10 +52,10 @@ "rimraf": "5.0.5", "semver": "^7.6.0", "superagent": "8.0.9", - "test-all-versions": "6.0.0", + "test-all-versions": "6.1.0", "ts-mocha": "10.0.0", "typescript": "4.4.4", - "undici": "6.10.1" + "undici": "6.11.1" }, "peerDependencies": { "@opentelemetry/api": "^1.7.0" diff --git a/plugins/node/instrumentation-undici/src/undici.ts b/plugins/node/instrumentation-undici/src/undici.ts index 262bea42cd..0fa07f97a3 100644 --- a/plugins/node/instrumentation-undici/src/undici.ts +++ b/plugins/node/instrumentation-undici/src/undici.ts @@ -270,10 +270,13 @@ export class UndiciInstrumentation extends InstrumentationBase { for (let i = 0; i < headerEntries.length; i++) { const [k, v] = headerEntries[i]; - if (typeof request.headers === 'string') { - request.headers += `${k}: ${v}\r\n`; - } else { + if (typeof request.addHeader === 'function') { request.addHeader(k, v); + } else if (typeof request.headers === 'string') { + request.headers += `${k}: ${v}\r\n`; + } else if (Array.isArray(request.headers)) { + // undici@6.11.0 accidentally, briefly removed `request.addHeader()`. + request.headers.push(k, v); } } this._recordFromReq.set(request, { span, attributes, startTime }); diff --git a/plugins/node/instrumentation-undici/test/undici.test.ts b/plugins/node/instrumentation-undici/test/undici.test.ts index fd48803a3f..aea2f036ce 100644 --- a/plugins/node/instrumentation-undici/test/undici.test.ts +++ b/plugins/node/instrumentation-undici/test/undici.test.ts @@ -38,8 +38,6 @@ import { assertSpan } from './utils/assertSpan'; import type { fetch, stream, request, Client, Dispatcher } from 'undici'; -type PromisedValue = T extends Promise ? R : never; - const instrumentation = new UndiciInstrumentation(); instrumentation.enable(); instrumentation.disable(); @@ -217,37 +215,20 @@ describe('UndiciInstrumentation `undici` tests', function () { 'foo-client': 'bar', }; - // In version v5 if `undici` you get the following error when requesting with a method - // that is not one of the known ones in uppercase. Using - // - // SocketError: other side closed - // at Socket.onSocketEnd (node_modules/undici/lib/client.js:1118:22) - // at endReadableNT (internal/streams/readable.js:1333:12) - // at processTicksAndRejections (internal/process/task_queues.js:82:21) - let firstQueryResponse: PromisedValue>; - let secondQueryResponse: PromisedValue>; - try { - const queryRequestUrl = `${protocol}://${hostname}:${mockServer.port}/?query=test`; - firstQueryResponse = await undici.request(queryRequestUrl, { - headers, - // @ts-expect-error - method type expects in uppercase - method: 'get', - }); - await consumeResponseBody(firstQueryResponse.body); - - secondQueryResponse = await undici.request(queryRequestUrl, { - headers, - // @ts-expect-error - method type expects known HTTP method (GET, POST, PUT, ...) - method: 'custom', - }); - await consumeResponseBody(secondQueryResponse.body); - } catch (undiciErr) { - const { stack } = undiciErr as Error; - - if (stack?.startsWith('SocketError: other side closed')) { - this.skip(); - } - } + const queryRequestUrl = `${protocol}://${hostname}:${mockServer.port}/?query=test`; + const firstQueryResponse = await undici.request(queryRequestUrl, { + headers, + // @ts-expect-error - method type expects in uppercase + method: 'get', + }); + await consumeResponseBody(firstQueryResponse.body); + + const secondQueryResponse = await undici.request(queryRequestUrl, { + headers, + // @ts-expect-error - method type expects known HTTP method (GET, POST, PUT, ...) + method: 'custom', + }); + await consumeResponseBody(secondQueryResponse.body); assert.ok( firstQueryResponse!.headers['propagation-error'] === undefined, From 21745def82c3c2835b1d16e271902408dbf38935 Mon Sep 17 00:00:00 2001 From: David Luna Date: Mon, 15 Apr 2024 18:01:09 +0200 Subject: [PATCH 037/121] refactor(instr-amqplib): use exported strings for attributes (#2086) Refs: #2025 --- package-lock.json | 4 +- .../node/instrumentation-amqplib/README.md | 21 +++++++++ .../node/instrumentation-amqplib/package.json | 2 +- .../instrumentation-amqplib/src/amqplib.ts | 41 ++++++++--------- .../node/instrumentation-amqplib/src/utils.ts | 45 +++++++++++-------- 5 files changed, 71 insertions(+), 42 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0f7fb562c3..f48f69eb25 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36824,7 +36824,7 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -45785,7 +45785,7 @@ "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/amqplib": "^0.5.17", "@types/lodash": "4.14.199", "@types/mocha": "8.2.3", diff --git a/plugins/node/instrumentation-amqplib/README.md b/plugins/node/instrumentation-amqplib/README.md index 3e931474ef..5d4933db7e 100644 --- a/plugins/node/instrumentation-amqplib/README.md +++ b/plugins/node/instrumentation-amqplib/README.md @@ -81,6 +81,27 @@ The instrumentation's config `publishHook`, `publishConfirmHook`, `consumeHook` The `moduleVersionAttributeName` config option is removed. To add the amqplib package version to spans, use the `moduleVersion` attribute in hook info for `publishHook` and `consumeHook` functions. +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | +| -------------------------------- | ---------------------------------------------------------------------- | +| `messaging.destination` | The message destination name. | +| `messaging.destination_kind` | The kind of message destination. | +| `messaging.rabbitmq.routing_key` | RabbitMQ message routing key. | +| `messaging.operation` | A string identifying the kind of message consumption. | +| `messaging.message_id` | A value used by the messaging system as an identifier for the message. | +| `messaging.conversation_id` | The ID identifying the conversation to which the message belongs. | +| `messaging.protocol` | The name of the transport protocol. | +| `messaging.protocol_version` | The version of the transport protocol. | +| `messaging.system` | A string identifying the messaging system. | +| `messaging.url` | The connection string. | +| `net.peer.name` | Remote hostname or similar. | +| `net.peer.port` | Remote port number. | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/instrumentation-amqplib/package.json b/plugins/node/instrumentation-amqplib/package.json index 00d8c4fc34..5b7202cf4a 100644 --- a/plugins/node/instrumentation-amqplib/package.json +++ b/plugins/node/instrumentation-amqplib/package.json @@ -46,7 +46,7 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", diff --git a/plugins/node/instrumentation-amqplib/src/amqplib.ts b/plugins/node/instrumentation-amqplib/src/amqplib.ts index 17fd6e20b6..16224096fc 100644 --- a/plugins/node/instrumentation-amqplib/src/amqplib.ts +++ b/plugins/node/instrumentation-amqplib/src/amqplib.ts @@ -36,9 +36,14 @@ import { safeExecuteInTheMiddle, } from '@opentelemetry/instrumentation'; import { - SemanticAttributes, - MessagingOperationValues, - MessagingDestinationKindValues, + SEMATTRS_MESSAGING_DESTINATION, + SEMATTRS_MESSAGING_DESTINATION_KIND, + MESSAGINGDESTINATIONKINDVALUES_TOPIC, + SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY, + SEMATTRS_MESSAGING_OPERATION, + MESSAGINGOPERATIONVALUES_PROCESS, + SEMATTRS_MESSAGING_MESSAGE_ID, + SEMATTRS_MESSAGING_CONVERSATION_ID, } from '@opentelemetry/semantic-conventions'; import type { Connection, @@ -415,16 +420,13 @@ export class AmqplibInstrumentation extends InstrumentationBase { kind: SpanKind.CONSUMER, attributes: { ...channel?.connection?.[CONNECTION_ATTRIBUTES], - [SemanticAttributes.MESSAGING_DESTINATION]: exchange, - [SemanticAttributes.MESSAGING_DESTINATION_KIND]: - MessagingDestinationKindValues.TOPIC, - [SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY]: - msg.fields?.routingKey, - [SemanticAttributes.MESSAGING_OPERATION]: - MessagingOperationValues.PROCESS, - [SemanticAttributes.MESSAGING_MESSAGE_ID]: - msg?.properties.messageId, - [SemanticAttributes.MESSAGING_CONVERSATION_ID]: + [SEMATTRS_MESSAGING_DESTINATION]: exchange, + [SEMATTRS_MESSAGING_DESTINATION_KIND]: + MESSAGINGDESTINATIONKINDVALUES_TOPIC, + [SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY]: msg.fields?.routingKey, + [SEMATTRS_MESSAGING_OPERATION]: MESSAGINGOPERATIONVALUES_PROCESS, + [SEMATTRS_MESSAGING_MESSAGE_ID]: msg?.properties.messageId, + [SEMATTRS_MESSAGING_CONVERSATION_ID]: msg?.properties.correlationId, }, }, @@ -636,13 +638,12 @@ export class AmqplibInstrumentation extends InstrumentationBase { kind: SpanKind.PRODUCER, attributes: { ...channel.connection[CONNECTION_ATTRIBUTES], - [SemanticAttributes.MESSAGING_DESTINATION]: exchange, - [SemanticAttributes.MESSAGING_DESTINATION_KIND]: - MessagingDestinationKindValues.TOPIC, - [SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY]: routingKey, - [SemanticAttributes.MESSAGING_MESSAGE_ID]: options?.messageId, - [SemanticAttributes.MESSAGING_CONVERSATION_ID]: - options?.correlationId, + [SEMATTRS_MESSAGING_DESTINATION]: exchange, + [SEMATTRS_MESSAGING_DESTINATION_KIND]: + MESSAGINGDESTINATIONKINDVALUES_TOPIC, + [SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY]: routingKey, + [SEMATTRS_MESSAGING_MESSAGE_ID]: options?.messageId, + [SEMATTRS_MESSAGING_CONVERSATION_ID]: options?.correlationId, }, } ); diff --git a/plugins/node/instrumentation-amqplib/src/utils.ts b/plugins/node/instrumentation-amqplib/src/utils.ts index d690e75bd7..2f0db1ad62 100644 --- a/plugins/node/instrumentation-amqplib/src/utils.ts +++ b/plugins/node/instrumentation-amqplib/src/utils.ts @@ -19,10 +19,17 @@ import { diag, HrTime, Span, - SpanAttributes, - SpanAttributeValue, + Attributes, + AttributeValue, } from '@opentelemetry/api'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_MESSAGING_PROTOCOL, + SEMATTRS_MESSAGING_PROTOCOL_VERSION, + SEMATTRS_MESSAGING_SYSTEM, + SEMATTRS_MESSAGING_URL, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, +} from '@opentelemetry/semantic-conventions'; import type * as amqp from 'amqplib'; export const MESSAGE_STORED_SPAN: unique symbol = Symbol( @@ -41,9 +48,9 @@ export const CONNECTION_ATTRIBUTES: unique symbol = Symbol( export type InstrumentationPublishChannel = ( | amqp.Channel | amqp.ConfirmChannel -) & { connection: { [CONNECTION_ATTRIBUTES]: SpanAttributes } }; +) & { connection: { [CONNECTION_ATTRIBUTES]: Attributes } }; export type InstrumentationConsumeChannel = amqp.Channel & { - connection: { [CONNECTION_ATTRIBUTES]: SpanAttributes }; + connection: { [CONNECTION_ATTRIBUTES]: Attributes }; [CHANNEL_SPANS_NOT_ENDED]?: { msg: amqp.ConsumeMessage; timeOfConsume: HrTime; @@ -93,9 +100,9 @@ const getHostname = (hostnameFromUrl: string | undefined): string => { const extractConnectionAttributeOrLog = ( url: string | amqp.Options.Connect, attributeKey: string, - attributeValue: SpanAttributeValue, + attributeValue: AttributeValue, nameForLog: string -): SpanAttributes => { +): Attributes => { if (attributeValue) { return { [attributeKey]: attributeValue }; } else { @@ -111,11 +118,11 @@ const extractConnectionAttributeOrLog = ( export const getConnectionAttributesFromServer = ( conn: amqp.Connection['connection'] -): SpanAttributes => { +): Attributes => { const product = conn.serverProperties.product?.toLowerCase?.(); if (product) { return { - [SemanticAttributes.MESSAGING_SYSTEM]: product, + [SEMATTRS_MESSAGING_SYSTEM]: product, }; } else { return {}; @@ -124,9 +131,9 @@ export const getConnectionAttributesFromServer = ( export const getConnectionAttributesFromUrl = ( url: string | amqp.Options.Connect -): SpanAttributes => { - const attributes: SpanAttributes = { - [SemanticAttributes.MESSAGING_PROTOCOL_VERSION]: '0.9.1', // this is the only protocol supported by the instrumented library +): Attributes => { + const attributes: Attributes = { + [SEMATTRS_MESSAGING_PROTOCOL_VERSION]: '0.9.1', // this is the only protocol supported by the instrumented library }; url = url || 'amqp://localhost'; @@ -137,7 +144,7 @@ export const getConnectionAttributesFromUrl = ( Object.assign(attributes, { ...extractConnectionAttributeOrLog( url, - SemanticAttributes.MESSAGING_PROTOCOL, + SEMATTRS_MESSAGING_PROTOCOL, protocol, 'protocol' ), @@ -147,7 +154,7 @@ export const getConnectionAttributesFromUrl = ( Object.assign(attributes, { ...extractConnectionAttributeOrLog( url, - SemanticAttributes.NET_PEER_NAME, + SEMATTRS_NET_PEER_NAME, hostname, 'hostname' ), @@ -157,14 +164,14 @@ export const getConnectionAttributesFromUrl = ( Object.assign(attributes, { ...extractConnectionAttributeOrLog( url, - SemanticAttributes.NET_PEER_PORT, + SEMATTRS_NET_PEER_PORT, port, 'port' ), }); } else { const censoredUrl = censorPassword(url); - attributes[SemanticAttributes.MESSAGING_URL] = censoredUrl; + attributes[SEMATTRS_MESSAGING_URL] = censoredUrl; try { const urlParts = new URL(censoredUrl); @@ -172,7 +179,7 @@ export const getConnectionAttributesFromUrl = ( Object.assign(attributes, { ...extractConnectionAttributeOrLog( censoredUrl, - SemanticAttributes.MESSAGING_PROTOCOL, + SEMATTRS_MESSAGING_PROTOCOL, protocol, 'protocol' ), @@ -182,7 +189,7 @@ export const getConnectionAttributesFromUrl = ( Object.assign(attributes, { ...extractConnectionAttributeOrLog( censoredUrl, - SemanticAttributes.NET_PEER_NAME, + SEMATTRS_NET_PEER_NAME, hostname, 'hostname' ), @@ -195,7 +202,7 @@ export const getConnectionAttributesFromUrl = ( Object.assign(attributes, { ...extractConnectionAttributeOrLog( censoredUrl, - SemanticAttributes.NET_PEER_PORT, + SEMATTRS_NET_PEER_PORT, port, 'port' ), From 4590c8df184bbcb9bd67ce1111df9f25f865ccf2 Mon Sep 17 00:00:00 2001 From: Severin Neumann Date: Tue, 16 Apr 2024 18:05:51 +0200 Subject: [PATCH 038/121] fix: revert modifications to Apache license (#2105) Signed-off-by: svrnm --- LICENSE | 2 +- archive/opentelemetry-browser-extension-autoinjection/LICENSE | 2 +- .../node/opentelemetry-resource-detector-alibaba-cloud/LICENSE | 2 +- detectors/node/opentelemetry-resource-detector-aws/LICENSE | 2 +- detectors/node/opentelemetry-resource-detector-azure/LICENSE | 2 +- .../node/opentelemetry-resource-detector-container/LICENSE | 2 +- detectors/node/opentelemetry-resource-detector-gcp/LICENSE | 2 +- detectors/node/opentelemetry-resource-detector-github/LICENSE | 2 +- detectors/node/opentelemetry-resource-detector-instana/LICENSE | 2 +- incubator/opentelemetry-sampler-aws-xray/LICENSE | 2 +- metapackages/auto-instrumentations-node/LICENSE | 2 +- metapackages/auto-instrumentations-web/LICENSE | 2 +- packages/opentelemetry-host-metrics/LICENSE | 2 +- packages/opentelemetry-id-generator-aws-xray/LICENSE | 2 +- packages/opentelemetry-propagation-utils/LICENSE | 2 +- packages/opentelemetry-redis-common/LICENSE | 2 +- packages/opentelemetry-sql-common/LICENSE | 2 +- packages/opentelemetry-test-utils/LICENSE | 2 +- packages/winston-transport/LICENSE | 2 +- plugins/node/instrumentation-amqplib/LICENSE | 2 +- plugins/node/instrumentation-cucumber/LICENSE | 2 +- plugins/node/instrumentation-dataloader/LICENSE | 2 +- plugins/node/instrumentation-lru-memoizer/LICENSE | 2 +- plugins/node/instrumentation-mongoose/LICENSE | 2 +- plugins/node/instrumentation-runtime-node/LICENSE | 2 +- plugins/node/instrumentation-tedious/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-aws-lambda/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-aws-sdk/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-bunyan/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-cassandra/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-connect/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-dns/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-express/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-fastify/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-generic-pool/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-graphql/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-hapi/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-ioredis/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-knex/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-koa/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-memcached/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-mongodb/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-mysql/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-mysql2/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-nestjs-core/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-net/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-pg/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-pino/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-redis-4/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-redis/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-restify/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-router/LICENSE | 2 +- plugins/node/opentelemetry-instrumentation-winston/LICENSE | 2 +- plugins/web/opentelemetry-instrumentation-document-load/LICENSE | 2 +- .../web/opentelemetry-instrumentation-user-interaction/LICENSE | 2 +- plugins/web/opentelemetry-plugin-react-load/LICENSE | 2 +- propagators/opentelemetry-propagator-aws-xray/LICENSE | 2 +- propagators/opentelemetry-propagator-grpc-census-binary/LICENSE | 2 +- propagators/opentelemetry-propagator-instana/LICENSE | 2 +- propagators/opentelemetry-propagator-ot-trace/LICENSE | 2 +- 60 files changed, 60 insertions(+), 60 deletions(-) diff --git a/LICENSE b/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/archive/opentelemetry-browser-extension-autoinjection/LICENSE b/archive/opentelemetry-browser-extension-autoinjection/LICENSE index 26104aae5b..f49a4e16e6 100644 --- a/archive/opentelemetry-browser-extension-autoinjection/LICENSE +++ b/archive/opentelemetry-browser-extension-autoinjection/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/LICENSE b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/LICENSE index a42588e10f..261eeb9e9f 100644 --- a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/LICENSE +++ b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2021] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/detectors/node/opentelemetry-resource-detector-aws/LICENSE b/detectors/node/opentelemetry-resource-detector-aws/LICENSE index 6b91a297c8..261eeb9e9f 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/LICENSE +++ b/detectors/node/opentelemetry-resource-detector-aws/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2020] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/detectors/node/opentelemetry-resource-detector-azure/LICENSE b/detectors/node/opentelemetry-resource-detector-azure/LICENSE index 6f13cd2fe6..a36ec4ab7e 100644 --- a/detectors/node/opentelemetry-resource-detector-azure/LICENSE +++ b/detectors/node/opentelemetry-resource-detector-azure/LICENSE @@ -186,7 +186,7 @@ APPENDIX: How to apply the Apache License to your work. same "printed page" as the copyright notice for easier identification within third-party archives. -Copyright [2020] OpenTelemetry Authors +Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/detectors/node/opentelemetry-resource-detector-container/LICENSE b/detectors/node/opentelemetry-resource-detector-container/LICENSE index a42588e10f..261eeb9e9f 100644 --- a/detectors/node/opentelemetry-resource-detector-container/LICENSE +++ b/detectors/node/opentelemetry-resource-detector-container/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2021] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/detectors/node/opentelemetry-resource-detector-gcp/LICENSE b/detectors/node/opentelemetry-resource-detector-gcp/LICENSE index 6b91a297c8..261eeb9e9f 100644 --- a/detectors/node/opentelemetry-resource-detector-gcp/LICENSE +++ b/detectors/node/opentelemetry-resource-detector-gcp/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2020] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/detectors/node/opentelemetry-resource-detector-github/LICENSE b/detectors/node/opentelemetry-resource-detector-github/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/detectors/node/opentelemetry-resource-detector-github/LICENSE +++ b/detectors/node/opentelemetry-resource-detector-github/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/detectors/node/opentelemetry-resource-detector-instana/LICENSE b/detectors/node/opentelemetry-resource-detector-instana/LICENSE index 6b91a297c8..261eeb9e9f 100644 --- a/detectors/node/opentelemetry-resource-detector-instana/LICENSE +++ b/detectors/node/opentelemetry-resource-detector-instana/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2020] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/incubator/opentelemetry-sampler-aws-xray/LICENSE b/incubator/opentelemetry-sampler-aws-xray/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/incubator/opentelemetry-sampler-aws-xray/LICENSE +++ b/incubator/opentelemetry-sampler-aws-xray/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/metapackages/auto-instrumentations-node/LICENSE b/metapackages/auto-instrumentations-node/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/metapackages/auto-instrumentations-node/LICENSE +++ b/metapackages/auto-instrumentations-node/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/metapackages/auto-instrumentations-web/LICENSE b/metapackages/auto-instrumentations-web/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/metapackages/auto-instrumentations-web/LICENSE +++ b/metapackages/auto-instrumentations-web/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/packages/opentelemetry-host-metrics/LICENSE b/packages/opentelemetry-host-metrics/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/packages/opentelemetry-host-metrics/LICENSE +++ b/packages/opentelemetry-host-metrics/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/packages/opentelemetry-id-generator-aws-xray/LICENSE b/packages/opentelemetry-id-generator-aws-xray/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/packages/opentelemetry-id-generator-aws-xray/LICENSE +++ b/packages/opentelemetry-id-generator-aws-xray/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/packages/opentelemetry-propagation-utils/LICENSE b/packages/opentelemetry-propagation-utils/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/packages/opentelemetry-propagation-utils/LICENSE +++ b/packages/opentelemetry-propagation-utils/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/packages/opentelemetry-redis-common/LICENSE b/packages/opentelemetry-redis-common/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/packages/opentelemetry-redis-common/LICENSE +++ b/packages/opentelemetry-redis-common/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/packages/opentelemetry-sql-common/LICENSE b/packages/opentelemetry-sql-common/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/packages/opentelemetry-sql-common/LICENSE +++ b/packages/opentelemetry-sql-common/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/packages/opentelemetry-test-utils/LICENSE b/packages/opentelemetry-test-utils/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/packages/opentelemetry-test-utils/LICENSE +++ b/packages/opentelemetry-test-utils/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/packages/winston-transport/LICENSE b/packages/winston-transport/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/packages/winston-transport/LICENSE +++ b/packages/winston-transport/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/instrumentation-amqplib/LICENSE b/plugins/node/instrumentation-amqplib/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/instrumentation-amqplib/LICENSE +++ b/plugins/node/instrumentation-amqplib/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/instrumentation-cucumber/LICENSE b/plugins/node/instrumentation-cucumber/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/instrumentation-cucumber/LICENSE +++ b/plugins/node/instrumentation-cucumber/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/instrumentation-dataloader/LICENSE b/plugins/node/instrumentation-dataloader/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/instrumentation-dataloader/LICENSE +++ b/plugins/node/instrumentation-dataloader/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/instrumentation-lru-memoizer/LICENSE b/plugins/node/instrumentation-lru-memoizer/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/instrumentation-lru-memoizer/LICENSE +++ b/plugins/node/instrumentation-lru-memoizer/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/instrumentation-mongoose/LICENSE b/plugins/node/instrumentation-mongoose/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/instrumentation-mongoose/LICENSE +++ b/plugins/node/instrumentation-mongoose/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/instrumentation-runtime-node/LICENSE b/plugins/node/instrumentation-runtime-node/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/instrumentation-runtime-node/LICENSE +++ b/plugins/node/instrumentation-runtime-node/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/instrumentation-tedious/LICENSE b/plugins/node/instrumentation-tedious/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/instrumentation-tedious/LICENSE +++ b/plugins/node/instrumentation-tedious/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/LICENSE b/plugins/node/opentelemetry-instrumentation-aws-lambda/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/LICENSE b/plugins/node/opentelemetry-instrumentation-aws-sdk/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-bunyan/LICENSE b/plugins/node/opentelemetry-instrumentation-bunyan/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-bunyan/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-bunyan/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/LICENSE b/plugins/node/opentelemetry-instrumentation-cassandra/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-cassandra/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-connect/LICENSE b/plugins/node/opentelemetry-instrumentation-connect/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-connect/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-dns/LICENSE b/plugins/node/opentelemetry-instrumentation-dns/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-dns/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-express/LICENSE b/plugins/node/opentelemetry-instrumentation-express/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-express/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-express/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-fastify/LICENSE b/plugins/node/opentelemetry-instrumentation-fastify/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-fastify/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-generic-pool/LICENSE b/plugins/node/opentelemetry-instrumentation-generic-pool/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-generic-pool/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-generic-pool/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-graphql/LICENSE b/plugins/node/opentelemetry-instrumentation-graphql/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-graphql/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-hapi/LICENSE b/plugins/node/opentelemetry-instrumentation-hapi/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-hapi/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/LICENSE b/plugins/node/opentelemetry-instrumentation-ioredis/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-ioredis/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-knex/LICENSE b/plugins/node/opentelemetry-instrumentation-knex/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-knex/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-koa/LICENSE b/plugins/node/opentelemetry-instrumentation-koa/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-koa/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-koa/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-memcached/LICENSE b/plugins/node/opentelemetry-instrumentation-memcached/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-memcached/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-memcached/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/LICENSE b/plugins/node/opentelemetry-instrumentation-mongodb/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-mongodb/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-mysql/LICENSE b/plugins/node/opentelemetry-instrumentation-mysql/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-mysql/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/LICENSE b/plugins/node/opentelemetry-instrumentation-mysql2/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-mysql2/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/LICENSE b/plugins/node/opentelemetry-instrumentation-nestjs-core/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-net/LICENSE b/plugins/node/opentelemetry-instrumentation-net/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-net/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-net/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-pg/LICENSE b/plugins/node/opentelemetry-instrumentation-pg/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-pg/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-pino/LICENSE b/plugins/node/opentelemetry-instrumentation-pino/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-pino/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-redis-4/LICENSE b/plugins/node/opentelemetry-instrumentation-redis-4/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-redis-4/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-redis-4/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-redis/LICENSE b/plugins/node/opentelemetry-instrumentation-redis/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-redis/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-restify/LICENSE b/plugins/node/opentelemetry-instrumentation-restify/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-restify/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-router/LICENSE b/plugins/node/opentelemetry-instrumentation-router/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-router/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-router/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/node/opentelemetry-instrumentation-winston/LICENSE b/plugins/node/opentelemetry-instrumentation-winston/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/LICENSE +++ b/plugins/node/opentelemetry-instrumentation-winston/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/web/opentelemetry-instrumentation-document-load/LICENSE b/plugins/web/opentelemetry-instrumentation-document-load/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/LICENSE +++ b/plugins/web/opentelemetry-instrumentation-document-load/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/LICENSE b/plugins/web/opentelemetry-instrumentation-user-interaction/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/LICENSE +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/plugins/web/opentelemetry-plugin-react-load/LICENSE b/plugins/web/opentelemetry-plugin-react-load/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/plugins/web/opentelemetry-plugin-react-load/LICENSE +++ b/plugins/web/opentelemetry-plugin-react-load/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/propagators/opentelemetry-propagator-aws-xray/LICENSE b/propagators/opentelemetry-propagator-aws-xray/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/propagators/opentelemetry-propagator-aws-xray/LICENSE +++ b/propagators/opentelemetry-propagator-aws-xray/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/propagators/opentelemetry-propagator-grpc-census-binary/LICENSE b/propagators/opentelemetry-propagator-grpc-census-binary/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/propagators/opentelemetry-propagator-grpc-census-binary/LICENSE +++ b/propagators/opentelemetry-propagator-grpc-census-binary/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/propagators/opentelemetry-propagator-instana/LICENSE b/propagators/opentelemetry-propagator-instana/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/propagators/opentelemetry-propagator-instana/LICENSE +++ b/propagators/opentelemetry-propagator-instana/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/propagators/opentelemetry-propagator-ot-trace/LICENSE b/propagators/opentelemetry-propagator-ot-trace/LICENSE index e50e8c80f9..261eeb9e9f 100644 --- a/propagators/opentelemetry-propagator-ot-trace/LICENSE +++ b/propagators/opentelemetry-propagator-ot-trace/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [2022] OpenTelemetry Authors + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. From 0a0b4dcac282eac90f8bf76b53e539d58200c772 Mon Sep 17 00:00:00 2001 From: Zirak Date: Wed, 17 Apr 2024 13:56:58 +0000 Subject: [PATCH 039/121] refactor(instrumentation-redis): Use exported semconv strings (#2075) * refactor(instrumentation-redis): Use exported semconv strings Part of #2025. * chore(instrumentation-redis): Update package-lock --------- Co-authored-by: Jamie Danielson Co-authored-by: Amir Blum Co-authored-by: Marc Pichler --- package-lock.json | 4 ++-- .../README.md | 14 +++++++++++++ .../package.json | 2 +- .../src/utils.ts | 21 ++++++++++--------- .../test/redis.test.ts | 20 +++++++++++------- 5 files changed, 40 insertions(+), 21 deletions(-) diff --git a/package-lock.json b/package-lock.json index f48f69eb25..fe110e001b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38497,7 +38497,7 @@ "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/redis-common": "^0.36.1", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -46856,7 +46856,7 @@ "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/redis": "2.8.32", diff --git a/plugins/node/opentelemetry-instrumentation-redis/README.md b/plugins/node/opentelemetry-instrumentation-redis/README.md index 693edfdd21..e93e4c7873 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/README.md +++ b/plugins/node/opentelemetry-instrumentation-redis/README.md @@ -74,6 +74,20 @@ const redisInstrumentation = new RedisInstrumentation({ }); ``` +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | Notes | +|------------------------|--------------------------------------------------------------|--------------------------------------| +| `db.connection_string` | URL to Redis server address, of the form `redis://host:port` | Key: `SEMATTRS_DB_CONNECTION_STRING` | +| `db.statement` | Executed Redis statement | Key: `SEMATTRS_DB_STATEMENT` | +| `db.system` | Database identifier; always `redis` | Key: `SEMATTRS_DB_SYSTEM` | +| `net.peer.name` | Hostname or IP of the connected Redis server | Key: `SEMATTRS_NET_PEER_NAME` | +| `net.peer.port` | Port of the connected Redis server | Key: `SEMATTRS_NET_PORT_NAME` | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/opentelemetry-instrumentation-redis/package.json b/plugins/node/opentelemetry-instrumentation-redis/package.json index 67d8fc6c1a..7c52f2cb7b 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/package.json +++ b/plugins/node/opentelemetry-instrumentation-redis/package.json @@ -68,7 +68,7 @@ "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/redis-common": "^0.36.1", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-redis#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-redis/src/utils.ts b/plugins/node/opentelemetry-instrumentation-redis/src/utils.ts index 7575e51376..fed4f769f9 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/src/utils.ts +++ b/plugins/node/opentelemetry-instrumentation-redis/src/utils.ts @@ -28,8 +28,12 @@ import { RedisCommand, RedisInstrumentationConfig } from './types'; import { EventEmitter } from 'events'; import { RedisInstrumentation } from './'; import { - DbSystemValues, - SemanticAttributes, + DBSYSTEMVALUES_REDIS, + SEMATTRS_DB_CONNECTION_STRING, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, } from '@opentelemetry/semantic-conventions'; import { safeExecuteInTheMiddle } from '@opentelemetry/instrumentation'; import { RedisPluginClientTypes } from './internal-types'; @@ -100,11 +104,8 @@ export const getTracedInternalSendCommand = ( { kind: SpanKind.CLIENT, attributes: { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.REDIS, - [SemanticAttributes.DB_STATEMENT]: dbStatementSerializer( - cmd.command, - cmd.args - ), + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_REDIS, + [SEMATTRS_DB_STATEMENT]: dbStatementSerializer(cmd.command, cmd.args), }, } ); @@ -112,13 +113,13 @@ export const getTracedInternalSendCommand = ( // Set attributes for not explicitly typed RedisPluginClientTypes if (this.options) { span.setAttributes({ - [SemanticAttributes.NET_PEER_NAME]: this.options.host, - [SemanticAttributes.NET_PEER_PORT]: this.options.port, + [SEMATTRS_NET_PEER_NAME]: this.options.host, + [SEMATTRS_NET_PEER_PORT]: this.options.port, }); } if (this.address) { span.setAttribute( - SemanticAttributes.DB_CONNECTION_STRING, + SEMATTRS_DB_CONNECTION_STRING, `redis://${this.address}` ); } diff --git a/plugins/node/opentelemetry-instrumentation-redis/test/redis.test.ts b/plugins/node/opentelemetry-instrumentation-redis/test/redis.test.ts index 01d449a57e..63ab337e86 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/test/redis.test.ts +++ b/plugins/node/opentelemetry-instrumentation-redis/test/redis.test.ts @@ -32,8 +32,12 @@ import { import * as assert from 'assert'; import { RedisInstrumentation } from '../src'; import { - DbSystemValues, - SemanticAttributes, + DBSYSTEMVALUES_REDIS, + SEMATTRS_DB_CONNECTION_STRING, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, } from '@opentelemetry/semantic-conventions'; const instrumentation = new RedisInstrumentation(); @@ -53,10 +57,10 @@ const CONFIG = { const URL = `redis://${CONFIG.host}:${CONFIG.port}`; const DEFAULT_ATTRIBUTES = { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.REDIS, - [SemanticAttributes.NET_PEER_NAME]: CONFIG.host, - [SemanticAttributes.NET_PEER_PORT]: CONFIG.port, - [SemanticAttributes.DB_CONNECTION_STRING]: URL, + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_REDIS, + [SEMATTRS_NET_PEER_NAME]: CONFIG.host, + [SEMATTRS_NET_PEER_PORT]: CONFIG.port, + [SEMATTRS_DB_CONNECTION_STRING]: URL, }; const unsetStatus: SpanStatus = { @@ -192,7 +196,7 @@ describe('redis@2.x', () => { it(`should create a child span for ${operation.description}`, done => { const attributes = { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: `${operation.command} ${operation.expectedDbStatement}`, + [SEMATTRS_DB_STATEMENT]: `${operation.command} ${operation.expectedDbStatement}`, }; const span = tracer.startSpan('test span'); context.with(trace.setSpan(context.active(), span), () => { @@ -281,7 +285,7 @@ describe('redis@2.x', () => { operation.args ); assert.strictEqual( - endedSpans[0].attributes[SemanticAttributes.DB_STATEMENT], + endedSpans[0].attributes[SEMATTRS_DB_STATEMENT], expectedStatement ); done(); From fae30104c6a8b93de54436e58f17fb9b53c0a573 Mon Sep 17 00:00:00 2001 From: David Luna Date: Wed, 17 Apr 2024 15:58:12 +0200 Subject: [PATCH 040/121] refactor(instr-redis-4): use exported strings for attributes (#2100) * refactor(instr-redis-4): use exported strings for attributes * chore(instr-redis-4): update README --------- Co-authored-by: Marc Pichler --- package-lock.json | 4 +- .../README.md | 14 +++ .../package.json | 2 +- .../src/instrumentation.ts | 4 +- .../src/utils.ts | 15 +-- .../test/redis.test.ts | 95 +++++++++---------- 6 files changed, 73 insertions(+), 61 deletions(-) diff --git a/package-lock.json b/package-lock.json index fe110e001b..1d7ceac08b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38531,7 +38531,7 @@ "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/redis-common": "^0.36.1", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -46881,7 +46881,7 @@ "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "cross-env": "7.0.3", diff --git a/plugins/node/opentelemetry-instrumentation-redis-4/README.md b/plugins/node/opentelemetry-instrumentation-redis-4/README.md index dec67f105d..19eea1b33a 100644 --- a/plugins/node/opentelemetry-instrumentation-redis-4/README.md +++ b/plugins/node/opentelemetry-instrumentation-redis-4/README.md @@ -71,6 +71,20 @@ const redisInstrumentation = new RedisInstrumentation({ }); ``` +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | +| ---------------------- | ---------------------------------------------------------------------------- | +| `db.connection_string` | The connection string used to connect to the database (without credentials). | +| `db.statement` | The database statement being executed. | +| `db.system` | An identifier for the database management system (DBMS) product being used. | +| `net.peer.name` | Remote hostname or similar, see note below. | +| `net.peer.port` | Remote port number. | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/opentelemetry-instrumentation-redis-4/package.json b/plugins/node/opentelemetry-instrumentation-redis-4/package.json index 08077ae594..f6e0957832 100644 --- a/plugins/node/opentelemetry-instrumentation-redis-4/package.json +++ b/plugins/node/opentelemetry-instrumentation-redis-4/package.json @@ -68,7 +68,7 @@ "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/redis-common": "^0.36.1", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-redis-4#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts index e018845e2d..825defe5cf 100644 --- a/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts @@ -32,7 +32,7 @@ import { getClientAttributes } from './utils'; import { defaultDbStatementSerializer } from '@opentelemetry/redis-common'; import { RedisInstrumentationConfig } from './types'; import { VERSION } from './version'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMATTRS_DB_STATEMENT } from '@opentelemetry/semantic-conventions'; import type { MultiErrorReply } from './internal-types'; const OTEL_OPEN_SPANS = Symbol( @@ -405,7 +405,7 @@ export class RedisInstrumentation extends InstrumentationBase { try { const dbStatement = dbStatementSerializer(commandName, commandArgs); if (dbStatement != null) { - attributes[SemanticAttributes.DB_STATEMENT] = dbStatement; + attributes[SEMATTRS_DB_STATEMENT] = dbStatement; } } catch (e) { this._diag.error('dbStatementSerializer throw an exception', e, { diff --git a/plugins/node/opentelemetry-instrumentation-redis-4/src/utils.ts b/plugins/node/opentelemetry-instrumentation-redis-4/src/utils.ts index 4275f10175..7bdbf768ac 100644 --- a/plugins/node/opentelemetry-instrumentation-redis-4/src/utils.ts +++ b/plugins/node/opentelemetry-instrumentation-redis-4/src/utils.ts @@ -15,8 +15,11 @@ */ import { Attributes, DiagLogger } from '@opentelemetry/api'; import { - DbSystemValues, - SemanticAttributes, + SEMATTRS_DB_SYSTEM, + SEMATTRS_DB_CONNECTION_STRING, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, + DBSYSTEMVALUES_REDIS, } from '@opentelemetry/semantic-conventions'; export function getClientAttributes( @@ -24,10 +27,10 @@ export function getClientAttributes( options: any ): Attributes { return { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.REDIS, - [SemanticAttributes.NET_PEER_NAME]: options?.socket?.host, - [SemanticAttributes.NET_PEER_PORT]: options?.socket?.port, - [SemanticAttributes.DB_CONNECTION_STRING]: + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_REDIS, + [SEMATTRS_NET_PEER_NAME]: options?.socket?.host, + [SEMATTRS_NET_PEER_PORT]: options?.socket?.port, + [SEMATTRS_DB_CONNECTION_STRING]: removeCredentialsFromDBConnectionStringAttribute(diag, options?.url), }; } diff --git a/plugins/node/opentelemetry-instrumentation-redis-4/test/redis.test.ts b/plugins/node/opentelemetry-instrumentation-redis-4/test/redis.test.ts index 713c2130fe..6200b4c1eb 100644 --- a/plugins/node/opentelemetry-instrumentation-redis-4/test/redis.test.ts +++ b/plugins/node/opentelemetry-instrumentation-redis-4/test/redis.test.ts @@ -41,7 +41,14 @@ import { trace, context, } from '@opentelemetry/api'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_DB_CONNECTION_STRING, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, + SEMATTRS_EXCEPTION_MESSAGE, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, +} from '@opentelemetry/semantic-conventions'; import { RedisResponseCustomAttributeFunction } from '../src/types'; import { hrTimeToMilliseconds, suppressTracing } from '@opentelemetry/core'; @@ -94,24 +101,21 @@ describe('redis@^4.0.0', () => { assert.ok(setSpan); assert.strictEqual(setSpan?.kind, SpanKind.CLIENT); assert.strictEqual(setSpan?.name, 'redis-SET'); + assert.strictEqual(setSpan?.attributes[SEMATTRS_DB_SYSTEM], 'redis'); assert.strictEqual( - setSpan?.attributes[SemanticAttributes.DB_SYSTEM], - 'redis' - ); - assert.strictEqual( - setSpan?.attributes[SemanticAttributes.DB_STATEMENT], + setSpan?.attributes[SEMATTRS_DB_STATEMENT], 'SET key [1 other arguments]' ); assert.strictEqual( - setSpan?.attributes[SemanticAttributes.NET_PEER_NAME], + setSpan?.attributes[SEMATTRS_NET_PEER_NAME], redisTestConfig.host ); assert.strictEqual( - setSpan?.attributes[SemanticAttributes.NET_PEER_PORT], + setSpan?.attributes[SEMATTRS_NET_PEER_PORT], redisTestConfig.port ); assert.strictEqual( - setSpan?.attributes[SemanticAttributes.DB_CONNECTION_STRING], + setSpan?.attributes[SEMATTRS_DB_CONNECTION_STRING], redisTestUrl ); @@ -119,24 +123,18 @@ describe('redis@^4.0.0', () => { assert.ok(getSpan); assert.strictEqual(getSpan?.kind, SpanKind.CLIENT); assert.strictEqual(getSpan?.name, 'redis-GET'); + assert.strictEqual(getSpan?.attributes[SEMATTRS_DB_SYSTEM], 'redis'); + assert.strictEqual(getSpan?.attributes[SEMATTRS_DB_STATEMENT], 'GET key'); assert.strictEqual( - getSpan?.attributes[SemanticAttributes.DB_SYSTEM], - 'redis' - ); - assert.strictEqual( - getSpan?.attributes[SemanticAttributes.DB_STATEMENT], - 'GET key' - ); - assert.strictEqual( - getSpan?.attributes[SemanticAttributes.NET_PEER_NAME], + getSpan?.attributes[SEMATTRS_NET_PEER_NAME], redisTestConfig.host ); assert.strictEqual( - getSpan?.attributes[SemanticAttributes.NET_PEER_PORT], + getSpan?.attributes[SEMATTRS_NET_PEER_PORT], redisTestConfig.port ); assert.strictEqual( - getSpan?.attributes[SemanticAttributes.DB_CONNECTION_STRING], + getSpan?.attributes[SEMATTRS_DB_CONNECTION_STRING], redisTestUrl ); }); @@ -149,15 +147,15 @@ describe('redis@^4.0.0', () => { assert.ok(setSpan); assert.strictEqual( - setSpan?.attributes[SemanticAttributes.DB_STATEMENT], + setSpan?.attributes[SEMATTRS_DB_STATEMENT], 'SET key [1 other arguments]' ); assert.strictEqual( - setSpan?.attributes[SemanticAttributes.NET_PEER_NAME], + setSpan?.attributes[SEMATTRS_NET_PEER_NAME], redisTestConfig.host ); assert.strictEqual( - setSpan?.attributes[SemanticAttributes.NET_PEER_PORT], + setSpan?.attributes[SEMATTRS_NET_PEER_PORT], redisTestConfig.port ); }); @@ -180,7 +178,7 @@ describe('redis@^4.0.0', () => { ); assert.strictEqual(exceptions.length, 1); assert.strictEqual( - exceptions?.[0].attributes?.[SemanticAttributes.EXCEPTION_MESSAGE], + exceptions?.[0].attributes?.[SEMATTRS_EXCEPTION_MESSAGE], 'ERR value is not an integer or out of range' ); }); @@ -202,20 +200,17 @@ describe('redis@^4.0.0', () => { assert.strictEqual(span.name, 'redis-connect'); + assert.strictEqual(span.attributes[SEMATTRS_DB_SYSTEM], 'redis'); assert.strictEqual( - span.attributes[SemanticAttributes.DB_SYSTEM], - 'redis' - ); - assert.strictEqual( - span.attributes[SemanticAttributes.NET_PEER_NAME], + span.attributes[SEMATTRS_NET_PEER_NAME], redisTestConfig.host ); assert.strictEqual( - span.attributes[SemanticAttributes.NET_PEER_PORT], + span.attributes[SEMATTRS_NET_PEER_PORT], redisTestConfig.port ); assert.strictEqual( - span.attributes[SemanticAttributes.DB_CONNECTION_STRING], + span.attributes[SEMATTRS_DB_CONNECTION_STRING], redisTestUrl ); }); @@ -235,7 +230,7 @@ describe('redis@^4.0.0', () => { assert.strictEqual(span.name, 'redis-connect'); assert.strictEqual(span.status.code, SpanStatusCode.ERROR); assert.strictEqual( - span.attributes[SemanticAttributes.DB_CONNECTION_STRING], + span.attributes[SEMATTRS_DB_CONNECTION_STRING], redisURL ); }); @@ -258,11 +253,11 @@ describe('redis@^4.0.0', () => { assert.strictEqual(span.name, 'redis-connect'); assert.strictEqual(span.status.code, SpanStatusCode.ERROR); assert.strictEqual( - span.attributes[SemanticAttributes.NET_PEER_NAME], + span.attributes[SEMATTRS_NET_PEER_NAME], redisTestConfig.host ); assert.strictEqual( - span.attributes[SemanticAttributes.DB_CONNECTION_STRING], + span.attributes[SEMATTRS_DB_CONNECTION_STRING], expectAttributeConnString ); }); @@ -285,11 +280,11 @@ describe('redis@^4.0.0', () => { assert.strictEqual(span.name, 'redis-connect'); assert.strictEqual(span.status.code, SpanStatusCode.ERROR); assert.strictEqual( - span.attributes[SemanticAttributes.NET_PEER_NAME], + span.attributes[SEMATTRS_NET_PEER_NAME], redisTestConfig.host ); assert.strictEqual( - span.attributes[SemanticAttributes.DB_CONNECTION_STRING], + span.attributes[SEMATTRS_DB_CONNECTION_STRING], expectAttributeConnString ); }); @@ -314,38 +309,38 @@ describe('redis@^4.0.0', () => { assert.ok(multiSetSpan); assert.strictEqual(multiSetSpan.name, 'redis-SET'); assert.strictEqual( - multiSetSpan.attributes[SemanticAttributes.DB_STATEMENT], + multiSetSpan.attributes[SEMATTRS_DB_STATEMENT], 'SET key [1 other arguments]' ); assert.strictEqual( - multiSetSpan?.attributes[SemanticAttributes.NET_PEER_NAME], + multiSetSpan?.attributes[SEMATTRS_NET_PEER_NAME], redisTestConfig.host ); assert.strictEqual( - multiSetSpan?.attributes[SemanticAttributes.NET_PEER_PORT], + multiSetSpan?.attributes[SEMATTRS_NET_PEER_PORT], redisTestConfig.port ); assert.strictEqual( - multiSetSpan?.attributes[SemanticAttributes.DB_CONNECTION_STRING], + multiSetSpan?.attributes[SEMATTRS_DB_CONNECTION_STRING], redisTestUrl ); assert.ok(multiGetSpan); assert.strictEqual(multiGetSpan.name, 'redis-GET'); assert.strictEqual( - multiGetSpan.attributes[SemanticAttributes.DB_STATEMENT], + multiGetSpan.attributes[SEMATTRS_DB_STATEMENT], 'GET another-key' ); assert.strictEqual( - multiGetSpan?.attributes[SemanticAttributes.NET_PEER_NAME], + multiGetSpan?.attributes[SEMATTRS_NET_PEER_NAME], redisTestConfig.host ); assert.strictEqual( - multiGetSpan?.attributes[SemanticAttributes.NET_PEER_PORT], + multiGetSpan?.attributes[SEMATTRS_NET_PEER_PORT], redisTestConfig.port ); assert.strictEqual( - multiGetSpan?.attributes[SemanticAttributes.DB_CONNECTION_STRING], + multiGetSpan?.attributes[SEMATTRS_DB_CONNECTION_STRING], redisTestUrl ); }); @@ -360,19 +355,19 @@ describe('redis@^4.0.0', () => { const [multiSetSpan] = getTestSpans(); assert.ok(multiSetSpan); assert.strictEqual( - multiSetSpan.attributes[SemanticAttributes.DB_STATEMENT], + multiSetSpan.attributes[SEMATTRS_DB_STATEMENT], 'SET key [1 other arguments]' ); assert.strictEqual( - multiSetSpan?.attributes[SemanticAttributes.NET_PEER_NAME], + multiSetSpan?.attributes[SEMATTRS_NET_PEER_NAME], redisTestConfig.host ); assert.strictEqual( - multiSetSpan?.attributes[SemanticAttributes.NET_PEER_PORT], + multiSetSpan?.attributes[SEMATTRS_NET_PEER_PORT], redisTestConfig.port ); assert.strictEqual( - multiSetSpan?.attributes[SemanticAttributes.DB_CONNECTION_STRING], + multiSetSpan?.attributes[SEMATTRS_DB_CONNECTION_STRING], redisTestUrl ); }); @@ -513,7 +508,7 @@ describe('redis@^4.0.0', () => { await client.set('key', 'value'); const [span] = getTestSpans(); assert.strictEqual( - span.attributes[SemanticAttributes.DB_STATEMENT], + span.attributes[SEMATTRS_DB_STATEMENT], 'SET key value' ); }); @@ -527,7 +522,7 @@ describe('redis@^4.0.0', () => { await client.set('key', 'value'); const [span] = getTestSpans(); assert.ok(span); - assert.ok(!(SemanticAttributes.DB_STATEMENT in span.attributes)); + assert.ok(!(SEMATTRS_DB_STATEMENT in span.attributes)); }); }); From 34796e2a2f963a544acece8afcbaadab7b3f04cf Mon Sep 17 00:00:00 2001 From: David Luna Date: Wed, 17 Apr 2024 16:00:42 +0200 Subject: [PATCH 041/121] refactor(instr-router): use exported strings for attributes (#2099) Co-authored-by: Marc Pichler --- package-lock.json | 4 ++-- .../opentelemetry-instrumentation-router/README.md | 10 ++++++++++ .../opentelemetry-instrumentation-router/package.json | 2 +- .../src/instrumentation.ts | 4 ++-- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1d7ceac08b..080efc40e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38645,7 +38645,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -46968,7 +46968,7 @@ "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "mocha": "7.2.0", diff --git a/plugins/node/opentelemetry-instrumentation-router/README.md b/plugins/node/opentelemetry-instrumentation-router/README.md index 427dcc7a9f..152a9cf081 100644 --- a/plugins/node/opentelemetry-instrumentation-router/README.md +++ b/plugins/node/opentelemetry-instrumentation-router/README.md @@ -40,6 +40,16 @@ registerInstrumentations({ See [examples/router](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/examples/router) for a short example. +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | +| ------------ | ---------------------------------- | +| `http.route` | The matched route (path template). | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/opentelemetry-instrumentation-router/package.json b/plugins/node/opentelemetry-instrumentation-router/package.json index b57544e4de..48a8335379 100644 --- a/plugins/node/opentelemetry-instrumentation-router/package.json +++ b/plugins/node/opentelemetry-instrumentation-router/package.json @@ -57,7 +57,7 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-router#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts index 8733daf1ab..46f6a84836 100644 --- a/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts @@ -22,7 +22,7 @@ import { InstrumentationNodeModuleFile, isWrapped, } from '@opentelemetry/instrumentation'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMATTRS_HTTP_ROUTE } from '@opentelemetry/semantic-conventions'; import * as http from 'http'; import type * as Router from 'router'; @@ -182,7 +182,7 @@ export default class RouterInstrumentation extends InstrumentationBase { [AttributeNames.NAME]: fnName, [AttributeNames.VERSION]: this._moduleVersion, [AttributeNames.TYPE]: type, - [SemanticAttributes.HTTP_ROUTE]: route, + [SEMATTRS_HTTP_ROUTE]: route, }; const parent = api.context.active(); From 5f42c51a9902b4d1a4172f10bfdc0a0a6166444f Mon Sep 17 00:00:00 2001 From: David Luna Date: Wed, 17 Apr 2024 17:25:53 +0200 Subject: [PATCH 042/121] refactor(instr-mongoose): use exported strings for attributes (#2103) Co-authored-by: Marc Pichler --- package-lock.json | 4 +- .../node/instrumentation-mongoose/README.md | 17 ++++ .../instrumentation-mongoose/package.json | 2 +- .../instrumentation-mongoose/src/mongoose.ts | 32 +++--- .../instrumentation-mongoose/src/utils.ts | 22 +++-- .../instrumentation-mongoose/test/asserts.ts | 23 +++-- .../test/mongoose.test.ts | 97 +++++++------------ 7 files changed, 97 insertions(+), 100 deletions(-) diff --git a/package-lock.json b/package-lock.json index 080efc40e3..0fb1ac4458 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37027,7 +37027,7 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -46598,7 +46598,7 @@ "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "expect": "29.2.0", diff --git a/plugins/node/instrumentation-mongoose/README.md b/plugins/node/instrumentation-mongoose/README.md index 22a600e07e..159e01568b 100644 --- a/plugins/node/instrumentation-mongoose/README.md +++ b/plugins/node/instrumentation-mongoose/README.md @@ -52,6 +52,23 @@ The instrumentation's config `responseHook` functions signature changed, so the The `moduleVersionAttributeName` config option is removed. To add the mongoose package version to spans, use the `moduleVersion` attribute in hook info for `responseHook` function. +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | +| ----------------------- | --------------------------------------------------------------------------- | +| `db.mongodb.collection` | The collection being accessed within the database stated in `db.name`. | +| `db.name` | This attribute is used to report the name of the database being accessed. | +| `db.operation` | The name of the operation being executed, or the SQL keyword. | +| `db.statement` | The database statement being executed. | +| `db.system` | An identifier for the database management system (DBMS) product being used. | +| `db.user` | Username for accessing the database. | +| `net.peer.name` | Remote hostname or similar. | +| `net.peer.port` | Remote port number. | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/instrumentation-mongoose/package.json b/plugins/node/instrumentation-mongoose/package.json index 1a3d149543..dbafc9af61 100644 --- a/plugins/node/instrumentation-mongoose/package.json +++ b/plugins/node/instrumentation-mongoose/package.json @@ -62,7 +62,7 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-mongoose#readme" } diff --git a/plugins/node/instrumentation-mongoose/src/mongoose.ts b/plugins/node/instrumentation-mongoose/src/mongoose.ts index 77c8dbee0d..96bf8f3734 100644 --- a/plugins/node/instrumentation-mongoose/src/mongoose.ts +++ b/plugins/node/instrumentation-mongoose/src/mongoose.ts @@ -13,13 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { - context, - Span, - trace, - SpanAttributes, - SpanKind, -} from '@opentelemetry/api'; +import { context, Span, trace, Attributes, SpanKind } from '@opentelemetry/api'; import { suppressTracing } from '@opentelemetry/core'; import type * as mongoose from 'mongoose'; import { MongooseInstrumentationConfig, SerializerPayload } from './types'; @@ -34,7 +28,11 @@ import { InstrumentationNodeModuleDefinition, } from '@opentelemetry/instrumentation'; import { VERSION } from './version'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_DB_OPERATION, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, +} from '@opentelemetry/semantic-conventions'; const contextCaptureFunctions = [ 'remove', @@ -155,9 +153,9 @@ export class MongooseInstrumentation extends InstrumentationBase { } const parentSpan = this[_STORED_PARENT_SPAN]; - const attributes: SpanAttributes = {}; + const attributes: Attributes = {}; if (self._config.dbStatementSerializer) { - attributes[SemanticAttributes.DB_STATEMENT] = + attributes[SEMATTRS_DB_STATEMENT] = self._config.dbStatementSerializer('aggregate', { options: this.options, aggregatePipeline: this._pipeline, @@ -197,9 +195,9 @@ export class MongooseInstrumentation extends InstrumentationBase { } const parentSpan = this[_STORED_PARENT_SPAN]; - const attributes: SpanAttributes = {}; + const attributes: Attributes = {}; if (self._config.dbStatementSerializer) { - attributes[SemanticAttributes.DB_STATEMENT] = + attributes[SEMATTRS_DB_STATEMENT] = self._config.dbStatementSerializer(this.op, { condition: this._conditions, updates: this._update, @@ -243,9 +241,9 @@ export class MongooseInstrumentation extends InstrumentationBase { if (options && !(options instanceof Function)) { serializePayload.options = options; } - const attributes: SpanAttributes = {}; + const attributes: Attributes = {}; if (self._config.dbStatementSerializer) { - attributes[SemanticAttributes.DB_STATEMENT] = + attributes[SEMATTRS_DB_STATEMENT] = self._config.dbStatementSerializer(op, serializePayload); } const span = self._startSpan( @@ -308,7 +306,7 @@ export class MongooseInstrumentation extends InstrumentationBase { collection: mongoose.Collection, modelName: string, operation: string, - attributes: SpanAttributes, + attributes: Attributes, parentSpan?: Span ): Span { return this.tracer.startSpan( @@ -318,8 +316,8 @@ export class MongooseInstrumentation extends InstrumentationBase { attributes: { ...attributes, ...getAttributesFromCollection(collection), - [SemanticAttributes.DB_OPERATION]: operation, - [SemanticAttributes.DB_SYSTEM]: 'mongoose', + [SEMATTRS_DB_OPERATION]: operation, + [SEMATTRS_DB_SYSTEM]: 'mongoose', }, }, parentSpan ? trace.setSpan(context.active(), parentSpan) : undefined diff --git a/plugins/node/instrumentation-mongoose/src/utils.ts b/plugins/node/instrumentation-mongoose/src/utils.ts index 2c44c87dae..f556218c87 100644 --- a/plugins/node/instrumentation-mongoose/src/utils.ts +++ b/plugins/node/instrumentation-mongoose/src/utils.ts @@ -13,21 +13,27 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { SpanAttributes, SpanStatusCode, diag, Span } from '@opentelemetry/api'; +import { Attributes, SpanStatusCode, diag, Span } from '@opentelemetry/api'; import type { Collection } from 'mongoose'; import { MongooseResponseCustomAttributesFunction } from './types'; import { safeExecuteInTheMiddle } from '@opentelemetry/instrumentation'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_DB_MONGODB_COLLECTION, + SEMATTRS_DB_NAME, + SEMATTRS_DB_USER, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, +} from '@opentelemetry/semantic-conventions'; export function getAttributesFromCollection( collection: Collection -): SpanAttributes { +): Attributes { return { - [SemanticAttributes.DB_MONGODB_COLLECTION]: collection.name, - [SemanticAttributes.DB_NAME]: collection.conn.name, - [SemanticAttributes.DB_USER]: collection.conn.user, - [SemanticAttributes.NET_PEER_NAME]: collection.conn.host, - [SemanticAttributes.NET_PEER_PORT]: collection.conn.port, + [SEMATTRS_DB_MONGODB_COLLECTION]: collection.name, + [SEMATTRS_DB_NAME]: collection.conn.name, + [SEMATTRS_DB_USER]: collection.conn.user, + [SEMATTRS_NET_PEER_NAME]: collection.conn.host, + [SEMATTRS_NET_PEER_PORT]: collection.conn.port, }; } diff --git a/plugins/node/instrumentation-mongoose/test/asserts.ts b/plugins/node/instrumentation-mongoose/test/asserts.ts index ad21f9a716..0cf109c80e 100644 --- a/plugins/node/instrumentation-mongoose/test/asserts.ts +++ b/plugins/node/instrumentation-mongoose/test/asserts.ts @@ -15,21 +15,26 @@ */ import { expect } from 'expect'; import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_DB_MONGODB_COLLECTION, + SEMATTRS_DB_NAME, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, +} from '@opentelemetry/semantic-conventions'; import { SpanStatusCode } from '@opentelemetry/api'; import { SerializerPayload } from '../src'; import { DB_NAME, MONGO_HOST, MONGO_PORT } from './config'; export const assertSpan = (span: ReadableSpan) => { expect(span.status.code).toBe(SpanStatusCode.UNSET); - expect(span.attributes[SemanticAttributes.DB_SYSTEM]).toEqual('mongoose'); - expect(span.attributes[SemanticAttributes.DB_MONGODB_COLLECTION]).toEqual( - 'users' - ); - expect(span.attributes[SemanticAttributes.DB_NAME]).toEqual(DB_NAME); - expect(span.attributes[SemanticAttributes.NET_PEER_NAME]).toEqual(MONGO_HOST); - expect(span.attributes[SemanticAttributes.NET_PEER_PORT]).toEqual(MONGO_PORT); + expect(span.attributes[SEMATTRS_DB_SYSTEM]).toEqual('mongoose'); + expect(span.attributes[SEMATTRS_DB_MONGODB_COLLECTION]).toEqual('users'); + expect(span.attributes[SEMATTRS_DB_NAME]).toEqual(DB_NAME); + expect(span.attributes[SEMATTRS_NET_PEER_NAME]).toEqual(MONGO_HOST); + expect(span.attributes[SEMATTRS_NET_PEER_PORT]).toEqual(MONGO_PORT); }; export const getStatement = (span: ReadableSpan): SerializerPayload => - JSON.parse(span.attributes[SemanticAttributes.DB_STATEMENT] as string); + JSON.parse(span.attributes[SEMATTRS_DB_STATEMENT] as string); diff --git a/plugins/node/instrumentation-mongoose/test/mongoose.test.ts b/plugins/node/instrumentation-mongoose/test/mongoose.test.ts index 37ce6c70ec..b907300b69 100644 --- a/plugins/node/instrumentation-mongoose/test/mongoose.test.ts +++ b/plugins/node/instrumentation-mongoose/test/mongoose.test.ts @@ -16,7 +16,10 @@ import 'mocha'; import { expect } from 'expect'; import { context, ROOT_CONTEXT } from '@opentelemetry/api'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_DB_OPERATION, + SEMATTRS_DB_STATEMENT, +} from '@opentelemetry/semantic-conventions'; import { MongooseInstrumentation } from '../src'; import { getTestSpans, @@ -89,7 +92,7 @@ describe('mongoose instrumentation', () => { const spans = getTestSpans(); expect(spans.length).toBe(1); assertSpan(spans[0] as ReadableSpan); - expect(spans[0].attributes[SemanticAttributes.DB_OPERATION]).toBe('save'); + expect(spans[0].attributes[SEMATTRS_DB_OPERATION]).toBe('save'); const statement = getStatement(spans[0] as ReadableSpan); expect(statement.document).toEqual(expect.objectContaining(document)); }); @@ -107,7 +110,7 @@ describe('mongoose instrumentation', () => { expect(spans.length).toBe(1); assertSpan(spans[0] as ReadableSpan); - expect(spans[0].attributes[SemanticAttributes.DB_OPERATION]).toBe('save'); + expect(spans[0].attributes[SEMATTRS_DB_OPERATION]).toBe('save'); const statement = getStatement(spans[0] as ReadableSpan); expect(statement.document).toEqual(expect.objectContaining(document)); done(); @@ -120,7 +123,7 @@ describe('mongoose instrumentation', () => { const spans = getTestSpans(); expect(spans.length).toBe(1); assertSpan(spans[0] as ReadableSpan); - expect(spans[0].attributes[SemanticAttributes.DB_OPERATION]).toBe('find'); + expect(spans[0].attributes[SEMATTRS_DB_OPERATION]).toBe('find'); const statement = getStatement(spans[0] as ReadableSpan); expect(statement.condition).toEqual({ id: '_test' }); }); @@ -135,12 +138,12 @@ describe('mongoose instrumentation', () => { expect(spans.length).toBe(2); assertSpan(spans[0] as ReadableSpan); assertSpan(spans[1] as ReadableSpan); - expect(spans[0].attributes[SemanticAttributes.DB_OPERATION]).toBe('find'); - expect(spans[0].attributes[SemanticAttributes.DB_STATEMENT]).toMatch( + expect(spans[0].attributes[SEMATTRS_DB_OPERATION]).toBe('find'); + expect(spans[0].attributes[SEMATTRS_DB_STATEMENT]).toMatch( /.*{"id":"_test[1-2]"}.*/g ); - expect(spans[1].attributes[SemanticAttributes.DB_OPERATION]).toBe('find'); - expect(spans[1].attributes[SemanticAttributes.DB_STATEMENT]).toMatch( + expect(spans[1].attributes[SEMATTRS_DB_OPERATION]).toBe('find'); + expect(spans[1].attributes[SEMATTRS_DB_STATEMENT]).toMatch( /.*{"id":"_test[1-2]"}.*/g ); }); @@ -151,7 +154,7 @@ describe('mongoose instrumentation', () => { const spans = getTestSpans(); expect(spans.length).toBe(1); assertSpan(spans[0] as ReadableSpan); - expect(spans[0].attributes[SemanticAttributes.DB_OPERATION]).toBe('find'); + expect(spans[0].attributes[SEMATTRS_DB_OPERATION]).toBe('find'); const statement = getStatement(spans[0] as ReadableSpan); expect(statement.condition).toEqual({ id: '_test' }); expect(statement.options).toEqual({ @@ -168,7 +171,7 @@ describe('mongoose instrumentation', () => { const spans = getTestSpans(); expect(spans.length).toBe(2); assertSpan(spans[1] as ReadableSpan); - expect(spans[1].attributes[SemanticAttributes.DB_OPERATION]).toBe('remove'); + expect(spans[1].attributes[SEMATTRS_DB_OPERATION]).toBe('remove'); }); it('instrumenting remove operation with callbacks [deprecated]', done => { @@ -177,9 +180,7 @@ describe('mongoose instrumentation', () => { const spans = getTestSpans(); expect(spans.length).toBe(2); assertSpan(spans[1] as ReadableSpan); - expect(spans[1].attributes[SemanticAttributes.DB_OPERATION]).toBe( - 'remove' - ); + expect(spans[1].attributes[SEMATTRS_DB_OPERATION]).toBe('remove'); expect(getStatement(spans[1] as ReadableSpan).options).toEqual({ overwrite: true, }); @@ -194,9 +195,7 @@ describe('mongoose instrumentation', () => { const spans = getTestSpans(); expect(spans.length).toBe(1); assertSpan(spans[0] as ReadableSpan); - expect(spans[0].attributes[SemanticAttributes.DB_OPERATION]).toBe( - 'deleteOne' - ); + expect(spans[0].attributes[SEMATTRS_DB_OPERATION]).toBe('deleteOne'); }); it('instrumenting updateOne operation on models', async () => { @@ -206,9 +205,7 @@ describe('mongoose instrumentation', () => { const spans = getTestSpans(); expect(spans.length).toBe(2); assertSpan(spans[1] as ReadableSpan); - expect(spans[1].attributes[SemanticAttributes.DB_OPERATION]).toBe( - 'updateOne' - ); + expect(spans[1].attributes[SEMATTRS_DB_OPERATION]).toBe('updateOne'); const statement = getStatement(spans[1] as ReadableSpan); expect(statement.options).toEqual({ skip: 0 }); @@ -226,9 +223,7 @@ describe('mongoose instrumentation', () => { const spans = getTestSpans(); expect(spans.length).toBe(1); assertSpan(spans[0] as ReadableSpan); - expect(spans[0].attributes[SemanticAttributes.DB_OPERATION]).toBe( - 'updateOne' - ); + expect(spans[0].attributes[SEMATTRS_DB_OPERATION]).toBe('updateOne'); const statement = getStatement(spans[0] as ReadableSpan); expect(statement.options).toEqual({ skip: 0 }); @@ -242,7 +237,7 @@ describe('mongoose instrumentation', () => { const spans = getTestSpans(); expect(spans.length).toBe(1); assertSpan(spans[0] as ReadableSpan); - expect(spans[0].attributes[SemanticAttributes.DB_OPERATION]).toBe('count'); + expect(spans[0].attributes[SEMATTRS_DB_OPERATION]).toBe('count'); const statement = getStatement(spans[0] as ReadableSpan); expect(statement.options).toEqual({}); expect(statement.condition).toEqual({}); @@ -254,9 +249,7 @@ describe('mongoose instrumentation', () => { const spans = getTestSpans(); expect(spans.length).toBe(1); assertSpan(spans[0] as ReadableSpan); - expect(spans[0].attributes[SemanticAttributes.DB_OPERATION]).toBe( - 'countDocuments' - ); + expect(spans[0].attributes[SEMATTRS_DB_OPERATION]).toBe('countDocuments'); const statement = getStatement(spans[0] as ReadableSpan); expect(statement.options).toEqual({}); expect(statement.condition).toEqual({ email: 'john.doe@example.com' }); @@ -268,7 +261,7 @@ describe('mongoose instrumentation', () => { const spans = getTestSpans(); expect(spans.length).toBe(1); assertSpan(spans[0] as ReadableSpan); - expect(spans[0].attributes[SemanticAttributes.DB_OPERATION]).toBe( + expect(spans[0].attributes[SEMATTRS_DB_OPERATION]).toBe( 'estimatedDocumentCount' ); const statement = getStatement(spans[0] as ReadableSpan); @@ -282,9 +275,7 @@ describe('mongoose instrumentation', () => { const spans = getTestSpans(); expect(spans.length).toBe(1); assertSpan(spans[0] as ReadableSpan); - expect(spans[0].attributes[SemanticAttributes.DB_OPERATION]).toBe( - 'deleteMany' - ); + expect(spans[0].attributes[SEMATTRS_DB_OPERATION]).toBe('deleteMany'); const statement = getStatement(spans[0] as ReadableSpan); expect(statement.options).toEqual({}); expect(statement.condition).toEqual({}); @@ -296,9 +287,7 @@ describe('mongoose instrumentation', () => { const spans = getTestSpans(); expect(spans.length).toBe(1); assertSpan(spans[0] as ReadableSpan); - expect(spans[0].attributes[SemanticAttributes.DB_OPERATION]).toBe( - 'findOne' - ); + expect(spans[0].attributes[SEMATTRS_DB_OPERATION]).toBe('findOne'); const statement = getStatement(spans[0] as ReadableSpan); expect(statement.options).toEqual({}); expect(statement.condition).toEqual({ email: 'john.doe@example.com' }); @@ -313,7 +302,7 @@ describe('mongoose instrumentation', () => { const spans = getTestSpans(); expect(spans.length).toBe(1); assertSpan(spans[0] as ReadableSpan); - expect(spans[0].attributes[SemanticAttributes.DB_OPERATION]).toBe('update'); + expect(spans[0].attributes[SEMATTRS_DB_OPERATION]).toBe('update'); const statement = getStatement(spans[0] as ReadableSpan); expect(statement.options).toEqual({}); expect(statement.condition).toEqual({ email: 'john.doe@example.com' }); @@ -326,9 +315,7 @@ describe('mongoose instrumentation', () => { const spans = getTestSpans(); expect(spans.length).toBe(1); assertSpan(spans[0] as ReadableSpan); - expect(spans[0].attributes[SemanticAttributes.DB_OPERATION]).toBe( - 'updateOne' - ); + expect(spans[0].attributes[SEMATTRS_DB_OPERATION]).toBe('updateOne'); const statement = getStatement(spans[0] as ReadableSpan); expect(statement.options).toEqual({}); expect(statement.condition).toEqual({ email: 'john.doe@example.com' }); @@ -341,9 +328,7 @@ describe('mongoose instrumentation', () => { const spans = getTestSpans(); expect(spans.length).toBe(1); assertSpan(spans[0] as ReadableSpan); - expect(spans[0].attributes[SemanticAttributes.DB_OPERATION]).toBe( - 'updateMany' - ); + expect(spans[0].attributes[SEMATTRS_DB_OPERATION]).toBe('updateMany'); const statement = getStatement(spans[0] as ReadableSpan); expect(statement.options).toEqual({}); expect(statement.condition).toEqual({ age: 18 }); @@ -356,9 +341,7 @@ describe('mongoose instrumentation', () => { const spans = getTestSpans(); expect(spans.length).toBe(1); assertSpan(spans[0] as ReadableSpan); - expect(spans[0].attributes[SemanticAttributes.DB_OPERATION]).toBe( - 'findOneAndDelete' - ); + expect(spans[0].attributes[SEMATTRS_DB_OPERATION]).toBe('findOneAndDelete'); const statement = getStatement(spans[0] as ReadableSpan); expect(statement.options).toEqual({}); expect(statement.condition).toEqual({ email: 'john.doe@example.com' }); @@ -374,12 +357,8 @@ describe('mongoose instrumentation', () => { expect(spans.length).toBe(2); assertSpan(spans[0] as ReadableSpan); assertSpan(spans[1] as ReadableSpan); - expect(spans[0].attributes[SemanticAttributes.DB_OPERATION]).toBe( - 'findOne' - ); - expect(spans[1].attributes[SemanticAttributes.DB_OPERATION]).toBe( - 'findOneAndUpdate' - ); + expect(spans[0].attributes[SEMATTRS_DB_OPERATION]).toBe('findOne'); + expect(spans[1].attributes[SEMATTRS_DB_OPERATION]).toBe('findOneAndUpdate'); const statement = getStatement(spans[1] as ReadableSpan); expect(statement.options).toEqual({}); expect(statement.condition).toEqual({ email: 'john.doe@example.com' }); @@ -392,9 +371,7 @@ describe('mongoose instrumentation', () => { const spans = getTestSpans(); expect(spans.length).toBe(1); assertSpan(spans[0] as ReadableSpan); - expect(spans[0].attributes[SemanticAttributes.DB_OPERATION]).toBe( - 'findOneAndRemove' - ); + expect(spans[0].attributes[SEMATTRS_DB_OPERATION]).toBe('findOneAndRemove'); const statement = getStatement(spans[0] as ReadableSpan); expect(statement.options).toEqual({}); expect(statement.condition).toEqual({ email: 'john.doe@example.com' }); @@ -411,7 +388,7 @@ describe('mongoose instrumentation', () => { const spans = getTestSpans(); expect(spans.length).toBe(1); assertSpan(spans[0] as ReadableSpan); - expect(spans[0].attributes[SemanticAttributes.DB_OPERATION]).toBe('save'); + expect(spans[0].attributes[SEMATTRS_DB_OPERATION]).toBe('save'); const statement = getStatement(spans[0] as ReadableSpan); expect(statement.options).toEqual({}); expect(statement.document).toEqual(expect.objectContaining(document)); @@ -426,9 +403,7 @@ describe('mongoose instrumentation', () => { const spans = getTestSpans(); expect(spans.length).toBe(1); assertSpan(spans[0] as ReadableSpan); - expect(spans[0].attributes[SemanticAttributes.DB_OPERATION]).toBe( - 'aggregate' - ); + expect(spans[0].attributes[SEMATTRS_DB_OPERATION]).toBe('aggregate'); const statement = getStatement(spans[0] as ReadableSpan); expect(statement.aggregatePipeline).toEqual([ { $match: { firstName: 'John' } }, @@ -446,9 +421,7 @@ describe('mongoose instrumentation', () => { const spans = getTestSpans(); expect(spans.length).toBe(1); assertSpan(spans[0] as ReadableSpan); - expect(spans[0].attributes[SemanticAttributes.DB_OPERATION]).toBe( - 'aggregate' - ); + expect(spans[0].attributes[SEMATTRS_DB_OPERATION]).toBe('aggregate'); const statement = getStatement(spans[0] as ReadableSpan); expect(statement.aggregatePipeline).toEqual([ { $match: { firstName: 'John' } }, @@ -483,9 +456,7 @@ describe('mongoose instrumentation', () => { const spans = getTestSpans(); expect(spans.length).toBe(1); assertSpan(spans[0] as ReadableSpan); - expect(spans[0].attributes[SemanticAttributes.DB_STATEMENT]).toBe( - undefined - ); + expect(spans[0].attributes[SEMATTRS_DB_STATEMENT]).toBe(undefined); }); it('projection is sent to serializer', async () => { @@ -503,7 +474,7 @@ describe('mongoose instrumentation', () => { expect(spans.length).toBe(1); assertSpan(spans[0] as ReadableSpan); const reqPayload = JSON.parse( - spans[0].attributes[SemanticAttributes.DB_STATEMENT] as string + spans[0].attributes[SEMATTRS_DB_STATEMENT] as string ); expect(reqPayload.fields).toStrictEqual(projection); }); From 9f5a86712f1614026ad1a232d2923d85e69823e0 Mon Sep 17 00:00:00 2001 From: David Luna Date: Wed, 17 Apr 2024 17:31:17 +0200 Subject: [PATCH 043/121] refactor(instr-restify): use exported strings for attributes (#2098) * refactor(instr-restify): use exported strings for attributes * chore(instr-restify): fix lint issues --------- Co-authored-by: Marc Pichler --- package-lock.json | 4 ++-- .../README.md | 10 +++++++++ .../package.json | 2 +- .../src/instrumentation.ts | 14 ++++++------ .../test/restify.test.ts | 22 +++++-------------- 5 files changed, 25 insertions(+), 27 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0fb1ac4458..b25cf160bb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38579,7 +38579,7 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -46919,7 +46919,7 @@ "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/restify": "4.3.10", diff --git a/plugins/node/opentelemetry-instrumentation-restify/README.md b/plugins/node/opentelemetry-instrumentation-restify/README.md index 2e16ea7490..fd9b7fc7cd 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/README.md +++ b/plugins/node/opentelemetry-instrumentation-restify/README.md @@ -62,6 +62,16 @@ const restifyInstrumentation = new RestifyInstrumentation({ }); ``` +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | +| ------------ | ---------------------------------- | +| `http.route` | The matched route (path template). | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/opentelemetry-instrumentation-restify/package.json b/plugins/node/opentelemetry-instrumentation-restify/package.json index ddd13d9b97..dbe6fa86ed 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/package.json +++ b/plugins/node/opentelemetry-instrumentation-restify/package.json @@ -63,7 +63,7 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-restify#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts index 9efe444502..a29679f6ba 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts @@ -20,7 +20,7 @@ import type * as restify from 'restify'; import * as api from '@opentelemetry/api'; import type { Server } from 'restify'; import { LayerType } from './types'; -import * as AttributeNames from './enums/AttributeNames'; +import { AttributeNames } from './enums/AttributeNames'; import { VERSION } from './version'; import * as constants from './constants'; import { @@ -30,7 +30,7 @@ import { isWrapped, safeExecuteInTheMiddle, } from '@opentelemetry/instrumentation'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMATTRS_HTTP_ROUTE } from '@opentelemetry/semantic-conventions'; import { isPromise, isAsyncFunction } from './utils'; import { getRPCMetadata, RPCType } from '@opentelemetry/core'; import type { RestifyInstrumentationConfig } from './types'; @@ -185,11 +185,11 @@ export class RestifyInstrumentation extends InstrumentationBase { ? `request handler - ${route}` : `middleware - ${fnName || 'anonymous'}`; const attributes = { - [AttributeNames.AttributeNames.NAME]: fnName, - [AttributeNames.AttributeNames.VERSION]: this._moduleVersion || 'n/a', - [AttributeNames.AttributeNames.TYPE]: metadata.type, - [AttributeNames.AttributeNames.METHOD]: metadata.methodName, - [SemanticAttributes.HTTP_ROUTE]: route, + [AttributeNames.NAME]: fnName, + [AttributeNames.VERSION]: this._moduleVersion || 'n/a', + [AttributeNames.TYPE]: metadata.type, + [AttributeNames.METHOD]: metadata.methodName, + [SEMATTRS_HTTP_ROUTE]: route, }; const span = this.tracer.startSpan( spanName, diff --git a/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts b/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts index 6af016aed0..bea8b196a0 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/test/restify.test.ts @@ -15,7 +15,7 @@ */ import { context, trace, Span } from '@opentelemetry/api'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMATTRS_HTTP_METHOD } from '@opentelemetry/semantic-conventions'; import { RPCMetadata, RPCType, setRPCMetadata } from '@opentelemetry/core'; import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks'; @@ -493,10 +493,7 @@ describe('Restify Instrumentation', () => { describe('using requestHook in config', () => { it('calls requestHook provided function when set in config', async () => { const requestHook = (span: Span, info: RestifyRequestInfo) => { - span.setAttribute( - SemanticAttributes.HTTP_METHOD, - info.request.method - ); + span.setAttribute(SEMATTRS_HTTP_METHOD, info.request.method); span.setAttribute('restify.layer', info.layerType); }; @@ -518,10 +515,7 @@ describe('Restify Instrumentation', () => { // span from get const span = memoryExporter.getFinishedSpans()[2]; assert.notStrictEqual(span, undefined); - assert.strictEqual( - span.attributes[SemanticAttributes.HTTP_METHOD], - 'GET' - ); + assert.strictEqual(span.attributes[SEMATTRS_HTTP_METHOD], 'GET'); assert.strictEqual( span.attributes['restify.layer'], 'request_handler' @@ -533,10 +527,7 @@ describe('Restify Instrumentation', () => { it('does not propagate an error from a requestHook that throws exception', async () => { const requestHook = (span: Span, info: RestifyRequestInfo) => { - span.setAttribute( - SemanticAttributes.HTTP_METHOD, - info.request.method - ); + span.setAttribute(SEMATTRS_HTTP_METHOD, info.request.method); throw Error('error thrown in requestHook'); }; @@ -559,10 +550,7 @@ describe('Restify Instrumentation', () => { // span from get const span = memoryExporter.getFinishedSpans()[2]; assert.notStrictEqual(span, undefined); - assert.strictEqual( - span.attributes[SemanticAttributes.HTTP_METHOD], - 'GET' - ); + assert.strictEqual(span.attributes[SEMATTRS_HTTP_METHOD], 'GET'); } } ); From 3621e09b8ce3d3645a3186b62447303d20067ae3 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Thu, 18 Apr 2024 04:13:57 -0700 Subject: [PATCH 044/121] test(instr-undici): fix TAV failures with Node.js 14 and 16 (#2111) Test all versions (TAV) tests were failing with Node.js 14 and 16 because of subtle behaviour changes in socket end handling in Node.js and undici for a test that tries a bogus request. This restores earlier work-around code mistakenly removed in #2085. --- .../test/undici.test.ts | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/plugins/node/instrumentation-undici/test/undici.test.ts b/plugins/node/instrumentation-undici/test/undici.test.ts index aea2f036ce..c125b2e189 100644 --- a/plugins/node/instrumentation-undici/test/undici.test.ts +++ b/plugins/node/instrumentation-undici/test/undici.test.ts @@ -119,6 +119,10 @@ describe('UndiciInstrumentation `undici` tests', function () { propagation.disable(); mockServer.mockListener(undefined); mockServer.stop(done); + + // Close kept-alive sockets. This can save a 4s keep-alive delay before the + // process exits. + (undici as any).getGlobalDispatcher().close(); }); beforeEach(function () { @@ -216,11 +220,27 @@ describe('UndiciInstrumentation `undici` tests', function () { }; const queryRequestUrl = `${protocol}://${hostname}:${mockServer.port}/?query=test`; - const firstQueryResponse = await undici.request(queryRequestUrl, { - headers, - // @ts-expect-error - method type expects in uppercase - method: 'get', - }); + let firstQueryResponse; + try { + firstQueryResponse = await undici.request(queryRequestUrl, { + headers, + // @ts-expect-error - method type expects in uppercase + method: 'get', + }); + } catch (err: any) { + // This request is using a bogus HTTP method `get`. If (a) using Node.js + // v14, v16, or early v18.x versions and (b) this request is re-using + // a socket (from an earlier keep-alive request in this test file), + // then Node.js will emit 'end' on the socket. Undici then throws + // `SocketError: other side closed`. Given this is only for old Node.js + // versions and for this rare case of using a bogus HTTP method, we will + // skip out of this test instead of attempting to fully understand it. + assert.strictEqual(err.message, 'other side closed'); + this.skip(); + } + if (!firstQueryResponse) { + return; + } await consumeResponseBody(firstQueryResponse.body); const secondQueryResponse = await undici.request(queryRequestUrl, { From d5e0d6580a25576446ce196e9447477722a05928 Mon Sep 17 00:00:00 2001 From: Martin Kuba Date: Thu, 18 Apr 2024 04:15:55 -0700 Subject: [PATCH 045/121] refactor(propagator-aws-xray): Remove Xray propagator package (#2106) * chore(propagator-aws-xray): removed package (moved to core SDK repository) * updated release-please config files * removed linked xray dependencies --------- Co-authored-by: Marc Pichler --- .github/component-label-map.yml | 5 - .github/component_owners.yml | 2 - .release-please-manifest.json | 1 - package-lock.json | 86 +---- .../.eslintignore | 1 - .../.eslintrc.js | 9 - .../CHANGELOG.md | 62 ---- .../opentelemetry-propagator-aws-xray/LICENSE | 201 ----------- .../README.md | 78 ----- .../karma.conf.js | 24 -- .../package.json | 71 ---- .../src/AWSXRayPropagator.ts | 200 ----------- .../src/index.ts | 17 - .../test/AWSXRayPropagator.test.ts | 328 ------------------ .../test/index-webpack.ts | 20 -- .../tsconfig.esm.json | 11 - .../tsconfig.json | 11 - release-please-config.json | 1 - 18 files changed, 16 insertions(+), 1112 deletions(-) delete mode 100644 propagators/opentelemetry-propagator-aws-xray/.eslintignore delete mode 100644 propagators/opentelemetry-propagator-aws-xray/.eslintrc.js delete mode 100644 propagators/opentelemetry-propagator-aws-xray/CHANGELOG.md delete mode 100644 propagators/opentelemetry-propagator-aws-xray/LICENSE delete mode 100644 propagators/opentelemetry-propagator-aws-xray/README.md delete mode 100644 propagators/opentelemetry-propagator-aws-xray/karma.conf.js delete mode 100644 propagators/opentelemetry-propagator-aws-xray/package.json delete mode 100644 propagators/opentelemetry-propagator-aws-xray/src/AWSXRayPropagator.ts delete mode 100644 propagators/opentelemetry-propagator-aws-xray/src/index.ts delete mode 100644 propagators/opentelemetry-propagator-aws-xray/test/AWSXRayPropagator.test.ts delete mode 100644 propagators/opentelemetry-propagator-aws-xray/test/index-webpack.ts delete mode 100644 propagators/opentelemetry-propagator-aws-xray/tsconfig.esm.json delete mode 100644 propagators/opentelemetry-propagator-aws-xray/tsconfig.json diff --git a/.github/component-label-map.yml b/.github/component-label-map.yml index d49f02ac12..5a9fc3af56 100644 --- a/.github/component-label-map.yml +++ b/.github/component-label-map.yml @@ -61,7 +61,6 @@ pkg:instrumentation-aws-lambda: - changed-files: - any-glob-to-any-file: - plugins/node/opentelemetry-instrumentation-aws-lambda/** - - propagators/opentelemetry-propagator-aws-xray/** pkg:instrumentation-aws-sdk: - changed-files: - any-glob-to-any-file: @@ -246,10 +245,6 @@ pkg:propagation-utils: - any-glob-to-any-file: - packages/opentelemetry-propagation-utils/** - packages/opentelemetry-test-utils/** -pkg:propagator-aws-xray: - - changed-files: - - any-glob-to-any-file: - - propagators/opentelemetry-propagator-aws-xray/** pkg:propagator-grpc-census-binary: - changed-files: - any-glob-to-any-file: diff --git a/.github/component_owners.yml b/.github/component_owners.yml index fdc9c0fc10..cafc2a7065 100644 --- a/.github/component_owners.yml +++ b/.github/component_owners.yml @@ -138,8 +138,6 @@ components: - obecny plugins/web/opentelemetry-plugin-react-load: - martinkuba - propagators/opentelemetry-propagator-aws-xray: - - carolabadeer propagators/opentelemetry-propagator-grpc-census-binary: [] # Unmaintained? propagators/opentelemetry-propagator-instana: diff --git a/.release-please-manifest.json b/.release-please-manifest.json index da8e4144db..b5d6facdda 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -56,7 +56,6 @@ "plugins/web/opentelemetry-instrumentation-long-task": "0.37.0", "plugins/web/opentelemetry-instrumentation-user-interaction": "0.37.0", "plugins/web/opentelemetry-plugin-react-load": "0.30.0", - "propagators/opentelemetry-propagator-aws-xray": "1.3.1", "propagators/opentelemetry-propagator-grpc-census-binary": "0.27.1", "propagators/opentelemetry-propagator-instana": "0.3.1", "propagators/opentelemetry-propagator-ot-trace": "0.27.1" diff --git a/package-lock.json b/package-lock.json index b25cf160bb..e665d2a67e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8686,8 +8686,18 @@ "link": true }, "node_modules/@opentelemetry/propagator-aws-xray": { - "resolved": "propagators/opentelemetry-propagator-aws-xray", - "link": true + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-aws-xray/-/propagator-aws-xray-1.3.1.tgz", + "integrity": "sha512-6fDMzFlt5r6VWv7MUd0eOpglXPFqykW8CnOuUxJ1VZyLy6mV1bzBlzpsqEmhx1bjvZYvH93vhGkQZqrm95mlrQ==", + "dependencies": { + "@opentelemetry/core": "^1.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } }, "node_modules/@opentelemetry/propagator-b3": { "version": "1.23.0", @@ -38891,46 +38901,6 @@ "react": "^16.13.1 || ^17.0.0" } }, - "propagators/opentelemetry-propagator-aws-xray": { - "name": "@opentelemetry/propagator-aws-xray", - "version": "1.3.1", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "^1.0.0" - }, - "devDependencies": { - "@jsdevtools/coverage-istanbul-loader": "3.0.5", - "@opentelemetry/api": "^1.0.0", - "@types/mocha": "8.2.3", - "@types/node": "18.6.5", - "@types/webpack-env": "1.16.2", - "karma": "6.3.16", - "karma-chrome-launcher": "^3.1.1", - "karma-coverage-istanbul-reporter": "3.0.3", - "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.36", - "karma-webpack": "4.0.2", - "mocha": "7.2.0", - "nyc": "15.1.0", - "rimraf": "5.0.5", - "ts-loader": "8.3.0", - "ts-mocha": "10.0.0", - "typescript": "4.4.4", - "webpack": "4.46.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0" - } - }, - "propagators/opentelemetry-propagator-aws-xray/node_modules/@types/mocha": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", - "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", - "dev": true - }, "propagators/opentelemetry-propagator-grpc-census-binary": { "name": "@opentelemetry/propagator-grpc-census-binary", "version": "0.27.1", @@ -47428,35 +47398,11 @@ } }, "@opentelemetry/propagator-aws-xray": { - "version": "file:propagators/opentelemetry-propagator-aws-xray", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-aws-xray/-/propagator-aws-xray-1.3.1.tgz", + "integrity": "sha512-6fDMzFlt5r6VWv7MUd0eOpglXPFqykW8CnOuUxJ1VZyLy6mV1bzBlzpsqEmhx1bjvZYvH93vhGkQZqrm95mlrQ==", "requires": { - "@jsdevtools/coverage-istanbul-loader": "3.0.5", - "@opentelemetry/api": "^1.0.0", - "@opentelemetry/core": "^1.0.0", - "@types/mocha": "8.2.3", - "@types/node": "18.6.5", - "@types/webpack-env": "1.16.2", - "karma": "6.3.16", - "karma-chrome-launcher": "^3.1.1", - "karma-coverage-istanbul-reporter": "3.0.3", - "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.36", - "karma-webpack": "4.0.2", - "mocha": "7.2.0", - "nyc": "15.1.0", - "rimraf": "5.0.5", - "ts-loader": "8.3.0", - "ts-mocha": "10.0.0", - "typescript": "4.4.4", - "webpack": "4.46.0" - }, - "dependencies": { - "@types/mocha": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", - "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", - "dev": true - } + "@opentelemetry/core": "^1.0.0" } }, "@opentelemetry/propagator-b3": { diff --git a/propagators/opentelemetry-propagator-aws-xray/.eslintignore b/propagators/opentelemetry-propagator-aws-xray/.eslintignore deleted file mode 100644 index 378eac25d3..0000000000 --- a/propagators/opentelemetry-propagator-aws-xray/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -build diff --git a/propagators/opentelemetry-propagator-aws-xray/.eslintrc.js b/propagators/opentelemetry-propagator-aws-xray/.eslintrc.js deleted file mode 100644 index 01b8d09740..0000000000 --- a/propagators/opentelemetry-propagator-aws-xray/.eslintrc.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - "env": { - "mocha": true, - "commonjs": true, - "browser": true, - "jquery": true - }, - ...require('../../eslint.config.js') -} diff --git a/propagators/opentelemetry-propagator-aws-xray/CHANGELOG.md b/propagators/opentelemetry-propagator-aws-xray/CHANGELOG.md deleted file mode 100644 index 3a072e7e09..0000000000 --- a/propagators/opentelemetry-propagator-aws-xray/CHANGELOG.md +++ /dev/null @@ -1,62 +0,0 @@ -# Changelog - -## [1.3.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-aws-xray-v1.3.0...propagator-aws-xray-v1.3.1) (2023-08-14) - - -### Bug Fixes - -* Revert "feat(minification): Add importHelpers and tslib as a dependency ([#1545](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1545))" ([#1611](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1611)) ([e5bca5f](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/e5bca5fe5b27adc59c8de8fe4087d38b69d93bd4)) - -## [1.3.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-aws-xray-v1.2.1...propagator-aws-xray-v1.3.0) (2023-07-12) - - -### Features - -* **minification:** Add importHelpers and tslib as a dependency ([#1545](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1545)) ([65f612e](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/65f612e35c4d67b9935dc3a9155588b35d915482)) - -## [1.2.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-aws-xray-v1.2.0...propagator-aws-xray-v1.2.1) (2023-05-16) - - -### Bug Fixes - -* **eslint-config:** replace gts with prettier and eslint ([#1439](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1439)) ([2571c37](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/2571c371be1b5738442200cab2415b6a04c32aab)) - -## [1.2.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-aws-xray-v1.1.1...propagator-aws-xray-v1.2.0) (2023-02-07) - - -### Features - -* **propagator/aws-xray:** Extract X-Ray header in a case-insensitive fashion ([#1328](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1328)) ([4227d8a](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4227d8a3df7b0782d76844e89d452e0432a704f4)) - -## [1.1.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-aws-xray-v1.1.0...propagator-aws-xray-v1.1.1) (2022-11-02) - - -### Bug Fixes - -* address webpack memory issue for browser tests ([#1264](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1264)) ([c7f08fe](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/c7f08fed51bca68b0c522769c3c589102b98ec93)) - -## [1.1.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-aws-xray-v1.0.1...propagator-aws-xray-v1.1.0) (2022-05-14) - - -### Features - -* add supported node versions for all packages ([#973](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/973)) ([baaacbd](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/baaacbdd35ca4baab0afae64647aa8c0380ee4b7)) -* remove colors dependency ([#943](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/943)) ([b21b96c](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/b21b96c1a3a4f871370f970d6b2825f00e1fe595)), closes [#826](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/826) -* update webpack outside of examples ([#963](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/963)) ([9a58648](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/9a586480ed6a7677fb1283a61d05540345c52617)) -* use Otel SDK 1.2/0.28 ([#984](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/984)) ([098c2ed](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/098c2ed6f9c5ab7bd865685018c0777245aab3b7)) - -### [1.0.1](https://www.github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-aws-xray-v1.0.0...propagator-aws-xray-v1.0.1) (2022-01-24) - - -### Bug Fixes - -* fix CI by forcing colors@1.4.0 ([#825](https://www.github.com/open-telemetry/opentelemetry-js-contrib/issues/825)) ([0ec9f08](https://www.github.com/open-telemetry/opentelemetry-js-contrib/commit/0ec9f080520fe0f146a915a656300ef53a151ace)) -* rename lerna's --include-filtered-dependencies option ([#817](https://www.github.com/open-telemetry/opentelemetry-js-contrib/issues/817)) ([cf268e7](https://www.github.com/open-telemetry/opentelemetry-js-contrib/commit/cf268e7a92b7800ad6dbec9ca77466f9ee03ee1a)) - -## [1.0.0](https://www.github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-aws-xray-v0.25.0...propagator-aws-xray-v1.0.0) (2021-10-22) - - -### Features - -* bumped aws components to 1.0 ([#658](https://www.github.com/open-telemetry/opentelemetry-js-contrib/issues/658)) ([44d21fe](https://www.github.com/open-telemetry/opentelemetry-js-contrib/commit/44d21fe5030d2f64bedde1efc50a1173e0c49f3d)) -* support API and SDK 1.0 ([#706](https://www.github.com/open-telemetry/opentelemetry-js-contrib/issues/706)) ([096b694](https://www.github.com/open-telemetry/opentelemetry-js-contrib/commit/096b694bbc3079f0ab4ee0462869b10eb8185202)) diff --git a/propagators/opentelemetry-propagator-aws-xray/LICENSE b/propagators/opentelemetry-propagator-aws-xray/LICENSE deleted file mode 100644 index 261eeb9e9f..0000000000 --- a/propagators/opentelemetry-propagator-aws-xray/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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 - - http://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. diff --git a/propagators/opentelemetry-propagator-aws-xray/README.md b/propagators/opentelemetry-propagator-aws-xray/README.md deleted file mode 100644 index 9f2cb4e307..0000000000 --- a/propagators/opentelemetry-propagator-aws-xray/README.md +++ /dev/null @@ -1,78 +0,0 @@ -# OpenTelemetry Propagator AWS X-Ray - -[![NPM Published Version][npm-img]][npm-url] -[![Apache License][license-image]][license-image] - -The OpenTelemetry Propagator for AWS X-Ray provides HTTP header propagation for systems that are using AWS `X-Amzn-Trace-Id` format. -This propagator translates the OpenTelemetry SpanContext into the equivalent AWS header format, for use with the OpenTelemetry JS SDK. -`TraceState` is currently not propagated. - -## Status - -| Maturity | [Component Owner](../../.github/component_owners.yml) | Compatibility | -| ----------------------------------------- | ----------------------------------------------------- | --------------------- | -| [Stable](../../../CONTRIBUTING.md#stable) | @carolabadeer | API 1.0+
SDK 1.0+ | - -## Installation - -```sh -npm install --save @opentelemetry/propagator-aws-xray -``` - -## Usage - -In the [global tracer configuration file](https://opentelemetry.io/docs/instrumentation/js/getting-started/nodejs/#setup), configure the following: - -```js -const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); -const { AWSXRayPropagator } = require('@opentelemetry/propagator-aws-xray'); -// ... - -const provider = new NodeTracerProvider(); - -// Set the global trace context propagator to use X-Ray formatted trace header -provider.register({ - propagator: new AWSXRayPropagator() -}); -``` - -## Propagator Details - -Example header:`X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Parent=53995c3f42cd8ad8;Sampled=1` - -The header consists of three parts: the root trace ID, the parent ID and the sampling decision. - -### Root - The AWS X-Ray format trace ID - -* Format: (spec-version)-(timestamp)-(UUID) - * spec_version - The version of the AWS X-Ray header format. Currently, only "1" is valid. - * timestamp - 32-bit number in base16 format, corresponds to the first 8 characters of the OpenTelemetry trace ID. Note, while X-Ray calls this timestamp, for the purpose of propagation it is opaque and any value will work. - * UUID - 96-bit random number in base16 format, corresponds to the last 10 characters of the OpenTelemetry trace ID. - -Root is analogous to the [OpenTelemetry Trace ID](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/overview.md#spancontext), with some small format changes. -For additional reading, see the [AWS X-Ray Trace ID](https://docs.aws.amazon.com/xray/latest/devguide/xray-api-sendingdata.html#xray-api-traceids) public documentation. - -### Parent - The ID of the AWS X-Ray Segment - -* 64-bit random number in base16 format. Populated from the [OpenTelemetry Span ID](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/overview.md#spancontext). - -### Sampled - The sampling decision - -* Defined in the AWS X-Ray specification as a tri-state field, with "0", "1" and "?" as valid values. Only "0" and "1" are used in this propagator. If "?", a new trace will be started. -* Populated from the [OpenTelemetry trace flags](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/overview.md#spancontext). - -## Useful links - -* For more information on OpenTelemetry, visit: -* For more about OpenTelemetry JavaScript: -* For help or feedback on this project, join us in [GitHub Discussions][discussions-url] - -## License - -Apache 2.0 - See [LICENSE][license-url] for more information. - -[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions -[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE -[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat -[npm-url]: https://www.npmjs.com/package/@opentelemetry/propagator-aws-xray -[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fpropagator-aws-xray.svg diff --git a/propagators/opentelemetry-propagator-aws-xray/karma.conf.js b/propagators/opentelemetry-propagator-aws-xray/karma.conf.js deleted file mode 100644 index edcd9f055f..0000000000 --- a/propagators/opentelemetry-propagator-aws-xray/karma.conf.js +++ /dev/null @@ -1,24 +0,0 @@ -/*! - * Copyright 2020, 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 - * - * http://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. - */ - -const karmaWebpackConfig = require('../../karma.webpack'); -const karmaBaseConfig = require('../../karma.base'); - -module.exports = (config) => { - config.set(Object.assign({}, karmaBaseConfig, { - webpack: karmaWebpackConfig - })) -}; diff --git a/propagators/opentelemetry-propagator-aws-xray/package.json b/propagators/opentelemetry-propagator-aws-xray/package.json deleted file mode 100644 index f96cceba01..0000000000 --- a/propagators/opentelemetry-propagator-aws-xray/package.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "name": "@opentelemetry/propagator-aws-xray", - "version": "1.3.1", - "description": "OpenTelemetry AWS Xray propagator provides context propagation for systems that are using AWS X-Ray format.", - "main": "build/src/index.js", - "module": "build/esm/index.js", - "types": "build/src/index.d.ts", - "repository": "open-telemetry/opentelemetry-js-contrib", - "scripts": { - "precompile": "tsc --version && lerna run version:update --scope @opentelemetry/propagator-aws-xray --include-dependencies", - "prewatch": "npm run precompile", - "compile": "tsc --build tsconfig.json tsconfig.esm.json", - "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json", - "test": "nyc ts-mocha -p tsconfig.json test/**/*.test.ts", - "test:browser": "nyc karma start --single-run", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json", - "prepublishOnly": "npm run compile" - }, - "keywords": [ - "opentelemetry", - "nodejs", - "tracing", - "profiling", - "awsxray" - ], - "author": "OpenTelemetry Authors", - "license": "Apache-2.0", - "engines": { - "node": ">=14" - }, - "files": [ - "build/esm/**/*.js", - "build/esm/**/*.js.map", - "build/esm/**/*.d.ts", - "build/src/**/*.js", - "build/src/**/*.js.map", - "build/src/**/*.d.ts" - ], - "publishConfig": { - "access": "public" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "devDependencies": { - "@opentelemetry/api": "^1.0.0", - "@types/mocha": "8.2.3", - "@types/node": "18.6.5", - "@types/webpack-env": "1.16.2", - "@jsdevtools/coverage-istanbul-loader": "3.0.5", - "karma": "6.3.16", - "karma-chrome-launcher": "^3.1.1", - "karma-coverage-istanbul-reporter": "3.0.3", - "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.36", - "karma-webpack": "4.0.2", - "mocha": "7.2.0", - "nyc": "15.1.0", - "rimraf": "5.0.5", - "ts-loader": "8.3.0", - "ts-mocha": "10.0.0", - "typescript": "4.4.4", - "webpack": "4.46.0" - }, - "dependencies": { - "@opentelemetry/core": "^1.0.0" - }, - "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/propagators/opentelemetry-propagator-aws-xray#readme" -} diff --git a/propagators/opentelemetry-propagator-aws-xray/src/AWSXRayPropagator.ts b/propagators/opentelemetry-propagator-aws-xray/src/AWSXRayPropagator.ts deleted file mode 100644 index e06568d9ee..0000000000 --- a/propagators/opentelemetry-propagator-aws-xray/src/AWSXRayPropagator.ts +++ /dev/null @@ -1,200 +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 { - trace, - Context, - TextMapPropagator, - SpanContext, - TraceFlags, - TextMapSetter, - TextMapGetter, - isSpanContextValid, - isValidSpanId, - isValidTraceId, - INVALID_TRACEID, - INVALID_SPANID, - INVALID_SPAN_CONTEXT, -} from '@opentelemetry/api'; - -export const AWSXRAY_TRACE_ID_HEADER = 'x-amzn-trace-id'; - -const TRACE_HEADER_DELIMITER = ';'; -const KV_DELIMITER = '='; - -const TRACE_ID_KEY = 'Root'; -const TRACE_ID_LENGTH = 35; -const TRACE_ID_VERSION = '1'; -const TRACE_ID_DELIMITER = '-'; -const TRACE_ID_DELIMITER_INDEX_1 = 1; -const TRACE_ID_DELIMITER_INDEX_2 = 10; -const TRACE_ID_FIRST_PART_LENGTH = 8; - -const PARENT_ID_KEY = 'Parent'; - -const SAMPLED_FLAG_KEY = 'Sampled'; -const IS_SAMPLED = '1'; -const NOT_SAMPLED = '0'; - -/** - * Implementation of the AWS X-Ray Trace Header propagation protocol. See AWS - * Tracing header spec - * - * An example AWS Xray Tracing Header is shown below: - * X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Parent=53995c3f42cd8ad8;Sampled=1 - */ -export class AWSXRayPropagator implements TextMapPropagator { - inject(context: Context, carrier: unknown, setter: TextMapSetter) { - const spanContext = trace.getSpan(context)?.spanContext(); - if (!spanContext || !isSpanContextValid(spanContext)) return; - - const otTraceId = spanContext.traceId; - const timestamp = otTraceId.substring(0, TRACE_ID_FIRST_PART_LENGTH); - const randomNumber = otTraceId.substring(TRACE_ID_FIRST_PART_LENGTH); - - const parentId = spanContext.spanId; - const samplingFlag = - (TraceFlags.SAMPLED & spanContext.traceFlags) === TraceFlags.SAMPLED - ? IS_SAMPLED - : NOT_SAMPLED; - // TODO: Add OT trace state to the X-Ray trace header - - const traceHeader = `Root=1-${timestamp}-${randomNumber};Parent=${parentId};Sampled=${samplingFlag}`; - setter.set(carrier, AWSXRAY_TRACE_ID_HEADER, traceHeader); - } - - extract(context: Context, carrier: unknown, getter: TextMapGetter): Context { - const spanContext = this.getSpanContextFromHeader(carrier, getter); - if (!isSpanContextValid(spanContext)) return context; - - return trace.setSpan(context, trace.wrapSpanContext(spanContext)); - } - - fields(): string[] { - return [AWSXRAY_TRACE_ID_HEADER]; - } - - private getSpanContextFromHeader( - carrier: unknown, - getter: TextMapGetter - ): SpanContext { - const headerKeys = getter.keys(carrier); - const relevantHeaderKey = headerKeys.find(e => { - return e.toLowerCase() === AWSXRAY_TRACE_ID_HEADER; - }); - if (!relevantHeaderKey) { - return INVALID_SPAN_CONTEXT; - } - const traceHeader = getter.get(carrier, relevantHeaderKey); - - if (!traceHeader || typeof traceHeader !== 'string') { - return INVALID_SPAN_CONTEXT; - } - - let pos = 0; - let trimmedPart: string; - let parsedTraceId = INVALID_TRACEID; - let parsedSpanId = INVALID_SPANID; - let parsedTraceFlags = null; - while (pos < traceHeader.length) { - const delimiterIndex = traceHeader.indexOf(TRACE_HEADER_DELIMITER, pos); - if (delimiterIndex >= 0) { - trimmedPart = traceHeader.substring(pos, delimiterIndex).trim(); - pos = delimiterIndex + 1; - } else { - //last part - trimmedPart = traceHeader.substring(pos).trim(); - pos = traceHeader.length; - } - const equalsIndex = trimmedPart.indexOf(KV_DELIMITER); - - const value = trimmedPart.substring(equalsIndex + 1); - - if (trimmedPart.startsWith(TRACE_ID_KEY)) { - parsedTraceId = AWSXRayPropagator._parseTraceId(value); - } else if (trimmedPart.startsWith(PARENT_ID_KEY)) { - parsedSpanId = AWSXRayPropagator._parseSpanId(value); - } else if (trimmedPart.startsWith(SAMPLED_FLAG_KEY)) { - parsedTraceFlags = AWSXRayPropagator._parseTraceFlag(value); - } - } - if (parsedTraceFlags === null) { - return INVALID_SPAN_CONTEXT; - } - const resultSpanContext: SpanContext = { - traceId: parsedTraceId, - spanId: parsedSpanId, - traceFlags: parsedTraceFlags, - isRemote: true, - }; - if (!isSpanContextValid(resultSpanContext)) { - return INVALID_SPAN_CONTEXT; - } - return resultSpanContext; - } - - private static _parseTraceId(xrayTraceId: string): string { - // Check length of trace id - if (xrayTraceId.length !== TRACE_ID_LENGTH) { - return INVALID_TRACEID; - } - - // Check version trace id version - if (!xrayTraceId.startsWith(TRACE_ID_VERSION)) { - return INVALID_TRACEID; - } - - // Check delimiters - if ( - xrayTraceId.charAt(TRACE_ID_DELIMITER_INDEX_1) !== TRACE_ID_DELIMITER || - xrayTraceId.charAt(TRACE_ID_DELIMITER_INDEX_2) !== TRACE_ID_DELIMITER - ) { - return INVALID_TRACEID; - } - - const epochPart = xrayTraceId.substring( - TRACE_ID_DELIMITER_INDEX_1 + 1, - TRACE_ID_DELIMITER_INDEX_2 - ); - const uniquePart = xrayTraceId.substring( - TRACE_ID_DELIMITER_INDEX_2 + 1, - TRACE_ID_LENGTH - ); - const resTraceId = epochPart + uniquePart; - - // Check the content of trace id - if (!isValidTraceId(resTraceId)) { - return INVALID_TRACEID; - } - - return resTraceId; - } - - private static _parseSpanId(xrayParentId: string): string { - return isValidSpanId(xrayParentId) ? xrayParentId : INVALID_SPANID; - } - - private static _parseTraceFlag(xraySampledFlag: string): TraceFlags | null { - if (xraySampledFlag === NOT_SAMPLED) { - return TraceFlags.NONE; - } - if (xraySampledFlag === IS_SAMPLED) { - return TraceFlags.SAMPLED; - } - return null; - } -} diff --git a/propagators/opentelemetry-propagator-aws-xray/src/index.ts b/propagators/opentelemetry-propagator-aws-xray/src/index.ts deleted file mode 100644 index dea8476683..0000000000 --- a/propagators/opentelemetry-propagator-aws-xray/src/index.ts +++ /dev/null @@ -1,17 +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. - */ - -export * from './AWSXRayPropagator'; diff --git a/propagators/opentelemetry-propagator-aws-xray/test/AWSXRayPropagator.test.ts b/propagators/opentelemetry-propagator-aws-xray/test/AWSXRayPropagator.test.ts deleted file mode 100644 index 5cf47916d5..0000000000 --- a/propagators/opentelemetry-propagator-aws-xray/test/AWSXRayPropagator.test.ts +++ /dev/null @@ -1,328 +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 { - defaultTextMapGetter, - defaultTextMapSetter, - INVALID_SPAN_CONTEXT, - ROOT_CONTEXT, - SpanContext, - TraceFlags, - trace, -} from '@opentelemetry/api'; -import { TraceState } from '@opentelemetry/core'; - -import { AWSXRAY_TRACE_ID_HEADER, AWSXRayPropagator } from '../src'; - -describe('AWSXRayPropagator', () => { - const xrayPropagator = new AWSXRayPropagator(); - const TRACE_ID = '8a3c60f7d188f8fa79d48a391a778fa6'; - const SPAN_ID = '53995c3f42cd8ad8'; - const SAMPLED_TRACE_FLAG = TraceFlags.SAMPLED; - const NOT_SAMPLED_TRACE_FLAG = TraceFlags.NONE; - - let carrier: { [key: string]: unknown }; - - beforeEach(() => { - carrier = {}; - }); - - describe('.inject()', () => { - it('should inject sampled context', () => { - const spanContext: SpanContext = { - traceId: TRACE_ID, - spanId: SPAN_ID, - traceFlags: SAMPLED_TRACE_FLAG, - }; - xrayPropagator.inject( - trace.setSpan(ROOT_CONTEXT, trace.wrapSpanContext(spanContext)), - carrier, - defaultTextMapSetter - ); - - assert.deepStrictEqual( - carrier[AWSXRAY_TRACE_ID_HEADER], - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=1' - ); - }); - - it('should inject not sampled context', () => { - const spanContext: SpanContext = { - traceId: TRACE_ID, - spanId: SPAN_ID, - traceFlags: NOT_SAMPLED_TRACE_FLAG, - }; - xrayPropagator.inject( - trace.setSpan(ROOT_CONTEXT, trace.wrapSpanContext(spanContext)), - carrier, - defaultTextMapSetter - ); - - assert.deepStrictEqual( - carrier[AWSXRAY_TRACE_ID_HEADER], - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=0' - ); - }); - - it('should inject with TraceState', () => { - const traceState = new TraceState(); - traceState.set('foo', 'bar'); - const spanContext: SpanContext = { - traceId: TRACE_ID, - spanId: SPAN_ID, - traceFlags: SAMPLED_TRACE_FLAG, - traceState: traceState, - }; - xrayPropagator.inject( - trace.setSpan(ROOT_CONTEXT, trace.wrapSpanContext(spanContext)), - carrier, - defaultTextMapSetter - ); - - // TODO: assert trace state when the propagator supports it - assert.deepStrictEqual( - carrier[AWSXRAY_TRACE_ID_HEADER], - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=1' - ); - }); - - it('inject without spanContext - should inject nothing', () => { - xrayPropagator.inject(ROOT_CONTEXT, carrier, defaultTextMapSetter); - - assert.deepStrictEqual(carrier, {}); - }); - - it('inject default invalid spanContext - should inject nothing', () => { - xrayPropagator.inject( - trace.setSpan( - ROOT_CONTEXT, - trace.wrapSpanContext(INVALID_SPAN_CONTEXT) - ), - carrier, - defaultTextMapSetter - ); - - assert.deepStrictEqual(carrier, {}); - }); - }); - - describe('.extract()', () => { - it('extract nothing from context', () => { - // context remains untouched - assert.strictEqual( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter), - ROOT_CONTEXT - ); - }); - - it('should extract sampled context', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=1'; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, { - traceId: TRACE_ID, - spanId: SPAN_ID, - isRemote: true, - traceFlags: TraceFlags.SAMPLED, - }); - }); - - it('should extract sampled context with arbitrary order', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Parent=53995c3f42cd8ad8;Sampled=1;Root=1-8a3c60f7-d188f8fa79d48a391a778fa6'; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, { - traceId: TRACE_ID, - spanId: SPAN_ID, - isRemote: true, - traceFlags: TraceFlags.SAMPLED, - }); - }); - - it('should extract context with additional fields', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=1;Foo=Bar'; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - // TODO: assert additional fields when the propagator supports it - assert.deepStrictEqual(extractedSpanContext, { - traceId: TRACE_ID, - spanId: SPAN_ID, - isRemote: true, - traceFlags: TraceFlags.SAMPLED, - }); - }); - - it('extract empty header value - should return undefined', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = ''; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, undefined); - }); - - it('extract invalid traceId - should return undefined', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=1-abcdefgh-ijklmnopabcdefghijklmnop;Parent=53995c3f42cd8ad8;Sampled=0'; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, undefined); - }); - - it('extract invalid traceId size - should return undefined', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa600;Parent=53995c3f42cd8ad8;Sampled=0'; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, undefined); - }); - - it('extract invalid traceId delimiter - should return undefined', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=1*8a3c60f7+d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=1;Foo=Bar'; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, undefined); - }); - - it('extract invalid spanId - should return undefined', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=abcdefghijklmnop;Sampled=0'; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, undefined); - }); - - it('extract invalid spanId size - should return undefined', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad800;Sampled=0'; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, undefined); - }); - - it('extract invalid traceFlags - should return undefined', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled='; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, undefined); - }); - - it('extract invalid traceFlags length - should return undefined', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=10220'; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, undefined); - }); - - it('extract nonnumeric invalid traceFlags - should return undefined', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=a'; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, undefined); - }); - - it('extract invalid aws xray version - should return undefined', () => { - carrier[AWSXRAY_TRACE_ID_HEADER] = - 'Root=2-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=1'; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, undefined); - }); - - it('extracts context in a case-insensitive fashion', () => { - carrier[AWSXRAY_TRACE_ID_HEADER.toUpperCase()] = - 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=1;Foo=Bar'; - const extractedSpanContext = trace - .getSpan( - xrayPropagator.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter) - ) - ?.spanContext(); - - assert.deepStrictEqual(extractedSpanContext, { - traceId: TRACE_ID, - spanId: SPAN_ID, - isRemote: true, - traceFlags: TraceFlags.SAMPLED, - }); - }); - - describe('.fields()', () => { - it('should return a field with AWS X-Ray Trace ID header', () => { - const expectedField = xrayPropagator.fields(); - - assert.deepStrictEqual([AWSXRAY_TRACE_ID_HEADER], expectedField); - }); - }); - }); -}); diff --git a/propagators/opentelemetry-propagator-aws-xray/test/index-webpack.ts b/propagators/opentelemetry-propagator-aws-xray/test/index-webpack.ts deleted file mode 100644 index 061a48ccfa..0000000000 --- a/propagators/opentelemetry-propagator-aws-xray/test/index-webpack.ts +++ /dev/null @@ -1,20 +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. - */ -const testsContext = require.context('.', true, /test$/); -testsContext.keys().forEach(testsContext); - -const srcContext = require.context('.', true, /src$/); -srcContext.keys().forEach(srcContext); diff --git a/propagators/opentelemetry-propagator-aws-xray/tsconfig.esm.json b/propagators/opentelemetry-propagator-aws-xray/tsconfig.esm.json deleted file mode 100644 index a94adff6aa..0000000000 --- a/propagators/opentelemetry-propagator-aws-xray/tsconfig.esm.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "../../tsconfig.base.esm.json", - "compilerOptions": { - "rootDir": "src", - "outDir": "build/esm", - "tsBuildInfoFile": "build/esm/tsconfig.esm.tsbuildinfo" - }, - "include": [ - "src/**/*.ts" - ] -} diff --git a/propagators/opentelemetry-propagator-aws-xray/tsconfig.json b/propagators/opentelemetry-propagator-aws-xray/tsconfig.json deleted file mode 100644 index 4078877ce6..0000000000 --- a/propagators/opentelemetry-propagator-aws-xray/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "../../tsconfig.base", - "compilerOptions": { - "rootDir": ".", - "outDir": "build" - }, - "include": [ - "src/**/*.ts", - "test/**/*.ts" - ] -} diff --git a/release-please-config.json b/release-please-config.json index c0cace7d26..63294044ec 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -63,7 +63,6 @@ "plugins/web/opentelemetry-instrumentation-long-task": {}, "plugins/web/opentelemetry-instrumentation-user-interaction": {}, "plugins/web/opentelemetry-plugin-react-load": {}, - "propagators/opentelemetry-propagator-aws-xray": {}, "propagators/opentelemetry-propagator-grpc-census-binary": {}, "propagators/opentelemetry-propagator-instana": {}, "propagators/opentelemetry-propagator-ot-trace": {} From df2fa5a69e68d9fe42790474188e6132ca5abe9f Mon Sep 17 00:00:00 2001 From: David Luna Date: Thu, 18 Apr 2024 13:21:11 +0200 Subject: [PATCH 046/121] refactor(instr-knex): use exported strings for attributes (#2109) * refactor(instr-knex): use exported strings for attributes * chore(instr-knex): update semantic conventions --------- Co-authored-by: Marc Pichler --- package-lock.json | 4 +-- .../README.md | 18 +++++++++++ .../package.json | 2 +- .../src/instrumentation.ts | 30 ++++++++++++------- .../src/utils.ts | 9 ++++-- 5 files changed, 47 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index e665d2a67e..c12fc241b5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37904,7 +37904,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -46305,7 +46305,7 @@ "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "knex": "0.95.9", diff --git a/plugins/node/opentelemetry-instrumentation-knex/README.md b/plugins/node/opentelemetry-instrumentation-knex/README.md index 05537459cc..ba3e97846e 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/README.md +++ b/plugins/node/opentelemetry-instrumentation-knex/README.md @@ -48,6 +48,24 @@ registerInstrumentations({ | ------- | ---- | ------- | ----------- | | `maxQueryLength` | `number` | `100` | Truncate `db.statement` attribute to a maximum length. If the statement is truncated `'..'` is added to it's end. Default `1022`. `-1` leaves `db.statement` untouched. | +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | +| ----------------------- | ------------------------------------------------------------------------------ | +| `db.name` | This attribute is used to report the name of the database being accessed. | +| `db.operation` | The name of the operation being executed. | +| `db.sql.table` | The name of the primary table that the operation is acting upon. | +| `db.statement` | The database statement being executed. | +| `db.system` | An identifier for the database management system (DBMS) product being used. | +| `db.user` | Username for accessing the database. | +| `net.peer.name` | Remote hostname or similar. | +| `net.peer.port` | Remote port number. | +| `net.transport` | Transport protocol used. | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/opentelemetry-instrumentation-knex/package.json b/plugins/node/opentelemetry-instrumentation-knex/package.json index 0248695c58..5a8b7078c6 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/package.json +++ b/plugins/node/opentelemetry-instrumentation-knex/package.json @@ -58,7 +58,7 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-knex#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts index 257232f278..bb6e6114b5 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts @@ -23,7 +23,17 @@ import { InstrumentationNodeModuleFile, isWrapped, } from '@opentelemetry/instrumentation'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_DB_NAME, + SEMATTRS_DB_OPERATION, + SEMATTRS_DB_SQL_TABLE, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, + SEMATTRS_DB_USER, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, + SEMATTRS_NET_TRANSPORT, +} from '@opentelemetry/semantic-conventions'; import * as utils from './utils'; import * as types from './types'; @@ -144,18 +154,18 @@ export class KnexInstrumentation extends InstrumentationBase { const attributes: api.SpanAttributes = { 'knex.version': moduleVersion, - [SemanticAttributes.DB_SYSTEM]: utils.mapSystem(config.client), - [SemanticAttributes.DB_SQL_TABLE]: table, - [SemanticAttributes.DB_OPERATION]: operation, - [SemanticAttributes.DB_USER]: config?.connection?.user, - [SemanticAttributes.DB_NAME]: name, - [SemanticAttributes.NET_PEER_NAME]: config?.connection?.host, - [SemanticAttributes.NET_PEER_PORT]: config?.connection?.port, - [SemanticAttributes.NET_TRANSPORT]: + [SEMATTRS_DB_SYSTEM]: utils.mapSystem(config.client), + [SEMATTRS_DB_SQL_TABLE]: table, + [SEMATTRS_DB_OPERATION]: operation, + [SEMATTRS_DB_USER]: config?.connection?.user, + [SEMATTRS_DB_NAME]: name, + [SEMATTRS_NET_PEER_NAME]: config?.connection?.host, + [SEMATTRS_NET_PEER_PORT]: config?.connection?.port, + [SEMATTRS_NET_TRANSPORT]: config?.connection?.filename === ':memory:' ? 'inproc' : undefined, }; if (maxLen !== 0) { - attributes[SemanticAttributes.DB_STATEMENT] = utils.limitLength( + attributes[SEMATTRS_DB_STATEMENT] = utils.limitLength( query?.sql, maxLen ); diff --git a/plugins/node/opentelemetry-instrumentation-knex/src/utils.ts b/plugins/node/opentelemetry-instrumentation-knex/src/utils.ts index 6c7e6fbdba..da640ceae3 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/src/utils.ts +++ b/plugins/node/opentelemetry-instrumentation-knex/src/utils.ts @@ -14,7 +14,10 @@ * limitations under the License. */ -import { DbSystemValues } from '@opentelemetry/semantic-conventions'; +import { + DBSYSTEMVALUES_SQLITE, + DBSYSTEMVALUES_POSTGRESQL, +} from '@opentelemetry/semantic-conventions'; type Exception = { new (message: string): Exception; @@ -52,8 +55,8 @@ export const cloneErrorWithNewMessage = (err: Exception, message: string) => { }; const systemMap = new Map([ - ['sqlite3', DbSystemValues.SQLITE], - ['pg', DbSystemValues.POSTGRESQL], + ['sqlite3', DBSYSTEMVALUES_SQLITE], + ['pg', DBSYSTEMVALUES_POSTGRESQL], ]); export const mapSystem = (knexSystem: string) => { return systemMap.get(knexSystem) || knexSystem; From b903bce15d6ba4fa44daeaf6785abd6ed94cb5ff Mon Sep 17 00:00:00 2001 From: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com> Date: Fri, 19 Apr 2024 09:13:24 -0700 Subject: [PATCH 047/121] feat(instrumentation-winston): Allow log level to be configured for log sending (#2016) * Allow log level to be configured for log sending * Support other winston levels * Updating tests, transport callback update --- package-lock.json | 2 + .../src/OpenTelemetryTransportV3.ts | 10 +- .../README.md | 1 + .../package.json | 1 + .../src/instrumentation.ts | 127 +++++++++++++++++- .../src/internal-types.ts | 1 - .../src/types.ts | 6 + .../test/winston.test.ts | 85 ++++++++++++ 8 files changed, 225 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index c12fc241b5..adb9293cdf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38683,6 +38683,7 @@ "version": "0.36.0", "license": "Apache-2.0", "dependencies": { + "@opentelemetry/api-logs": "^0.50.0", "@opentelemetry/instrumentation": "^0.50.0" }, "devDependencies": { @@ -47258,6 +47259,7 @@ "version": "file:plugins/node/opentelemetry-instrumentation-winston", "requires": { "@opentelemetry/api": "^1.3.0", + "@opentelemetry/api-logs": "^0.50.0", "@opentelemetry/context-async-hooks": "^1.21.0", "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.21.0", diff --git a/packages/winston-transport/src/OpenTelemetryTransportV3.ts b/packages/winston-transport/src/OpenTelemetryTransportV3.ts index fe759676e9..a7e164adce 100644 --- a/packages/winston-transport/src/OpenTelemetryTransportV3.ts +++ b/packages/winston-transport/src/OpenTelemetryTransportV3.ts @@ -27,17 +27,15 @@ export class OpenTelemetryTransportV3 extends TransportStream { this._logger = logs.getLogger('@opentelemetry/winston-transport', VERSION); } - public override log(info: any, next: () => void) { + public override log(info: any, callback: () => void) { try { emitLogRecord(info, this._logger); } catch (error) { this.emit('warn', error); } - setImmediate(() => { - this.emit('logged', info); - }); - if (next) { - setImmediate(next); + this.emit('logged', info); + if (callback) { + callback(); } } } diff --git a/plugins/node/opentelemetry-instrumentation-winston/README.md b/plugins/node/opentelemetry-instrumentation-winston/README.md index d6bcbcca99..90d80acc66 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/README.md +++ b/plugins/node/opentelemetry-instrumentation-winston/README.md @@ -60,6 +60,7 @@ logger.info('foobar'); | Option | Type | Description | | ----------------------- | ----------------- | ----------- | | `disableLogSending` | `boolean` | Whether to disable [log sending](#log-sending). Default `false`. | +| `logSeverity` | `SeverityNumber` | Control severity level for [log sending](#log-sending). Default `SeverityNumber.UNSPECIFIED`, it will use Winston Logger's current level when unspecified. | | `disableLogCorrelation` | `boolean` | Whether to disable [log correlation](#log-correlation). Default `false`. | | `logHook` | `LogHookFunction` | An option hook to inject additional context to a log record after trace-context has been added. This requires `disableLogCorrelation` to be false. | diff --git a/plugins/node/opentelemetry-instrumentation-winston/package.json b/plugins/node/opentelemetry-instrumentation-winston/package.json index faeb6280f3..0c25fbb7cb 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/package.json +++ b/plugins/node/opentelemetry-instrumentation-winston/package.json @@ -64,6 +64,7 @@ "winston2": "npm:winston@2.4.7" }, "dependencies": { + "@opentelemetry/api-logs": "^0.50.0", "@opentelemetry/instrumentation": "^0.50.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-winston#readme" diff --git a/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts index d89107144c..de72ed235b 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts @@ -15,6 +15,7 @@ */ import { context, trace, isSpanContextValid, Span } from '@opentelemetry/api'; +import { SeverityNumber } from '@opentelemetry/api-logs'; import { InstrumentationBase, InstrumentationNodeModuleDefinition, @@ -206,7 +207,17 @@ export class WinstonInstrumentation extends InstrumentationBase { let newTransports = Array.isArray(originalTransports) ? originalTransports : []; - const openTelemetryTransport = new OpenTelemetryTransportV3(); + let transportOptions = {}; + if (config.logSeverity) { + const winstonLevel = instrumentation._winstonLevelFromSeverity( + config.logSeverity, + args[0].levels + ); + transportOptions = { level: winstonLevel }; + } + const openTelemetryTransport = new OpenTelemetryTransportV3( + transportOptions + ); if (originalTransports && !Array.isArray(originalTransports)) { newTransports = [originalTransports]; } @@ -244,4 +255,118 @@ export class WinstonInstrumentation extends InstrumentationBase { } return record; } + + private _winstonLevelFromSeverity( + severity: SeverityNumber, + winstonLevels: { [key: string]: number } | undefined + ): string | undefined { + if (winstonLevels) { + if (isNpmLevels(winstonLevels)) { + if (severity >= SeverityNumber.ERROR) { + return 'error'; + } else if (severity >= SeverityNumber.WARN) { + return 'warn'; + } else if (severity >= SeverityNumber.INFO) { + return 'info'; + } else if (severity >= SeverityNumber.DEBUG3) { + return 'http'; + } else if (severity >= SeverityNumber.DEBUG2) { + return 'verbose'; + } else if (severity >= SeverityNumber.DEBUG) { + return 'debug'; + } else if (severity >= SeverityNumber.TRACE) { + return 'silly'; + } + } else if (isCliLevels(winstonLevels)) { + if (severity >= SeverityNumber.ERROR) { + return 'error'; + } else if (severity >= SeverityNumber.WARN) { + return 'warn'; + } else if (severity >= SeverityNumber.INFO3) { + return 'help'; + } else if (severity >= SeverityNumber.INFO2) { + return 'data'; + } else if (severity >= SeverityNumber.INFO) { + return 'info'; + } else if (severity >= SeverityNumber.DEBUG) { + return 'debug'; + } else if (severity >= SeverityNumber.TRACE4) { + return 'prompt'; + } else if (severity >= SeverityNumber.TRACE3) { + return 'verbose'; + } else if (severity >= SeverityNumber.TRACE2) { + return 'input'; + } else if (severity >= SeverityNumber.TRACE) { + return 'silly'; + } + } else if (isSyslogLevels(winstonLevels)) { + if (severity >= SeverityNumber.FATAL2) { + return 'emerg'; + } else if (severity >= SeverityNumber.FATAL) { + return 'alert'; + } else if (severity >= SeverityNumber.ERROR2) { + return 'crit'; + } else if (severity >= SeverityNumber.ERROR) { + return 'error'; + } else if (severity >= SeverityNumber.WARN) { + return 'warning'; + } else if (severity >= SeverityNumber.INFO2) { + return 'notice'; + } else if (severity >= SeverityNumber.INFO) { + return 'info'; + } else if (severity >= SeverityNumber.TRACE) { + return 'debug'; + } + } + // Unknown level + this._diag.warn( + 'failed to configure severity with existing winston levels' + ); + } + + function isCliLevels(arg: any): boolean { + return ( + arg && + arg.error !== undefined && + arg.warn && + arg.help && + arg.data && + arg.info && + arg.debug && + arg.prompt && + arg.verbose && + arg.input && + arg.silly + ); + } + + function isNpmLevels(arg: any): boolean { + return ( + arg && + arg.error !== undefined && + arg.warn && + arg.info && + arg.http && + arg.verbose && + arg.debug && + arg.silly + ); + } + + function isSyslogLevels(arg: any): boolean { + return ( + arg && + arg.emerg !== undefined && + arg.alert && + arg.crit && + arg.error && + arg.warning && + arg.notice && + arg.info && + arg.debug + ); + } + + return; + } } diff --git a/plugins/node/opentelemetry-instrumentation-winston/src/internal-types.ts b/plugins/node/opentelemetry-instrumentation-winston/src/internal-types.ts index cba7ee90d2..e71eff3c83 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/src/internal-types.ts +++ b/plugins/node/opentelemetry-instrumentation-winston/src/internal-types.ts @@ -22,7 +22,6 @@ import type { export type Winston3LogMethod = Winston3Logger['write']; export type Winston3ConfigureMethod = Winston3Logger['configure']; export type { Winston3Logger }; - export type { Winston2LogMethod }; export type Winston2LoggerModule = { Logger: Winston2Logger & { diff --git a/plugins/node/opentelemetry-instrumentation-winston/src/types.ts b/plugins/node/opentelemetry-instrumentation-winston/src/types.ts index 5621bc8797..e6fabea502 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/src/types.ts +++ b/plugins/node/opentelemetry-instrumentation-winston/src/types.ts @@ -15,6 +15,7 @@ */ import { Span } from '@opentelemetry/api'; +import { SeverityNumber } from '@opentelemetry/api-logs'; import { InstrumentationConfig } from '@opentelemetry/instrumentation'; // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -28,6 +29,11 @@ export interface WinstonInstrumentationConfig extends InstrumentationConfig { */ disableLogSending?: boolean; + /** + * Control Log sending severity level, logs will be sent for specified severity and higher. + */ + logSeverity?: SeverityNumber; + /** * Whether to disable the injection trace-context fields, and possibly other * fields from `logHook()`, into log records for log correlation. diff --git a/plugins/node/opentelemetry-instrumentation-winston/test/winston.test.ts b/plugins/node/opentelemetry-instrumentation-winston/test/winston.test.ts index fe62a946b9..2ecb4eab37 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/test/winston.test.ts +++ b/plugins/node/opentelemetry-instrumentation-winston/test/winston.test.ts @@ -383,4 +383,89 @@ describe('WinstonInstrumentation', () => { } }); }); + describe('logSeverity config', () => { + beforeEach(() => { + instrumentation.setConfig({ + disableLogSending: false, + }); + memoryLogExporter.getFinishedLogRecords().length = 0; // clear + }); + + it('npm levels', () => { + if (!isWinston2) { + instrumentation.setConfig({ + disableLogSending: false, + logSeverity: SeverityNumber.DEBUG, + }); + initLogger(LevelsType.npm); + logger.log('silly', 'silly'); + logger.log('debug', 'debug'); + logger.log('verbose', 'verbose'); + logger.log('http', 'http'); + logger.log('info', 'info'); + logger.log('warn', 'warn'); + logger.log('error', 'error'); + const logRecords = memoryLogExporter.getFinishedLogRecords(); + assert.strictEqual(logRecords.length, 6); + assert.strictEqual(logRecords[0].body, 'debug'); + assert.strictEqual(logRecords[1].body, 'verbose'); + assert.strictEqual(logRecords[2].body, 'http'); + assert.strictEqual(logRecords[3].body, 'info'); + assert.strictEqual(logRecords[4].body, 'warn'); + assert.strictEqual(logRecords[5].body, 'error'); + } + }); + + it('cli levels', () => { + if (!isWinston2) { + instrumentation.setConfig({ + disableLogSending: false, + logSeverity: SeverityNumber.INFO, + }); + initLogger(LevelsType.cli); + logger.log('silly', 'silly'); + logger.log('input', 'input'); + logger.log('verbose', 'verbose'); + logger.log('prompt', 'prompt'); + logger.log('debug', 'debug'); + logger.log('info', 'info'); + logger.log('data', 'data'); + logger.log('help', 'help'); + logger.log('warn', 'warn'); + logger.log('error', 'error'); + const logRecords = memoryLogExporter.getFinishedLogRecords(); + assert.strictEqual(logRecords.length, 5); + assert.strictEqual(logRecords[0].body, 'info'); + assert.strictEqual(logRecords[1].body, 'data'); + assert.strictEqual(logRecords[2].body, 'help'); + assert.strictEqual(logRecords[3].body, 'warn'); + assert.strictEqual(logRecords[4].body, 'error'); + } + }); + + it('syslog levels', () => { + if (!isWinston2) { + instrumentation.setConfig({ + disableLogSending: false, + logSeverity: SeverityNumber.WARN, + }); + initLogger(LevelsType.syslog); + logger.log('debug', 'debug'); + logger.log('info', 'info'); + logger.log('notice', 'notice'); + logger.log('warning', 'warning'); + logger.log('error', 'error'); + logger.log('crit', 'crit'); + logger.log('alert', 'alert'); + logger.log('emerg', 'emerg'); + const logRecords = memoryLogExporter.getFinishedLogRecords(); + assert.strictEqual(logRecords.length, 5); + assert.strictEqual(logRecords[0].body, 'warning'); + assert.strictEqual(logRecords[1].body, 'error'); + assert.strictEqual(logRecords[2].body, 'crit'); + assert.strictEqual(logRecords[3].body, 'alert'); + assert.strictEqual(logRecords[4].body, 'emerg'); + } + }); + }); }); From 98fac09a3897a50c7af7b28df1102a3b5770f95f Mon Sep 17 00:00:00 2001 From: David Luna Date: Fri, 19 Apr 2024 23:48:07 +0200 Subject: [PATCH 048/121] refactor(instr-mysql2): use exported strings for attributes (#2115) - Update @opentelemetry/semantic-conventions to ^1.22 - Replace SemanticAttributes.* with exported strings SEMATTRS_* - Update README with new semantic convention package version and key Refs: #2025 --- package-lock.json | 4 +- .../README.md | 16 ++++++++ .../package.json | 2 +- .../src/instrumentation.ts | 13 +++--- .../src/utils.ts | 40 +++++++++---------- .../test/mysql.test.ts | 31 +++++++------- 6 files changed, 58 insertions(+), 48 deletions(-) diff --git a/package-lock.json b/package-lock.json index adb9293cdf..eaf2bb882c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38231,7 +38231,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@opentelemetry/sql-common": "^0.40.0" }, "devDependencies": { @@ -46621,7 +46621,7 @@ "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@opentelemetry/sql-common": "^0.40.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/README.md b/plugins/node/opentelemetry-instrumentation-mysql2/README.md index 04f15355ef..a0f3c73658 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/README.md +++ b/plugins/node/opentelemetry-instrumentation-mysql2/README.md @@ -49,6 +49,22 @@ You can set the following instrumentation options: | `responseHook` | `MySQL2InstrumentationExecutionResponseHook` (function) | Function for adding custom attributes from db response | | `addSqlCommenterCommentToQueries` | `boolean` | If true, adds [sqlcommenter](https://github.com/open-telemetry/opentelemetry-sqlcommenter) specification compliant comment to queries with tracing context (default false). _NOTE: A comment will not be added to queries that already contain `--` or `/* ... */` in them, even if these are not actually part of comments_ | +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | +| ----------------------- | ------------------------------------------------------------------------------ | +| `db.connection_string` | The connection string used to connect to the database. | +| `db.name` | This attribute is used to report the name of the database being accessed. | +| `db.statement` | The database statement being executed. | +| `db.system` | An identifier for the database management system (DBMS) product being used. | +| `db.user` | Username for accessing the database. | +| `net.peer.name` | Remote hostname or similar. | +| `net.peer.port` | Remote port number. | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/package.json b/plugins/node/opentelemetry-instrumentation-mysql2/package.json index b20fb7aaf6..5d7d885d02 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql2/package.json @@ -62,7 +62,7 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@opentelemetry/sql-common": "^0.40.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-mysql2#readme" diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts index ea792f8025..2d79311bcb 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts @@ -22,8 +22,9 @@ import { safeExecuteInTheMiddle, } from '@opentelemetry/instrumentation'; import { - DbSystemValues, - SemanticAttributes, + DBSYSTEMVALUES_MYSQL, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, } from '@opentelemetry/semantic-conventions'; import { addSqlCommenterComment } from '@opentelemetry/sql-common'; import type * as mysqlTypes from 'mysql2'; @@ -40,7 +41,7 @@ type formatType = typeof mysqlTypes.format; export class MySQL2Instrumentation extends InstrumentationBase { static readonly COMMON_ATTRIBUTES = { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.MYSQL, + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_MYSQL, }; constructor(config?: MySQL2InstrumentationConfig) { @@ -115,11 +116,7 @@ export class MySQL2Instrumentation extends InstrumentationBase { attributes: { ...MySQL2Instrumentation.COMMON_ATTRIBUTES, ...getConnectionAttributes(this.config), - [SemanticAttributes.DB_STATEMENT]: getDbStatement( - query, - format, - values - ), + [SEMATTRS_DB_STATEMENT]: getDbStatement(query, format, values), }, }); diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/src/utils.ts b/plugins/node/opentelemetry-instrumentation-mysql2/src/utils.ts index 82333c109f..cfd9f2ef0f 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/src/utils.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql2/src/utils.ts @@ -14,8 +14,14 @@ * limitations under the License. */ -import { SpanAttributes } from '@opentelemetry/api'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { Attributes } from '@opentelemetry/api'; +import { + SEMATTRS_DB_CONNECTION_STRING, + SEMATTRS_DB_NAME, + SEMATTRS_DB_USER, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, +} from '@opentelemetry/semantic-conventions'; /* Following types declare an expectation on mysql2 types and define a subset we @@ -42,35 +48,27 @@ interface Config { connectionConfig?: Config; } /** - * Get an SpanAttributes map from a mysql connection config object + * Get an Attributes map from a mysql connection config object * * @param config ConnectionConfig */ -export function getConnectionAttributes(config: Config): SpanAttributes { +export function getConnectionAttributes(config: Config): Attributes { const { host, port, database, user } = getConfig(config); const portNumber = parseInt(port, 10); if (!isNaN(portNumber)) { return { - [SemanticAttributes.NET_PEER_NAME]: host, - [SemanticAttributes.NET_PEER_PORT]: portNumber, - [SemanticAttributes.DB_CONNECTION_STRING]: getJDBCString( - host, - port, - database - ), - [SemanticAttributes.DB_NAME]: database, - [SemanticAttributes.DB_USER]: user, + [SEMATTRS_NET_PEER_NAME]: host, + [SEMATTRS_NET_PEER_PORT]: portNumber, + [SEMATTRS_DB_CONNECTION_STRING]: getJDBCString(host, port, database), + [SEMATTRS_DB_NAME]: database, + [SEMATTRS_DB_USER]: user, }; } return { - [SemanticAttributes.NET_PEER_NAME]: host, - [SemanticAttributes.DB_CONNECTION_STRING]: getJDBCString( - host, - port, - database - ), - [SemanticAttributes.DB_NAME]: database, - [SemanticAttributes.DB_USER]: user, + [SEMATTRS_NET_PEER_NAME]: host, + [SEMATTRS_DB_CONNECTION_STRING]: getJDBCString(host, port, database), + [SEMATTRS_DB_NAME]: database, + [SEMATTRS_DB_USER]: user, }; } diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts b/plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts index 4c7a4bab23..7b2bfe74ee 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts @@ -18,8 +18,13 @@ import * as semver from 'semver'; import { context, trace, SpanStatusCode } from '@opentelemetry/api'; import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks'; import { - DbSystemValues, - SemanticAttributes, + DBSYSTEMVALUES_MYSQL, + SEMATTRS_DB_NAME, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, + SEMATTRS_DB_USER, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, } from '@opentelemetry/semantic-conventions'; import * as testUtils from '@opentelemetry/contrib-test-utils'; import { @@ -177,10 +182,7 @@ describe('mysql2@2.x', () => { query.on('end', () => { const spans = memoryExporter.getFinishedSpans(); assert.strictEqual(spans[0].name, 'SELECT'); - assert.strictEqual( - spans[0].attributes[SemanticAttributes.DB_STATEMENT], - sql - ); + assert.strictEqual(spans[0].attributes[SEMATTRS_DB_STATEMENT], sql); done(); }); }); @@ -198,7 +200,7 @@ describe('mysql2@2.x', () => { const spans = memoryExporter.getFinishedSpans(); assert.strictEqual(spans[0].name, 'SELECT'); assert.strictEqual( - spans[0].attributes[SemanticAttributes.DB_STATEMENT], + spans[0].attributes[SEMATTRS_DB_STATEMENT], query.sql ); done(); @@ -1215,16 +1217,13 @@ function assertSpan( values?: any, errorMessage?: string ) { + assert.strictEqual(span.attributes[SEMATTRS_DB_SYSTEM], DBSYSTEMVALUES_MYSQL); + assert.strictEqual(span.attributes[SEMATTRS_DB_NAME], database); + assert.strictEqual(span.attributes[SEMATTRS_NET_PEER_PORT], port); + assert.strictEqual(span.attributes[SEMATTRS_NET_PEER_NAME], host); + assert.strictEqual(span.attributes[SEMATTRS_DB_USER], user); assert.strictEqual( - span.attributes[SemanticAttributes.DB_SYSTEM], - DbSystemValues.MYSQL - ); - assert.strictEqual(span.attributes[SemanticAttributes.DB_NAME], database); - assert.strictEqual(span.attributes[SemanticAttributes.NET_PEER_PORT], port); - assert.strictEqual(span.attributes[SemanticAttributes.NET_PEER_NAME], host); - assert.strictEqual(span.attributes[SemanticAttributes.DB_USER], user); - assert.strictEqual( - span.attributes[SemanticAttributes.DB_STATEMENT], + span.attributes[SEMATTRS_DB_STATEMENT], mysqlTypes.format(sql, values) ); if (errorMessage) { From a2884102f9604da9e39d3bf2547e3e5da9c15511 Mon Sep 17 00:00:00 2001 From: David Luna Date: Fri, 19 Apr 2024 23:50:07 +0200 Subject: [PATCH 049/121] refactor(instr-mysql): update semantic conventions (#2112) Refs: #2025 --- package-lock.json | 4 +- .../README.md | 17 ++++++++ .../package.json | 2 +- .../src/instrumentation.ts | 12 +++--- .../src/utils.ts | 40 +++++++++---------- .../test/index.test.ts | 24 ++++++----- 6 files changed, 57 insertions(+), 42 deletions(-) diff --git a/package-lock.json b/package-lock.json index eaf2bb882c..1bfd2fcf51 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38198,7 +38198,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mysql": "2.15.22" }, "devDependencies": { @@ -46599,7 +46599,7 @@ "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/sdk-metrics": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "7.0.2", "@types/mysql": "2.15.22", "@types/node": "18.6.5", diff --git a/plugins/node/opentelemetry-instrumentation-mysql/README.md b/plugins/node/opentelemetry-instrumentation-mysql/README.md index 6b86badf8e..e632521fb6 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/README.md +++ b/plugins/node/opentelemetry-instrumentation-mysql/README.md @@ -49,6 +49,23 @@ See [examples/mysql](https://github.com/open-telemetry/opentelemetry-js-contrib/ | [`enhancedDatabaseReporting`](./src/types.ts#L24) | `boolean` | `false` | If true, an attribute containing the query's parameters will be attached the spans generated to represent the query | | +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | +| ----------------------- | ------------------------------------------------------------------------------ | +| `db.connection_string` | The connection string used to connect to the database. | +| `db.name` | This attribute is used to report the name of the database being accessed. | +| `db.operation` | The name of the operation being executed. | +| `db.statement` | The database statement being executed. | +| `db.system` | An identifier for the database management system (DBMS) product being used. | +| `db.user` | Username for accessing the database. | +| `net.peer.name` | Remote hostname or similar. | +| `net.peer.port` | Remote port number. | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/opentelemetry-instrumentation-mysql/package.json b/plugins/node/opentelemetry-instrumentation-mysql/package.json index fccb9fe6ae..13d2c6d3af 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql/package.json @@ -60,7 +60,7 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mysql": "2.15.22" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-mysql#readme" diff --git a/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts index 8ef20b9e2b..9ff48fd684 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts @@ -29,8 +29,9 @@ import { isWrapped, } from '@opentelemetry/instrumentation'; import { - DbSystemValues, - SemanticAttributes, + DBSYSTEMVALUES_MYSQL, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, } from '@opentelemetry/semantic-conventions'; import type * as mysqlTypes from 'mysql'; import { AttributeNames } from './AttributeNames'; @@ -54,7 +55,7 @@ export class MySQLInstrumentation extends InstrumentationBase< typeof mysqlTypes > { static readonly COMMON_ATTRIBUTES = { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.MYSQL, + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_MYSQL, }; private _connectionsUsage!: UpDownCounter; @@ -331,10 +332,7 @@ export class MySQLInstrumentation extends InstrumentationBase< }, }); - span.setAttribute( - SemanticAttributes.DB_STATEMENT, - getDbStatement(query) - ); + span.setAttribute(SEMATTRS_DB_STATEMENT, getDbStatement(query)); const instrumentationConfig: MySQLInstrumentationConfig = thisPlugin.getConfig(); diff --git a/plugins/node/opentelemetry-instrumentation-mysql/src/utils.ts b/plugins/node/opentelemetry-instrumentation-mysql/src/utils.ts index 05eb1d809f..8230052d0e 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/src/utils.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql/src/utils.ts @@ -14,8 +14,14 @@ * limitations under the License. */ -import { SpanAttributes } from '@opentelemetry/api'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { Attributes } from '@opentelemetry/api'; +import { + SEMATTRS_DB_CONNECTION_STRING, + SEMATTRS_DB_NAME, + SEMATTRS_DB_USER, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, +} from '@opentelemetry/semantic-conventions'; import type { ConnectionConfig, PoolActualConfig, @@ -25,37 +31,29 @@ import type { import type * as mysqlTypes from 'mysql'; /** - * Get an SpanAttributes map from a mysql connection config object + * Get an Attributes map from a mysql connection config object * * @param config ConnectionConfig */ export function getConnectionAttributes( config: ConnectionConfig | PoolActualConfig -): SpanAttributes { +): Attributes { const { host, port, database, user } = getConfig(config); const portNumber = parseInt(port, 10); if (!isNaN(portNumber)) { return { - [SemanticAttributes.NET_PEER_NAME]: host, - [SemanticAttributes.NET_PEER_PORT]: portNumber, - [SemanticAttributes.DB_CONNECTION_STRING]: getJDBCString( - host, - port, - database - ), - [SemanticAttributes.DB_NAME]: database, - [SemanticAttributes.DB_USER]: user, + [SEMATTRS_NET_PEER_NAME]: host, + [SEMATTRS_NET_PEER_PORT]: portNumber, + [SEMATTRS_DB_CONNECTION_STRING]: getJDBCString(host, port, database), + [SEMATTRS_DB_NAME]: database, + [SEMATTRS_DB_USER]: user, }; } return { - [SemanticAttributes.NET_PEER_NAME]: host, - [SemanticAttributes.DB_CONNECTION_STRING]: getJDBCString( - host, - port, - database - ), - [SemanticAttributes.DB_NAME]: database, - [SemanticAttributes.DB_USER]: user, + [SEMATTRS_NET_PEER_NAME]: host, + [SEMATTRS_DB_CONNECTION_STRING]: getJDBCString(host, port, database), + [SEMATTRS_DB_NAME]: database, + [SEMATTRS_DB_USER]: user, }; } diff --git a/plugins/node/opentelemetry-instrumentation-mysql/test/index.test.ts b/plugins/node/opentelemetry-instrumentation-mysql/test/index.test.ts index eaef649b3c..676081d47e 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/test/index.test.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql/test/index.test.ts @@ -17,8 +17,13 @@ import { context, Context, trace, SpanStatusCode } from '@opentelemetry/api'; import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks'; import { - DbSystemValues, - SemanticAttributes, + DBSYSTEMVALUES_MYSQL, + SEMATTRS_DB_NAME, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, + SEMATTRS_DB_USER, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, } from '@opentelemetry/semantic-conventions'; import * as testUtils from '@opentelemetry/contrib-test-utils'; import { @@ -868,15 +873,12 @@ function assertSpan( values?: any, errorMessage?: string ) { - assert.strictEqual( - span.attributes[SemanticAttributes.DB_SYSTEM], - DbSystemValues.MYSQL - ); - assert.strictEqual(span.attributes[SemanticAttributes.DB_NAME], database); - assert.strictEqual(span.attributes[SemanticAttributes.NET_PEER_PORT], port); - assert.strictEqual(span.attributes[SemanticAttributes.NET_PEER_NAME], host); - assert.strictEqual(span.attributes[SemanticAttributes.DB_USER], user); - assert.strictEqual(span.attributes[SemanticAttributes.DB_STATEMENT], sql); + assert.strictEqual(span.attributes[SEMATTRS_DB_SYSTEM], DBSYSTEMVALUES_MYSQL); + assert.strictEqual(span.attributes[SEMATTRS_DB_NAME], database); + assert.strictEqual(span.attributes[SEMATTRS_NET_PEER_PORT], port); + assert.strictEqual(span.attributes[SEMATTRS_NET_PEER_NAME], host); + assert.strictEqual(span.attributes[SEMATTRS_DB_USER], user); + assert.strictEqual(span.attributes[SEMATTRS_DB_STATEMENT], sql); if (errorMessage) { assert.strictEqual(span.status.message, errorMessage); assert.strictEqual(span.status.code, SpanStatusCode.ERROR); From 6c934c321cf2278cc48c889fb5d73a197db520e0 Mon Sep 17 00:00:00 2001 From: Jamie Danielson Date: Mon, 22 Apr 2024 02:41:49 -0400 Subject: [PATCH 050/121] ci: only publish after release is created (#2133) --- .github/workflows/release-please.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 1c58cefc06..6bf4f04da7 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -54,11 +54,15 @@ jobs: # get main again - name: Checkout Repository + # only checkout if a release has been created + if: ${{ steps.release.outputs.release_created }} uses: actions/checkout@v4 with: fetch-depth: 0 - name: Rebuild Packages + # only rebuild if a release has been created + if: ${{ steps.release.outputs.release_created }} run: | npm ci npm run compile @@ -67,6 +71,8 @@ jobs: # need to publish all unpublished versions to npm here # See: https://github.com/lerna/lerna/tree/main/commands/publish#bump-from-package - name: Publish to npm + # only publish if a release has been created + if: ${{ steps.release.outputs.release_created }} env: NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} run: npx lerna publish from-package --no-push --no-private --no-git-tag-version --no-verify-access --yes From a5bee9fe15f67f0e08bb6354e9bfd7876f3ff0ca Mon Sep 17 00:00:00 2001 From: David Luna Date: Tue, 23 Apr 2024 21:07:21 +0200 Subject: [PATCH 051/121] chore(instr-amqpllib): use semconv strings in test files (#2113) --- .../test/amqplib-callbacks.test.ts | 196 +++++++------ .../test/amqplib-connection.test.ts | 83 +++--- .../test/amqplib-promise.test.ts | 260 +++++++++--------- .../test/utils.test.ts | 104 +++---- 4 files changed, 319 insertions(+), 324 deletions(-) diff --git a/plugins/node/instrumentation-amqplib/test/amqplib-callbacks.test.ts b/plugins/node/instrumentation-amqplib/test/amqplib-callbacks.test.ts index 9f2ab1d81e..533b5d9942 100644 --- a/plugins/node/instrumentation-amqplib/test/amqplib-callbacks.test.ts +++ b/plugins/node/instrumentation-amqplib/test/amqplib-callbacks.test.ts @@ -25,8 +25,16 @@ registerInstrumentationTesting(new AmqplibInstrumentation()); import * as amqpCallback from 'amqplib/callback_api'; import { - MessagingDestinationKindValues, - SemanticAttributes, + MESSAGINGDESTINATIONKINDVALUES_TOPIC, + SEMATTRS_MESSAGING_DESTINATION, + SEMATTRS_MESSAGING_DESTINATION_KIND, + SEMATTRS_MESSAGING_PROTOCOL, + SEMATTRS_MESSAGING_PROTOCOL_VERSION, + SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY, + SEMATTRS_MESSAGING_SYSTEM, + SEMATTRS_MESSAGING_URL, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, } from '@opentelemetry/semantic-conventions'; import { Baggage, context, propagation, SpanKind } from '@opentelemetry/api'; import { asyncConfirmSend, asyncConsume, shouldTest } from './utils'; @@ -127,67 +135,63 @@ describe('amqplib instrumentation callback model', () => { // assert publish span expect(publishSpan.kind).toEqual(SpanKind.PRODUCER); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + '' + ); // according to spec: "This will be an empty string if the default exchange is used" expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual(''); // according to spec: "This will be an empty string if the default exchange is used" - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.TOPIC); + publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] + ).toEqual(MESSAGINGDESTINATIONKINDVALUES_TOPIC); expect( - publishSpan.attributes[ - SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY - ] + publishSpan.attributes[SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY] ).toEqual(queueName); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL_VERSION] + publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_URL] - ).toEqual(censoredUrl); - expect( - publishSpan.attributes[SemanticAttributes.NET_PEER_NAME] - ).toEqual(TEST_RABBITMQ_HOST); - expect( - publishSpan.attributes[SemanticAttributes.NET_PEER_PORT] - ).toEqual(TEST_RABBITMQ_PORT); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_URL]).toEqual( + censoredUrl + ); + expect(publishSpan.attributes[SEMATTRS_NET_PEER_NAME]).toEqual( + TEST_RABBITMQ_HOST + ); + expect(publishSpan.attributes[SEMATTRS_NET_PEER_PORT]).toEqual( + TEST_RABBITMQ_PORT + ); // assert consume span expect(consumeSpan.kind).toEqual(SpanKind.CONSUMER); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + '' + ); // according to spec: "This will be an empty string if the default exchange is used" expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual(''); // according to spec: "This will be an empty string if the default exchange is used" - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.TOPIC); + consumeSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] + ).toEqual(MESSAGINGDESTINATIONKINDVALUES_TOPIC); expect( - consumeSpan.attributes[ - SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY - ] + consumeSpan.attributes[SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY] ).toEqual(queueName); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL_VERSION] + consumeSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_URL] - ).toEqual(censoredUrl); - expect( - consumeSpan.attributes[SemanticAttributes.NET_PEER_NAME] - ).toEqual(TEST_RABBITMQ_HOST); - expect( - consumeSpan.attributes[SemanticAttributes.NET_PEER_PORT] - ).toEqual(TEST_RABBITMQ_PORT); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_URL]).toEqual( + censoredUrl + ); + expect(consumeSpan.attributes[SEMATTRS_NET_PEER_NAME]).toEqual( + TEST_RABBITMQ_HOST + ); + expect(consumeSpan.attributes[SEMATTRS_NET_PEER_PORT]).toEqual( + TEST_RABBITMQ_PORT + ); // assert context propagation expect(consumeSpan.spanContext().traceId).toEqual( @@ -301,75 +305,63 @@ describe('amqplib instrumentation callback model', () => { // assert publish span expect(publishSpan.kind).toEqual(SpanKind.PRODUCER); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] + publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION] ).toEqual(''); // according to spec: "This will be an empty string if the default exchange is used" expect( - publishSpan.attributes[ - SemanticAttributes.MESSAGING_DESTINATION_KIND - ] - ).toEqual(MessagingDestinationKindValues.TOPIC); + publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] + ).toEqual(MESSAGINGDESTINATIONKINDVALUES_TOPIC); expect( - publishSpan.attributes[ - SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY - ] + publishSpan.attributes[SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY] ).toEqual(queueName); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - publishSpan.attributes[ - SemanticAttributes.MESSAGING_PROTOCOL_VERSION - ] + publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_URL] - ).toEqual(censoredUrl); - expect( - publishSpan.attributes[SemanticAttributes.NET_PEER_NAME] - ).toEqual(TEST_RABBITMQ_HOST); - expect( - publishSpan.attributes[SemanticAttributes.NET_PEER_PORT] - ).toEqual(TEST_RABBITMQ_PORT); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_URL]).toEqual( + censoredUrl + ); + expect(publishSpan.attributes[SEMATTRS_NET_PEER_NAME]).toEqual( + TEST_RABBITMQ_HOST + ); + expect(publishSpan.attributes[SEMATTRS_NET_PEER_PORT]).toEqual( + TEST_RABBITMQ_PORT + ); // assert consume span expect(consumeSpan.kind).toEqual(SpanKind.CONSUMER); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] + consumeSpan.attributes[SEMATTRS_MESSAGING_DESTINATION] ).toEqual(''); // according to spec: "This will be an empty string if the default exchange is used" expect( - consumeSpan.attributes[ - SemanticAttributes.MESSAGING_DESTINATION_KIND - ] - ).toEqual(MessagingDestinationKindValues.TOPIC); + consumeSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] + ).toEqual(MESSAGINGDESTINATIONKINDVALUES_TOPIC); expect( - consumeSpan.attributes[ - SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY - ] + consumeSpan.attributes[SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY] ).toEqual(queueName); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - consumeSpan.attributes[ - SemanticAttributes.MESSAGING_PROTOCOL_VERSION - ] + consumeSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_URL] - ).toEqual(censoredUrl); - expect( - consumeSpan.attributes[SemanticAttributes.NET_PEER_NAME] - ).toEqual(TEST_RABBITMQ_HOST); - expect( - consumeSpan.attributes[SemanticAttributes.NET_PEER_PORT] - ).toEqual(TEST_RABBITMQ_PORT); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_URL]).toEqual( + censoredUrl + ); + expect(consumeSpan.attributes[SEMATTRS_NET_PEER_NAME]).toEqual( + TEST_RABBITMQ_HOST + ); + expect(consumeSpan.attributes[SEMATTRS_NET_PEER_PORT]).toEqual( + TEST_RABBITMQ_PORT + ); // assert context propagation expect(consumeSpan.spanContext().traceId).toEqual( diff --git a/plugins/node/instrumentation-amqplib/test/amqplib-connection.test.ts b/plugins/node/instrumentation-amqplib/test/amqplib-connection.test.ts index 7ac3e686e5..a9f6c5526d 100644 --- a/plugins/node/instrumentation-amqplib/test/amqplib-connection.test.ts +++ b/plugins/node/instrumentation-amqplib/test/amqplib-connection.test.ts @@ -32,7 +32,14 @@ import { registerInstrumentationTesting(new AmqplibInstrumentation()); import * as amqp from 'amqplib'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_MESSAGING_PROTOCOL, + SEMATTRS_MESSAGING_PROTOCOL_VERSION, + SEMATTRS_MESSAGING_SYSTEM, + SEMATTRS_MESSAGING_URL, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, +} from '@opentelemetry/semantic-conventions'; describe('amqplib instrumentation connection', () => { before(function () { @@ -60,24 +67,22 @@ describe('amqplib instrumentation connection', () => { ); const [publishSpan] = getTestSpans(); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL_VERSION] + publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_URL] - ).toBeUndefined(); // no url string if value supplied as object - expect( - publishSpan.attributes[SemanticAttributes.NET_PEER_NAME] - ).toEqual(TEST_RABBITMQ_HOST); - expect( - publishSpan.attributes[SemanticAttributes.NET_PEER_PORT] - ).toEqual(TEST_RABBITMQ_PORT); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_URL]).toBeUndefined(); // no url string if value supplied as object + expect(publishSpan.attributes[SEMATTRS_NET_PEER_NAME]).toEqual( + TEST_RABBITMQ_HOST + ); + expect(publishSpan.attributes[SEMATTRS_NET_PEER_PORT]).toEqual( + TEST_RABBITMQ_PORT + ); } finally { await conn.close(); } @@ -99,9 +104,9 @@ describe('amqplib instrumentation connection', () => { Buffer.from('message created only to test connection attributes') ); const [publishSpan] = getTestSpans(); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); } finally { await conn.close(); } @@ -127,9 +132,9 @@ describe('amqplib instrumentation connection', () => { Buffer.from('message created only to test connection attributes') ); const [publishSpan] = getTestSpans(); - expect( - publishSpan.attributes[SemanticAttributes.NET_PEER_NAME] - ).toEqual(TEST_RABBITMQ_HOST); + expect(publishSpan.attributes[SEMATTRS_NET_PEER_NAME]).toEqual( + TEST_RABBITMQ_HOST + ); } finally { await conn.close(); } @@ -149,24 +154,24 @@ describe('amqplib instrumentation connection', () => { ); const [publishSpan] = getTestSpans(); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL_VERSION] + publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_URL] - ).toEqual(censoredUrl); - expect( - publishSpan.attributes[SemanticAttributes.NET_PEER_NAME] - ).toEqual(TEST_RABBITMQ_HOST); - expect( - publishSpan.attributes[SemanticAttributes.NET_PEER_PORT] - ).toEqual(TEST_RABBITMQ_PORT); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_URL]).toEqual( + censoredUrl + ); + expect(publishSpan.attributes[SEMATTRS_NET_PEER_NAME]).toEqual( + TEST_RABBITMQ_HOST + ); + expect(publishSpan.attributes[SEMATTRS_NET_PEER_PORT]).toEqual( + TEST_RABBITMQ_PORT + ); } finally { await conn.close(); } diff --git a/plugins/node/instrumentation-amqplib/test/amqplib-promise.test.ts b/plugins/node/instrumentation-amqplib/test/amqplib-promise.test.ts index e130f5e942..2205d76a5a 100644 --- a/plugins/node/instrumentation-amqplib/test/amqplib-promise.test.ts +++ b/plugins/node/instrumentation-amqplib/test/amqplib-promise.test.ts @@ -36,8 +36,16 @@ const instrumentation = registerInstrumentationTesting( import * as amqp from 'amqplib'; import { ConsumeMessage } from 'amqplib'; import { - MessagingDestinationKindValues, - SemanticAttributes, + MESSAGINGDESTINATIONKINDVALUES_TOPIC, + SEMATTRS_MESSAGING_DESTINATION, + SEMATTRS_MESSAGING_DESTINATION_KIND, + SEMATTRS_MESSAGING_PROTOCOL, + SEMATTRS_MESSAGING_PROTOCOL_VERSION, + SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY, + SEMATTRS_MESSAGING_SYSTEM, + SEMATTRS_MESSAGING_URL, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, } from '@opentelemetry/semantic-conventions'; import { Span, SpanKind, SpanStatusCode } from '@opentelemetry/api'; import { asyncConfirmPublish, asyncConfirmSend, asyncConsume } from './utils'; @@ -146,65 +154,61 @@ describe('amqplib instrumentation promise model', () => { // assert publish span expect(publishSpan.kind).toEqual(SpanKind.PRODUCER); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + '' + ); // according to spec: "This will be an empty string if the default exchange is used" expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual(''); // according to spec: "This will be an empty string if the default exchange is used" - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.TOPIC); + publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] + ).toEqual(MESSAGINGDESTINATIONKINDVALUES_TOPIC); expect( - publishSpan.attributes[ - SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY - ] + publishSpan.attributes[SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY] ).toEqual(queueName); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL_VERSION] + publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); - expect(publishSpan.attributes[SemanticAttributes.MESSAGING_URL]).toEqual( + expect(publishSpan.attributes[SEMATTRS_MESSAGING_URL]).toEqual( censoredUrl ); - expect(publishSpan.attributes[SemanticAttributes.NET_PEER_NAME]).toEqual( + expect(publishSpan.attributes[SEMATTRS_NET_PEER_NAME]).toEqual( TEST_RABBITMQ_HOST ); - expect(publishSpan.attributes[SemanticAttributes.NET_PEER_PORT]).toEqual( + expect(publishSpan.attributes[SEMATTRS_NET_PEER_PORT]).toEqual( TEST_RABBITMQ_PORT ); // assert consume span expect(consumeSpan.kind).toEqual(SpanKind.CONSUMER); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + '' + ); // according to spec: "This will be an empty string if the default exchange is used" expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual(''); // according to spec: "This will be an empty string if the default exchange is used" - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.TOPIC); + consumeSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] + ).toEqual(MESSAGINGDESTINATIONKINDVALUES_TOPIC); expect( - consumeSpan.attributes[ - SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY - ] + consumeSpan.attributes[SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY] ).toEqual(queueName); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL_VERSION] + consumeSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); - expect(consumeSpan.attributes[SemanticAttributes.MESSAGING_URL]).toEqual( + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_URL]).toEqual( censoredUrl ); - expect(consumeSpan.attributes[SemanticAttributes.NET_PEER_NAME]).toEqual( + expect(consumeSpan.attributes[SEMATTRS_NET_PEER_NAME]).toEqual( TEST_RABBITMQ_HOST ); - expect(consumeSpan.attributes[SemanticAttributes.NET_PEER_PORT]).toEqual( + expect(consumeSpan.attributes[SEMATTRS_NET_PEER_PORT]).toEqual( TEST_RABBITMQ_PORT ); @@ -505,48 +509,44 @@ describe('amqplib instrumentation promise model', () => { // assert publish span expect(publishSpan.kind).toEqual(SpanKind.PRODUCER); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + exchangeName + ); expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual(exchangeName); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.TOPIC); + publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] + ).toEqual(MESSAGINGDESTINATIONKINDVALUES_TOPIC); expect( - publishSpan.attributes[ - SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY - ] + publishSpan.attributes[SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY] ).toEqual(routingKey); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL_VERSION] + publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); // assert consume span expect(consumeSpan.kind).toEqual(SpanKind.CONSUMER); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + exchangeName + ); expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual(exchangeName); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.TOPIC); + consumeSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] + ).toEqual(MESSAGINGDESTINATIONKINDVALUES_TOPIC); expect( - consumeSpan.attributes[ - SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY - ] + consumeSpan.attributes[SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY] ).toEqual(routingKey); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL_VERSION] + consumeSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); // assert context propagation @@ -689,65 +689,61 @@ describe('amqplib instrumentation promise model', () => { // assert publish span expect(publishSpan.kind).toEqual(SpanKind.PRODUCER); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + '' + ); // according to spec: "This will be an empty string if the default exchange is used" expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual(''); // according to spec: "This will be an empty string if the default exchange is used" - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.TOPIC); + publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] + ).toEqual(MESSAGINGDESTINATIONKINDVALUES_TOPIC); expect( - publishSpan.attributes[ - SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY - ] + publishSpan.attributes[SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY] ).toEqual(queueName); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL_VERSION] + publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); - expect(publishSpan.attributes[SemanticAttributes.MESSAGING_URL]).toEqual( + expect(publishSpan.attributes[SEMATTRS_MESSAGING_URL]).toEqual( censoredUrl ); - expect(publishSpan.attributes[SemanticAttributes.NET_PEER_NAME]).toEqual( + expect(publishSpan.attributes[SEMATTRS_NET_PEER_NAME]).toEqual( TEST_RABBITMQ_HOST ); - expect(publishSpan.attributes[SemanticAttributes.NET_PEER_PORT]).toEqual( + expect(publishSpan.attributes[SEMATTRS_NET_PEER_PORT]).toEqual( TEST_RABBITMQ_PORT ); // assert consume span expect(consumeSpan.kind).toEqual(SpanKind.CONSUMER); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + '' + ); // according to spec: "This will be an empty string if the default exchange is used" expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual(''); // according to spec: "This will be an empty string if the default exchange is used" - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.TOPIC); + consumeSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] + ).toEqual(MESSAGINGDESTINATIONKINDVALUES_TOPIC); expect( - consumeSpan.attributes[ - SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY - ] + consumeSpan.attributes[SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY] ).toEqual(queueName); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL_VERSION] + consumeSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); - expect(consumeSpan.attributes[SemanticAttributes.MESSAGING_URL]).toEqual( + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_URL]).toEqual( censoredUrl ); - expect(consumeSpan.attributes[SemanticAttributes.NET_PEER_NAME]).toEqual( + expect(consumeSpan.attributes[SEMATTRS_NET_PEER_NAME]).toEqual( TEST_RABBITMQ_HOST ); - expect(consumeSpan.attributes[SemanticAttributes.NET_PEER_PORT]).toEqual( + expect(consumeSpan.attributes[SEMATTRS_NET_PEER_PORT]).toEqual( TEST_RABBITMQ_PORT ); @@ -1100,48 +1096,44 @@ describe('amqplib instrumentation promise model', () => { // assert publish span expect(publishSpan.kind).toEqual(SpanKind.PRODUCER); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + exchangeName + ); expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual(exchangeName); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.TOPIC); + publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] + ).toEqual(MESSAGINGDESTINATIONKINDVALUES_TOPIC); expect( - publishSpan.attributes[ - SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY - ] + publishSpan.attributes[SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY] ).toEqual(routingKey); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL_VERSION] + publishSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); // assert consume span expect(consumeSpan.kind).toEqual(SpanKind.CONSUMER); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'rabbitmq' + ); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + exchangeName + ); expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('rabbitmq'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual(exchangeName); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.TOPIC); + consumeSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] + ).toEqual(MESSAGINGDESTINATIONKINDVALUES_TOPIC); expect( - consumeSpan.attributes[ - SemanticAttributes.MESSAGING_RABBITMQ_ROUTING_KEY - ] + consumeSpan.attributes[SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY] ).toEqual(routingKey); + expect(consumeSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL]).toEqual( + 'AMQP' + ); expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL] - ).toEqual('AMQP'); - expect( - consumeSpan.attributes[SemanticAttributes.MESSAGING_PROTOCOL_VERSION] + consumeSpan.attributes[SEMATTRS_MESSAGING_PROTOCOL_VERSION] ).toEqual('0.9.1'); // assert context propagation diff --git a/plugins/node/instrumentation-amqplib/test/utils.test.ts b/plugins/node/instrumentation-amqplib/test/utils.test.ts index 34e6fb7aa9..6369398969 100644 --- a/plugins/node/instrumentation-amqplib/test/utils.test.ts +++ b/plugins/node/instrumentation-amqplib/test/utils.test.ts @@ -19,7 +19,14 @@ import { getConnectionAttributesFromServer, getConnectionAttributesFromUrl, } from '../src/utils'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_MESSAGING_PROTOCOL, + SEMATTRS_MESSAGING_PROTOCOL_VERSION, + SEMATTRS_MESSAGING_SYSTEM, + SEMATTRS_MESSAGING_URL, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, +} from '@opentelemetry/semantic-conventions'; import * as amqp from 'amqplib'; import { shouldTest } from './utils'; import { rabbitMqUrl } from './config'; @@ -43,7 +50,7 @@ describe('utils', () => { it('messaging system attribute', () => { const attributes = getConnectionAttributesFromServer(conn.connection); expect(attributes).toStrictEqual({ - [SemanticAttributes.MESSAGING_SYSTEM]: 'rabbitmq', + [SEMATTRS_MESSAGING_SYSTEM]: 'rabbitmq', }); }); }); @@ -54,11 +61,11 @@ describe('utils', () => { 'amqp://user:pass@host:10000/vhost' ); expect(attributes).toStrictEqual({ - [SemanticAttributes.MESSAGING_PROTOCOL]: 'AMQP', - [SemanticAttributes.MESSAGING_PROTOCOL_VERSION]: '0.9.1', - [SemanticAttributes.NET_PEER_NAME]: 'host', - [SemanticAttributes.NET_PEER_PORT]: 10000, - [SemanticAttributes.MESSAGING_URL]: 'amqp://user:***@host:10000/vhost', + [SEMATTRS_MESSAGING_PROTOCOL]: 'AMQP', + [SEMATTRS_MESSAGING_PROTOCOL_VERSION]: '0.9.1', + [SEMATTRS_NET_PEER_NAME]: 'host', + [SEMATTRS_NET_PEER_PORT]: 10000, + [SEMATTRS_MESSAGING_URL]: 'amqp://user:***@host:10000/vhost', }); }); @@ -67,102 +74,101 @@ describe('utils', () => { 'amqp://user%61:%61pass@ho%61st:10000/v%2fhost' ); expect(attributes).toStrictEqual({ - [SemanticAttributes.MESSAGING_PROTOCOL]: 'AMQP', - [SemanticAttributes.MESSAGING_PROTOCOL_VERSION]: '0.9.1', - [SemanticAttributes.NET_PEER_NAME]: 'ho%61st', - [SemanticAttributes.NET_PEER_PORT]: 10000, - [SemanticAttributes.MESSAGING_URL]: - 'amqp://user%61:***@ho%61st:10000/v%2fhost', + [SEMATTRS_MESSAGING_PROTOCOL]: 'AMQP', + [SEMATTRS_MESSAGING_PROTOCOL_VERSION]: '0.9.1', + [SEMATTRS_NET_PEER_NAME]: 'ho%61st', + [SEMATTRS_NET_PEER_PORT]: 10000, + [SEMATTRS_MESSAGING_URL]: 'amqp://user%61:***@ho%61st:10000/v%2fhost', }); }); it('only protocol', () => { const attributes = getConnectionAttributesFromUrl('amqp://'); expect(attributes).toStrictEqual({ - [SemanticAttributes.MESSAGING_PROTOCOL]: 'AMQP', - [SemanticAttributes.MESSAGING_PROTOCOL_VERSION]: '0.9.1', - [SemanticAttributes.NET_PEER_NAME]: 'localhost', - [SemanticAttributes.NET_PEER_PORT]: 5672, - [SemanticAttributes.MESSAGING_URL]: 'amqp://', + [SEMATTRS_MESSAGING_PROTOCOL]: 'AMQP', + [SEMATTRS_MESSAGING_PROTOCOL_VERSION]: '0.9.1', + [SEMATTRS_NET_PEER_NAME]: 'localhost', + [SEMATTRS_NET_PEER_PORT]: 5672, + [SEMATTRS_MESSAGING_URL]: 'amqp://', }); }); it('empty username and password', () => { const attributes = getConnectionAttributesFromUrl('amqp://:@/'); expect(attributes).toStrictEqual({ - [SemanticAttributes.MESSAGING_PROTOCOL_VERSION]: '0.9.1', - [SemanticAttributes.MESSAGING_URL]: 'amqp://:***@/', + [SEMATTRS_MESSAGING_PROTOCOL_VERSION]: '0.9.1', + [SEMATTRS_MESSAGING_URL]: 'amqp://:***@/', }); }); it('username and no password', () => { const attributes = getConnectionAttributesFromUrl('amqp://user@'); expect(attributes).toStrictEqual({ - [SemanticAttributes.MESSAGING_PROTOCOL_VERSION]: '0.9.1', - [SemanticAttributes.MESSAGING_URL]: 'amqp://user@', + [SEMATTRS_MESSAGING_PROTOCOL_VERSION]: '0.9.1', + [SEMATTRS_MESSAGING_URL]: 'amqp://user@', }); }); it('username and password, no host', () => { const attributes = getConnectionAttributesFromUrl('amqp://user:pass@'); expect(attributes).toStrictEqual({ - [SemanticAttributes.MESSAGING_PROTOCOL_VERSION]: '0.9.1', - [SemanticAttributes.MESSAGING_URL]: 'amqp://user:***@', + [SEMATTRS_MESSAGING_PROTOCOL_VERSION]: '0.9.1', + [SEMATTRS_MESSAGING_URL]: 'amqp://user:***@', }); }); it('host only', () => { const attributes = getConnectionAttributesFromUrl('amqp://host'); expect(attributes).toStrictEqual({ - [SemanticAttributes.MESSAGING_PROTOCOL]: 'AMQP', - [SemanticAttributes.MESSAGING_PROTOCOL_VERSION]: '0.9.1', - [SemanticAttributes.NET_PEER_NAME]: 'host', - [SemanticAttributes.NET_PEER_PORT]: 5672, - [SemanticAttributes.MESSAGING_URL]: 'amqp://host', + [SEMATTRS_MESSAGING_PROTOCOL]: 'AMQP', + [SEMATTRS_MESSAGING_PROTOCOL_VERSION]: '0.9.1', + [SEMATTRS_NET_PEER_NAME]: 'host', + [SEMATTRS_NET_PEER_PORT]: 5672, + [SEMATTRS_MESSAGING_URL]: 'amqp://host', }); }); it('vhost only', () => { const attributes = getConnectionAttributesFromUrl('amqp:///vhost'); expect(attributes).toStrictEqual({ - [SemanticAttributes.MESSAGING_PROTOCOL]: 'AMQP', - [SemanticAttributes.MESSAGING_PROTOCOL_VERSION]: '0.9.1', - [SemanticAttributes.NET_PEER_NAME]: 'localhost', - [SemanticAttributes.NET_PEER_PORT]: 5672, - [SemanticAttributes.MESSAGING_URL]: 'amqp:///vhost', + [SEMATTRS_MESSAGING_PROTOCOL]: 'AMQP', + [SEMATTRS_MESSAGING_PROTOCOL_VERSION]: '0.9.1', + [SEMATTRS_NET_PEER_NAME]: 'localhost', + [SEMATTRS_NET_PEER_PORT]: 5672, + [SEMATTRS_MESSAGING_URL]: 'amqp:///vhost', }); }); it('host only, trailing slash', () => { const attributes = getConnectionAttributesFromUrl('amqp://host/'); expect(attributes).toStrictEqual({ - [SemanticAttributes.MESSAGING_PROTOCOL]: 'AMQP', - [SemanticAttributes.MESSAGING_PROTOCOL_VERSION]: '0.9.1', - [SemanticAttributes.NET_PEER_NAME]: 'host', - [SemanticAttributes.NET_PEER_PORT]: 5672, - [SemanticAttributes.MESSAGING_URL]: 'amqp://host/', + [SEMATTRS_MESSAGING_PROTOCOL]: 'AMQP', + [SEMATTRS_MESSAGING_PROTOCOL_VERSION]: '0.9.1', + [SEMATTRS_NET_PEER_NAME]: 'host', + [SEMATTRS_NET_PEER_PORT]: 5672, + [SEMATTRS_MESSAGING_URL]: 'amqp://host/', }); }); it('vhost encoded', () => { const attributes = getConnectionAttributesFromUrl('amqp://host/%2f'); expect(attributes).toStrictEqual({ - [SemanticAttributes.MESSAGING_PROTOCOL]: 'AMQP', - [SemanticAttributes.MESSAGING_PROTOCOL_VERSION]: '0.9.1', - [SemanticAttributes.NET_PEER_NAME]: 'host', - [SemanticAttributes.NET_PEER_PORT]: 5672, - [SemanticAttributes.MESSAGING_URL]: 'amqp://host/%2f', + [SEMATTRS_MESSAGING_PROTOCOL]: 'AMQP', + [SEMATTRS_MESSAGING_PROTOCOL_VERSION]: '0.9.1', + [SEMATTRS_NET_PEER_NAME]: 'host', + [SEMATTRS_NET_PEER_PORT]: 5672, + [SEMATTRS_MESSAGING_URL]: 'amqp://host/%2f', }); }); it('IPv6 host', () => { const attributes = getConnectionAttributesFromUrl('amqp://[::1]'); expect(attributes).toStrictEqual({ - [SemanticAttributes.MESSAGING_PROTOCOL]: 'AMQP', - [SemanticAttributes.MESSAGING_PROTOCOL_VERSION]: '0.9.1', - [SemanticAttributes.NET_PEER_NAME]: '[::1]', - [SemanticAttributes.NET_PEER_PORT]: 5672, - [SemanticAttributes.MESSAGING_URL]: 'amqp://[::1]', + [SEMATTRS_MESSAGING_PROTOCOL]: 'AMQP', + [SEMATTRS_MESSAGING_PROTOCOL_VERSION]: '0.9.1', + [SEMATTRS_NET_PEER_NAME]: '[::1]', + [SEMATTRS_NET_PEER_PORT]: 5672, + [SEMATTRS_MESSAGING_URL]: 'amqp://[::1]', }); }); }); From 2d709ecc73a6b3d99967ec7d2bd814e5ef10c4cc Mon Sep 17 00:00:00 2001 From: Jamie Danielson Date: Wed, 24 Apr 2024 11:40:48 -0400 Subject: [PATCH 052/121] chore(instrumentation-fs): remove unused semconv package (#2141) --- package-lock.json | 4 +--- plugins/node/instrumentation-fs/package.json | 3 +-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1bfd2fcf51..d11fd45248 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36969,8 +36969,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/instrumentation": "^0.50.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -46144,7 +46143,6 @@ "@opentelemetry/resources": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "^10.0.11", diff --git a/plugins/node/instrumentation-fs/package.json b/plugins/node/instrumentation-fs/package.json index 2c41acd685..72ad223de5 100644 --- a/plugins/node/instrumentation-fs/package.json +++ b/plugins/node/instrumentation-fs/package.json @@ -59,8 +59,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/instrumentation": "^0.50.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-fs#readme" } From 0d380816aabdbaab54d55e34410c1c10543e2062 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Wed, 24 Apr 2024 12:30:02 -0400 Subject: [PATCH 053/121] docs: remove `key` column on readme (#2132) A key column was added to several READMEs, but it was decided to not have them anymore. So this commit removes the column from the doc that were already added. --- plugins/node/instrumentation-undici/README.md | 30 +++++++++---------- .../README.md | 6 ++-- .../README.md | 6 ++-- .../README.md | 14 ++++----- .../README.md | 8 ++--- 5 files changed, 32 insertions(+), 32 deletions(-) diff --git a/plugins/node/instrumentation-undici/README.md b/plugins/node/instrumentation-undici/README.md index 08a7128404..f26fee2352 100644 --- a/plugins/node/instrumentation-undici/README.md +++ b/plugins/node/instrumentation-undici/README.md @@ -71,21 +71,21 @@ Ref: [opentelemetry-js/issues/4235](https://github.com/open-telemetry/openteleme Attributes collected: -| Attribute | Short Description | Notes | -| ------------ | ---------------------------------- | ----------------- | -| `http.request.method` | HTTP request method. | Key: `HTTP_REQUEST_METHOD` | -| `http.request.method_original` | Original HTTP method sent by the client in the request line. | Key: `HTTP_REQUEST_METHOD_ORIGINAL` | -| `url.full` | Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986). | Key: `URL_FULL` | -| `url.path` | The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component. | Key: `URL_PATH` | -| `url.query` | The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component. | Key: `URL_QUERY` | -| `url.scheme` | HTTP request method. | Key: `URL_SCHEME` | -| `server.address` | Server domain name, IP address or Unix domain socket name. | Key: `HTTP_REQUEST_METHOD` | -| `server.port` | Server port number. | Key: `HTTP_REQUEST_METHOD` | -| `user_agent.original` | Value of the HTTP User-Agent header sent by the client. | Key: `USER_AGENT_ORIGINAL` | -| `network.peer.address` | Peer address of the network connection - IP address or Unix domain socket name. | Key: `NETWORK_PEER_ADDRESS` | -| `network.peer.port` | Peer port number of the network connection. | Key: `NETWORK_PEER_PORT` | -| `http.response.status_code` | [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). | Key: `HTTP_RESPONSE_STATUS_CODE` | -| `error.type` | Describes a class of error the operation ended with. | Key: `ERROR_TYPE` | +| Attribute | Short Description | +| ------------------------------ | ---------------------------------------------------------------------------------------------------------- | +| `error.type` | Describes a class of error the operation ended with. | +| `http.request.method` | HTTP request method. | +| `http.request.method_original` | Original HTTP method sent by the client in the request line. | +| `http.response.status_code` | [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6). | +| `network.peer.address` | Peer address of the network connection - IP address or Unix domain socket name. | +| `network.peer.port` | Peer port number of the network connection. | +| `server.address` | Server domain name, IP address or Unix domain socket name. | +| `server.port` | Server port number. | +| `url.full` | Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986). | +| `url.path` | The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component. | +| `url.query` | The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component. | +| `url.scheme` | HTTP request method. | +| `user_agent.original` | Value of the HTTP User-Agent header sent by the client. | ## Useful links diff --git a/plugins/node/opentelemetry-instrumentation-express/README.md b/plugins/node/opentelemetry-instrumentation-express/README.md index 9818cc5e2d..f6758e09db 100644 --- a/plugins/node/opentelemetry-instrumentation-express/README.md +++ b/plugins/node/opentelemetry-instrumentation-express/README.md @@ -148,9 +148,9 @@ This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which i Attributes collected: -| Attribute | Short Description | Notes | -| ------------ | ---------------------------------- | -------------------------- | -| `http.route` | The matched route (path template). | Key: `SEMATTRS_HTTP_ROUTE` | +| Attribute | Short Description | +| ------------ | ---------------------------------- | +| `http.route` | The matched route (path template). | ## Useful links diff --git a/plugins/node/opentelemetry-instrumentation-fastify/README.md b/plugins/node/opentelemetry-instrumentation-fastify/README.md index 9f230b7b5b..ffaf255868 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/README.md +++ b/plugins/node/opentelemetry-instrumentation-fastify/README.md @@ -74,9 +74,9 @@ This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which i Attributes collected: -| Attribute | Short Description | Notes | -| ------------ | ---------------------------------- | -------------------------- | -| `http.route` | The matched route (path template). | Key: `SEMATTRS_HTTP_ROUTE` | +| Attribute | Short Description | +| ------------ | ---------------------------------- | +| `http.route` | The matched route (path template). | ## Useful links diff --git a/plugins/node/opentelemetry-instrumentation-redis/README.md b/plugins/node/opentelemetry-instrumentation-redis/README.md index e93e4c7873..f345f9ac02 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/README.md +++ b/plugins/node/opentelemetry-instrumentation-redis/README.md @@ -80,13 +80,13 @@ This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which i Attributes collected: -| Attribute | Short Description | Notes | -|------------------------|--------------------------------------------------------------|--------------------------------------| -| `db.connection_string` | URL to Redis server address, of the form `redis://host:port` | Key: `SEMATTRS_DB_CONNECTION_STRING` | -| `db.statement` | Executed Redis statement | Key: `SEMATTRS_DB_STATEMENT` | -| `db.system` | Database identifier; always `redis` | Key: `SEMATTRS_DB_SYSTEM` | -| `net.peer.name` | Hostname or IP of the connected Redis server | Key: `SEMATTRS_NET_PEER_NAME` | -| `net.peer.port` | Port of the connected Redis server | Key: `SEMATTRS_NET_PORT_NAME` | +| Attribute | Short Description | +|------------------------|--------------------------------------------------------------| +| `db.connection_string` | URL to Redis server address, of the form `redis://host:port` | +| `db.statement` | Executed Redis statement | +| `db.system` | Database identifier; always `redis` | +| `net.peer.name` | Hostname or IP of the connected Redis server | +| `net.peer.port` | Port of the connected Redis server | ## Useful links diff --git a/plugins/web/opentelemetry-instrumentation-document-load/README.md b/plugins/web/opentelemetry-instrumentation-document-load/README.md index 4ec62269ae..3d87e40398 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/README.md +++ b/plugins/web/opentelemetry-instrumentation-document-load/README.md @@ -117,10 +117,10 @@ This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which i Attributes collected: -| Attribute | Short Description | Notes | -| ----------------- | ------------------------------------------------------------------------------ | ------------------------------- | -| `http.url` | Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]` | Key: `SEMATTRS_HTTP_URL` | -| `http.user_agent` | Value of the HTTP User-Agent header sent by the client | Key: `SEMATTRS_HTTP_USER_AGENT` | +| Attribute | Short Description | +| ----------------- | ------------------------------------------------------------------------------ | +| `http.url` | Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]` | +| `http.user_agent` | Value of the HTTP User-Agent header sent by the client | ## Useful links From 5f1910b75b45b5d751162fb20841d9ae5f0b59f3 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Wed, 24 Apr 2024 13:14:05 -0400 Subject: [PATCH 054/121] chore(examples/web): use exported strings for attributes (#2129) Use exported strings for Semantic Attributes Refs: #2025 --- examples/web/examples/document-load/index.js | 4 ++-- examples/web/examples/meta/index.js | 4 ++-- examples/web/examples/user-interaction/index.js | 4 ++-- examples/web/package.json | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/web/examples/document-load/index.js b/examples/web/examples/document-load/index.js index 0cb6755088..65db02bba3 100644 --- a/examples/web/examples/document-load/index.js +++ b/examples/web/examples/document-load/index.js @@ -9,11 +9,11 @@ import { B3Propagator } from '@opentelemetry/propagator-b3'; import { CompositePropagator, W3CTraceContextPropagator } from '@opentelemetry/core'; import { registerInstrumentations } from '@opentelemetry/instrumentation'; import { Resource } from '@opentelemetry/resources'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; const provider = new WebTracerProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: 'web-service-dl', + [SEMRESATTRS_SERVICE_NAME]: 'web-service-dl', }), }); diff --git a/examples/web/examples/meta/index.js b/examples/web/examples/meta/index.js index 621779d0dc..8b9cb5ad41 100644 --- a/examples/web/examples/meta/index.js +++ b/examples/web/examples/meta/index.js @@ -6,11 +6,11 @@ import { B3Propagator } from '@opentelemetry/propagator-b3'; import { getWebAutoInstrumentations } from '@opentelemetry/auto-instrumentations-web'; import { registerInstrumentations } from '@opentelemetry/instrumentation'; import { Resource } from '@opentelemetry/resources'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; const providerWithZone = new WebTracerProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: 'web-service-meta', + [SEMRESATTRS_SERVICE_NAME]: 'web-service-meta', }), }); diff --git a/examples/web/examples/user-interaction/index.js b/examples/web/examples/user-interaction/index.js index 34606eb0e9..b75cae65d5 100644 --- a/examples/web/examples/user-interaction/index.js +++ b/examples/web/examples/user-interaction/index.js @@ -7,11 +7,11 @@ import { B3Propagator } from '@opentelemetry/propagator-b3'; import { XMLHttpRequestInstrumentation } from '@opentelemetry/instrumentation-xml-http-request'; import { registerInstrumentations } from '@opentelemetry/instrumentation'; import { Resource } from '@opentelemetry/resources'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; const providerWithZone = new WebTracerProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: 'web-service-ui', + [SEMRESATTRS_SERVICE_NAME]: 'web-service-ui', }), }); diff --git a/examples/web/package.json b/examples/web/package.json index 0bc5691c59..b4be8fa692 100644 --- a/examples/web/package.json +++ b/examples/web/package.json @@ -46,7 +46,7 @@ "@opentelemetry/instrumentation-xml-http-request": "^0.39.1", "@opentelemetry/propagator-b3": "^1.13.0", "@opentelemetry/sdk-trace-web": "^1.13.0", - "@opentelemetry/semantic-conventions": "^1.13.0" + "@opentelemetry/semantic-conventions": "^1.23.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib#readme" } From 77452c1640bca9c10dd62ee47a0a603f6c4b05dd Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Wed, 24 Apr 2024 13:20:16 -0400 Subject: [PATCH 055/121] chore(examples/connect): use exported strings for attributes (#2120) Use exported strings for Semantic Resource Attributes Signed-off-by: maryliag Refs: #2025 --- examples/connect/package.json | 2 +- examples/connect/tracing.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/connect/package.json b/examples/connect/package.json index eb58fc2299..4acf0fcf9a 100644 --- a/examples/connect/package.json +++ b/examples/connect/package.json @@ -45,7 +45,7 @@ "@opentelemetry/instrumentation-http": "^0.25.0", "@opentelemetry/sdk-trace-node": "^0.25.0", "@opentelemetry/resources": "^0.25.0", - "@opentelemetry/semantic-conventions": "^0.25.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "@opentelemetry/sdk-trace-base": "^0.25.0", "axios": "^0.21.1", "cross-env": "^7.0.3", diff --git a/examples/connect/tracing.js b/examples/connect/tracing.js index d711b935d1..7639af2925 100644 --- a/examples/connect/tracing.js +++ b/examples/connect/tracing.js @@ -6,7 +6,7 @@ const { diag, DiagConsoleLogger, DiagLogLevel } = opentelemetry; diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.INFO); const { Resource } = require('@opentelemetry/resources'); -const { ResourceAttributes: SemanticResourceAttributes } = require('@opentelemetry/semantic-conventions'); +const { SEMRESATTRS_SERVICE_NAME } = require('@opentelemetry/semantic-conventions'); const { registerInstrumentations } = require('@opentelemetry/instrumentation'); const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); const { SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base'); @@ -24,7 +24,7 @@ function log() { module.exports = (serviceName) => { const provider = new NodeTracerProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: serviceName, + [SEMRESATTRS_SERVICE_NAME]: serviceName, }), }); const connectInstrumentation = new ConnectInstrumentation(); From 931318cac21ee3707f3735a64ac751566ee37182 Mon Sep 17 00:00:00 2001 From: Jamie Danielson Date: Wed, 24 Apr 2024 19:34:00 -0400 Subject: [PATCH 056/121] refactor(instr-aws-sdk): use exported strings for attributes (#2142) * refactor(instr-aws-sdk): use exported strings for attributes * update SpanAttributes to Attributes * add semantic conventions to readme --- package-lock.json | 4 +- .../src/instrumentation.ts | 11 +- .../test/integrations/lambda-handler.test.ts | 18 +- .../README.md | 48 ++++ .../package.json | 2 +- .../src/aws-sdk.ts | 9 +- .../src/services/dynamodb.ts | 116 ++++---- .../src/services/lambda.ts | 27 +- .../src/services/sns.ts | 22 +- .../src/services/sqs.ts | 48 ++-- .../src/utils.ts | 16 +- .../test/aws-sdk-v2.test.ts | 26 +- .../test/aws-sdk-v3.test.ts | 139 ++++----- .../test/dynamodb.test.ts | 266 +++++++++--------- .../test/lambda.test.ts | 20 +- .../test/sns.test.ts | 65 ++--- .../test/sqs.test.ts | 64 +++-- 17 files changed, 460 insertions(+), 441 deletions(-) diff --git a/package-lock.json b/package-lock.json index d11fd45248..b85ccf58fb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37458,7 +37458,7 @@ "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/propagation-utils": "^0.30.8", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@aws-sdk/client-dynamodb": "3.85.0", @@ -45817,7 +45817,7 @@ "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/propagation-utils": "^0.30.8", "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts index 0b85377d1d..35345739c3 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts @@ -44,8 +44,9 @@ import { AWSXRayPropagator, } from '@opentelemetry/propagator-aws-xray'; import { - SemanticAttributes, - SemanticResourceAttributes, + SEMATTRS_FAAS_EXECUTION, + SEMRESATTRS_CLOUD_ACCOUNT_ID, + SEMRESATTRS_FAAS_ID, } from '@opentelemetry/semantic-conventions'; import { @@ -201,9 +202,9 @@ export class AwsLambdaInstrumentation extends InstrumentationBase { { kind: SpanKind.SERVER, attributes: { - [SemanticAttributes.FAAS_EXECUTION]: context.awsRequestId, - [SemanticResourceAttributes.FAAS_ID]: context.invokedFunctionArn, - [SemanticResourceAttributes.CLOUD_ACCOUNT_ID]: + [SEMATTRS_FAAS_EXECUTION]: context.awsRequestId, + [SEMRESATTRS_FAAS_ID]: context.invokedFunctionArn, + [SEMRESATTRS_CLOUD_ACCOUNT_ID]: AwsLambdaInstrumentation._extractAccountId( context.invokedFunctionArn ), diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/test/integrations/lambda-handler.test.ts b/plugins/node/opentelemetry-instrumentation-aws-lambda/test/integrations/lambda-handler.test.ts index e8f9bea083..2088c4316f 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/test/integrations/lambda-handler.test.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/test/integrations/lambda-handler.test.ts @@ -33,8 +33,9 @@ import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import { Context } from 'aws-lambda'; import * as assert from 'assert'; import { - SemanticAttributes, - SemanticResourceAttributes, + SEMATTRS_EXCEPTION_MESSAGE, + SEMATTRS_FAAS_EXECUTION, + SEMRESATTRS_FAAS_NAME, } from '@opentelemetry/semantic-conventions'; import { Context as OtelContext, @@ -56,7 +57,7 @@ const assertSpanSuccess = (span: ReadableSpan) => { assert.strictEqual(span.kind, SpanKind.SERVER); assert.strictEqual(span.name, 'my_function'); assert.strictEqual( - span.attributes[SemanticAttributes.FAAS_EXECUTION], + span.attributes[SEMATTRS_FAAS_EXECUTION], 'aws_request_id' ); assert.strictEqual(span.attributes['faas.id'], 'my_arn'); @@ -68,7 +69,7 @@ const assertSpanFailure = (span: ReadableSpan) => { assert.strictEqual(span.kind, SpanKind.SERVER); assert.strictEqual(span.name, 'my_function'); assert.strictEqual( - span.attributes[SemanticAttributes.FAAS_EXECUTION], + span.attributes[SEMATTRS_FAAS_EXECUTION], 'aws_request_id' ); assert.strictEqual(span.attributes['faas.id'], 'my_arn'); @@ -76,7 +77,7 @@ const assertSpanFailure = (span: ReadableSpan) => { assert.strictEqual(span.status.message, 'handler error'); assert.strictEqual(span.events.length, 1); assert.strictEqual( - span.events[0].attributes![SemanticAttributes.EXCEPTION_MESSAGE], + span.events[0].attributes![SEMATTRS_EXCEPTION_MESSAGE], 'handler error' ); }; @@ -841,10 +842,7 @@ describe('lambda handler', () => { it('sync - success', async () => { initializeHandler('lambda-test/async.handler', { requestHook: (span, { context }) => { - span.setAttribute( - SemanticResourceAttributes.FAAS_NAME, - context.functionName - ); + span.setAttribute(SEMRESATTRS_FAAS_NAME, context.functionName); }, }); @@ -853,7 +851,7 @@ describe('lambda handler', () => { const [span] = spans; assert.strictEqual(spans.length, 1); assert.strictEqual( - span.attributes[SemanticResourceAttributes.FAAS_NAME], + span.attributes[SEMRESATTRS_FAAS_NAME], ctx.functionName ); assertSpanSuccess(span); diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/README.md b/plugins/node/opentelemetry-instrumentation-aws-sdk/README.md index 2c9ee2ae7c..dc362c6a29 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/README.md +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/README.md @@ -117,6 +117,54 @@ The instrumentation's config `preRequestHook`, `responseHook` and `sqsProcessHoo The `moduleVersionAttributeName` config option is removed. To add the aws-sdk package version to spans, use the `moduleVersion` attribute in hook info for `preRequestHook` and `responseHook` functions. +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | Service | +| --------------------------------------------- | ---------------------------------------------------------------------------------------------- | -------- | +| `http.status_code` | (aws-sdk) HTTP response status code. | | +| `rpc.method` | The name of the (logical) method being called. | | +| `rpc.service` | The full (logical) name of the service being called. | | +| `rpc.system` | A string identifying the remoting system. | | +| `aws.dynamodb.attribute_definitions` | The JSON-serialized value of each item in the `AttributeDefinitions` request field. | dynamodb | +| `aws.dynamodb.consistent_read` | The value of the `ConsistentRead` request parameter. | dynamodb | +| `aws.dynamodb.consumed_capacity` | The JSON-serialized value of each item in the `ConsumedCapacity` response field. | dynamodb | +| `aws.dynamodb.count` | The value of the `Count` response parameter. | dynamodb | +| `aws.dynamodb.exclusive_start_table` | The value of the `ExclusiveStartTableName` request parameter. | dynamodb | +| `aws.dynamodb.global_secondary_index_updates` | The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field. | dynamodb | +| `aws.dynamodb.global_secondary_indexes` | The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field. | dynamodb | +| `aws.dynamodb.index_name` | The value of the `IndexName` request parameter. | dynamodb | +| `aws.dynamodb.item_collection_metrics` | The JSON-serialized value of the `ItemCollectionMetrics` response field. | dynamodb | +| `aws.dynamodb.limit` | The value of the `Limit` request parameter. | dynamodb | +| `aws.dynamodb.local_secondary_indexes` | The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field. | dynamodb | +| `aws.dynamodb.projection` | The value of the `ProjectionExpression` request parameter. | dynamodb | +| `aws.dynamodb.provisioned_read_capacity` | The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter. | dynamodb | +| `aws.dynamodb.provisioned_write_capacity` | The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter. | dynamodb | +| `aws.dynamodb.scan_forward` | The value of the `ScanIndexForward` request parameter. | dynamodb | +| `aws.dynamodb.scanned_count` | The value of the `ScannedCount` response parameter. | dynamodb | +| `aws.dynamodb.segment` | The value of the `Segment` request parameter. | dynamodb | +| `aws.dynamodb.select` | The value of the `Select` request parameter. | dynamodb | +| `aws.dynamodb.table_count` | The number of items in the `TableNames` response parameter. | dynamodb | +| `aws.dynamodb.table_names` | The keys in the `RequestItems` object field. | dynamodb | +| `aws.dynamodb.total_segments` | The value of the `TotalSegments` request parameter. | dynamodb | +| `db.name` | The name of the database being accessed. | dynamodb | +| `db.operation` | The name of the operation being executed. | dynamodb | +| `db.statement` | The database statement being executed. | dynamodb | +| `db.system` | An identifier for the database management system (DBMS) product being used. | dynamodb | +| `faas.execution` | The execution ID of the current function execution. | lambda | +| `faas.invoked_name` | The name of the invoked function. | lambda | +| `faas.invoked_provider` | The cloud provider of the invoked function. | lambda | +| `faas.invoked_region` | The cloud region of the invoked function. | lambda | +| `messaging.destination` | The message destination name. | sns, sqs | +| `messaging.destination_kind` | The kind of message destination. | sns, sqs | +| `messaging.system` | A string identifying the messaging system. | sns, sqs | +| `messaging.operation` | A string identifying the kind of message consumption. | sqs | +| `messaging.message_id` | A value used by the messaging system as an identifier for the message. | sqs | +| `messaging.url` | The connection string. | sqs | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json b/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json index 9925809bb1..8fb6a5620f 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json @@ -47,7 +47,7 @@ "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.50.0", "@opentelemetry/propagation-utils": "^0.30.8", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@aws-sdk/client-dynamodb": "3.85.0", diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts index 349d2ff388..b53241b0b5 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts @@ -58,7 +58,7 @@ import { } from './utils'; import { propwrap } from './propwrap'; import { RequestMetadata } from './services/ServiceExtension'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMATTRS_HTTP_STATUS_CODE } from '@opentelemetry/semantic-conventions'; const V3_CLIENT_CONFIG_KEY = Symbol( 'opentelemetry.instrumentation.aws-sdk.client.config' @@ -369,10 +369,7 @@ export class AwsInstrumentation extends InstrumentationBase { const httpStatusCode = response.httpResponse?.statusCode; if (httpStatusCode) { - span.setAttribute( - SemanticAttributes.HTTP_STATUS_CODE, - httpStatusCode - ); + span.setAttribute(SEMATTRS_HTTP_STATUS_CODE, httpStatusCode); } span.end(); }); @@ -526,7 +523,7 @@ export class AwsInstrumentation extends InstrumentationBase { response.output?.$metadata?.httpStatusCode; if (httpStatusCode) { span.setAttribute( - SemanticAttributes.HTTP_STATUS_CODE, + SEMATTRS_HTTP_STATUS_CODE, httpStatusCode ); } diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/dynamodb.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/dynamodb.ts index 9407f32e34..499a5803bd 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/dynamodb.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/dynamodb.ts @@ -14,16 +14,40 @@ * limitations under the License. */ import { + Attributes, DiagLogger, Span, - SpanAttributes, SpanKind, Tracer, } from '@opentelemetry/api'; import { RequestMetadata, ServiceExtension } from './ServiceExtension'; import { - DbSystemValues, - SemanticAttributes, + DBSYSTEMVALUES_DYNAMODB, + SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS, + SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ, + SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY, + SEMATTRS_AWS_DYNAMODB_COUNT, + SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE, + SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES, + SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES, + SEMATTRS_AWS_DYNAMODB_INDEX_NAME, + SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS, + SEMATTRS_AWS_DYNAMODB_LIMIT, + SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES, + SEMATTRS_AWS_DYNAMODB_PROJECTION, + SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY, + SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY, + SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD, + SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT, + SEMATTRS_AWS_DYNAMODB_SEGMENT, + SEMATTRS_AWS_DYNAMODB_SELECT, + SEMATTRS_AWS_DYNAMODB_TABLE_COUNT, + SEMATTRS_AWS_DYNAMODB_TABLE_NAMES, + SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS, + SEMATTRS_DB_NAME, + SEMATTRS_DB_OPERATION, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, } from '@opentelemetry/semantic-conventions'; import { AwsSdkInstrumentationConfig, @@ -46,10 +70,10 @@ export class DynamodbServiceExtension implements ServiceExtension { const isIncoming = false; const operation = normalizedRequest.commandName; - const spanAttributes: SpanAttributes = { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.DYNAMODB, - [SemanticAttributes.DB_NAME]: normalizedRequest.commandInput?.TableName, - [SemanticAttributes.DB_OPERATION]: operation, + const spanAttributes: Attributes = { + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_DYNAMODB, + [SEMATTRS_DB_NAME]: normalizedRequest.commandInput?.TableName, + [SEMATTRS_DB_OPERATION]: operation, }; if (config.dynamoDBStatementSerializer) { @@ -60,7 +84,7 @@ export class DynamodbServiceExtension implements ServiceExtension { ); if (typeof sanitizedStatement === 'string') { - spanAttributes[SemanticAttributes.DB_STATEMENT] = sanitizedStatement; + spanAttributes[SEMATTRS_DB_STATEMENT] = sanitizedStatement; } } catch (err) { diag.error('failed to sanitize DynamoDB statement', err); @@ -72,11 +96,11 @@ export class DynamodbServiceExtension implements ServiceExtension { if (normalizedRequest.commandInput?.TableName) { // Necessary for commands with only 1 table name (example: CreateTable). Attribute is TableName not keys of RequestItems // single table name returned for operations like CreateTable - spanAttributes[SemanticAttributes.AWS_DYNAMODB_TABLE_NAMES] = [ + spanAttributes[SEMATTRS_AWS_DYNAMODB_TABLE_NAMES] = [ normalizedRequest.commandInput.TableName, ]; } else if (normalizedRequest.commandInput?.RequestItems) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_TABLE_NAMES] = Object.keys( + spanAttributes[SEMATTRS_AWS_DYNAMODB_TABLE_NAMES] = Object.keys( normalizedRequest.commandInput.RequestItems ); } @@ -84,13 +108,9 @@ export class DynamodbServiceExtension implements ServiceExtension { if (operation === 'CreateTable' || operation === 'UpdateTable') { // only check for ProvisionedThroughput since ReadCapacityUnits and WriteCapacity units are required attributes if (normalizedRequest.commandInput?.ProvisionedThroughput) { - spanAttributes[ - SemanticAttributes.AWS_DYNAMODB_PROVISIONED_READ_CAPACITY - ] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY] = normalizedRequest.commandInput.ProvisionedThroughput.ReadCapacityUnits; - spanAttributes[ - SemanticAttributes.AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY - ] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY] = normalizedRequest.commandInput.ProvisionedThroughput.WriteCapacityUnits; } } @@ -101,33 +121,31 @@ export class DynamodbServiceExtension implements ServiceExtension { operation === 'Query' ) { if (normalizedRequest.commandInput?.ConsistentRead) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_CONSISTENT_READ] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ] = normalizedRequest.commandInput.ConsistentRead; } } if (operation === 'Query' || operation === 'Scan') { if (normalizedRequest.commandInput?.ProjectionExpression) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_PROJECTION] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_PROJECTION] = normalizedRequest.commandInput.ProjectionExpression; } } if (operation === 'CreateTable') { if (normalizedRequest.commandInput?.GlobalSecondaryIndexes) { - spanAttributes[ - SemanticAttributes.AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES - ] = this.toArray( - normalizedRequest.commandInput.GlobalSecondaryIndexes - ).map((x: { [DictionaryKey: string]: any }) => JSON.stringify(x)); + spanAttributes[SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES] = + this.toArray( + normalizedRequest.commandInput.GlobalSecondaryIndexes + ).map((x: { [DictionaryKey: string]: any }) => JSON.stringify(x)); } if (normalizedRequest.commandInput?.LocalSecondaryIndexes) { - spanAttributes[ - SemanticAttributes.AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES - ] = this.toArray( - normalizedRequest.commandInput.LocalSecondaryIndexes - ).map((x: { [DictionaryKey: string]: any }) => JSON.stringify(x)); + spanAttributes[SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES] = + this.toArray( + normalizedRequest.commandInput.LocalSecondaryIndexes + ).map((x: { [DictionaryKey: string]: any }) => JSON.stringify(x)); } } @@ -137,71 +155,70 @@ export class DynamodbServiceExtension implements ServiceExtension { operation === 'Scan' ) { if (normalizedRequest.commandInput?.Limit) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_LIMIT] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_LIMIT] = normalizedRequest.commandInput.Limit; } } if (operation === 'ListTables') { if (normalizedRequest.commandInput?.ExclusiveStartTableName) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_EXCLUSIVE_START_TABLE] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE] = normalizedRequest.commandInput.ExclusiveStartTableName; } } if (operation === 'Query') { if (normalizedRequest.commandInput?.ScanIndexForward) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_SCAN_FORWARD] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD] = normalizedRequest.commandInput.ScanIndexForward; } if (normalizedRequest.commandInput?.IndexName) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_INDEX_NAME] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_INDEX_NAME] = normalizedRequest.commandInput.IndexName; } if (normalizedRequest.commandInput?.Select) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_SELECT] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_SELECT] = normalizedRequest.commandInput.Select; } } if (operation === 'Scan') { if (normalizedRequest.commandInput?.Segment) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_SEGMENT] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_SEGMENT] = normalizedRequest.commandInput?.Segment; } if (normalizedRequest.commandInput?.TotalSegments) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_TOTAL_SEGMENTS] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS] = normalizedRequest.commandInput?.TotalSegments; } if (normalizedRequest.commandInput?.IndexName) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_INDEX_NAME] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_INDEX_NAME] = normalizedRequest.commandInput.IndexName; } if (normalizedRequest.commandInput?.Select) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_SELECT] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_SELECT] = normalizedRequest.commandInput.Select; } } if (operation === 'UpdateTable') { if (normalizedRequest.commandInput?.AttributeDefinitions) { - spanAttributes[SemanticAttributes.AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS] = + spanAttributes[SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS] = this.toArray(normalizedRequest.commandInput.AttributeDefinitions).map( (x: { [DictionaryKey: string]: any }) => JSON.stringify(x) ); } if (normalizedRequest.commandInput?.GlobalSecondaryIndexUpdates) { - spanAttributes[ - SemanticAttributes.AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES - ] = this.toArray( - normalizedRequest.commandInput.GlobalSecondaryIndexUpdates - ).map((x: { [DictionaryKey: string]: any }) => JSON.stringify(x)); + spanAttributes[SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES] = + this.toArray( + normalizedRequest.commandInput.GlobalSecondaryIndexUpdates + ).map((x: { [DictionaryKey: string]: any }) => JSON.stringify(x)); } } @@ -221,7 +238,7 @@ export class DynamodbServiceExtension implements ServiceExtension { ) { if (response.data?.ConsumedCapacity) { span.setAttribute( - SemanticAttributes.AWS_DYNAMODB_CONSUMED_CAPACITY, + SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY, toArray(response.data.ConsumedCapacity).map( (x: { [DictionaryKey: string]: any }) => JSON.stringify(x) ) @@ -230,7 +247,7 @@ export class DynamodbServiceExtension implements ServiceExtension { if (response.data?.ItemCollectionMetrics) { span.setAttribute( - SemanticAttributes.AWS_DYNAMODB_ITEM_COLLECTION_METRICS, + SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS, this.toArray(response.data.ItemCollectionMetrics).map( (x: { [DictionaryKey: string]: any }) => JSON.stringify(x) ) @@ -239,21 +256,18 @@ export class DynamodbServiceExtension implements ServiceExtension { if (response.data?.TableNames) { span.setAttribute( - SemanticAttributes.AWS_DYNAMODB_TABLE_COUNT, + SEMATTRS_AWS_DYNAMODB_TABLE_COUNT, response.data?.TableNames.length ); } if (response.data?.Count) { - span.setAttribute( - SemanticAttributes.AWS_DYNAMODB_COUNT, - response.data?.Count - ); + span.setAttribute(SEMATTRS_AWS_DYNAMODB_COUNT, response.data?.Count); } if (response.data?.ScannedCount) { span.setAttribute( - SemanticAttributes.AWS_DYNAMODB_SCANNED_COUNT, + SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT, response.data?.ScannedCount ); } diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/lambda.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/lambda.ts index 3254374966..3970c3c098 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/lambda.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/lambda.ts @@ -13,14 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { Span, SpanKind, Tracer, diag, Attributes } from '@opentelemetry/api'; import { - Span, - SpanKind, - Tracer, - diag, - SpanAttributes, -} from '@opentelemetry/api'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; + SEMATTRS_FAAS_EXECUTION, + SEMATTRS_FAAS_INVOKED_NAME, + SEMATTRS_FAAS_INVOKED_PROVIDER, + SEMATTRS_FAAS_INVOKED_REGION, +} from '@opentelemetry/semantic-conventions'; import { AwsSdkInstrumentationConfig, NormalizedRequest, @@ -40,18 +39,17 @@ export class LambdaServiceExtension implements ServiceExtension { ): RequestMetadata { const functionName = this.extractFunctionName(request.commandInput); - let spanAttributes: SpanAttributes = {}; + let spanAttributes: Attributes = {}; let spanName: string | undefined; switch (request.commandName) { case 'Invoke': spanAttributes = { - [SemanticAttributes.FAAS_INVOKED_NAME]: functionName, - [SemanticAttributes.FAAS_INVOKED_PROVIDER]: 'aws', + [SEMATTRS_FAAS_INVOKED_NAME]: functionName, + [SEMATTRS_FAAS_INVOKED_PROVIDER]: 'aws', }; if (request.region) { - spanAttributes[SemanticAttributes.FAAS_INVOKED_REGION] = - request.region; + spanAttributes[SEMATTRS_FAAS_INVOKED_REGION] = request.region; } spanName = `${functionName} ${LambdaCommands.Invoke}`; break; @@ -87,10 +85,7 @@ export class LambdaServiceExtension implements ServiceExtension { switch (response.request.commandName) { case LambdaCommands.Invoke: { - span.setAttribute( - SemanticAttributes.FAAS_EXECUTION, - response.requestId - ); + span.setAttribute(SEMATTRS_FAAS_EXECUTION, response.requestId); } break; } diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/sns.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/sns.ts index f7416d0070..e825cdd309 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/sns.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/sns.ts @@ -13,10 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Span, Tracer, SpanKind, SpanAttributes } from '@opentelemetry/api'; +import { Span, Tracer, SpanKind, Attributes } from '@opentelemetry/api'; import { - MessagingDestinationKindValues, - SemanticAttributes, + MESSAGINGDESTINATIONKINDVALUES_TOPIC, + SEMATTRS_MESSAGING_DESTINATION, + SEMATTRS_MESSAGING_DESTINATION_KIND, + SEMATTRS_MESSAGING_SYSTEM, } from '@opentelemetry/semantic-conventions'; import { NormalizedRequest, @@ -33,26 +35,26 @@ export class SnsServiceExtension implements ServiceExtension { ): RequestMetadata { let spanKind: SpanKind = SpanKind.CLIENT; let spanName = `SNS ${request.commandName}`; - const spanAttributes: SpanAttributes = { - [SemanticAttributes.MESSAGING_SYSTEM]: 'aws.sns', + const spanAttributes: Attributes = { + [SEMATTRS_MESSAGING_SYSTEM]: 'aws.sns', }; if (request.commandName === 'Publish') { spanKind = SpanKind.PRODUCER; - spanAttributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] = - MessagingDestinationKindValues.TOPIC; + spanAttributes[SEMATTRS_MESSAGING_DESTINATION_KIND] = + MESSAGINGDESTINATIONKINDVALUES_TOPIC; const { TopicArn, TargetArn, PhoneNumber } = request.commandInput; - spanAttributes[SemanticAttributes.MESSAGING_DESTINATION] = + spanAttributes[SEMATTRS_MESSAGING_DESTINATION] = this.extractDestinationName(TopicArn, TargetArn, PhoneNumber); - // ToDO: Use SpanAttributes.MESSAGING_DESTINATION_NAME when implemented + // ToDO: Use SEMATTRS_MESSAGING_DESTINATION_NAME when implemented spanAttributes['messaging.destination.name'] = TopicArn || TargetArn || PhoneNumber || 'unknown'; spanName = `${ PhoneNumber ? 'phone_number' - : spanAttributes[SemanticAttributes.MESSAGING_DESTINATION] + : spanAttributes[SEMATTRS_MESSAGING_DESTINATION] } send`; } diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/sqs.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/sqs.ts index d5052dfcae..07cedaa25d 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/sqs.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/sqs.ts @@ -21,7 +21,7 @@ import { trace, context, ROOT_CONTEXT, - SpanAttributes, + Attributes, } from '@opentelemetry/api'; import { pubsubPropagation } from '@opentelemetry/propagation-utils'; import { RequestMetadata, ServiceExtension } from './ServiceExtension'; @@ -32,9 +32,15 @@ import { NormalizedResponse, } from '../types'; import { - MessagingDestinationKindValues, - MessagingOperationValues, - SemanticAttributes, + MESSAGINGDESTINATIONKINDVALUES_QUEUE, + MESSAGINGOPERATIONVALUES_PROCESS, + MESSAGINGOPERATIONVALUES_RECEIVE, + SEMATTRS_MESSAGING_DESTINATION, + SEMATTRS_MESSAGING_DESTINATION_KIND, + SEMATTRS_MESSAGING_MESSAGE_ID, + SEMATTRS_MESSAGING_OPERATION, + SEMATTRS_MESSAGING_SYSTEM, + SEMATTRS_MESSAGING_URL, } from '@opentelemetry/semantic-conventions'; import { contextGetter, @@ -53,12 +59,12 @@ export class SqsServiceExtension implements ServiceExtension { let spanKind: SpanKind = SpanKind.CLIENT; let spanName: string | undefined; - const spanAttributes: SpanAttributes = { - [SemanticAttributes.MESSAGING_SYSTEM]: 'aws.sqs', - [SemanticAttributes.MESSAGING_DESTINATION_KIND]: - MessagingDestinationKindValues.QUEUE, - [SemanticAttributes.MESSAGING_DESTINATION]: queueName, - [SemanticAttributes.MESSAGING_URL]: queueUrl, + const spanAttributes: Attributes = { + [SEMATTRS_MESSAGING_SYSTEM]: 'aws.sqs', + [SEMATTRS_MESSAGING_DESTINATION_KIND]: + MESSAGINGDESTINATIONKINDVALUES_QUEUE, + [SEMATTRS_MESSAGING_DESTINATION]: queueName, + [SEMATTRS_MESSAGING_URL]: queueUrl, }; let isIncoming = false; @@ -69,8 +75,8 @@ export class SqsServiceExtension implements ServiceExtension { isIncoming = true; spanKind = SpanKind.CONSUMER; spanName = `${queueName} receive`; - spanAttributes[SemanticAttributes.MESSAGING_OPERATION] = - MessagingOperationValues.RECEIVE; + spanAttributes[SEMATTRS_MESSAGING_OPERATION] = + MESSAGINGOPERATIONVALUES_RECEIVE; request.commandInput.MessageAttributeNames = addPropagationFieldsToAttributeNames( @@ -134,7 +140,7 @@ export class SqsServiceExtension implements ServiceExtension { switch (response.request.commandName) { case 'SendMessage': span.setAttribute( - SemanticAttributes.MESSAGING_MESSAGE_ID, + SEMATTRS_MESSAGING_MESSAGE_ID, response?.data?.MessageId ); break; @@ -164,14 +170,14 @@ export class SqsServiceExtension implements ServiceExtension { contextGetter ), attributes: { - [SemanticAttributes.MESSAGING_SYSTEM]: 'aws.sqs', - [SemanticAttributes.MESSAGING_DESTINATION]: queueName, - [SemanticAttributes.MESSAGING_DESTINATION_KIND]: - MessagingDestinationKindValues.QUEUE, - [SemanticAttributes.MESSAGING_MESSAGE_ID]: message.MessageId, - [SemanticAttributes.MESSAGING_URL]: queueUrl, - [SemanticAttributes.MESSAGING_OPERATION]: - MessagingOperationValues.PROCESS, + [SEMATTRS_MESSAGING_SYSTEM]: 'aws.sqs', + [SEMATTRS_MESSAGING_DESTINATION]: queueName, + [SEMATTRS_MESSAGING_DESTINATION_KIND]: + MESSAGINGDESTINATIONKINDVALUES_QUEUE, + [SEMATTRS_MESSAGING_MESSAGE_ID]: message.MessageId, + [SEMATTRS_MESSAGING_URL]: queueUrl, + [SEMATTRS_MESSAGING_OPERATION]: + MESSAGINGOPERATIONVALUES_PROCESS, }, }), processHook: (span: Span, message: SQS.Message) => diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/utils.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/utils.ts index df8cbc3e88..e3d0db6bdb 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/utils.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/utils.ts @@ -14,8 +14,12 @@ * limitations under the License. */ import { NormalizedRequest } from './types'; -import { Context, SpanAttributes, context } from '@opentelemetry/api'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { Attributes, Context, context } from '@opentelemetry/api'; +import { + SEMATTRS_RPC_METHOD, + SEMATTRS_RPC_SERVICE, + SEMATTRS_RPC_SYSTEM, +} from '@opentelemetry/semantic-conventions'; import { AttributeNames } from './enums'; const toPascalCase = (str: string): string => @@ -60,11 +64,11 @@ export const normalizeV3Request = ( export const extractAttributesFromNormalizedRequest = ( normalizedRequest: NormalizedRequest -): SpanAttributes => { +): Attributes => { return { - [SemanticAttributes.RPC_SYSTEM]: 'aws-api', - [SemanticAttributes.RPC_METHOD]: normalizedRequest.commandName, - [SemanticAttributes.RPC_SERVICE]: normalizedRequest.serviceName, + [SEMATTRS_RPC_SYSTEM]: 'aws-api', + [SEMATTRS_RPC_METHOD]: normalizedRequest.commandName, + [SEMATTRS_RPC_SERVICE]: normalizedRequest.serviceName, [AttributeNames.AWS_REGION]: normalizedRequest.region, }; }; diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/aws-sdk-v2.test.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/aws-sdk-v2.test.ts index bf11de2060..545fe09bd0 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/aws-sdk-v2.test.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/aws-sdk-v2.test.ts @@ -32,7 +32,7 @@ import { SpanStatusCode, Span, SpanKind } from '@opentelemetry/api'; import { AttributeNames } from '../src/enums'; import { mockV2AwsSend } from './testing-utils'; import { expect } from 'expect'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMATTRS_HTTP_STATUS_CODE } from '@opentelemetry/semantic-conventions'; import { AWSError } from 'aws-sdk'; import { HttpResponse } from 'aws-sdk/lib/http_response'; @@ -131,9 +131,9 @@ describe('instrumentation-aws-sdk-v2', () => { expect(spanCreateBucket.attributes[AttributeNames.AWS_REGION]).toBe( 'us-east-1' ); - expect( - spanCreateBucket.attributes[SemanticAttributes.HTTP_STATUS_CODE] - ).toBe(200); + expect(spanCreateBucket.attributes[SEMATTRS_HTTP_STATUS_CODE]).toBe( + 200 + ); expect(spanCreateBucket.name).toBe('S3.CreateBucket'); expect(spanCreateBucket.kind).toEqual(SpanKind.CLIENT); @@ -159,9 +159,7 @@ describe('instrumentation-aws-sdk-v2', () => { 'us-east-1' ); expect(spanPutObject.name).toBe('S3.PutObject'); - expect( - spanPutObject.attributes[SemanticAttributes.HTTP_STATUS_CODE] - ).toBe(200); + expect(spanPutObject.attributes[SEMATTRS_HTTP_STATUS_CODE]).toBe(200); }); it('adds proper number of spans with correct attributes if both, promise and callback were used', async () => { @@ -210,9 +208,7 @@ describe('instrumentation-aws-sdk-v2', () => { expect(spanPutObjectCb.attributes[AttributeNames.AWS_REGION]).toBe( 'us-east-1' ); - expect( - spanPutObjectCb.attributes[SemanticAttributes.HTTP_STATUS_CODE] - ).toBe(200); + expect(spanPutObjectCb.attributes[SEMATTRS_HTTP_STATUS_CODE]).toBe(200); }); it('adds proper number of spans with correct attributes if only promise was used', async () => { @@ -248,9 +244,7 @@ describe('instrumentation-aws-sdk-v2', () => { expect(spanPutObjectCb.attributes[AttributeNames.AWS_REGION]).toBe( 'us-east-1' ); - expect( - spanPutObjectCb.attributes[SemanticAttributes.HTTP_STATUS_CODE] - ).toBe(200); + expect(spanPutObjectCb.attributes[SEMATTRS_HTTP_STATUS_CODE]).toBe(200); }); it('should create span if no callback is supplied', done => { @@ -304,9 +298,9 @@ describe('instrumentation-aws-sdk-v2', () => { }) ); - expect( - spanCreateBucket.attributes[SemanticAttributes.HTTP_STATUS_CODE] - ).toBe(400); + expect(spanCreateBucket.attributes[SEMATTRS_HTTP_STATUS_CODE]).toBe( + 400 + ); }); }); }); diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/aws-sdk-v3.test.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/aws-sdk-v3.test.ts index 3003da3051..8dee305175 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/aws-sdk-v3.test.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/aws-sdk-v3.test.ts @@ -42,9 +42,18 @@ import 'mocha'; import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; import { context, SpanStatusCode, trace, Span } from '@opentelemetry/api'; import { - MessagingDestinationKindValues, - MessagingOperationValues, - SemanticAttributes, + MESSAGINGDESTINATIONKINDVALUES_QUEUE, + MESSAGINGOPERATIONVALUES_RECEIVE, + SEMATTRS_HTTP_STATUS_CODE, + SEMATTRS_MESSAGING_DESTINATION, + SEMATTRS_MESSAGING_DESTINATION_KIND, + SEMATTRS_MESSAGING_MESSAGE_ID, + SEMATTRS_MESSAGING_OPERATION, + SEMATTRS_MESSAGING_SYSTEM, + SEMATTRS_MESSAGING_URL, + SEMATTRS_RPC_METHOD, + SEMATTRS_RPC_SERVICE, + SEMATTRS_RPC_SYSTEM, } from '@opentelemetry/semantic-conventions'; import { AttributeNames } from '../src/enums'; import { expect } from 'expect'; @@ -72,15 +81,13 @@ describe('instrumentation-aws-sdk-v3', () => { await s3Client.putObject(params); expect(getTestSpans().length).toBe(1); const [span] = getTestSpans(); - expect(span.attributes[SemanticAttributes.RPC_SYSTEM]).toEqual('aws-api'); - expect(span.attributes[SemanticAttributes.RPC_METHOD]).toEqual( - 'PutObject' - ); - expect(span.attributes[SemanticAttributes.RPC_SERVICE]).toEqual('S3'); + expect(span.attributes[SEMATTRS_RPC_SYSTEM]).toEqual('aws-api'); + expect(span.attributes[SEMATTRS_RPC_METHOD]).toEqual('PutObject'); + expect(span.attributes[SEMATTRS_RPC_SERVICE]).toEqual('S3'); expect(span.attributes[AttributeNames.AWS_REGION]).toEqual(region); expect(span.name).toEqual('S3.PutObject'); expect(span.kind).toEqual(SpanKind.CLIENT); - expect(span.attributes[SemanticAttributes.HTTP_STATUS_CODE]).toEqual(200); + expect(span.attributes[SEMATTRS_HTTP_STATUS_CODE]).toEqual(200); }); it('callback interface', done => { @@ -98,18 +105,12 @@ describe('instrumentation-aws-sdk-v3', () => { s3Client.putObject(params, (err: any, data?: PutObjectCommandOutput) => { expect(getTestSpans().length).toBe(1); const [span] = getTestSpans(); - expect(span.attributes[SemanticAttributes.RPC_SYSTEM]).toEqual( - 'aws-api' - ); - expect(span.attributes[SemanticAttributes.RPC_METHOD]).toEqual( - 'PutObject' - ); - expect(span.attributes[SemanticAttributes.RPC_SERVICE]).toEqual('S3'); + expect(span.attributes[SEMATTRS_RPC_SYSTEM]).toEqual('aws-api'); + expect(span.attributes[SEMATTRS_RPC_METHOD]).toEqual('PutObject'); + expect(span.attributes[SEMATTRS_RPC_SERVICE]).toEqual('S3'); expect(span.attributes[AttributeNames.AWS_REGION]).toEqual(region); expect(span.name).toEqual('S3.PutObject'); - expect(span.attributes[SemanticAttributes.HTTP_STATUS_CODE]).toEqual( - 200 - ); + expect(span.attributes[SEMATTRS_HTTP_STATUS_CODE]).toEqual(200); done(); }); }); @@ -130,14 +131,12 @@ describe('instrumentation-aws-sdk-v3', () => { await client.send(new PutObjectCommand(params)); expect(getTestSpans().length).toBe(1); const [span] = getTestSpans(); - expect(span.attributes[SemanticAttributes.RPC_SYSTEM]).toEqual('aws-api'); - expect(span.attributes[SemanticAttributes.RPC_METHOD]).toEqual( - 'PutObject' - ); - expect(span.attributes[SemanticAttributes.RPC_SERVICE]).toEqual('S3'); + expect(span.attributes[SEMATTRS_RPC_SYSTEM]).toEqual('aws-api'); + expect(span.attributes[SEMATTRS_RPC_METHOD]).toEqual('PutObject'); + expect(span.attributes[SEMATTRS_RPC_SERVICE]).toEqual('S3'); expect(span.attributes[AttributeNames.AWS_REGION]).toEqual(region); expect(span.name).toEqual('S3.PutObject'); - expect(span.attributes[SemanticAttributes.HTTP_STATUS_CODE]).toEqual(200); + expect(span.attributes[SEMATTRS_HTTP_STATUS_CODE]).toEqual(200); }); it('aws error', async () => { @@ -165,13 +164,9 @@ describe('instrumentation-aws-sdk-v3', () => { expect(span.events.length).toBe(1); expect(span.events[0].name).toEqual('exception'); - expect(span.attributes[SemanticAttributes.RPC_SYSTEM]).toEqual( - 'aws-api' - ); - expect(span.attributes[SemanticAttributes.RPC_METHOD]).toEqual( - 'PutObject' - ); - expect(span.attributes[SemanticAttributes.RPC_SERVICE]).toEqual('S3'); + expect(span.attributes[SEMATTRS_RPC_SYSTEM]).toEqual('aws-api'); + expect(span.attributes[SEMATTRS_RPC_METHOD]).toEqual('PutObject'); + expect(span.attributes[SEMATTRS_RPC_SERVICE]).toEqual('S3'); expect(span.attributes[AttributeNames.AWS_REGION]).toEqual(region); expect(span.attributes[AttributeNames.AWS_REQUEST_ID]).toEqual( 'MS95GTS7KXQ34X2S' @@ -309,34 +304,26 @@ describe('instrumentation-aws-sdk-v3', () => { const [span] = getTestSpans(); // make sure we have the general aws attributes: - expect(span.attributes[SemanticAttributes.RPC_SYSTEM]).toEqual( - 'aws-api' - ); - expect(span.attributes[SemanticAttributes.RPC_METHOD]).toEqual( - 'SendMessage' - ); - expect(span.attributes[SemanticAttributes.RPC_SERVICE]).toEqual('SQS'); + expect(span.attributes[SEMATTRS_RPC_SYSTEM]).toEqual('aws-api'); + expect(span.attributes[SEMATTRS_RPC_METHOD]).toEqual('SendMessage'); + expect(span.attributes[SEMATTRS_RPC_SERVICE]).toEqual('SQS'); expect(span.attributes[AttributeNames.AWS_REGION]).toEqual(region); // custom messaging attributes - expect(span.attributes[SemanticAttributes.MESSAGING_SYSTEM]).toEqual( - 'aws.sqs' + expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual('aws.sqs'); + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND]).toEqual( + MESSAGINGDESTINATIONKINDVALUES_QUEUE ); - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.QUEUE); - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual('otel-demo-aws-sdk'); - expect(span.attributes[SemanticAttributes.MESSAGING_URL]).toEqual( + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + 'otel-demo-aws-sdk' + ); + expect(span.attributes[SEMATTRS_MESSAGING_URL]).toEqual( params.QueueUrl ); - expect( - span.attributes[SemanticAttributes.MESSAGING_MESSAGE_ID] - ).toEqual(response.MessageId); - expect(span.attributes[SemanticAttributes.HTTP_STATUS_CODE]).toEqual( - 200 + expect(span.attributes[SEMATTRS_MESSAGING_MESSAGE_ID]).toEqual( + response.MessageId ); + expect(span.attributes[SEMATTRS_HTTP_STATUS_CODE]).toEqual(200); }); it('sqs send message batch attributes', async () => { @@ -375,31 +362,25 @@ describe('instrumentation-aws-sdk-v3', () => { const [span] = getTestSpans(); // make sure we have the general aws attributes: - expect(span.attributes[SemanticAttributes.RPC_SYSTEM]).toEqual( - 'aws-api' - ); - expect(span.attributes[SemanticAttributes.RPC_METHOD]).toEqual( + expect(span.attributes[SEMATTRS_RPC_SYSTEM]).toEqual('aws-api'); + expect(span.attributes[SEMATTRS_RPC_METHOD]).toEqual( 'SendMessageBatch' ); - expect(span.attributes[SemanticAttributes.RPC_SERVICE]).toEqual('SQS'); + expect(span.attributes[SEMATTRS_RPC_SERVICE]).toEqual('SQS'); expect(span.attributes[AttributeNames.AWS_REGION]).toEqual(region); // messaging semantic attributes - expect(span.attributes[SemanticAttributes.MESSAGING_SYSTEM]).toEqual( - 'aws.sqs' + expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual('aws.sqs'); + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND]).toEqual( + MESSAGINGDESTINATIONKINDVALUES_QUEUE ); - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.QUEUE); - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual('otel-demo-aws-sdk'); - expect(span.attributes[SemanticAttributes.MESSAGING_URL]).toEqual( - params.QueueUrl + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + 'otel-demo-aws-sdk' ); - expect(span.attributes[SemanticAttributes.HTTP_STATUS_CODE]).toEqual( - 200 + expect(span.attributes[SEMATTRS_MESSAGING_URL]).toEqual( + params.QueueUrl ); + expect(span.attributes[SEMATTRS_HTTP_STATUS_CODE]).toEqual(200); }); it('sqs receive add messaging attributes', done => { @@ -428,19 +409,13 @@ describe('instrumentation-aws-sdk-v3', () => { const [span] = getTestSpans(); // make sure we have the general aws attributes: - expect(span.attributes[SemanticAttributes.RPC_SYSTEM]).toEqual( - 'aws-api' - ); - expect(span.attributes[SemanticAttributes.RPC_METHOD]).toEqual( + expect(span.attributes[SEMATTRS_RPC_SYSTEM]).toEqual('aws-api'); + expect(span.attributes[SEMATTRS_RPC_METHOD]).toEqual( 'ReceiveMessage' ); - expect(span.attributes[SemanticAttributes.RPC_SERVICE]).toEqual( - 'SQS' - ); + expect(span.attributes[SEMATTRS_RPC_SERVICE]).toEqual('SQS'); expect(span.attributes[AttributeNames.AWS_REGION]).toEqual(region); - expect(span.attributes[SemanticAttributes.HTTP_STATUS_CODE]).toEqual( - 200 - ); + expect(span.attributes[SEMATTRS_HTTP_STATUS_CODE]).toEqual(200); done(); }); }); @@ -474,8 +449,8 @@ describe('instrumentation-aws-sdk-v3', () => { expect(receiveCallbackSpan).toBeDefined(); const attributes = (receiveCallbackSpan as unknown as ReadableSpan) .attributes; - expect(attributes[SemanticAttributes.MESSAGING_OPERATION]).toMatch( - MessagingOperationValues.RECEIVE + expect(attributes[SEMATTRS_MESSAGING_OPERATION]).toMatch( + MESSAGINGOPERATIONVALUES_RECEIVE ); done(); }); diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/dynamodb.test.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/dynamodb.test.ts index ea4317c63d..de34fd8a84 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/dynamodb.test.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/dynamodb.test.ts @@ -30,8 +30,32 @@ import { AWSError } from 'aws-sdk'; import { mockV2AwsSend } from './testing-utils'; import { - DbSystemValues, - SemanticAttributes, + DBSYSTEMVALUES_DYNAMODB, + SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS, + SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ, + SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY, + SEMATTRS_AWS_DYNAMODB_COUNT, + SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE, + SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES, + SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES, + SEMATTRS_AWS_DYNAMODB_INDEX_NAME, + SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS, + SEMATTRS_AWS_DYNAMODB_LIMIT, + SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES, + SEMATTRS_AWS_DYNAMODB_PROJECTION, + SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY, + SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY, + SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD, + SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT, + SEMATTRS_AWS_DYNAMODB_SEGMENT, + SEMATTRS_AWS_DYNAMODB_SELECT, + SEMATTRS_AWS_DYNAMODB_TABLE_COUNT, + SEMATTRS_AWS_DYNAMODB_TABLE_NAMES, + SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS, + SEMATTRS_DB_NAME, + SEMATTRS_DB_OPERATION, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, } from '@opentelemetry/semantic-conventions'; import { expect } from 'expect'; import type { ConsumedCapacity as ConsumedCapacityV2 } from 'aws-sdk/clients/dynamodb'; @@ -90,33 +114,27 @@ describe('DynamoDB', () => { const spans = getTestSpans(); expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( - DbSystemValues.DYNAMODB + expect(attrs[SEMATTRS_DB_SYSTEM]).toStrictEqual( + DBSYSTEMVALUES_DYNAMODB ); - expect(attrs[SemanticAttributes.DB_NAME]).toStrictEqual('test-table'); - expect(attrs[SemanticAttributes.DB_OPERATION]).toStrictEqual('Query'); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_SCAN_FORWARD] - ).toStrictEqual(true); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_CONSISTENT_READ] - ).toStrictEqual(true); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_INDEX_NAME] - ).toStrictEqual('name_to_group'); - expect(attrs[SemanticAttributes.AWS_DYNAMODB_SELECT]).toStrictEqual( - 'ALL_ATTRIBUTES' + expect(attrs[SEMATTRS_DB_NAME]).toStrictEqual('test-table'); + expect(attrs[SEMATTRS_DB_OPERATION]).toStrictEqual('Query'); + expect(attrs[SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD]).toStrictEqual(true); + expect(attrs[SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ]).toStrictEqual( + true ); - expect(attrs[SemanticAttributes.AWS_DYNAMODB_LIMIT]).toStrictEqual( - 10 + expect(attrs[SEMATTRS_AWS_DYNAMODB_INDEX_NAME]).toStrictEqual( + 'name_to_group' ); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_TABLE_NAMES] - ).toStrictEqual(['test-table']); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_PROJECTION] - ).toStrictEqual('id'); - expect(attrs).not.toHaveProperty(SemanticAttributes.DB_STATEMENT); + expect(attrs[SEMATTRS_AWS_DYNAMODB_SELECT]).toStrictEqual( + 'ALL_ATTRIBUTES' + ); + expect(attrs[SEMATTRS_AWS_DYNAMODB_LIMIT]).toStrictEqual(10); + expect(attrs[SEMATTRS_AWS_DYNAMODB_TABLE_NAMES]).toStrictEqual([ + 'test-table', + ]); + expect(attrs[SEMATTRS_AWS_DYNAMODB_PROJECTION]).toStrictEqual('id'); + expect(attrs).not.toHaveProperty(SEMATTRS_DB_STATEMENT); expect(err).toBeFalsy(); done(); } @@ -157,39 +175,29 @@ describe('DynamoDB', () => { const spans = getTestSpans(); expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( - DbSystemValues.DYNAMODB + expect(attrs[SEMATTRS_DB_SYSTEM]).toStrictEqual( + DBSYSTEMVALUES_DYNAMODB ); - expect(attrs[SemanticAttributes.DB_NAME]).toStrictEqual('test-table'); - expect(attrs[SemanticAttributes.DB_OPERATION]).toStrictEqual('Scan'); - expect(attrs[SemanticAttributes.AWS_DYNAMODB_SEGMENT]).toStrictEqual( - 10 + expect(attrs[SEMATTRS_DB_NAME]).toStrictEqual('test-table'); + expect(attrs[SEMATTRS_DB_OPERATION]).toStrictEqual('Scan'); + expect(attrs[SEMATTRS_AWS_DYNAMODB_SEGMENT]).toStrictEqual(10); + expect(attrs[SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS]).toStrictEqual( + 100 ); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_TOTAL_SEGMENTS] - ).toStrictEqual(100); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_INDEX_NAME] - ).toStrictEqual('index_name'); - expect(attrs[SemanticAttributes.AWS_DYNAMODB_SELECT]).toStrictEqual( - 'ALL_ATTRIBUTES' - ); - expect(attrs[SemanticAttributes.AWS_DYNAMODB_COUNT]).toStrictEqual( - 10 + expect(attrs[SEMATTRS_AWS_DYNAMODB_INDEX_NAME]).toStrictEqual( + 'index_name' ); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_SCANNED_COUNT] - ).toStrictEqual(50); - expect(attrs[SemanticAttributes.AWS_DYNAMODB_LIMIT]).toStrictEqual( - 10 + expect(attrs[SEMATTRS_AWS_DYNAMODB_SELECT]).toStrictEqual( + 'ALL_ATTRIBUTES' ); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_TABLE_NAMES] - ).toStrictEqual(['test-table']); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_PROJECTION] - ).toStrictEqual('id'); - expect(attrs).not.toHaveProperty(SemanticAttributes.DB_STATEMENT); + expect(attrs[SEMATTRS_AWS_DYNAMODB_COUNT]).toStrictEqual(10); + expect(attrs[SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT]).toStrictEqual(50); + expect(attrs[SEMATTRS_AWS_DYNAMODB_LIMIT]).toStrictEqual(10); + expect(attrs[SEMATTRS_AWS_DYNAMODB_TABLE_NAMES]).toStrictEqual([ + 'test-table', + ]); + expect(attrs[SEMATTRS_AWS_DYNAMODB_PROJECTION]).toStrictEqual('id'); + expect(attrs).not.toHaveProperty(SEMATTRS_DB_STATEMENT); expect(err).toBeFalsy(); done(); } @@ -226,16 +234,16 @@ describe('DynamoDB', () => { const spans = getTestSpans(); expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( - DbSystemValues.DYNAMODB + expect(attrs[SEMATTRS_DB_SYSTEM]).toStrictEqual( + DBSYSTEMVALUES_DYNAMODB ); expect( - attrs[SemanticAttributes.AWS_DYNAMODB_ITEM_COLLECTION_METRICS] + attrs[SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS] ).toStrictEqual([ JSON.stringify({ ItemCollectionKey: [], SizeEstimateRangeGB: [0] }), ]); - expect(attrs).not.toHaveProperty(SemanticAttributes.DB_STATEMENT); + expect(attrs).not.toHaveProperty(SEMATTRS_DB_STATEMENT); expect(err).toBeFalsy(); done(); } @@ -321,29 +329,29 @@ describe('DynamoDB', () => { const spans = getTestSpans(); expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( - DbSystemValues.DYNAMODB + expect(attrs[SEMATTRS_DB_SYSTEM]).toStrictEqual( + DBSYSTEMVALUES_DYNAMODB ); expect( - attrs[SemanticAttributes.AWS_DYNAMODB_ITEM_COLLECTION_METRICS] + attrs[SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS] ).toStrictEqual([ JSON.stringify({ ItemCollectionKey: [], SizeEstimateRangeGB: [0] }), ]); expect( - attrs[SemanticAttributes.AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES] + attrs[SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES] ).toStrictEqual([JSON.stringify(globalSecondaryIndexMockData)]); expect( - attrs[SemanticAttributes.AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES] + attrs[SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES] ).toStrictEqual([JSON.stringify(localSecondaryIndexMockData)]); expect( - attrs[SemanticAttributes.AWS_DYNAMODB_PROVISIONED_READ_CAPACITY] + attrs[SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY] ).toStrictEqual(20); expect( - attrs[SemanticAttributes.AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY] + attrs[SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY] ).toStrictEqual(30); - expect(attrs).not.toHaveProperty(SemanticAttributes.DB_STATEMENT); + expect(attrs).not.toHaveProperty(SEMATTRS_DB_STATEMENT); expect(err).toBeFalsy(); done(); } @@ -394,14 +402,12 @@ describe('DynamoDB', () => { const spans = getTestSpans(); expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( - DbSystemValues.DYNAMODB + expect(attrs[SEMATTRS_DB_SYSTEM]).toStrictEqual( + DBSYSTEMVALUES_DYNAMODB ); expect( - attrs[ - SemanticAttributes.AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES - ] + attrs[SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES] ).toStrictEqual([ JSON.stringify({ Update: { @@ -414,7 +420,7 @@ describe('DynamoDB', () => { }), ]); expect( - attrs[SemanticAttributes.AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS] + attrs[SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS] ).toStrictEqual([ JSON.stringify({ AttributeName: 'test_attr', @@ -422,12 +428,12 @@ describe('DynamoDB', () => { }), ]); expect( - attrs[SemanticAttributes.AWS_DYNAMODB_PROVISIONED_READ_CAPACITY] + attrs[SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY] ).toStrictEqual(10); expect( - attrs[SemanticAttributes.AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY] + attrs[SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY] ).toStrictEqual(15); - expect(attrs).not.toHaveProperty(SemanticAttributes.DB_STATEMENT); + expect(attrs).not.toHaveProperty(SEMATTRS_DB_STATEMENT); expect(err).toBeFalsy(); done(); } @@ -455,21 +461,17 @@ describe('DynamoDB', () => { const spans = getTestSpans(); expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( - DbSystemValues.DYNAMODB + expect(attrs[SEMATTRS_DB_SYSTEM]).toStrictEqual( + DBSYSTEMVALUES_DYNAMODB ); expect( - attrs[SemanticAttributes.AWS_DYNAMODB_EXCLUSIVE_START_TABLE] + attrs[SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE] ).toStrictEqual('start_table'); - expect(attrs[SemanticAttributes.AWS_DYNAMODB_LIMIT]).toStrictEqual( - 10 - ); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_TABLE_COUNT] - ).toStrictEqual(3); + expect(attrs[SEMATTRS_AWS_DYNAMODB_LIMIT]).toStrictEqual(10); + expect(attrs[SEMATTRS_AWS_DYNAMODB_TABLE_COUNT]).toStrictEqual(3); - expect(attrs).not.toHaveProperty(SemanticAttributes.DB_STATEMENT); + expect(attrs).not.toHaveProperty(SEMATTRS_DB_STATEMENT); expect(err).toBeFalsy(); done(); } @@ -511,19 +513,17 @@ describe('DynamoDB', () => { const spans = getTestSpans(); expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( - DbSystemValues.DYNAMODB + expect(attrs[SEMATTRS_DB_SYSTEM]).toStrictEqual( + DBSYSTEMVALUES_DYNAMODB ); - expect(attrs[SemanticAttributes.DB_OPERATION]).toStrictEqual( - 'BatchGetItem' - ); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_TABLE_NAMES] - ).toStrictEqual(['test-table']); + expect(attrs[SEMATTRS_DB_OPERATION]).toStrictEqual('BatchGetItem'); + expect(attrs[SEMATTRS_AWS_DYNAMODB_TABLE_NAMES]).toStrictEqual([ + 'test-table', + ]); expect( - attrs[SemanticAttributes.AWS_DYNAMODB_CONSUMED_CAPACITY] + attrs[SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY] ).toBeUndefined(); - expect(attrs).not.toHaveProperty(SemanticAttributes.DB_STATEMENT); + expect(attrs).not.toHaveProperty(SEMATTRS_DB_STATEMENT); expect(err).toBeFalsy(); done(); } @@ -556,23 +556,19 @@ describe('DynamoDB', () => { const spans = getTestSpans(); expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( - DbSystemValues.DYNAMODB - ); - expect(attrs[SemanticAttributes.DB_OPERATION]).toStrictEqual( - 'BatchGetItem' + expect(attrs[SEMATTRS_DB_SYSTEM]).toStrictEqual( + DBSYSTEMVALUES_DYNAMODB ); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_TABLE_NAMES] - ).toStrictEqual(['test-table']); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_CONSUMED_CAPACITY] - ).toStrictEqual( + expect(attrs[SEMATTRS_DB_OPERATION]).toStrictEqual('BatchGetItem'); + expect(attrs[SEMATTRS_AWS_DYNAMODB_TABLE_NAMES]).toStrictEqual([ + 'test-table', + ]); + expect(attrs[SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY]).toStrictEqual( consumedCapacityResponseMockData.map((x: ConsumedCapacity) => JSON.stringify(x) ) ); - expect(attrs).not.toHaveProperty(SemanticAttributes.DB_STATEMENT); + expect(attrs).not.toHaveProperty(SEMATTRS_DB_STATEMENT); expect(err).toBeFalsy(); done(); } @@ -605,17 +601,15 @@ describe('DynamoDB', () => { const spans = getTestSpans(); expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual('dynamodb'); - expect(attrs[SemanticAttributes.DB_OPERATION]).toStrictEqual( - 'BatchGetItem' - ); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_TABLE_NAMES] - ).toStrictEqual(['test-table']); + expect(attrs[SEMATTRS_DB_SYSTEM]).toStrictEqual('dynamodb'); + expect(attrs[SEMATTRS_DB_OPERATION]).toStrictEqual('BatchGetItem'); + expect(attrs[SEMATTRS_AWS_DYNAMODB_TABLE_NAMES]).toStrictEqual([ + 'test-table', + ]); expect( - attrs[SemanticAttributes.AWS_DYNAMODB_CONSUMED_CAPACITY] + attrs[SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY] ).toBeUndefined(); - expect(attrs).not.toHaveProperty(SemanticAttributes.DB_STATEMENT); + expect(attrs).not.toHaveProperty(SEMATTRS_DB_STATEMENT); expect(err).toBeFalsy(); done(); } @@ -644,15 +638,11 @@ describe('DynamoDB', () => { const spans = getTestSpans(); expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( - DbSystemValues.DYNAMODB + expect(attrs[SEMATTRS_DB_SYSTEM]).toStrictEqual( + DBSYSTEMVALUES_DYNAMODB ); - expect(attrs[SemanticAttributes.DB_OPERATION]).toStrictEqual( - 'PutItem' - ); - expect( - attrs[SemanticAttributes.AWS_DYNAMODB_CONSUMED_CAPACITY] - ).toStrictEqual([ + expect(attrs[SEMATTRS_DB_OPERATION]).toStrictEqual('PutItem'); + expect(attrs[SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY]).toStrictEqual([ JSON.stringify({ TableName: 'test-table', CapacityUnits: 0.5, @@ -681,14 +671,12 @@ describe('DynamoDB', () => { const spans = getTestSpans(); expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_SYSTEM]).toStrictEqual( - DbSystemValues.DYNAMODB - ); - expect(attrs[SemanticAttributes.DB_OPERATION]).toStrictEqual( - 'PutItem' + expect(attrs[SEMATTRS_DB_SYSTEM]).toStrictEqual( + DBSYSTEMVALUES_DYNAMODB ); + expect(attrs[SEMATTRS_DB_OPERATION]).toStrictEqual('PutItem'); expect(attrs).not.toHaveProperty( - SemanticAttributes.AWS_DYNAMODB_CONSUMED_CAPACITY + SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY ); expect(err).toBeFalsy(); done(); @@ -753,7 +741,7 @@ describe('DynamoDB', () => { expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs).not.toHaveProperty(SemanticAttributes.DB_STATEMENT); + expect(attrs).not.toHaveProperty(SEMATTRS_DB_STATEMENT); expect(err).toBeFalsy(); done(); } @@ -796,7 +784,7 @@ describe('DynamoDB', () => { expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs).not.toHaveProperty(SemanticAttributes.DB_STATEMENT); + expect(attrs).not.toHaveProperty(SEMATTRS_DB_STATEMENT); expect(err).toBeFalsy(); done(); } @@ -839,7 +827,7 @@ describe('DynamoDB', () => { expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs).not.toHaveProperty(SemanticAttributes.DB_STATEMENT); + expect(attrs).not.toHaveProperty(SEMATTRS_DB_STATEMENT); expect(err).toBeFalsy(); done(); } @@ -939,7 +927,7 @@ describe('DynamoDB', () => { expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_STATEMENT]).toStrictEqual( + expect(attrs[SEMATTRS_DB_STATEMENT]).toStrictEqual( SERIALIZED_DB_STATEMENT ); expect(err).toBeFalsy(); @@ -1023,7 +1011,7 @@ describe('DynamoDB', () => { expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_STATEMENT]).toStrictEqual( + expect(attrs[SEMATTRS_DB_STATEMENT]).toStrictEqual( SERIALIZED_DB_STATEMENT ); expect(err).toBeFalsy(); @@ -1072,7 +1060,7 @@ describe('DynamoDB', () => { expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_STATEMENT]).toStrictEqual( + expect(attrs[SEMATTRS_DB_STATEMENT]).toStrictEqual( SERIALIZED_DB_STATEMENT ); expect(err).toBeFalsy(); @@ -1101,7 +1089,7 @@ describe('DynamoDB', () => { expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_STATEMENT]).toStrictEqual( + expect(attrs[SEMATTRS_DB_STATEMENT]).toStrictEqual( SERIALIZED_DB_STATEMENT ); expect(err).toBeFalsy(); @@ -1136,7 +1124,7 @@ describe('DynamoDB', () => { expect(spans.length).toStrictEqual(1); const attrs = spans[0].attributes; - expect(attrs[SemanticAttributes.DB_STATEMENT]).toStrictEqual( + expect(attrs[SEMATTRS_DB_STATEMENT]).toStrictEqual( SERIALIZED_DB_STATEMENT ); expect(err).toBeFalsy(); diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/lambda.test.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/lambda.test.ts index be3965a872..36fc14d990 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/lambda.test.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/lambda.test.ts @@ -21,7 +21,11 @@ import { } from '@opentelemetry/contrib-test-utils'; registerInstrumentationTesting(new AwsInstrumentation()); -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_FAAS_EXECUTION, + SEMATTRS_FAAS_INVOKED_NAME, + SEMATTRS_FAAS_INVOKED_PROVIDER, +} from '@opentelemetry/semantic-conventions'; import { SpanKind } from '@opentelemetry/api'; import { Lambda, InvocationType } from '@aws-sdk/client-lambda'; @@ -90,9 +94,7 @@ describe('Lambda', () => { }; const span = await getInvokedSpan(params); - expect( - span.attributes[SemanticAttributes.FAAS_INVOKED_PROVIDER] - ).toEqual('aws'); + expect(span.attributes[SEMATTRS_FAAS_INVOKED_PROVIDER]).toEqual('aws'); }); it('should add the function name as a semantic attribute', async () => { @@ -107,7 +109,7 @@ describe('Lambda', () => { }; const span = await getInvokedSpan(params); - expect(span.attributes[SemanticAttributes.FAAS_INVOKED_NAME]).toEqual( + expect(span.attributes[SEMATTRS_FAAS_INVOKED_NAME]).toEqual( 'ot-test-function-name' ); }); @@ -347,12 +349,10 @@ describe('Lambda', () => { const [span] = getTestSpans(); expect(span.kind).toEqual(SpanKind.CLIENT); - expect(span.attributes[SemanticAttributes.FAAS_INVOKED_NAME]).toEqual( + expect(span.attributes[SEMATTRS_FAAS_INVOKED_NAME]).toEqual( 'ot-test-function-name' ); - expect( - span.attributes[SemanticAttributes.FAAS_INVOKED_PROVIDER] - ).toEqual('aws'); + expect(span.attributes[SEMATTRS_FAAS_INVOKED_PROVIDER]).toEqual('aws'); }); }); @@ -385,7 +385,7 @@ describe('Lambda', () => { expect(getTestSpans().length).toBe(1); const [span] = getTestSpans(); - expect(span.attributes[SemanticAttributes.FAAS_EXECUTION]).toEqual( + expect(span.attributes[SEMATTRS_FAAS_EXECUTION]).toEqual( '95882c2b-3fd2-485d-ada3-9fcb1ca65459' ); }); diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/sns.test.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/sns.test.ts index 36fa27e3d8..f8d4dd777f 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/sns.test.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/sns.test.ts @@ -31,8 +31,11 @@ import { expect } from 'expect'; import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; import * as sinon from 'sinon'; import { - MessagingDestinationKindValues, - SemanticAttributes, + MESSAGINGDESTINATIONKINDVALUES_TOPIC, + SEMATTRS_MESSAGING_DESTINATION, + SEMATTRS_MESSAGING_DESTINATION_KIND, + SEMATTRS_MESSAGING_SYSTEM, + SEMATTRS_RPC_METHOD, } from '@opentelemetry/semantic-conventions'; import { SpanKind } from '@opentelemetry/api'; @@ -78,21 +81,17 @@ describe('SNS - v2', () => { expect(publishSpans.length).toBe(1); const publishSpan = publishSpans[0]; - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toBe(MessagingDestinationKindValues.TOPIC); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toBe(topicName); - expect(publishSpan.attributes['messaging.destination.name']).toBe( - fakeARN + expect(publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND]).toBe( + MESSAGINGDESTINATIONKINDVALUES_TOPIC ); - expect(publishSpan.attributes[SemanticAttributes.RPC_METHOD]).toBe( - 'Publish' + expect(publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toBe( + topicName ); - expect(publishSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM]).toBe( - 'aws.sns' + expect(publishSpan.attributes['messaging.destination.name']).toBe( + fakeARN ); + expect(publishSpan.attributes[SEMATTRS_RPC_METHOD]).toBe('Publish'); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toBe('aws.sns'); expect(publishSpan.kind).toBe(SpanKind.PRODUCER); }); @@ -111,9 +110,9 @@ describe('SNS - v2', () => { ); expect(publishSpans.length).toBe(1); const publishSpan = publishSpans[0]; - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toBe(PhoneNumber); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toBe( + PhoneNumber + ); expect(publishSpan.attributes['messaging.destination.name']).toBe( PhoneNumber ); @@ -158,12 +157,10 @@ describe('SNS - v2', () => { const createTopicSpan = createTopicSpans[0]; expect( - createTopicSpan.attributes[ - SemanticAttributes.MESSAGING_DESTINATION_KIND - ] + createTopicSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND] ).toBeUndefined(); expect( - createTopicSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] + createTopicSpan.attributes[SEMATTRS_MESSAGING_DESTINATION] ).toBeUndefined(); expect( createTopicSpan.attributes['messaging.destination.name'] @@ -208,21 +205,17 @@ describe('SNS - v3', () => { expect(publishSpans.length).toBe(1); const publishSpan = publishSpans[0]; - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toBe(MessagingDestinationKindValues.TOPIC); - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toBe(topicV3Name); - expect(publishSpan.attributes['messaging.destination.name']).toBe( - topicV3ARN + expect(publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND]).toBe( + MESSAGINGDESTINATIONKINDVALUES_TOPIC ); - expect(publishSpan.attributes[SemanticAttributes.RPC_METHOD]).toBe( - 'Publish' + expect(publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toBe( + topicV3Name ); - expect(publishSpan.attributes[SemanticAttributes.MESSAGING_SYSTEM]).toBe( - 'aws.sns' + expect(publishSpan.attributes['messaging.destination.name']).toBe( + topicV3ARN ); + expect(publishSpan.attributes[SEMATTRS_RPC_METHOD]).toBe('Publish'); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_SYSTEM]).toBe('aws.sns'); expect(publishSpan.kind).toBe(SpanKind.PRODUCER); }); @@ -238,9 +231,9 @@ describe('SNS - v3', () => { ); expect(publishSpans.length).toBe(1); const publishSpan = publishSpans[0]; - expect( - publishSpan.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toBe(PhoneNumber); + expect(publishSpan.attributes[SEMATTRS_MESSAGING_DESTINATION]).toBe( + PhoneNumber + ); }); }); }); diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/sqs.test.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/sqs.test.ts index f0bdd33599..e97d82bb2c 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/test/sqs.test.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/test/sqs.test.ts @@ -26,9 +26,19 @@ import { AWSError } from 'aws-sdk'; import type { SQS } from 'aws-sdk'; import { - MessagingDestinationKindValues, - MessagingOperationValues, - SemanticAttributes, + MESSAGINGDESTINATIONKINDVALUES_QUEUE, + MESSAGINGOPERATIONVALUES_PROCESS, + MESSAGINGOPERATIONVALUES_RECEIVE, + SEMATTRS_HTTP_STATUS_CODE, + SEMATTRS_MESSAGING_DESTINATION, + SEMATTRS_MESSAGING_DESTINATION_KIND, + SEMATTRS_MESSAGING_MESSAGE_ID, + SEMATTRS_MESSAGING_OPERATION, + SEMATTRS_MESSAGING_SYSTEM, + SEMATTRS_MESSAGING_URL, + SEMATTRS_RPC_METHOD, + SEMATTRS_RPC_SERVICE, + SEMATTRS_RPC_SYSTEM, } from '@opentelemetry/semantic-conventions'; import { context, @@ -179,15 +189,15 @@ describe('SQS', () => { ) => { const awsReceiveSpan = spans.filter( s => - s.attributes[SemanticAttributes.MESSAGING_OPERATION] === - MessagingOperationValues.RECEIVE + s.attributes[SEMATTRS_MESSAGING_OPERATION] === + MESSAGINGOPERATIONVALUES_RECEIVE ); expect(awsReceiveSpan.length).toBe(1); const processSpans = spans.filter( s => - s.attributes[SemanticAttributes.MESSAGING_OPERATION] === - MessagingOperationValues.PROCESS + s.attributes[SEMATTRS_MESSAGING_OPERATION] === + MESSAGINGOPERATIONVALUES_PROCESS ); expect(processSpans.length).toBe(2); expect(processSpans[0].parentSpanId).toStrictEqual( @@ -382,30 +392,24 @@ describe('SQS', () => { const [span] = getTestSpans(); // make sure we have the general aws attributes: - expect(span.attributes[SemanticAttributes.RPC_SYSTEM]).toEqual('aws-api'); - expect(span.attributes[SemanticAttributes.RPC_METHOD]).toEqual( - 'SendMessage' - ); - expect(span.attributes[SemanticAttributes.RPC_SERVICE]).toEqual('SQS'); + expect(span.attributes[SEMATTRS_RPC_SYSTEM]).toEqual('aws-api'); + expect(span.attributes[SEMATTRS_RPC_METHOD]).toEqual('SendMessage'); + expect(span.attributes[SEMATTRS_RPC_SERVICE]).toEqual('SQS'); expect(span.attributes[AttributeNames.AWS_REGION]).toEqual(region); // custom messaging attributes - expect(span.attributes[SemanticAttributes.MESSAGING_SYSTEM]).toEqual( - 'aws.sqs' + expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual('aws.sqs'); + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND]).toEqual( + MESSAGINGDESTINATIONKINDVALUES_QUEUE ); - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.QUEUE); - expect(span.attributes[SemanticAttributes.MESSAGING_DESTINATION]).toEqual( + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( QueueName ); - expect(span.attributes[SemanticAttributes.MESSAGING_URL]).toEqual( - params.QueueUrl - ); - expect(span.attributes[SemanticAttributes.MESSAGING_MESSAGE_ID]).toEqual( + expect(span.attributes[SEMATTRS_MESSAGING_URL]).toEqual(params.QueueUrl); + expect(span.attributes[SEMATTRS_MESSAGING_MESSAGE_ID]).toEqual( response.MessageId ); - expect(span.attributes[SemanticAttributes.HTTP_STATUS_CODE]).toEqual(200); + expect(span.attributes[SEMATTRS_HTTP_STATUS_CODE]).toEqual(200); }); it('sqsProcessHook called and add message attribute to span', async () => { @@ -435,8 +439,8 @@ describe('SQS', () => { const processSpans = getTestSpans().filter( s => - s.attributes[SemanticAttributes.MESSAGING_OPERATION] === - MessagingOperationValues.PROCESS + s.attributes[SEMATTRS_MESSAGING_OPERATION] === + MESSAGINGOPERATIONVALUES_PROCESS ); expect(processSpans.length).toBe(2); expect( @@ -459,8 +463,8 @@ describe('SQS', () => { ); const processSpans = getTestSpans().filter( s => - s.attributes[SemanticAttributes.MESSAGING_OPERATION] === - MessagingOperationValues.PROCESS + s.attributes[SEMATTRS_MESSAGING_OPERATION] === + MESSAGINGOPERATIONVALUES_PROCESS ); expect(processSpans.length).toBe(2); }); @@ -488,8 +492,8 @@ describe('SQS', () => { const processSpans = getTestSpans().filter( s => - s.attributes[SemanticAttributes.MESSAGING_OPERATION] === - MessagingOperationValues.PROCESS + s.attributes[SEMATTRS_MESSAGING_OPERATION] === + MESSAGINGOPERATIONVALUES_PROCESS ); expect(processSpans.length).toBe(2); expect(processSpans[0].status.code).toStrictEqual(SpanStatusCode.UNSET); @@ -514,7 +518,7 @@ describe('SQS', () => { expect(spans.length).toBe(1); // Spot check a single attribute as a sanity check. - expect(spans[0].attributes[SemanticAttributes.RPC_METHOD]).toEqual( + expect(spans[0].attributes[SEMATTRS_RPC_METHOD]).toEqual( 'SendMessageBatch' ); }); From 46b67752b001d428a1f5c315ca287300e9444dc7 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Wed, 24 Apr 2024 22:03:15 -0700 Subject: [PATCH 057/121] test(instr-document-load): fix test to allow missing network span events (#2145) The change in https://github.com/open-telemetry/opentelemetry-js/pull/4486 means that a addSpanNetworkEvent() in v1.24.0 and later might get dropped -- if its time value is before the fetchStart time. Typically this happens if the event time value is 0. --- .../test/documentLoad.test.ts | 59 ++++++++++--------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/plugins/web/opentelemetry-instrumentation-document-load/test/documentLoad.test.ts b/plugins/web/opentelemetry-instrumentation-document-load/test/documentLoad.test.ts index 3dbf64dbe7..a0aba71c3e 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/test/documentLoad.test.ts +++ b/plugins/web/opentelemetry-instrumentation-document-load/test/documentLoad.test.ts @@ -555,43 +555,44 @@ describe('DocumentLoad Instrumentation', () => { assert.strictEqual(rootSpan.attributes['http.user_agent'], userAgent); ensureNetworkEventsExists(fsEvents); + assert.strictEqual(fsEvents.length, 8); - assert.strictEqual(rsEvents[0].name, PTN.FETCH_START); - assert.strictEqual(rsEvents[1].name, PTN.UNLOAD_EVENT_START); - assert.strictEqual(rsEvents[2].name, PTN.UNLOAD_EVENT_END); - assert.strictEqual(rsEvents[3].name, PTN.DOM_INTERACTIVE); - assert.strictEqual( - rsEvents[4].name, - PTN.DOM_CONTENT_LOADED_EVENT_START - ); - assert.strictEqual(rsEvents[5].name, PTN.DOM_CONTENT_LOADED_EVENT_END); - assert.strictEqual(rsEvents[6].name, PTN.DOM_COMPLETE); - assert.strictEqual(rsEvents[7].name, PTN.LOAD_EVENT_START); - assert.strictEqual(rsEvents[8].name, PTN.LOAD_EVENT_END); + const rsEventNames = rsEvents.map(e => e.name); + // Allow the unloadEvent{Start,End} events to be missing. Tests that + // are simulating a fallback to window.performance.timing are using + // values (entriesFallback) for that result in those network span + // events being dropped after https://github.com/open-telemetry/opentelemetry-js/pull/4486 + // (@opentelemetry/sdk-trace-web@1.24.0). + const expectedRsEventNames = + rsEventNames[1] === PTN.UNLOAD_EVENT_START + ? [ + PTN.FETCH_START, + PTN.UNLOAD_EVENT_START, + PTN.UNLOAD_EVENT_END, + PTN.DOM_INTERACTIVE, + PTN.DOM_CONTENT_LOADED_EVENT_START, + PTN.DOM_CONTENT_LOADED_EVENT_END, + PTN.DOM_COMPLETE, + PTN.LOAD_EVENT_START, + PTN.LOAD_EVENT_END, + ] + : [ + PTN.FETCH_START, + PTN.DOM_INTERACTIVE, + PTN.DOM_CONTENT_LOADED_EVENT_START, + PTN.DOM_CONTENT_LOADED_EVENT_END, + PTN.DOM_COMPLETE, + PTN.LOAD_EVENT_START, + PTN.LOAD_EVENT_END, + ]; + assert.deepStrictEqual(rsEventNames, expectedRsEventNames); - assert.strictEqual(fsEvents.length, 8); - assert.strictEqual(rsEvents.length, 9); assert.strictEqual(exporter.getFinishedSpans().length, 2); done(); }); }); } - describe('when navigation entries types are NOT available then fallback to "performance.timing"', () => { - const sandbox = sinon.createSandbox(); - beforeEach(() => { - sandbox.stub(window.performance, 'getEntriesByType').value(undefined); - sandbox.stub(window.performance, 'timing').get(() => { - return entriesFallback; - }); - }); - afterEach(() => { - sandbox.restore(); - }); - - shouldExportCorrectSpan(); - }); - describe('when getEntriesByType is not defined then fallback to "performance.timing"', () => { const sandbox = sinon.createSandbox(); beforeEach(() => { From 80cbee73130c65c8ccd78384485a7be8d2a4a84b Mon Sep 17 00:00:00 2001 From: Amir Blum Date: Thu, 25 Apr 2024 11:20:57 +0300 Subject: [PATCH 058/121] chore: experimental 0.51.0, remove instrumentations generic type to align with upstream (#2091) * chore: remove instrumentations generic type to align with upstream * fix: lint * chore: update core to 0.51.0 * revert: redundant any type * fix: merged issue * fix: apply original types from generics * revert: cucumber testing * fix: tedious import types --------- Co-authored-by: Trent Mick --- .../package.json | 2 +- .../auto-instrumentations-node/package.json | 8 +- .../auto-instrumentations-web/package.json | 6 +- package-lock.json | 930 +++++++++--------- .../opentelemetry-test-utils/package.json | 4 +- packages/winston-transport/package.json | 2 +- .../node/instrumentation-amqplib/package.json | 2 +- .../instrumentation-cucumber/package.json | 2 +- .../src/instrumentation.ts | 12 +- .../instrumentation-dataloader/package.json | 2 +- .../src/instrumentation.ts | 5 +- plugins/node/instrumentation-fs/package.json | 2 +- .../instrumentation-fs/src/instrumentation.ts | 10 +- .../instrumentation-lru-memoizer/package.json | 2 +- .../src/instrumentation.ts | 4 +- .../instrumentation-mongoose/package.json | 2 +- .../instrumentation-mongoose/src/mongoose.ts | 6 +- .../instrumentation-runtime-node/package.json | 2 +- .../instrumentation-socket.io/package.json | 2 +- .../src/socket.io.ts | 122 ++- .../node/instrumentation-tedious/package.json | 2 +- .../src/instrumentation.ts | 10 +- .../node/instrumentation-undici/package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../src/aws-sdk.ts | 23 +- .../package.json | 6 +- .../src/instrumentation.ts | 6 +- .../package.json | 2 +- .../src/instrumentation.ts | 2 +- .../package.json | 2 +- .../src/instrumentation.ts | 4 +- .../package.json | 2 +- .../src/instrumentation.ts | 18 +- .../src/internal-types.ts | 4 - .../package.json | 2 +- .../src/instrumentation.ts | 6 +- .../package.json | 4 +- .../src/instrumentation.ts | 2 +- .../package.json | 2 +- .../src/instrumentation.ts | 8 +- .../package.json | 2 +- .../src/instrumentation.ts | 24 +- .../package.json | 2 +- .../src/instrumentation.ts | 6 +- .../package.json | 6 +- .../src/instrumentation.ts | 6 +- .../package.json | 2 +- .../src/instrumentation.ts | 10 +- .../package.json | 4 +- .../src/instrumentation.ts | 4 +- .../package.json | 2 +- .../src/instrumentation.ts | 8 +- .../package.json | 2 +- .../src/instrumentation.ts | 16 +- .../package.json | 2 +- .../src/instrumentation.ts | 10 +- .../package.json | 2 +- .../src/instrumentation.ts | 4 +- .../package.json | 2 +- .../src/instrumentation.ts | 8 +- .../package.json | 2 +- .../src/instrumentation.ts | 13 +- .../src/internal-types.ts | 4 - .../package.json | 2 +- .../src/instrumentation.ts | 10 +- .../package.json | 2 +- .../src/instrumentation.ts | 2 +- .../package.json | 2 +- .../src/instrumentation.ts | 12 +- .../package.json | 2 +- .../src/instrumentation.ts | 2 +- .../package.json | 2 +- .../src/instrumentation.ts | 6 +- .../package.json | 2 +- .../src/instrumentation.ts | 6 +- .../package.json | 4 +- .../src/instrumentation.ts | 18 +- .../package.json | 2 +- .../src/instrumentation.ts | 2 +- .../package.json | 2 +- .../package.json | 4 +- .../src/instrumentation.ts | 2 +- 83 files changed, 717 insertions(+), 746 deletions(-) diff --git a/detectors/node/opentelemetry-resource-detector-instana/package.json b/detectors/node/opentelemetry-resource-detector-instana/package.json index 2bc2b34f36..e8fc0b716b 100644 --- a/detectors/node/opentelemetry-resource-detector-instana/package.json +++ b/detectors/node/opentelemetry-resource-detector-instana/package.json @@ -39,7 +39,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/sdk-node": "^0.50.0", + "@opentelemetry/sdk-node": "^0.51.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/semver": "7.5.3", diff --git a/metapackages/auto-instrumentations-node/package.json b/metapackages/auto-instrumentations-node/package.json index e8c3bbe6b8..e1814cf072 100644 --- a/metapackages/auto-instrumentations-node/package.json +++ b/metapackages/auto-instrumentations-node/package.json @@ -49,7 +49,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/instrumentation-amqplib": "^0.36.0", "@opentelemetry/instrumentation-aws-lambda": "^0.40.0", "@opentelemetry/instrumentation-aws-sdk": "^0.40.0", @@ -64,9 +64,9 @@ "@opentelemetry/instrumentation-fs": "^0.11.0", "@opentelemetry/instrumentation-generic-pool": "^0.35.0", "@opentelemetry/instrumentation-graphql": "^0.39.0", - "@opentelemetry/instrumentation-grpc": "^0.50.0", + "@opentelemetry/instrumentation-grpc": "^0.51.0", "@opentelemetry/instrumentation-hapi": "^0.36.0", - "@opentelemetry/instrumentation-http": "^0.50.0", + "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/instrumentation-ioredis": "^0.39.0", "@opentelemetry/instrumentation-knex": "^0.35.0", "@opentelemetry/instrumentation-koa": "^0.39.0", @@ -92,7 +92,7 @@ "@opentelemetry/resource-detector-container": "^0.3.8", "@opentelemetry/resource-detector-gcp": "^0.29.8", "@opentelemetry/resources": "^1.12.0", - "@opentelemetry/sdk-node": "^0.50.0" + "@opentelemetry/sdk-node": "^0.51.0" }, "files": [ "build/src/**/*.js", diff --git a/metapackages/auto-instrumentations-web/package.json b/metapackages/auto-instrumentations-web/package.json index 61e875742f..d733b95e2d 100644 --- a/metapackages/auto-instrumentations-web/package.json +++ b/metapackages/auto-instrumentations-web/package.json @@ -61,11 +61,11 @@ "webpack-merge": "5.8.0" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/instrumentation-document-load": "^0.37.0", - "@opentelemetry/instrumentation-fetch": "^0.50.0", + "@opentelemetry/instrumentation-fetch": "^0.51.0", "@opentelemetry/instrumentation-user-interaction": "^0.37.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.50.0" + "@opentelemetry/instrumentation-xml-http-request": "^0.51.0" }, "files": [ "build/src/**/*.js", diff --git a/package-lock.json b/package-lock.json index b85ccf58fb..331b9eaeed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -255,7 +255,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/sdk-node": "^0.50.0", + "@opentelemetry/sdk-node": "^0.51.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/semver": "7.5.3", @@ -284,7 +284,7 @@ "version": "0.44.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/instrumentation-amqplib": "^0.36.0", "@opentelemetry/instrumentation-aws-lambda": "^0.40.0", "@opentelemetry/instrumentation-aws-sdk": "^0.40.0", @@ -299,9 +299,9 @@ "@opentelemetry/instrumentation-fs": "^0.11.0", "@opentelemetry/instrumentation-generic-pool": "^0.35.0", "@opentelemetry/instrumentation-graphql": "^0.39.0", - "@opentelemetry/instrumentation-grpc": "^0.50.0", + "@opentelemetry/instrumentation-grpc": "^0.51.0", "@opentelemetry/instrumentation-hapi": "^0.36.0", - "@opentelemetry/instrumentation-http": "^0.50.0", + "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/instrumentation-ioredis": "^0.39.0", "@opentelemetry/instrumentation-knex": "^0.35.0", "@opentelemetry/instrumentation-koa": "^0.39.0", @@ -327,7 +327,7 @@ "@opentelemetry/resource-detector-container": "^0.3.8", "@opentelemetry/resource-detector-gcp": "^0.29.8", "@opentelemetry/resources": "^1.12.0", - "@opentelemetry/sdk-node": "^0.50.0" + "@opentelemetry/sdk-node": "^0.51.0" }, "devDependencies": { "@opentelemetry/api": "^1.4.1", @@ -353,11 +353,11 @@ "version": "0.38.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/instrumentation-document-load": "^0.37.0", - "@opentelemetry/instrumentation-fetch": "^0.50.0", + "@opentelemetry/instrumentation-fetch": "^0.51.0", "@opentelemetry/instrumentation-user-interaction": "^0.37.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.50.0" + "@opentelemetry/instrumentation-xml-http-request": "^0.51.0" }, "devDependencies": { "@babel/core": "7.22.17", @@ -8197,9 +8197,9 @@ } }, "node_modules/@opentelemetry/api-logs": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.50.0.tgz", - "integrity": "sha512-JdZuKrhOYggqOpUljAq4WWNi5nB10PmgoF0y2CvedLGXd0kSawb/UBnWT8gg1ND3bHCNHStAIVT0ELlxJJRqrA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.51.0.tgz", + "integrity": "sha512-m/jtfBPEIXS1asltl8fPQtO3Sb1qMpuL61unQajUmM8zIxeMF1AlqzWXM3QedcYgTTFiJCew5uJjyhpmqhc0+g==", "dependencies": { "@opentelemetry/api": "^1.0.0" }, @@ -8216,9 +8216,9 @@ "link": true }, "node_modules/@opentelemetry/context-async-hooks": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.23.0.tgz", - "integrity": "sha512-wazGJZDRevibOJ+VgyrT+9+8sybZAxpZx2G7vy30OAtk92OpZCg7HgNxT11NUx0VBDWcRx1dOatMYGOVplQ7QA==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.24.0.tgz", + "integrity": "sha512-s7xaQ9ifDpJvwbWRLkZD/J5hY35w+MECm4TQUkg6szRcny9lf6oVhWij4w3JJFQgvHQMXU7oXOpX8Z05HxV/8g==", "engines": { "node": ">=14" }, @@ -8227,11 +8227,11 @@ } }, "node_modules/@opentelemetry/context-zone": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone/-/context-zone-1.23.0.tgz", - "integrity": "sha512-7piNTrpH+gZNMDDOHIJXCSwp0Xslh3R96HWH5HwXw+4PykR4+jVoXvd6jziQxudX9rFAfu2B64A10DHs4ZWrfA==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone/-/context-zone-1.24.0.tgz", + "integrity": "sha512-Znb6fvmqZy+4ZC63vvf9qktXakTlLOLeBsMizR5E1G/1cM8LKUVR/JJUws+A4QSAY95Rzldi05aqxoc+YUVVKw==", "dependencies": { - "@opentelemetry/context-zone-peer-dep": "1.23.0", + "@opentelemetry/context-zone-peer-dep": "1.24.0", "zone.js": "^0.11.0 || ^0.13.0 || ^0.14.0" }, "engines": { @@ -8239,9 +8239,9 @@ } }, "node_modules/@opentelemetry/context-zone-peer-dep": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-1.23.0.tgz", - "integrity": "sha512-3ia5w2y3CGHIhMSggttliGbeRBWclIyMMXdfRCcit1NHg1ocieA9qYxyUEetbOvPrQpoti3O3k+5eyQUv7r8nw==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-1.24.0.tgz", + "integrity": "sha512-znNlicjfxRqepQdOZGUN3RYSs+QGoEiGI+cjILBYM4KdEXpoXgxt87l72b0UYhH7YI/uK0TVHse99D0ER9ODAw==", "engines": { "node": ">=14" }, @@ -8255,11 +8255,11 @@ "link": true }, "node_modules/@opentelemetry/core": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.23.0.tgz", - "integrity": "sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.0.tgz", + "integrity": "sha512-FP2oN7mVPqcdxJDTTnKExj4mi91EH+DNuArKfHTjPuJWe2K1JfMIVXNfahw1h3onJxQnxS8K0stKkogX05s+Aw==", "dependencies": { - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/semantic-conventions": "1.24.0" }, "engines": { "node": ">=14" @@ -8269,13 +8269,13 @@ } }, "node_modules/@opentelemetry/exporter-jaeger": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.23.0.tgz", - "integrity": "sha512-9GjZPS9kR4nC0ApOFQtj2xwYAGhQ3bO6KPx27DLqCOiso27OlJVUgvAtB3i+1On23OTcjfPtKbNo4a2npmV27A==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.24.0.tgz", + "integrity": "sha512-mD28eBrdth937QGU6zgn+6fYBywUaYxLJwANREnE7XS8pHP/Hjxpiy4nb9yIzQ2DqC8Uq7yEnc8ah2pH45B9ZQ==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0", "jaeger-client": "^3.15.0" }, "engines": { @@ -8286,16 +8286,16 @@ } }, "node_modules/@opentelemetry/exporter-trace-otlp-grpc": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.50.0.tgz", - "integrity": "sha512-w/NF4TrwHxx+Uz1M0rCOSVr6KgcoQPv3zF9JRqcebY2euD7ddWnLP0hE8JavyA1uq4UchnMp9faAk9n7hTCePw==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.51.0.tgz", + "integrity": "sha512-xQpxKzS8ZnxYCa1v+3EKWhwMrSK3+RezpJ+AEKaP2pf2QbLfHt7kKfSn7niR2u3A1Tbe2aC7Ptt9+MafhThOOQ==", "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.23.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.50.0", - "@opentelemetry/otlp-transformer": "0.50.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.51.0", + "@opentelemetry/otlp-transformer": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" }, "engines": { "node": ">=14" @@ -8305,15 +8305,15 @@ } }, "node_modules/@opentelemetry/exporter-trace-otlp-http": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.50.0.tgz", - "integrity": "sha512-L7OtIMT7MsFqkmhbQlPBGRXt7152VN5esHpQEJYIBFedOEo3Da+yHpu5ojMZtPzpIvSpB5Xr5lnJUjJCbkttCA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.51.0.tgz", + "integrity": "sha512-zODqnLZmPOxj9CarFv0TrVlx9mgj0TfCMCiUiTdNi9iA2rgdKVo+bjJjpYF6LCTJOQCR5TScAUCKyzwkgDI+iA==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/otlp-exporter-base": "0.50.0", - "@opentelemetry/otlp-transformer": "0.50.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", + "@opentelemetry/otlp-transformer": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" }, "engines": { "node": ">=14" @@ -8323,16 +8323,16 @@ } }, "node_modules/@opentelemetry/exporter-trace-otlp-proto": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.50.0.tgz", - "integrity": "sha512-vavD9Ow6yOLiD+ocuS/oeciCsXNdsN41aYUrEljNaLXogvnkfMhJ+JLAhOnRSpzlVtRp7Ciw2BYGdYSebR0OsA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.51.0.tgz", + "integrity": "sha512-Fi7r0iMqGoFCQQ+WY0pYOWp395vdinZJIkYKnNbnreHxAN/kVDBl2FxbV3DeOKuRxEY08Gyb9ggPf+Zrqp7l/w==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/otlp-exporter-base": "0.50.0", - "@opentelemetry/otlp-proto-exporter-base": "0.50.0", - "@opentelemetry/otlp-transformer": "0.50.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", + "@opentelemetry/otlp-proto-exporter-base": "0.51.0", + "@opentelemetry/otlp-transformer": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" }, "engines": { "node": ">=14" @@ -8342,14 +8342,14 @@ } }, "node_modules/@opentelemetry/exporter-zipkin": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.23.0.tgz", - "integrity": "sha512-2LOGvNUGONuIcWhynFaJorVyqv03uZkURScciLmOxvBf2lWTNPEj77br1dCpShIWBM+YlrH7Tc+JXAs+GC7DqA==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.24.0.tgz", + "integrity": "sha512-QeGv0PHONswmu567pf9QliJ6s6DgCu5+ziF+soNS1LTcr1VRRVLViYLmGxmzDFUC48sjNTu7sumcKT0nJXsGBw==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" }, "engines": { "node": ">=14" @@ -8367,11 +8367,11 @@ "link": true }, "node_modules/@opentelemetry/instrumentation": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.50.0.tgz", - "integrity": "sha512-bhGhbJiZKpuu7wTaSak4hyZcFPlnDeuSF/2vglze8B4w2LubcSbbOnkVTzTs5SXtzh4Xz8eRjaNnAm+u2GYufQ==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.51.0.tgz", + "integrity": "sha512-Eg/+Od5bEvzpvZQGhvMyKIkrzB9S7jW+6z9LHEI2VXhl/GrqQ3oBqlzJt4tA6pGtxRmqQWKWGM1wAbwDdW/gUA==", "dependencies": { - "@opentelemetry/api-logs": "0.50.0", + "@opentelemetry/api-logs": "0.51.0", "@types/shimmer": "^1.0.2", "import-in-the-middle": "1.7.1", "require-in-the-middle": "^7.1.1", @@ -8434,14 +8434,14 @@ "link": true }, "node_modules/@opentelemetry/instrumentation-fetch": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.50.0.tgz", - "integrity": "sha512-CayteluGJbrfDvzEFQ0EWqLFkNAcO9H7nfDHptZjtonBpJRWF170XZoMkJVC2bxp0lIVwyuw6WlnGVRSNwEtKA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.51.0.tgz", + "integrity": "sha512-dB9wisB2+wyh0wUB1RFNinCS4TqJ7QMVc4jNzy3JCMJudwFWI/stU10DgZ3vwFQNUEBUIz9QmEQSFud7lsvB2w==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/instrumentation": "0.50.0", - "@opentelemetry/sdk-trace-web": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/instrumentation": "0.51.0", + "@opentelemetry/sdk-trace-web": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" }, "engines": { "node": ">=14" @@ -8463,12 +8463,12 @@ "link": true }, "node_modules/@opentelemetry/instrumentation-grpc": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.50.0.tgz", - "integrity": "sha512-/ZFuvHtrHyxfRJX5CJ8yPKokAIcvTbIJAoR4AN+gBq1YqecWuCr4XG52p5YU5qDrbwOBtShOrC8d4GdFZOky6Q==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.51.0.tgz", + "integrity": "sha512-Wfhs9e1Hi4nnULLqzt9s2M6+Tz52EkKj6uZnj9ZL3coldlZiP+WmvuUNepds7jcBJg/qDBjnEe96fThPuO7ddA==", "dependencies": { - "@opentelemetry/instrumentation": "0.50.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/instrumentation": "0.51.0", + "@opentelemetry/semantic-conventions": "1.24.0" }, "engines": { "node": ">=14" @@ -8482,13 +8482,13 @@ "link": true }, "node_modules/@opentelemetry/instrumentation-http": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.50.0.tgz", - "integrity": "sha512-bsd6Nv0FtN9C6M6vX/kgPzvJY9UhJc4CZZNvqDbsfVQv3/MWvPrYgthf41AhrehqeDnpfn/QGzNKtdWUduGanQ==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.51.0.tgz", + "integrity": "sha512-6VsGPBnU6iVKWhVBnuRpwrmiHfxt8EYrqfnH2glfsMpsn4xy+O6U0yGlggPLhoYeOVafV3h70EEk5MU0tpsbiw==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/instrumentation": "0.50.0", - "@opentelemetry/semantic-conventions": "1.23.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/instrumentation": "0.51.0", + "@opentelemetry/semantic-conventions": "1.24.0", "semver": "^7.5.2" }, "engines": { @@ -8595,14 +8595,14 @@ "link": true }, "node_modules/@opentelemetry/instrumentation-xml-http-request": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.50.0.tgz", - "integrity": "sha512-o9z6SDQByqc3GvmUcy6Npt/SAIrv2Pk0Hm0Hl54B3Ny8WUrTsrlt6MULx8d+EjuifE4uVo8op8DekmvKJ1FHoQ==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.51.0.tgz", + "integrity": "sha512-KgLO2qx1z1Wn9NeJgrgNukd10ssK1QqxODwdeBJFO1BaP9sVVargpupYowlDKUL5I3oWOEqi/Oxxdh/fbEsJtw==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/instrumentation": "0.50.0", - "@opentelemetry/sdk-trace-web": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/instrumentation": "0.51.0", + "@opentelemetry/sdk-trace-web": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" }, "engines": { "node": ">=14" @@ -8612,11 +8612,11 @@ } }, "node_modules/@opentelemetry/otlp-exporter-base": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.50.0.tgz", - "integrity": "sha512-JUmjmrCmE1/fc4LjCQMqLfudgSl5OpUkzx7iA94b4jgeODM7zWxUoVXL7/CT7fWf47Cn+pmKjMvTCSESqZZ3mA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.51.0.tgz", + "integrity": "sha512-hR4c9vWVz1QgzCBSyy9zSDkvfTgaK96E6/tfVP6O4dzdZW9HqWimA3lXV/KXadEGqShvM4GToz9EHp2A5RU5bQ==", "dependencies": { - "@opentelemetry/core": "1.23.0" + "@opentelemetry/core": "1.24.0" }, "engines": { "node": ">=14" @@ -8626,13 +8626,13 @@ } }, "node_modules/@opentelemetry/otlp-grpc-exporter-base": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.50.0.tgz", - "integrity": "sha512-J500AczSD7xEsjXpwNzSh5HQqxW73PT3CCNsi1VEWCE+8UPgVfkHYIGRHGoch35DV+CMe1svbi7gAk3e5eCSVA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.51.0.tgz", + "integrity": "sha512-oTRtDvvB0bTRTBVrvKA/oM1gIAqQ6DVQS07pvqiL1cZS8wBrGgpw+2iTd0nV661Y/MhDn/kNWp8lRhMEIKN9bw==", "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.23.0", - "@opentelemetry/otlp-exporter-base": "0.50.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", "protobufjs": "^7.2.3" }, "engines": { @@ -8643,12 +8643,12 @@ } }, "node_modules/@opentelemetry/otlp-proto-exporter-base": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.50.0.tgz", - "integrity": "sha512-hlbn3eZbhxoK79Sq1ddj1f7qcx+PzsPQC/SFpJvaWgTaqacCbqJmpzWDKfRRCAC7iGX2Hj/sgpf8vysazqyMOw==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.51.0.tgz", + "integrity": "sha512-WDANDLSUh11Gu5o6iCzmjZraIv5bK8z1L/t6lxQ2NeEKiKUPo5pVOBBQQC/yAQU2yeqkiO1GRCieH+XahZf60A==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/otlp-exporter-base": "0.50.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", "protobufjs": "^7.2.3" }, "engines": { @@ -8659,16 +8659,16 @@ } }, "node_modules/@opentelemetry/otlp-transformer": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.50.0.tgz", - "integrity": "sha512-s0sl1Yfqd5q1Kjrf6DqXPWzErL+XHhrXOfejh4Vc/SMTNqC902xDsC8JQxbjuramWt/+hibfguIvi7Ns8VLolA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.51.0.tgz", + "integrity": "sha512-ylLgx2xumVoSefDHP9GMAU/LG+TU3+8eacVDXV5o1RqWxsdVOaQmCTY0XyDgeRTn6hIOVAq/HHQbRq3iWOrt2A==", "dependencies": { - "@opentelemetry/api-logs": "0.50.0", - "@opentelemetry/core": "1.23.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-logs": "0.50.0", - "@opentelemetry/sdk-metrics": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0" + "@opentelemetry/api-logs": "0.51.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-logs": "0.51.0", + "@opentelemetry/sdk-metrics": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" }, "engines": { "node": ">=14" @@ -8686,25 +8686,25 @@ "link": true }, "node_modules/@opentelemetry/propagator-aws-xray": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-aws-xray/-/propagator-aws-xray-1.3.1.tgz", - "integrity": "sha512-6fDMzFlt5r6VWv7MUd0eOpglXPFqykW8CnOuUxJ1VZyLy6mV1bzBlzpsqEmhx1bjvZYvH93vhGkQZqrm95mlrQ==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-aws-xray/-/propagator-aws-xray-1.24.0.tgz", + "integrity": "sha512-rcuMtEOTZC7TW84tws1QLUVRElrGSbBJwK0b+qa56zJULDiUIiUpS+dSzO+aUchg7MtTJBZSG5OPsfsKpGgNig==", "dependencies": { - "@opentelemetry/core": "^1.0.0" + "@opentelemetry/core": "1.24.0" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": "^1.0.0" + "@opentelemetry/api": ">=1.0.0 <1.9.0" } }, "node_modules/@opentelemetry/propagator-b3": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.23.0.tgz", - "integrity": "sha512-cZ6rl8y2bdxYQ4e+zP2CQ+QmuPebaLBLO1skjFpj3eEu7zar+6hBzUP3llMOUupkQeQSwXz+4c8dZ26OhYfG/g==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.24.0.tgz", + "integrity": "sha512-7TMIDE4+NO5vnkor+zned42wqca+hmhW5gWKhmYjUHC5B5uojo1PvtmBrd7kigFu96XvL4ZUWVzibWRWIQ/++Q==", "dependencies": { - "@opentelemetry/core": "1.23.0" + "@opentelemetry/core": "1.24.0" }, "engines": { "node": ">=14" @@ -8722,11 +8722,11 @@ "link": true }, "node_modules/@opentelemetry/propagator-jaeger": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.23.0.tgz", - "integrity": "sha512-6iArixfgIl3ZgzeltQ5jyiKbjZygM+MbM84pXi1HL0Qs4x4Ck5rM6wEtjhZffFnlDMWEkEqrnM0xF6bTfbiMAQ==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.24.0.tgz", + "integrity": "sha512-r3MX3AmJiUeiWTXSDOdwBeaO+ahvWcFCpuKxmhhsH8Q8LqDnjhNd3krqBh4Qsq9wa0WhWtiQaDs/NOCWoMOlOw==", "dependencies": { - "@opentelemetry/core": "1.23.0" + "@opentelemetry/core": "1.24.0" }, "engines": { "node": ">=14" @@ -8772,12 +8772,12 @@ "link": true }, "node_modules/@opentelemetry/resources": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.23.0.tgz", - "integrity": "sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.24.0.tgz", + "integrity": "sha512-mxC7E7ocUS1tLzepnA7O9/G8G6ZTdjCH2pXme1DDDuCuk6n2/53GADX+GWBuyX0dfIxeMInIbJAdjlfN9GNr6A==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" }, "engines": { "node": ">=14" @@ -8787,12 +8787,12 @@ } }, "node_modules/@opentelemetry/sdk-logs": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.50.0.tgz", - "integrity": "sha512-PeUEupBB29p9nlPNqXoa1PUWNLsZnxG0DCDj3sHqzae+8y76B/A5hvZjg03ulWdnvBLYpnJslqzylG9E0IL87g==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.51.0.tgz", + "integrity": "sha512-K4fMBRFD8hQ6khk0rvYFuo6L9ymeGgByir6BcuFIgQuQ00OhYwBi9AruZz5V733Ejq7P8ObR3YyubkOUIbeVAw==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/resources": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0" }, "engines": { "node": ">=14" @@ -8803,12 +8803,12 @@ } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.23.0.tgz", - "integrity": "sha512-4OkvW6+wST4h6LFG23rXSTf6nmTf201h9dzq7bE0z5R9ESEVLERZz6WXwE7PSgg1gdjlaznm1jLJf8GttypFDg==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.24.0.tgz", + "integrity": "sha512-4tJ+E6N019OZVB/nUW/LoK9xHxfeh88TCoaTqHeLBE9wLYfi6irWW6J9cphMav7J8Qk0D5b7/RM4VEY4dArWOA==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/resources": "1.23.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", "lodash.merge": "^4.6.2" }, "engines": { @@ -8819,23 +8819,23 @@ } }, "node_modules/@opentelemetry/sdk-node": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.50.0.tgz", - "integrity": "sha512-LhIXHnvcnhRYcPwG9VG4G6lJ7x4ElYF6UYHHmXA7e4ZWzSUEFmAPfR1IBWv358aD1KwffcEBu7J6zeAR7lPZag==", - "dependencies": { - "@opentelemetry/api-logs": "0.50.0", - "@opentelemetry/core": "1.23.0", - "@opentelemetry/exporter-trace-otlp-grpc": "0.50.0", - "@opentelemetry/exporter-trace-otlp-http": "0.50.0", - "@opentelemetry/exporter-trace-otlp-proto": "0.50.0", - "@opentelemetry/exporter-zipkin": "1.23.0", - "@opentelemetry/instrumentation": "0.50.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-logs": "0.50.0", - "@opentelemetry/sdk-metrics": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0", - "@opentelemetry/sdk-trace-node": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.51.0.tgz", + "integrity": "sha512-MrPXDQsTAj3lcY8YUCjb7dvSXVZ5jG6wmjD2LB68V1rsLBdP8j70jsI9GaKijY7QB6psbLq6apO1vYeim5U7aw==", + "dependencies": { + "@opentelemetry/api-logs": "0.51.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.51.0", + "@opentelemetry/exporter-trace-otlp-http": "0.51.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.51.0", + "@opentelemetry/exporter-zipkin": "1.24.0", + "@opentelemetry/instrumentation": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-logs": "0.51.0", + "@opentelemetry/sdk-metrics": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "@opentelemetry/sdk-trace-node": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" }, "engines": { "node": ">=14" @@ -8845,13 +8845,13 @@ } }, "node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.23.0.tgz", - "integrity": "sha512-PzBmZM8hBomUqvCddF/5Olyyviayka44O5nDWq673np3ctnvwMOvNrsUORZjKja1zJbwEuD9niAGbnVrz3jwRQ==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.24.0.tgz", + "integrity": "sha512-H9sLETZ4jw9UJ3totV8oM5R0m4CW0ZIOLfp4NV3g0CM8HD5zGZcaW88xqzWDgiYRpctFxd+WmHtGX/Upoa2vRg==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" }, "engines": { "node": ">=14" @@ -8861,15 +8861,15 @@ } }, "node_modules/@opentelemetry/sdk-trace-node": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.23.0.tgz", - "integrity": "sha512-dwnin5Go2r6VzJZkVc9JBPupssWp7j2EFto+S7qRkwQ00WDykWeq3x2Skk7I1Jr448FeBSvGCQVPgV5e6s6O3w==", - "dependencies": { - "@opentelemetry/context-async-hooks": "1.23.0", - "@opentelemetry/core": "1.23.0", - "@opentelemetry/propagator-b3": "1.23.0", - "@opentelemetry/propagator-jaeger": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.24.0.tgz", + "integrity": "sha512-QgByHmM9uloTpcYEEyW9YJEIMKHFSIM677RH9pJPWWwtM2NQFbEp/8HIJw80Ymtaz6cAxg1Kay1ByqIVzq3t5g==", + "dependencies": { + "@opentelemetry/context-async-hooks": "1.24.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/propagator-b3": "1.24.0", + "@opentelemetry/propagator-jaeger": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", "semver": "^7.5.2" }, "engines": { @@ -8880,13 +8880,13 @@ } }, "node_modules/@opentelemetry/sdk-trace-web": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-1.23.0.tgz", - "integrity": "sha512-tx9N3hIkd6k567BeujBnpXYdhu3ptYVk0ZkhdcjyQ3I8ZDJ+/JkVtaVNLAuf8hp1buTqNDmxSipALMxEmK2fnw==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-1.24.0.tgz", + "integrity": "sha512-G0q8aZPUhRtO/iw2BkjHeNqCMBf0JQX5VqqiPWXn9u5iRkpeQ6LZrGaiymKWOdEqtXCgM44yrCY/4WoJqR0bjQ==", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" }, "engines": { "node": ">=14" @@ -8896,9 +8896,9 @@ } }, "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.23.0.tgz", - "integrity": "sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.0.tgz", + "integrity": "sha512-yL0jI6Ltuz8R+Opj7jClGrul6pOoYrdfVmzQS4SITXRPH7I5IRZbrwe/6/v8v4WYMa6MYZG480S1+uc/IGfqsA==", "engines": { "node": ">=14" } @@ -36778,9 +36778,9 @@ "dependencies": { "@opentelemetry/core": "^1.0.0", "@opentelemetry/exporter-jaeger": "^1.3.1", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-node": "^0.50.0", + "@opentelemetry/sdk-node": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0" @@ -36802,7 +36802,7 @@ "version": "0.2.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "^0.50.0", + "@opentelemetry/api-logs": "^0.51.0", "winston-transport": "4.*" }, "devDependencies": { @@ -36833,7 +36833,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { @@ -36872,7 +36872,7 @@ "version": "0.5.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -36939,7 +36939,7 @@ "version": "0.8.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -36969,7 +36969,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -36999,7 +36999,7 @@ "version": "0.36.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -37035,7 +37035,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { @@ -37071,7 +37071,7 @@ "version": "0.3.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -37111,7 +37111,7 @@ "version": "0.38.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -37360,7 +37360,7 @@ "version": "0.9.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/tedious": "^4.0.10" }, @@ -37392,7 +37392,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "devDependencies": { "@opentelemetry/api": "^1.7.0", @@ -37423,7 +37423,7 @@ "version": "0.40.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/propagator-aws-xray": "^1.3.1", "@opentelemetry/resources": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -37456,7 +37456,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/propagation-utils": "^0.30.8", "@opentelemetry/semantic-conventions": "^1.22.0" }, @@ -37503,14 +37503,14 @@ "version": "0.37.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "^0.50.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/api-logs": "^0.51.0", + "@opentelemetry/instrumentation": "^0.51.0", "@types/bunyan": "1.8.9" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-logs": "^0.50.0", + "@opentelemetry/sdk-logs": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -37546,7 +37546,7 @@ "version": "0.37.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -37580,7 +37580,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/connect": "3.4.36" }, @@ -37618,7 +37618,7 @@ "version": "0.35.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0", "semver": "^7.5.4" }, @@ -37652,7 +37652,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { @@ -37687,7 +37687,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { @@ -37695,7 +37695,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation-http": "^0.50.0", + "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/express": "4.17.18", @@ -37735,7 +37735,7 @@ "version": "0.35.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -37800,7 +37800,7 @@ "version": "0.39.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -37835,7 +37835,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/hapi__hapi": "20.0.13" }, @@ -37866,7 +37866,7 @@ "version": "0.39.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/semantic-conventions": "^1.0.0" }, @@ -37902,7 +37902,7 @@ "version": "0.35.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { @@ -37933,7 +37933,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/koa": "2.14.0", "@types/koa__router": "12.0.3" @@ -37943,7 +37943,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation-http": "^0.50.0", + "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -37970,7 +37970,7 @@ "version": "0.35.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/memcached": "^2.2.6" }, @@ -38002,7 +38002,7 @@ "version": "0.42.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-metrics": "^1.9.1", "@opentelemetry/semantic-conventions": "^1.22.0" }, @@ -38196,7 +38196,7 @@ "version": "0.37.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mysql": "2.15.22" }, @@ -38229,7 +38229,7 @@ "version": "0.37.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@opentelemetry/sql-common": "^0.40.0" }, @@ -38295,7 +38295,7 @@ "version": "0.36.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -38368,7 +38368,7 @@ "version": "0.35.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { @@ -38398,7 +38398,7 @@ "version": "0.40.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@opentelemetry/sql-common": "^0.40.0", "@types/pg": "8.6.1", @@ -38437,7 +38437,7 @@ "version": "0.37.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -38504,7 +38504,7 @@ "version": "0.38.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/semantic-conventions": "^1.22.0" }, @@ -38538,7 +38538,7 @@ "version": "0.38.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/semantic-conventions": "^1.22.0" }, @@ -38587,7 +38587,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { @@ -38653,7 +38653,7 @@ "version": "0.36.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { @@ -38682,8 +38682,8 @@ "version": "0.36.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "^0.50.0", - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/api-logs": "^0.51.0", + "@opentelemetry/instrumentation": "^0.51.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -38718,7 +38718,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.0.0", "@opentelemetry/sdk-trace-web": "^1.15.0", "@opentelemetry/semantic-conventions": "^1.22.0" @@ -38759,7 +38759,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-web": "^1.8.0" }, "devDependencies": { @@ -38805,7 +38805,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-web": "^1.8.0" }, "devDependencies": { @@ -38813,7 +38813,7 @@ "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-zone-peer-dep": "^1.8.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.50.0", + "@opentelemetry/instrumentation-xml-http-request": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/jquery": "3.5.20", "@types/mocha": "7.0.2", @@ -45463,9 +45463,9 @@ "integrity": "sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==" }, "@opentelemetry/api-logs": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.50.0.tgz", - "integrity": "sha512-JdZuKrhOYggqOpUljAq4WWNi5nB10PmgoF0y2CvedLGXd0kSawb/UBnWT8gg1ND3bHCNHStAIVT0ELlxJJRqrA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.51.0.tgz", + "integrity": "sha512-m/jtfBPEIXS1asltl8fPQtO3Sb1qMpuL61unQajUmM8zIxeMF1AlqzWXM3QedcYgTTFiJCew5uJjyhpmqhc0+g==", "requires": { "@opentelemetry/api": "^1.0.0" } @@ -45474,7 +45474,7 @@ "version": "file:metapackages/auto-instrumentations-node", "requires": { "@opentelemetry/api": "^1.4.1", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/instrumentation-amqplib": "^0.36.0", "@opentelemetry/instrumentation-aws-lambda": "^0.40.0", "@opentelemetry/instrumentation-aws-sdk": "^0.40.0", @@ -45489,9 +45489,9 @@ "@opentelemetry/instrumentation-fs": "^0.11.0", "@opentelemetry/instrumentation-generic-pool": "^0.35.0", "@opentelemetry/instrumentation-graphql": "^0.39.0", - "@opentelemetry/instrumentation-grpc": "^0.50.0", + "@opentelemetry/instrumentation-grpc": "^0.51.0", "@opentelemetry/instrumentation-hapi": "^0.36.0", - "@opentelemetry/instrumentation-http": "^0.50.0", + "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/instrumentation-ioredis": "^0.39.0", "@opentelemetry/instrumentation-knex": "^0.35.0", "@opentelemetry/instrumentation-koa": "^0.39.0", @@ -45517,7 +45517,7 @@ "@opentelemetry/resource-detector-container": "^0.3.8", "@opentelemetry/resource-detector-gcp": "^0.29.8", "@opentelemetry/resources": "^1.12.0", - "@opentelemetry/sdk-node": "^0.50.0", + "@opentelemetry/sdk-node": "^0.51.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -45535,11 +45535,11 @@ "@babel/core": "7.22.17", "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/instrumentation-document-load": "^0.37.0", - "@opentelemetry/instrumentation-fetch": "^0.50.0", + "@opentelemetry/instrumentation-fetch": "^0.51.0", "@opentelemetry/instrumentation-user-interaction": "^0.37.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.50.0", + "@opentelemetry/instrumentation-xml-http-request": "^0.51.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -45572,24 +45572,24 @@ } }, "@opentelemetry/context-async-hooks": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.23.0.tgz", - "integrity": "sha512-wazGJZDRevibOJ+VgyrT+9+8sybZAxpZx2G7vy30OAtk92OpZCg7HgNxT11NUx0VBDWcRx1dOatMYGOVplQ7QA==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.24.0.tgz", + "integrity": "sha512-s7xaQ9ifDpJvwbWRLkZD/J5hY35w+MECm4TQUkg6szRcny9lf6oVhWij4w3JJFQgvHQMXU7oXOpX8Z05HxV/8g==", "requires": {} }, "@opentelemetry/context-zone": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone/-/context-zone-1.23.0.tgz", - "integrity": "sha512-7piNTrpH+gZNMDDOHIJXCSwp0Xslh3R96HWH5HwXw+4PykR4+jVoXvd6jziQxudX9rFAfu2B64A10DHs4ZWrfA==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone/-/context-zone-1.24.0.tgz", + "integrity": "sha512-Znb6fvmqZy+4ZC63vvf9qktXakTlLOLeBsMizR5E1G/1cM8LKUVR/JJUws+A4QSAY95Rzldi05aqxoc+YUVVKw==", "requires": { - "@opentelemetry/context-zone-peer-dep": "1.23.0", + "@opentelemetry/context-zone-peer-dep": "1.24.0", "zone.js": "^0.11.0 || ^0.13.0 || ^0.14.0" } }, "@opentelemetry/context-zone-peer-dep": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-1.23.0.tgz", - "integrity": "sha512-3ia5w2y3CGHIhMSggttliGbeRBWclIyMMXdfRCcit1NHg1ocieA9qYxyUEetbOvPrQpoti3O3k+5eyQUv7r8nw==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-1.24.0.tgz", + "integrity": "sha512-znNlicjfxRqepQdOZGUN3RYSs+QGoEiGI+cjILBYM4KdEXpoXgxt87l72b0UYhH7YI/uK0TVHse99D0ER9ODAw==", "requires": {} }, "@opentelemetry/contrib-test-utils": { @@ -45598,9 +45598,9 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/core": "^1.0.0", "@opentelemetry/exporter-jaeger": "^1.3.1", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-node": "^0.50.0", + "@opentelemetry/sdk-node": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -45609,71 +45609,71 @@ } }, "@opentelemetry/core": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.23.0.tgz", - "integrity": "sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.0.tgz", + "integrity": "sha512-FP2oN7mVPqcdxJDTTnKExj4mi91EH+DNuArKfHTjPuJWe2K1JfMIVXNfahw1h3onJxQnxS8K0stKkogX05s+Aw==", "requires": { - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/semantic-conventions": "1.24.0" } }, "@opentelemetry/exporter-jaeger": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.23.0.tgz", - "integrity": "sha512-9GjZPS9kR4nC0ApOFQtj2xwYAGhQ3bO6KPx27DLqCOiso27OlJVUgvAtB3i+1On23OTcjfPtKbNo4a2npmV27A==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.24.0.tgz", + "integrity": "sha512-mD28eBrdth937QGU6zgn+6fYBywUaYxLJwANREnE7XS8pHP/Hjxpiy4nb9yIzQ2DqC8Uq7yEnc8ah2pH45B9ZQ==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0", "jaeger-client": "^3.15.0" } }, "@opentelemetry/exporter-trace-otlp-grpc": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.50.0.tgz", - "integrity": "sha512-w/NF4TrwHxx+Uz1M0rCOSVr6KgcoQPv3zF9JRqcebY2euD7ddWnLP0hE8JavyA1uq4UchnMp9faAk9n7hTCePw==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.51.0.tgz", + "integrity": "sha512-xQpxKzS8ZnxYCa1v+3EKWhwMrSK3+RezpJ+AEKaP2pf2QbLfHt7kKfSn7niR2u3A1Tbe2aC7Ptt9+MafhThOOQ==", "requires": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.23.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.50.0", - "@opentelemetry/otlp-transformer": "0.50.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.51.0", + "@opentelemetry/otlp-transformer": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" } }, "@opentelemetry/exporter-trace-otlp-http": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.50.0.tgz", - "integrity": "sha512-L7OtIMT7MsFqkmhbQlPBGRXt7152VN5esHpQEJYIBFedOEo3Da+yHpu5ojMZtPzpIvSpB5Xr5lnJUjJCbkttCA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.51.0.tgz", + "integrity": "sha512-zODqnLZmPOxj9CarFv0TrVlx9mgj0TfCMCiUiTdNi9iA2rgdKVo+bjJjpYF6LCTJOQCR5TScAUCKyzwkgDI+iA==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/otlp-exporter-base": "0.50.0", - "@opentelemetry/otlp-transformer": "0.50.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", + "@opentelemetry/otlp-transformer": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" } }, "@opentelemetry/exporter-trace-otlp-proto": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.50.0.tgz", - "integrity": "sha512-vavD9Ow6yOLiD+ocuS/oeciCsXNdsN41aYUrEljNaLXogvnkfMhJ+JLAhOnRSpzlVtRp7Ciw2BYGdYSebR0OsA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.51.0.tgz", + "integrity": "sha512-Fi7r0iMqGoFCQQ+WY0pYOWp395vdinZJIkYKnNbnreHxAN/kVDBl2FxbV3DeOKuRxEY08Gyb9ggPf+Zrqp7l/w==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/otlp-exporter-base": "0.50.0", - "@opentelemetry/otlp-proto-exporter-base": "0.50.0", - "@opentelemetry/otlp-transformer": "0.50.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", + "@opentelemetry/otlp-proto-exporter-base": "0.51.0", + "@opentelemetry/otlp-transformer": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" } }, "@opentelemetry/exporter-zipkin": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.23.0.tgz", - "integrity": "sha512-2LOGvNUGONuIcWhynFaJorVyqv03uZkURScciLmOxvBf2lWTNPEj77br1dCpShIWBM+YlrH7Tc+JXAs+GC7DqA==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.24.0.tgz", + "integrity": "sha512-QeGv0PHONswmu567pf9QliJ6s6DgCu5+ziF+soNS1LTcr1VRRVLViYLmGxmzDFUC48sjNTu7sumcKT0nJXsGBw==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" } }, "@opentelemetry/host-metrics": { @@ -45736,11 +45736,11 @@ } }, "@opentelemetry/instrumentation": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.50.0.tgz", - "integrity": "sha512-bhGhbJiZKpuu7wTaSak4hyZcFPlnDeuSF/2vglze8B4w2LubcSbbOnkVTzTs5SXtzh4Xz8eRjaNnAm+u2GYufQ==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.51.0.tgz", + "integrity": "sha512-Eg/+Od5bEvzpvZQGhvMyKIkrzB9S7jW+6z9LHEI2VXhl/GrqQ3oBqlzJt4tA6pGtxRmqQWKWGM1wAbwDdW/gUA==", "requires": { - "@opentelemetry/api-logs": "0.50.0", + "@opentelemetry/api-logs": "0.51.0", "@types/shimmer": "^1.0.2", "import-in-the-middle": "1.7.1", "require-in-the-middle": "^7.1.1", @@ -45754,7 +45754,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/amqplib": "^0.5.17", "@types/lodash": "4.14.199", @@ -45785,7 +45785,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/propagator-aws-xray": "^1.3.1", "@opentelemetry/resources": "^1.8.0", "@opentelemetry/sdk-metrics": "^1.8.0", @@ -45814,7 +45814,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/propagation-utils": "^0.30.8", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -45846,10 +45846,10 @@ "version": "file:plugins/node/opentelemetry-instrumentation-bunyan", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/api-logs": "^0.50.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/api-logs": "^0.51.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-logs": "^0.50.0", + "@opentelemetry/sdk-logs": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -45883,7 +45883,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -45906,7 +45906,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -45937,7 +45937,7 @@ "@cucumber/cucumber": "^9.0.0", "@opentelemetry/api": "^1.0.0", "@opentelemetry/core": "^1.3.1", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.3.1", "@opentelemetry/sdk-trace-node": "^1.3.1", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -45986,7 +45986,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -46005,7 +46005,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46030,7 +46030,7 @@ "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.0.0", "@opentelemetry/sdk-trace-web": "^1.15.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46063,7 +46063,7 @@ "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46089,8 +46089,8 @@ "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/instrumentation-http": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", + "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46123,14 +46123,14 @@ } }, "@opentelemetry/instrumentation-fetch": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.50.0.tgz", - "integrity": "sha512-CayteluGJbrfDvzEFQ0EWqLFkNAcO9H7nfDHptZjtonBpJRWF170XZoMkJVC2bxp0lIVwyuw6WlnGVRSNwEtKA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.51.0.tgz", + "integrity": "sha512-dB9wisB2+wyh0wUB1RFNinCS4TqJ7QMVc4jNzy3JCMJudwFWI/stU10DgZ3vwFQNUEBUIz9QmEQSFud7lsvB2w==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/instrumentation": "0.50.0", - "@opentelemetry/sdk-trace-web": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/instrumentation": "0.51.0", + "@opentelemetry/sdk-trace-web": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" } }, "@opentelemetry/instrumentation-fs": { @@ -46139,7 +46139,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/resources": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -46159,7 +46159,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46206,7 +46206,7 @@ "version": "file:plugins/node/opentelemetry-instrumentation-graphql", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.3.1", "@types/mocha": "8.2.3", @@ -46229,12 +46229,12 @@ } }, "@opentelemetry/instrumentation-grpc": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.50.0.tgz", - "integrity": "sha512-/ZFuvHtrHyxfRJX5CJ8yPKokAIcvTbIJAoR4AN+gBq1YqecWuCr4XG52p5YU5qDrbwOBtShOrC8d4GdFZOky6Q==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.51.0.tgz", + "integrity": "sha512-Wfhs9e1Hi4nnULLqzt9s2M6+Tz52EkKj6uZnj9ZL3coldlZiP+WmvuUNepds7jcBJg/qDBjnEe96fThPuO7ddA==", "requires": { - "@opentelemetry/instrumentation": "0.50.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/instrumentation": "0.51.0", + "@opentelemetry/semantic-conventions": "1.24.0" } }, "@opentelemetry/instrumentation-hapi": { @@ -46244,7 +46244,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46260,13 +46260,13 @@ } }, "@opentelemetry/instrumentation-http": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.50.0.tgz", - "integrity": "sha512-bsd6Nv0FtN9C6M6vX/kgPzvJY9UhJc4CZZNvqDbsfVQv3/MWvPrYgthf41AhrehqeDnpfn/QGzNKtdWUduGanQ==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.51.0.tgz", + "integrity": "sha512-6VsGPBnU6iVKWhVBnuRpwrmiHfxt8EYrqfnH2glfsMpsn4xy+O6U0yGlggPLhoYeOVafV3h70EEk5MU0tpsbiw==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/instrumentation": "0.50.0", - "@opentelemetry/semantic-conventions": "1.23.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/instrumentation": "0.51.0", + "@opentelemetry/semantic-conventions": "1.24.0", "semver": "^7.5.2" } }, @@ -46276,7 +46276,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -46301,7 +46301,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46324,8 +46324,8 @@ "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/instrumentation-http": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", + "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46351,7 +46351,7 @@ "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-web": "^1.8.0", "@types/jquery": "3.5.20", @@ -46385,7 +46385,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@types/lru-cache": "7.10.9", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -46413,7 +46413,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46435,7 +46435,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-metrics": "^1.9.1", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -46565,7 +46565,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", @@ -46594,7 +46594,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-metrics": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46617,7 +46617,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@opentelemetry/sql-common": "^0.40.0", @@ -46670,7 +46670,7 @@ "@nestjs/websockets": "9.4.3", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46721,7 +46721,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46742,7 +46742,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46771,7 +46771,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -46821,7 +46821,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -46846,7 +46846,7 @@ "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -46885,7 +46885,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46934,7 +46934,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46952,7 +46952,7 @@ "version": "file:plugins/node/instrumentation-runtime-node", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-metrics": "^1.20.0", "@types/mocha": "^10.0.6", "@types/node": "^20.11.2", @@ -46985,7 +46985,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/mocha": "8.2.3", @@ -47178,7 +47178,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/mocha": "7.0.2", @@ -47198,7 +47198,7 @@ "requires": { "@opentelemetry/api": "^1.7.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-metrics": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -47223,8 +47223,8 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-zone-peer-dep": "^1.8.0", "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", + "@opentelemetry/instrumentation-xml-http-request": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-web": "^1.8.0", "@types/jquery": "3.5.20", @@ -47257,9 +47257,9 @@ "version": "file:plugins/node/opentelemetry-instrumentation-winston", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/api-logs": "^0.50.0", + "@opentelemetry/api-logs": "^0.51.0", "@opentelemetry/context-async-hooks": "^1.21.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.21.0", "@opentelemetry/sdk-trace-node": "^1.21.0", "@opentelemetry/winston-transport": "^0.2.0", @@ -47279,56 +47279,56 @@ } }, "@opentelemetry/instrumentation-xml-http-request": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.50.0.tgz", - "integrity": "sha512-o9z6SDQByqc3GvmUcy6Npt/SAIrv2Pk0Hm0Hl54B3Ny8WUrTsrlt6MULx8d+EjuifE4uVo8op8DekmvKJ1FHoQ==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.51.0.tgz", + "integrity": "sha512-KgLO2qx1z1Wn9NeJgrgNukd10ssK1QqxODwdeBJFO1BaP9sVVargpupYowlDKUL5I3oWOEqi/Oxxdh/fbEsJtw==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/instrumentation": "0.50.0", - "@opentelemetry/sdk-trace-web": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/instrumentation": "0.51.0", + "@opentelemetry/sdk-trace-web": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" } }, "@opentelemetry/otlp-exporter-base": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.50.0.tgz", - "integrity": "sha512-JUmjmrCmE1/fc4LjCQMqLfudgSl5OpUkzx7iA94b4jgeODM7zWxUoVXL7/CT7fWf47Cn+pmKjMvTCSESqZZ3mA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.51.0.tgz", + "integrity": "sha512-hR4c9vWVz1QgzCBSyy9zSDkvfTgaK96E6/tfVP6O4dzdZW9HqWimA3lXV/KXadEGqShvM4GToz9EHp2A5RU5bQ==", "requires": { - "@opentelemetry/core": "1.23.0" + "@opentelemetry/core": "1.24.0" } }, "@opentelemetry/otlp-grpc-exporter-base": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.50.0.tgz", - "integrity": "sha512-J500AczSD7xEsjXpwNzSh5HQqxW73PT3CCNsi1VEWCE+8UPgVfkHYIGRHGoch35DV+CMe1svbi7gAk3e5eCSVA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.51.0.tgz", + "integrity": "sha512-oTRtDvvB0bTRTBVrvKA/oM1gIAqQ6DVQS07pvqiL1cZS8wBrGgpw+2iTd0nV661Y/MhDn/kNWp8lRhMEIKN9bw==", "requires": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.23.0", - "@opentelemetry/otlp-exporter-base": "0.50.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", "protobufjs": "^7.2.3" } }, "@opentelemetry/otlp-proto-exporter-base": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.50.0.tgz", - "integrity": "sha512-hlbn3eZbhxoK79Sq1ddj1f7qcx+PzsPQC/SFpJvaWgTaqacCbqJmpzWDKfRRCAC7iGX2Hj/sgpf8vysazqyMOw==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.51.0.tgz", + "integrity": "sha512-WDANDLSUh11Gu5o6iCzmjZraIv5bK8z1L/t6lxQ2NeEKiKUPo5pVOBBQQC/yAQU2yeqkiO1GRCieH+XahZf60A==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/otlp-exporter-base": "0.50.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", "protobufjs": "^7.2.3" } }, "@opentelemetry/otlp-transformer": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.50.0.tgz", - "integrity": "sha512-s0sl1Yfqd5q1Kjrf6DqXPWzErL+XHhrXOfejh4Vc/SMTNqC902xDsC8JQxbjuramWt/+hibfguIvi7Ns8VLolA==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.51.0.tgz", + "integrity": "sha512-ylLgx2xumVoSefDHP9GMAU/LG+TU3+8eacVDXV5o1RqWxsdVOaQmCTY0XyDgeRTn6hIOVAq/HHQbRq3iWOrt2A==", "requires": { - "@opentelemetry/api-logs": "0.50.0", - "@opentelemetry/core": "1.23.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-logs": "0.50.0", - "@opentelemetry/sdk-metrics": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0" + "@opentelemetry/api-logs": "0.51.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-logs": "0.51.0", + "@opentelemetry/sdk-metrics": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" } }, "@opentelemetry/plugin-react-load": { @@ -47398,19 +47398,19 @@ } }, "@opentelemetry/propagator-aws-xray": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-aws-xray/-/propagator-aws-xray-1.3.1.tgz", - "integrity": "sha512-6fDMzFlt5r6VWv7MUd0eOpglXPFqykW8CnOuUxJ1VZyLy6mV1bzBlzpsqEmhx1bjvZYvH93vhGkQZqrm95mlrQ==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-aws-xray/-/propagator-aws-xray-1.24.0.tgz", + "integrity": "sha512-rcuMtEOTZC7TW84tws1QLUVRElrGSbBJwK0b+qa56zJULDiUIiUpS+dSzO+aUchg7MtTJBZSG5OPsfsKpGgNig==", "requires": { - "@opentelemetry/core": "^1.0.0" + "@opentelemetry/core": "1.24.0" } }, "@opentelemetry/propagator-b3": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.23.0.tgz", - "integrity": "sha512-cZ6rl8y2bdxYQ4e+zP2CQ+QmuPebaLBLO1skjFpj3eEu7zar+6hBzUP3llMOUupkQeQSwXz+4c8dZ26OhYfG/g==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.24.0.tgz", + "integrity": "sha512-7TMIDE4+NO5vnkor+zned42wqca+hmhW5gWKhmYjUHC5B5uojo1PvtmBrd7kigFu96XvL4ZUWVzibWRWIQ/++Q==", "requires": { - "@opentelemetry/core": "1.23.0" + "@opentelemetry/core": "1.24.0" } }, "@opentelemetry/propagator-grpc-census-binary": { @@ -47600,11 +47600,11 @@ } }, "@opentelemetry/propagator-jaeger": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.23.0.tgz", - "integrity": "sha512-6iArixfgIl3ZgzeltQ5jyiKbjZygM+MbM84pXi1HL0Qs4x4Ck5rM6wEtjhZffFnlDMWEkEqrnM0xF6bTfbiMAQ==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.24.0.tgz", + "integrity": "sha512-r3MX3AmJiUeiWTXSDOdwBeaO+ahvWcFCpuKxmhhsH8Q8LqDnjhNd3krqBh4Qsq9wa0WhWtiQaDs/NOCWoMOlOw==", "requires": { - "@opentelemetry/core": "1.23.0" + "@opentelemetry/core": "1.24.0" } }, "@opentelemetry/propagator-ot-trace": { @@ -47823,7 +47823,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/resources": "^1.0.0", - "@opentelemetry/sdk-node": "^0.50.0", + "@opentelemetry/sdk-node": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -47845,90 +47845,90 @@ } }, "@opentelemetry/resources": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.23.0.tgz", - "integrity": "sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.24.0.tgz", + "integrity": "sha512-mxC7E7ocUS1tLzepnA7O9/G8G6ZTdjCH2pXme1DDDuCuk6n2/53GADX+GWBuyX0dfIxeMInIbJAdjlfN9GNr6A==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" } }, "@opentelemetry/sdk-logs": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.50.0.tgz", - "integrity": "sha512-PeUEupBB29p9nlPNqXoa1PUWNLsZnxG0DCDj3sHqzae+8y76B/A5hvZjg03ulWdnvBLYpnJslqzylG9E0IL87g==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.51.0.tgz", + "integrity": "sha512-K4fMBRFD8hQ6khk0rvYFuo6L9ymeGgByir6BcuFIgQuQ00OhYwBi9AruZz5V733Ejq7P8ObR3YyubkOUIbeVAw==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/resources": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0" } }, "@opentelemetry/sdk-metrics": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.23.0.tgz", - "integrity": "sha512-4OkvW6+wST4h6LFG23rXSTf6nmTf201h9dzq7bE0z5R9ESEVLERZz6WXwE7PSgg1gdjlaznm1jLJf8GttypFDg==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.24.0.tgz", + "integrity": "sha512-4tJ+E6N019OZVB/nUW/LoK9xHxfeh88TCoaTqHeLBE9wLYfi6irWW6J9cphMav7J8Qk0D5b7/RM4VEY4dArWOA==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/resources": "1.23.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", "lodash.merge": "^4.6.2" } }, "@opentelemetry/sdk-node": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.50.0.tgz", - "integrity": "sha512-LhIXHnvcnhRYcPwG9VG4G6lJ7x4ElYF6UYHHmXA7e4ZWzSUEFmAPfR1IBWv358aD1KwffcEBu7J6zeAR7lPZag==", - "requires": { - "@opentelemetry/api-logs": "0.50.0", - "@opentelemetry/core": "1.23.0", - "@opentelemetry/exporter-trace-otlp-grpc": "0.50.0", - "@opentelemetry/exporter-trace-otlp-http": "0.50.0", - "@opentelemetry/exporter-trace-otlp-proto": "0.50.0", - "@opentelemetry/exporter-zipkin": "1.23.0", - "@opentelemetry/instrumentation": "0.50.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-logs": "0.50.0", - "@opentelemetry/sdk-metrics": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0", - "@opentelemetry/sdk-trace-node": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.51.0.tgz", + "integrity": "sha512-MrPXDQsTAj3lcY8YUCjb7dvSXVZ5jG6wmjD2LB68V1rsLBdP8j70jsI9GaKijY7QB6psbLq6apO1vYeim5U7aw==", + "requires": { + "@opentelemetry/api-logs": "0.51.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.51.0", + "@opentelemetry/exporter-trace-otlp-http": "0.51.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.51.0", + "@opentelemetry/exporter-zipkin": "1.24.0", + "@opentelemetry/instrumentation": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-logs": "0.51.0", + "@opentelemetry/sdk-metrics": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "@opentelemetry/sdk-trace-node": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" } }, "@opentelemetry/sdk-trace-base": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.23.0.tgz", - "integrity": "sha512-PzBmZM8hBomUqvCddF/5Olyyviayka44O5nDWq673np3ctnvwMOvNrsUORZjKja1zJbwEuD9niAGbnVrz3jwRQ==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.24.0.tgz", + "integrity": "sha512-H9sLETZ4jw9UJ3totV8oM5R0m4CW0ZIOLfp4NV3g0CM8HD5zGZcaW88xqzWDgiYRpctFxd+WmHtGX/Upoa2vRg==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" } }, "@opentelemetry/sdk-trace-node": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.23.0.tgz", - "integrity": "sha512-dwnin5Go2r6VzJZkVc9JBPupssWp7j2EFto+S7qRkwQ00WDykWeq3x2Skk7I1Jr448FeBSvGCQVPgV5e6s6O3w==", - "requires": { - "@opentelemetry/context-async-hooks": "1.23.0", - "@opentelemetry/core": "1.23.0", - "@opentelemetry/propagator-b3": "1.23.0", - "@opentelemetry/propagator-jaeger": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.24.0.tgz", + "integrity": "sha512-QgByHmM9uloTpcYEEyW9YJEIMKHFSIM677RH9pJPWWwtM2NQFbEp/8HIJw80Ymtaz6cAxg1Kay1ByqIVzq3t5g==", + "requires": { + "@opentelemetry/context-async-hooks": "1.24.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/propagator-b3": "1.24.0", + "@opentelemetry/propagator-jaeger": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", "semver": "^7.5.2" } }, "@opentelemetry/sdk-trace-web": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-1.23.0.tgz", - "integrity": "sha512-tx9N3hIkd6k567BeujBnpXYdhu3ptYVk0ZkhdcjyQ3I8ZDJ+/JkVtaVNLAuf8hp1buTqNDmxSipALMxEmK2fnw==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-1.24.0.tgz", + "integrity": "sha512-G0q8aZPUhRtO/iw2BkjHeNqCMBf0JQX5VqqiPWXn9u5iRkpeQ6LZrGaiymKWOdEqtXCgM44yrCY/4WoJqR0bjQ==", "requires": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" + "@opentelemetry/core": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" } }, "@opentelemetry/semantic-conventions": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.23.0.tgz", - "integrity": "sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg==" + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.0.tgz", + "integrity": "sha512-yL0jI6Ltuz8R+Opj7jClGrul6pOoYrdfVmzQS4SITXRPH7I5IRZbrwe/6/v8v4WYMa6MYZG480S1+uc/IGfqsA==" }, "@opentelemetry/sql-common": { "version": "file:packages/opentelemetry-sql-common", @@ -47946,7 +47946,7 @@ "@opentelemetry/winston-transport": { "version": "file:packages/winston-transport", "requires": { - "@opentelemetry/api-logs": "^0.50.0", + "@opentelemetry/api-logs": "^0.51.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", diff --git a/packages/opentelemetry-test-utils/package.json b/packages/opentelemetry-test-utils/package.json index 0b77a8acbf..6b54001eb8 100644 --- a/packages/opentelemetry-test-utils/package.json +++ b/packages/opentelemetry-test-utils/package.json @@ -46,9 +46,9 @@ "dependencies": { "@opentelemetry/core": "^1.0.0", "@opentelemetry/exporter-jaeger": "^1.3.1", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-node": "^0.50.0", + "@opentelemetry/sdk-node": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0" diff --git a/packages/winston-transport/package.json b/packages/winston-transport/package.json index 485dfea31e..d7ffe927ec 100644 --- a/packages/winston-transport/package.json +++ b/packages/winston-transport/package.json @@ -50,7 +50,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/api-logs": "^0.50.0", + "@opentelemetry/api-logs": "^0.51.0", "winston-transport": "4.*" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/winston-transport#readme" diff --git a/plugins/node/instrumentation-amqplib/package.json b/plugins/node/instrumentation-amqplib/package.json index 5b7202cf4a..612a6a3aab 100644 --- a/plugins/node/instrumentation-amqplib/package.json +++ b/plugins/node/instrumentation-amqplib/package.json @@ -45,7 +45,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { diff --git a/plugins/node/instrumentation-cucumber/package.json b/plugins/node/instrumentation-cucumber/package.json index 0fce8819e6..b6f31c16ce 100644 --- a/plugins/node/instrumentation-cucumber/package.json +++ b/plugins/node/instrumentation-cucumber/package.json @@ -62,7 +62,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-cucumber#readme" diff --git a/plugins/node/instrumentation-cucumber/src/instrumentation.ts b/plugins/node/instrumentation-cucumber/src/instrumentation.ts index 5ea3305db2..4633707e33 100644 --- a/plugins/node/instrumentation-cucumber/src/instrumentation.ts +++ b/plugins/node/instrumentation-cucumber/src/instrumentation.ts @@ -48,12 +48,12 @@ export class CucumberInstrumentation extends InstrumentationBase { super('@opentelemetry/instrumentation-cucumber', VERSION, config); } - init(): InstrumentationNodeModuleDefinition[] { + init(): InstrumentationNodeModuleDefinition[] { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( '@cucumber/cucumber', ['^8.0.0', '^9.0.0', '^10.0.0'], - (moduleExports, moduleVersion) => { + (moduleExports: Cucumber, moduleVersion) => { this._diag.debug( `Applying patch for @cucumber/cucumber@${moduleVersion}` ); @@ -72,7 +72,7 @@ export class CucumberInstrumentation extends InstrumentationBase { }); return moduleExports; }, - (moduleExports, moduleVersion) => { + (moduleExports: Cucumber, moduleVersion) => { if (moduleExports === undefined) return; this._diag.debug( `Removing patch for @cucumber/cucumber@${moduleVersion}` @@ -82,9 +82,7 @@ export class CucumberInstrumentation extends InstrumentationBase { }); }, [ - new InstrumentationNodeModuleFile<{ - default: { new (): TestCaseRunner; prototype: TestCaseRunner }; - }>( + new InstrumentationNodeModuleFile( '@cucumber/cucumber/lib/runtime/test_case_runner.js', ['^8.0.0', '^9.0.0', '^10.0.0'], (moduleExports, moduleVersion) => { diff --git a/plugins/node/instrumentation-dataloader/package.json b/plugins/node/instrumentation-dataloader/package.json index b9e234c949..8c5ae9eb74 100644 --- a/plugins/node/instrumentation-dataloader/package.json +++ b/plugins/node/instrumentation-dataloader/package.json @@ -58,7 +58,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-dataloader#readme" } diff --git a/plugins/node/instrumentation-dataloader/src/instrumentation.ts b/plugins/node/instrumentation-dataloader/src/instrumentation.ts index 7264d031ae..75cfb03861 100644 --- a/plugins/node/instrumentation-dataloader/src/instrumentation.ts +++ b/plugins/node/instrumentation-dataloader/src/instrumentation.ts @@ -51,7 +51,7 @@ export class DataloaderInstrumentation extends InstrumentationBase { protected init() { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( MODULE_NAME, ['^2.0.0'], (dataloader, moduleVersion) => { @@ -73,8 +73,7 @@ export class DataloaderInstrumentation extends InstrumentationBase { this._unwrap(dataloader.prototype, 'loadMany'); } } - // cast it to module definition of unknown type to avoid exposing Dataloader types on public APIs - ) as InstrumentationNodeModuleDefinition, + ) as InstrumentationNodeModuleDefinition, ]; } diff --git a/plugins/node/instrumentation-fs/package.json b/plugins/node/instrumentation-fs/package.json index 72ad223de5..b79344d042 100644 --- a/plugins/node/instrumentation-fs/package.json +++ b/plugins/node/instrumentation-fs/package.json @@ -59,7 +59,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-fs#readme" } diff --git a/plugins/node/instrumentation-fs/src/instrumentation.ts b/plugins/node/instrumentation-fs/src/instrumentation.ts index 048b8d7b34..15da51a5ea 100644 --- a/plugins/node/instrumentation-fs/src/instrumentation.ts +++ b/plugins/node/instrumentation-fs/src/instrumentation.ts @@ -51,17 +51,17 @@ function patchedFunctionWithOriginalProperties< return Object.assign(patchedFunction, original); } -export default class FsInstrumentation extends InstrumentationBase { +export default class FsInstrumentation extends InstrumentationBase { constructor(config?: FsInstrumentationConfig) { super('@opentelemetry/instrumentation-fs', VERSION, config); } init(): ( - | InstrumentationNodeModuleDefinition - | InstrumentationNodeModuleDefinition + | InstrumentationNodeModuleDefinition + | InstrumentationNodeModuleDefinition )[] { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'fs', ['*'], (fs: FS) => { @@ -133,7 +133,7 @@ export default class FsInstrumentation extends InstrumentationBase { } } ), - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'fs/promises', ['*'], (fsPromises: FSPromises) => { diff --git a/plugins/node/instrumentation-lru-memoizer/package.json b/plugins/node/instrumentation-lru-memoizer/package.json index 25e412b828..6ceef239a4 100644 --- a/plugins/node/instrumentation-lru-memoizer/package.json +++ b/plugins/node/instrumentation-lru-memoizer/package.json @@ -57,7 +57,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-lru-memoizer#readme" } diff --git a/plugins/node/instrumentation-lru-memoizer/src/instrumentation.ts b/plugins/node/instrumentation-lru-memoizer/src/instrumentation.ts index b26d9468a3..c901a500a5 100644 --- a/plugins/node/instrumentation-lru-memoizer/src/instrumentation.ts +++ b/plugins/node/instrumentation-lru-memoizer/src/instrumentation.ts @@ -27,9 +27,9 @@ export default class LruMemoizerInstrumentation extends InstrumentationBase { super('@opentelemetry/instrumentation-lru-memoizer', VERSION, config); } - init(): InstrumentationNodeModuleDefinition[] { + init(): InstrumentationNodeModuleDefinition[] { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'lru-memoizer', ['>=1.3 <3'], moduleExports => { diff --git a/plugins/node/instrumentation-mongoose/package.json b/plugins/node/instrumentation-mongoose/package.json index dbafc9af61..245fbc756c 100644 --- a/plugins/node/instrumentation-mongoose/package.json +++ b/plugins/node/instrumentation-mongoose/package.json @@ -61,7 +61,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-mongoose#readme" diff --git a/plugins/node/instrumentation-mongoose/src/mongoose.ts b/plugins/node/instrumentation-mongoose/src/mongoose.ts index 96bf8f3734..967a30ded1 100644 --- a/plugins/node/instrumentation-mongoose/src/mongoose.ts +++ b/plugins/node/instrumentation-mongoose/src/mongoose.ts @@ -57,7 +57,7 @@ const contextCaptureFunctions = [ // calls. this bypass the unlinked spans issue on thenables await operations. export const _STORED_PARENT_SPAN: unique symbol = Symbol('stored-parent-span'); -export class MongooseInstrumentation extends InstrumentationBase { +export class MongooseInstrumentation extends InstrumentationBase { protected override _config!: MongooseInstrumentationConfig; constructor(config: MongooseInstrumentationConfig = {}) { @@ -72,8 +72,8 @@ export class MongooseInstrumentation extends InstrumentationBase { this._config = Object.assign({}, config); } - protected init(): InstrumentationModuleDefinition { - const module = new InstrumentationNodeModuleDefinition( + protected init(): InstrumentationModuleDefinition { + const module = new InstrumentationNodeModuleDefinition( 'mongoose', ['>=5.9.7 <7'], this.patch.bind(this), diff --git a/plugins/node/instrumentation-runtime-node/package.json b/plugins/node/instrumentation-runtime-node/package.json index 80a1cc46bb..15b254afc7 100644 --- a/plugins/node/instrumentation-runtime-node/package.json +++ b/plugins/node/instrumentation-runtime-node/package.json @@ -39,7 +39,7 @@ "access": "public" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", diff --git a/plugins/node/instrumentation-socket.io/package.json b/plugins/node/instrumentation-socket.io/package.json index 11ab404b6b..8cffebd79a 100644 --- a/plugins/node/instrumentation-socket.io/package.json +++ b/plugins/node/instrumentation-socket.io/package.json @@ -58,7 +58,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-socket.io#readme" diff --git a/plugins/node/instrumentation-socket.io/src/socket.io.ts b/plugins/node/instrumentation-socket.io/src/socket.io.ts index db37e5c375..f5ef96df8f 100644 --- a/plugins/node/instrumentation-socket.io/src/socket.io.ts +++ b/plugins/node/instrumentation-socket.io/src/socket.io.ts @@ -50,7 +50,7 @@ const reservedEvents = [ 'removeListener', ]; -export class SocketIoInstrumentation extends InstrumentationBase { +export class SocketIoInstrumentation extends InstrumentationBase { protected override _config!: SocketIoInstrumentationConfig; constructor(config: SocketIoInstrumentationConfig = {}) { @@ -62,7 +62,7 @@ export class SocketIoInstrumentation extends InstrumentationBase { } protected init() { - const socketInstrumentation = new InstrumentationNodeModuleFile( + const socketInstrumentation = new InstrumentationNodeModuleFile( 'socket.io/dist/socket.js', ['>=3 <5'], (moduleExports, moduleVersion) => { @@ -102,38 +102,37 @@ export class SocketIoInstrumentation extends InstrumentationBase { } ); - const broadcastOperatorInstrumentation = - new InstrumentationNodeModuleFile( - 'socket.io/dist/broadcast-operator.js', - ['>=4 <5'], - (moduleExports, moduleVersion) => { - if (moduleExports === undefined || moduleExports === null) { - return moduleExports; - } - if (moduleVersion === undefined) { - return moduleExports; - } - this._diag.debug( - `applying patch to socket.io@${moduleVersion} StrictEventEmitter` - ); - if (isWrapped(moduleExports?.BroadcastOperator?.prototype?.emit)) { - this._unwrap(moduleExports.BroadcastOperator.prototype, 'emit'); - } - this._wrap( - moduleExports.BroadcastOperator.prototype, - 'emit', - this._patchEmit(moduleVersion) - ); + const broadcastOperatorInstrumentation = new InstrumentationNodeModuleFile( + 'socket.io/dist/broadcast-operator.js', + ['>=4 <5'], + (moduleExports, moduleVersion) => { + if (moduleExports === undefined || moduleExports === null) { return moduleExports; - }, - moduleExports => { - if (isWrapped(moduleExports?.BroadcastOperator?.prototype?.emit)) { - this._unwrap(moduleExports.BroadcastOperator.prototype, 'emit'); - } + } + if (moduleVersion === undefined) { return moduleExports; } - ); - const namespaceInstrumentation = new InstrumentationNodeModuleFile( + this._diag.debug( + `applying patch to socket.io@${moduleVersion} StrictEventEmitter` + ); + if (isWrapped(moduleExports?.BroadcastOperator?.prototype?.emit)) { + this._unwrap(moduleExports.BroadcastOperator.prototype, 'emit'); + } + this._wrap( + moduleExports.BroadcastOperator.prototype, + 'emit', + this._patchEmit(moduleVersion) + ); + return moduleExports; + }, + moduleExports => { + if (isWrapped(moduleExports?.BroadcastOperator?.prototype?.emit)) { + this._unwrap(moduleExports.BroadcastOperator.prototype, 'emit'); + } + return moduleExports; + } + ); + const namespaceInstrumentation = new InstrumentationNodeModuleFile( 'socket.io/dist/namespace.js', ['<4'], (moduleExports, moduleVersion) => { @@ -162,7 +161,7 @@ export class SocketIoInstrumentation extends InstrumentationBase { } } ); - const socketInstrumentationLegacy = new InstrumentationNodeModuleFile( + const socketInstrumentationLegacy = new InstrumentationNodeModuleFile( 'socket.io/lib/socket.js', ['2'], (moduleExports, moduleVersion) => { @@ -197,39 +196,38 @@ export class SocketIoInstrumentation extends InstrumentationBase { return moduleExports; } ); - const namespaceInstrumentationLegacy = - new InstrumentationNodeModuleFile( - 'socket.io/lib/namespace.js', - ['2'], - (moduleExports, moduleVersion) => { - if (moduleExports === undefined || moduleExports === null) { - return moduleExports; - } - if (moduleVersion === undefined) { - return moduleExports; - } - this._diag.debug( - `applying patch to socket.io@${moduleVersion} Namespace` - ); - if (isWrapped(moduleExports?.prototype?.emit)) { - this._unwrap(moduleExports.prototype, 'emit'); - } - this._wrap( - moduleExports.prototype, - 'emit', - this._patchEmit(moduleVersion) - ); + const namespaceInstrumentationLegacy = new InstrumentationNodeModuleFile( + 'socket.io/lib/namespace.js', + ['2'], + (moduleExports, moduleVersion) => { + if (moduleExports === undefined || moduleExports === null) { + return moduleExports; + } + if (moduleVersion === undefined) { return moduleExports; - }, - moduleExports => { - if (isWrapped(moduleExports?.prototype?.emit)) { - this._unwrap(moduleExports.prototype, 'emit'); - } } - ); + this._diag.debug( + `applying patch to socket.io@${moduleVersion} Namespace` + ); + if (isWrapped(moduleExports?.prototype?.emit)) { + this._unwrap(moduleExports.prototype, 'emit'); + } + this._wrap( + moduleExports.prototype, + 'emit', + this._patchEmit(moduleVersion) + ); + return moduleExports; + }, + moduleExports => { + if (isWrapped(moduleExports?.prototype?.emit)) { + this._unwrap(moduleExports.prototype, 'emit'); + } + } + ); return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'socket.io', ['>=3 <5'], (moduleExports, moduleVersion) => { @@ -264,7 +262,7 @@ export class SocketIoInstrumentation extends InstrumentationBase { socketInstrumentation, ] ), - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'socket.io', ['2'], (moduleExports, moduleVersion) => { diff --git a/plugins/node/instrumentation-tedious/package.json b/plugins/node/instrumentation-tedious/package.json index 0d73cf1922..b03962f166 100644 --- a/plugins/node/instrumentation-tedious/package.json +++ b/plugins/node/instrumentation-tedious/package.json @@ -62,7 +62,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/tedious": "^4.0.10" }, diff --git a/plugins/node/instrumentation-tedious/src/instrumentation.ts b/plugins/node/instrumentation-tedious/src/instrumentation.ts index 7484dd49fb..5415bae955 100644 --- a/plugins/node/instrumentation-tedious/src/instrumentation.ts +++ b/plugins/node/instrumentation-tedious/src/instrumentation.ts @@ -61,9 +61,7 @@ function setDatabase(this: ApproxConnection, databaseName: string) { }); } -export class TediousInstrumentation extends InstrumentationBase< - typeof tedious -> { +export class TediousInstrumentation extends InstrumentationBase { static readonly COMPONENT = 'tedious'; constructor(config?: TediousInstrumentationConfig) { @@ -72,10 +70,10 @@ export class TediousInstrumentation extends InstrumentationBase< protected init() { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( TediousInstrumentation.COMPONENT, ['>=1.11.0 <=15'], - (moduleExports: any, moduleVersion) => { + (moduleExports: typeof tedious, moduleVersion) => { this._diag.debug(`Patching tedious@${moduleVersion}`); const ConnectionPrototype: any = moduleExports.Connection.prototype; @@ -97,7 +95,7 @@ export class TediousInstrumentation extends InstrumentationBase< return moduleExports; }, - (moduleExports: any) => { + (moduleExports: typeof tedious) => { if (moduleExports === undefined) return; const ConnectionPrototype: any = moduleExports.Connection.prototype; for (const method of PATCHED_METHODS) { diff --git a/plugins/node/instrumentation-undici/package.json b/plugins/node/instrumentation-undici/package.json index fd21b60b47..10ed52a9fd 100644 --- a/plugins/node/instrumentation-undici/package.json +++ b/plugins/node/instrumentation-undici/package.json @@ -62,7 +62,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-undici#readme", "sideEffects": false diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json b/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json index 92b33aefc3..5fb1ef5f20 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json @@ -56,7 +56,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/propagator-aws-xray": "^1.3.1", "@opentelemetry/resources": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json b/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json index 8fb6a5620f..90154572fa 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json @@ -45,7 +45,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/propagation-utils": "^0.30.8", "@opentelemetry/semantic-conventions": "^1.22.0" }, diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts index b53241b0b5..186976a190 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts @@ -72,7 +72,7 @@ type V2PluginRequest = AWS.Request & { [REQUEST_SPAN_KEY]?: Span; }; -export class AwsInstrumentation extends InstrumentationBase { +export class AwsInstrumentation extends InstrumentationBase { static readonly component = 'aws-sdk'; protected override _config!: AwsSdkInstrumentationConfig; private servicesExtensions: ServicesExtensions = new ServicesExtensions(); @@ -89,7 +89,7 @@ export class AwsInstrumentation extends InstrumentationBase { this._config = Object.assign({}, config); } - protected init(): InstrumentationModuleDefinition[] { + protected init(): InstrumentationModuleDefinition[] { const v3MiddlewareStackFileOldVersions = new InstrumentationNodeModuleFile( '@aws-sdk/middleware-stack/dist/cjs/MiddlewareStack.js', ['>=3.1.0 <3.35.0'], @@ -106,12 +106,13 @@ export class AwsInstrumentation extends InstrumentationBase { // as for aws-sdk v3.13.1, constructStack is exported from @aws-sdk/middleware-stack as // getter instead of function, which fails shimmer. // so we are patching the MiddlewareStack.js file directly to get around it. - const v3MiddlewareStack = new InstrumentationNodeModuleDefinition< - typeof AWS - >('@aws-sdk/middleware-stack', ['^3.1.0'], undefined, undefined, [ - v3MiddlewareStackFileOldVersions, - v3MiddlewareStackFileNewVersions, - ]); + const v3MiddlewareStack = new InstrumentationNodeModuleDefinition( + '@aws-sdk/middleware-stack', + ['^3.1.0'], + undefined, + undefined, + [v3MiddlewareStackFileOldVersions, v3MiddlewareStackFileNewVersions] + ); // Patch for @smithy/middleware-stack for @aws-sdk/* packages v3.363.0+. // As of @smithy/middleware-stack@2.1.0 `constructStack` is only available @@ -133,7 +134,7 @@ export class AwsInstrumentation extends InstrumentationBase { } ); - const v3SmithyClient = new InstrumentationNodeModuleDefinition( + const v3SmithyClient = new InstrumentationNodeModuleDefinition( '@aws-sdk/smithy-client', ['^3.1.0'], this.patchV3SmithyClient.bind(this), @@ -148,14 +149,14 @@ export class AwsInstrumentation extends InstrumentationBase { this.unpatchV3SmithyClient.bind(this) ); - const v2Request = new InstrumentationNodeModuleFile( + const v2Request = new InstrumentationNodeModuleFile( 'aws-sdk/lib/core.js', ['^2.308.0'], this.patchV2.bind(this), this.unpatchV2.bind(this) ); - const v2Module = new InstrumentationNodeModuleDefinition( + const v2Module = new InstrumentationNodeModuleDefinition( 'aws-sdk', ['^2.308.0'], undefined, diff --git a/plugins/node/opentelemetry-instrumentation-bunyan/package.json b/plugins/node/opentelemetry-instrumentation-bunyan/package.json index 2ba62b7309..038e16993e 100644 --- a/plugins/node/opentelemetry-instrumentation-bunyan/package.json +++ b/plugins/node/opentelemetry-instrumentation-bunyan/package.json @@ -46,7 +46,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/sdk-logs": "^0.50.0", + "@opentelemetry/sdk-logs": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -63,8 +63,8 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/api-logs": "^0.50.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/api-logs": "^0.51.0", + "@opentelemetry/instrumentation": "^0.51.0", "@types/bunyan": "1.8.9" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-bunyan#readme" diff --git a/plugins/node/opentelemetry-instrumentation-bunyan/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-bunyan/src/instrumentation.ts index d3e76a74ce..08928a23d6 100644 --- a/plugins/node/opentelemetry-instrumentation-bunyan/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-bunyan/src/instrumentation.ts @@ -32,9 +32,7 @@ const DEFAULT_CONFIG: BunyanInstrumentationConfig = { disableLogCorrelation: false, }; -export class BunyanInstrumentation extends InstrumentationBase< - typeof BunyanLogger -> { +export class BunyanInstrumentation extends InstrumentationBase { constructor(config: BunyanInstrumentationConfig = {}) { super( '@opentelemetry/instrumentation-bunyan', @@ -45,7 +43,7 @@ export class BunyanInstrumentation extends InstrumentationBase< protected init() { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'bunyan', ['<2.0'], (module: any, moduleVersion) => { diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/package.json b/plugins/node/opentelemetry-instrumentation-cassandra/package.json index ce04542bba..aa2c88828d 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/package.json +++ b/plugins/node/opentelemetry-instrumentation-cassandra/package.json @@ -61,7 +61,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-cassandra#readme" diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-cassandra/src/instrumentation.ts index fe2f9718e5..a9bd3d2b85 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-cassandra/src/instrumentation.ts @@ -48,7 +48,7 @@ export class CassandraDriverInstrumentation extends InstrumentationBase { } protected init() { - return new InstrumentationNodeModuleDefinition( + return new InstrumentationNodeModuleDefinition( 'cassandra-driver', supportedVersions, (driverModule, moduleVersion) => { diff --git a/plugins/node/opentelemetry-instrumentation-connect/package.json b/plugins/node/opentelemetry-instrumentation-connect/package.json index 22a2df2ffc..862d3f3823 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/package.json +++ b/plugins/node/opentelemetry-instrumentation-connect/package.json @@ -56,7 +56,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/connect": "3.4.36" }, diff --git a/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts index 97a06d8a37..e28dd67d74 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts @@ -41,7 +41,7 @@ import { export const ANONYMOUS_NAME = 'anonymous'; /** Connect instrumentation for OpenTelemetry */ -export class ConnectInstrumentation extends InstrumentationBase { +export class ConnectInstrumentation extends InstrumentationBase { constructor(config: InstrumentationConfig = {}) { super( '@opentelemetry/instrumentation-connect', @@ -52,7 +52,7 @@ export class ConnectInstrumentation extends InstrumentationBase { init() { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'connect', ['^3.0.0'], (moduleExports, moduleVersion) => { diff --git a/plugins/node/opentelemetry-instrumentation-dns/package.json b/plugins/node/opentelemetry-instrumentation-dns/package.json index 6f28ccf5fb..d40053950b 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/package.json +++ b/plugins/node/opentelemetry-instrumentation-dns/package.json @@ -59,7 +59,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0", "semver": "^7.5.4" }, diff --git a/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts index 319a27e1c1..ca96db7167 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts @@ -15,6 +15,8 @@ */ import { LookupAddress } from 'dns'; +import type * as dns from 'dns'; +import * as dnsPromises from 'dns/promises'; import { diag, Span, SpanKind } from '@opentelemetry/api'; import { InstrumentationBase, @@ -27,8 +29,6 @@ import { DnsInstrumentationConfig } from './types'; import * as utils from './utils'; import { VERSION } from './version'; import { - Dns, - DnsPromises, LookupCallbackSignature, LookupPromiseSignature, } from './internal-types'; @@ -36,20 +36,20 @@ import { /** * Dns instrumentation for Opentelemetry */ -export class DnsInstrumentation extends InstrumentationBase { +export class DnsInstrumentation extends InstrumentationBase { constructor(protected override _config: DnsInstrumentationConfig = {}) { super('@opentelemetry/instrumentation-dns', VERSION, _config); } init(): ( - | InstrumentationNodeModuleDefinition - | InstrumentationNodeModuleDefinition + | InstrumentationNodeModuleDefinition + | InstrumentationNodeModuleDefinition )[] { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'dns', ['*'], - moduleExports => { + (moduleExports: typeof dns) => { diag.debug('Applying patch for dns'); if (isWrapped(moduleExports.lookup)) { this._unwrap(moduleExports, 'lookup'); @@ -71,10 +71,10 @@ export class DnsInstrumentation extends InstrumentationBase { this._unwrap(moduleExports.promises, 'lookup'); } ), - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'dns/promises', ['*'], - moduleExports => { + (moduleExports: typeof dnsPromises) => { diag.debug('Applying patch for dns/promises'); if (isWrapped(moduleExports.lookup)) { this._unwrap(moduleExports, 'lookup'); diff --git a/plugins/node/opentelemetry-instrumentation-dns/src/internal-types.ts b/plugins/node/opentelemetry-instrumentation-dns/src/internal-types.ts index 26638ba1a7..2a404e4326 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/src/internal-types.ts +++ b/plugins/node/opentelemetry-instrumentation-dns/src/internal-types.ts @@ -15,10 +15,6 @@ */ import type * as dns from 'dns'; -import type * as dnsPromises from 'dns/promises'; - -export type Dns = typeof dns; -export type DnsPromises = typeof dnsPromises; export type LookupFunction = (( hostname: string, diff --git a/plugins/node/opentelemetry-instrumentation-express/package.json b/plugins/node/opentelemetry-instrumentation-express/package.json index 6c3aa8a2c0..a53f2967ca 100644 --- a/plugins/node/opentelemetry-instrumentation-express/package.json +++ b/plugins/node/opentelemetry-instrumentation-express/package.json @@ -64,7 +64,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-express#readme" diff --git a/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts index 3df15aa699..1d53559cf3 100644 --- a/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts @@ -49,9 +49,7 @@ import { } from './internal-types'; /** Express instrumentation for OpenTelemetry */ -export class ExpressInstrumentation extends InstrumentationBase< - typeof express -> { +export class ExpressInstrumentation extends InstrumentationBase { constructor(config: ExpressInstrumentationConfig = {}) { super( '@opentelemetry/instrumentation-express', @@ -70,7 +68,7 @@ export class ExpressInstrumentation extends InstrumentationBase< init() { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'express', ['^4.0.0'], (moduleExports, moduleVersion) => { diff --git a/plugins/node/opentelemetry-instrumentation-fastify/package.json b/plugins/node/opentelemetry-instrumentation-fastify/package.json index 0f527fc875..e1cd5daa15 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/package.json +++ b/plugins/node/opentelemetry-instrumentation-fastify/package.json @@ -47,7 +47,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation-http": "^0.50.0", + "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/express": "4.17.18", @@ -65,7 +65,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-fastify#readme" diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts index 223ed28854..f1fb316081 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts @@ -65,7 +65,7 @@ export class FastifyInstrumentation extends InstrumentationBase { init() { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'fastify', ['^3.0.0', '^4.0.0'], (moduleExports, moduleVersion) => { diff --git a/plugins/node/opentelemetry-instrumentation-generic-pool/package.json b/plugins/node/opentelemetry-instrumentation-generic-pool/package.json index 05466afff6..15e9f888aa 100644 --- a/plugins/node/opentelemetry-instrumentation-generic-pool/package.json +++ b/plugins/node/opentelemetry-instrumentation-generic-pool/package.json @@ -59,7 +59,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-generic-pool#readme" diff --git a/plugins/node/opentelemetry-instrumentation-generic-pool/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-generic-pool/src/instrumentation.ts index 35a9266e36..cea3ff9b81 100644 --- a/plugins/node/opentelemetry-instrumentation-generic-pool/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-generic-pool/src/instrumentation.ts @@ -28,7 +28,7 @@ import { VERSION } from './version'; const MODULE_NAME = 'generic-pool'; -export default class Instrumentation extends InstrumentationBase { +export default class Instrumentation extends InstrumentationBase { // only used for v2 - v2.3) private _isDisabled = false; @@ -38,7 +38,7 @@ export default class Instrumentation extends InstrumentationBase { init() { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( MODULE_NAME, ['>=3'], (moduleExports, moduleVersion) => { @@ -61,7 +61,7 @@ export default class Instrumentation extends InstrumentationBase { return moduleExports; } ), - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( MODULE_NAME, ['^2.4'], (moduleExports, moduleVersion) => { @@ -84,7 +84,7 @@ export default class Instrumentation extends InstrumentationBase { return moduleExports; } ), - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( MODULE_NAME, ['2 - 2.3'], (moduleExports, moduleVersion) => { diff --git a/plugins/node/opentelemetry-instrumentation-graphql/package.json b/plugins/node/opentelemetry-instrumentation-graphql/package.json index 9594358c0a..e843537130 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/package.json +++ b/plugins/node/opentelemetry-instrumentation-graphql/package.json @@ -58,7 +58,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-graphql#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-graphql/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-graphql/src/instrumentation.ts index 0bb1bc2c3a..8d30b67391 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-graphql/src/instrumentation.ts @@ -84,7 +84,7 @@ export class GraphQLInstrumentation extends InstrumentationBase { } protected init() { - const module = new InstrumentationNodeModuleDefinition( + const module = new InstrumentationNodeModuleDefinition( 'graphql', supportedVersions ); @@ -95,10 +95,8 @@ export class GraphQLInstrumentation extends InstrumentationBase { return module; } - private _addPatchingExecute(): InstrumentationNodeModuleFile< - typeof graphqlTypes - > { - return new InstrumentationNodeModuleFile( + private _addPatchingExecute(): InstrumentationNodeModuleFile { + return new InstrumentationNodeModuleFile( 'graphql/execution/execute.js', supportedVersions, // cannot make it work with appropriate type as execute function has 2 @@ -126,13 +124,11 @@ export class GraphQLInstrumentation extends InstrumentationBase { ); } - private _addPatchingParser(): InstrumentationNodeModuleFile< - typeof graphqlTypes - > { - return new InstrumentationNodeModuleFile( + private _addPatchingParser(): InstrumentationNodeModuleFile { + return new InstrumentationNodeModuleFile( 'graphql/language/parser.js', supportedVersions, - (moduleExports, moduleVersion) => { + (moduleExports: typeof graphqlTypes, moduleVersion) => { this._diag.debug(`Applying patch for graphql@${moduleVersion} parse`); if (isWrapped(moduleExports.parse)) { this._unwrap(moduleExports, 'parse'); @@ -140,7 +136,7 @@ export class GraphQLInstrumentation extends InstrumentationBase { this._wrap(moduleExports, 'parse', this._patchParse()); return moduleExports; }, - (moduleExports, moduleVersion) => { + (moduleExports: typeof graphqlTypes, moduleVersion) => { if (moduleExports) { this._diag.debug(`Removing patch for graphql@${moduleVersion} parse`); this._unwrap(moduleExports, 'parse'); @@ -149,10 +145,8 @@ export class GraphQLInstrumentation extends InstrumentationBase { ); } - private _addPatchingValidate(): InstrumentationNodeModuleFile< - typeof graphqlTypes - > { - return new InstrumentationNodeModuleFile( + private _addPatchingValidate(): InstrumentationNodeModuleFile { + return new InstrumentationNodeModuleFile( 'graphql/validation/validate.js', supportedVersions, (moduleExports, moduleVersion) => { diff --git a/plugins/node/opentelemetry-instrumentation-hapi/package.json b/plugins/node/opentelemetry-instrumentation-hapi/package.json index d595016b9b..182c9fe968 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/package.json +++ b/plugins/node/opentelemetry-instrumentation-hapi/package.json @@ -59,7 +59,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/hapi__hapi": "20.0.13" }, diff --git a/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts index 9644497626..4e938f438b 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts @@ -54,10 +54,10 @@ export class HapiInstrumentation extends InstrumentationBase { } protected init() { - return new InstrumentationNodeModuleDefinition( + return new InstrumentationNodeModuleDefinition( HapiComponentName, ['>=17 <21'], - moduleExports => { + (moduleExports: typeof Hapi) => { if (!isWrapped(moduleExports.server)) { api.diag.debug('Patching Hapi.server'); this._wrap(moduleExports, 'server', this._getServerPatch.bind(this)); @@ -79,7 +79,7 @@ export class HapiInstrumentation extends InstrumentationBase { } return moduleExports; }, - moduleExports => { + (moduleExports: typeof Hapi) => { api.diag.debug('Unpatching Hapi'); this._massUnwrap([moduleExports], ['server', 'Server']); } diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/package.json b/plugins/node/opentelemetry-instrumentation-ioredis/package.json index 4ecc2eb1b3..ccd6a8be2a 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/package.json +++ b/plugins/node/opentelemetry-instrumentation-ioredis/package.json @@ -52,6 +52,7 @@ "@opentelemetry/contrib-test-utils": "^0.38.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", + "@types/ioredis4": "npm:@types/ioredis@4.28.10", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -63,11 +64,10 @@ "sinon": "15.2.0", "test-all-versions": "6.1.0", "ts-mocha": "10.0.0", - "typescript": "4.4.4", - "@types/ioredis4": "npm:@types/ioredis@4.28.10" + "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/semantic-conventions": "^1.0.0" }, diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts index 0753518de3..d0d662cccd 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts @@ -35,7 +35,7 @@ const DEFAULT_CONFIG: IORedisInstrumentationConfig = { requireParentSpan: true, }; -export class IORedisInstrumentation extends InstrumentationBase { +export class IORedisInstrumentation extends InstrumentationBase { constructor(_config: IORedisInstrumentationConfig = {}) { super( '@opentelemetry/instrumentation-ioredis', @@ -44,9 +44,9 @@ export class IORedisInstrumentation extends InstrumentationBase { ); } - init(): InstrumentationNodeModuleDefinition[] { + init(): InstrumentationNodeModuleDefinition[] { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'ioredis', ['>1', '<6'], (module, moduleVersion?: string) => { diff --git a/plugins/node/opentelemetry-instrumentation-knex/package.json b/plugins/node/opentelemetry-instrumentation-knex/package.json index 5a8b7078c6..ca283faf29 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/package.json +++ b/plugins/node/opentelemetry-instrumentation-knex/package.json @@ -57,7 +57,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-knex#readme" diff --git a/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts index bb6e6114b5..7aab25716a 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts @@ -37,14 +37,12 @@ import { import * as utils from './utils'; import * as types from './types'; -import type * as knex from 'knex'; - const contextSymbol = Symbol('opentelemetry.instrumentation-knex.context'); const DEFAULT_CONFIG: types.KnexInstrumentationConfig = { maxQueryLength: 1022, }; -export class KnexInstrumentation extends InstrumentationBase { +export class KnexInstrumentation extends InstrumentationBase { constructor(config: types.KnexInstrumentationConfig = {}) { super( `@opentelemetry/instrumentation-${constants.MODULE_NAME}`, @@ -54,7 +52,7 @@ export class KnexInstrumentation extends InstrumentationBase { } init() { - const module = new InstrumentationNodeModuleDefinition( + const module = new InstrumentationNodeModuleDefinition( constants.MODULE_NAME, constants.SUPPORTED_VERSIONS ); @@ -71,7 +69,7 @@ export class KnexInstrumentation extends InstrumentationBase { } private getRunnerNodeModuleFileInstrumentation(basePath: string) { - return new InstrumentationNodeModuleFile( + return new InstrumentationNodeModuleFile( `knex/${basePath}/runner.js`, constants.SUPPORTED_VERSIONS, (Runner: any, moduleVersion) => { @@ -97,7 +95,7 @@ export class KnexInstrumentation extends InstrumentationBase { } private getClientNodeModuleFileInstrumentation(basePath: string) { - return new InstrumentationNodeModuleFile( + return new InstrumentationNodeModuleFile( `knex/${basePath}/client.js`, constants.SUPPORTED_VERSIONS, (Client: any, moduleVersion) => { diff --git a/plugins/node/opentelemetry-instrumentation-koa/package.json b/plugins/node/opentelemetry-instrumentation-koa/package.json index e1a6f4f492..35eadc1cb8 100644 --- a/plugins/node/opentelemetry-instrumentation-koa/package.json +++ b/plugins/node/opentelemetry-instrumentation-koa/package.json @@ -49,7 +49,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.38.0", - "@opentelemetry/instrumentation-http": "^0.50.0", + "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -66,7 +66,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/koa": "2.14.0", "@types/koa__router": "12.0.3" diff --git a/plugins/node/opentelemetry-instrumentation-koa/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-koa/src/instrumentation.ts index 69a14157cc..7ce213fe82 100644 --- a/plugins/node/opentelemetry-instrumentation-koa/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-koa/src/instrumentation.ts @@ -34,7 +34,7 @@ import { } from './internal-types'; /** Koa instrumentation for OpenTelemetry */ -export class KoaInstrumentation extends InstrumentationBase { +export class KoaInstrumentation extends InstrumentationBase { constructor(config: KoaInstrumentationConfig = {}) { super( '@opentelemetry/instrumentation-koa', @@ -52,7 +52,7 @@ export class KoaInstrumentation extends InstrumentationBase { } protected init() { - return new InstrumentationNodeModuleDefinition( + return new InstrumentationNodeModuleDefinition( 'koa', ['^2.0.0'], (module: any) => { diff --git a/plugins/node/opentelemetry-instrumentation-memcached/package.json b/plugins/node/opentelemetry-instrumentation-memcached/package.json index a329872649..85181573fa 100644 --- a/plugins/node/opentelemetry-instrumentation-memcached/package.json +++ b/plugins/node/opentelemetry-instrumentation-memcached/package.json @@ -60,7 +60,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0", "@types/memcached": "^2.2.6" }, diff --git a/plugins/node/opentelemetry-instrumentation-memcached/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-memcached/src/instrumentation.ts index afa205dad9..3ba0770355 100644 --- a/plugins/node/opentelemetry-instrumentation-memcached/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-memcached/src/instrumentation.ts @@ -29,7 +29,7 @@ import * as utils from './utils'; import { InstrumentationConfig } from './types'; import { VERSION } from './version'; -export class Instrumentation extends InstrumentationBase { +export class Instrumentation extends InstrumentationBase { static readonly COMPONENT = 'memcached'; static readonly COMMON_ATTRIBUTES = { [SemanticAttributes.DB_SYSTEM]: DbSystemValues.MEMCACHED, @@ -52,10 +52,10 @@ export class Instrumentation extends InstrumentationBase { init() { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'memcached', ['>=2.2'], - (moduleExports, moduleVersion) => { + (moduleExports: typeof Memcached, moduleVersion) => { this._diag.debug( `Patching ${Instrumentation.COMPONENT}@${moduleVersion}` ); @@ -67,7 +67,7 @@ export class Instrumentation extends InstrumentationBase { ); return moduleExports; }, - (moduleExports, moduleVersion) => { + (moduleExports: typeof Memcached, moduleVersion) => { this._diag.debug( `Unpatching ${Instrumentation.COMPONENT}@${moduleVersion}` ); diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/package.json b/plugins/node/opentelemetry-instrumentation-mongodb/package.json index f3d704c7da..c47dd310a1 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/package.json +++ b/plugins/node/opentelemetry-instrumentation-mongodb/package.json @@ -66,7 +66,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-metrics": "^1.9.1", "@opentelemetry/semantic-conventions": "^1.22.0" }, diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts index d5239d9706..7b99c55c9a 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts @@ -91,13 +91,13 @@ export class MongoDBInstrumentation extends InstrumentationBase { const { v4PatchSessions, v4UnpatchSessions } = this._getV4SessionsPatches(); return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'mongodb', ['>=3.3 <4'], undefined, undefined, [ - new InstrumentationNodeModuleFile( + new InstrumentationNodeModuleFile( 'mongodb/lib/core/wireprotocol/index.js', ['>=3.3 <4'], v3PatchConnection, @@ -105,37 +105,37 @@ export class MongoDBInstrumentation extends InstrumentationBase { ), ] ), - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'mongodb', ['4.*', '5.*', '6.*'], undefined, undefined, [ - new InstrumentationNodeModuleFile( + new InstrumentationNodeModuleFile( 'mongodb/lib/cmap/connection.js', ['4.*', '5.*', '>=6 <6.4'], v4PatchConnectionCallback, v4UnpatchConnection ), - new InstrumentationNodeModuleFile( + new InstrumentationNodeModuleFile( 'mongodb/lib/cmap/connection.js', ['>=6.4'], v4PatchConnectionPromise, v4UnpatchConnection ), - new InstrumentationNodeModuleFile( + new InstrumentationNodeModuleFile( 'mongodb/lib/cmap/connection_pool.js', ['4.*', '5.*', '>=6 <6.4'], v4PatchConnectionPool, v4UnpatchConnectionPool ), - new InstrumentationNodeModuleFile( + new InstrumentationNodeModuleFile( 'mongodb/lib/cmap/connect.js', ['4.*', '5.*', '6.*'], v4PatchConnect, v4UnpatchConnect ), - new InstrumentationNodeModuleFile( + new InstrumentationNodeModuleFile( 'mongodb/lib/sessions.js', ['4.*', '5.*', '6.*'], v4PatchSessions, diff --git a/plugins/node/opentelemetry-instrumentation-mysql/package.json b/plugins/node/opentelemetry-instrumentation-mysql/package.json index 13d2c6d3af..47b2ff01a4 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql/package.json @@ -59,7 +59,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mysql": "2.15.22" }, diff --git a/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts index 9ff48fd684..78e9b78a03 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts @@ -51,9 +51,7 @@ type getConnectionCallbackType = ( connection: mysqlTypes.PoolConnection ) => void; -export class MySQLInstrumentation extends InstrumentationBase< - typeof mysqlTypes -> { +export class MySQLInstrumentation extends InstrumentationBase { static readonly COMMON_ATTRIBUTES = { [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_MYSQL, }; @@ -82,10 +80,10 @@ export class MySQLInstrumentation extends InstrumentationBase< protected init() { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'mysql', ['2.*'], - (moduleExports, moduleVersion) => { + (moduleExports: typeof mysqlTypes, moduleVersion) => { diag.debug(`Patching mysql@${moduleVersion}`); diag.debug('Patching mysql.createConnection'); @@ -120,7 +118,7 @@ export class MySQLInstrumentation extends InstrumentationBase< return moduleExports; }, - moduleExports => { + (moduleExports: typeof mysqlTypes) => { if (moduleExports === undefined) return; this._unwrap(moduleExports, 'createConnection'); this._unwrap(moduleExports, 'createPool'); diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/package.json b/plugins/node/opentelemetry-instrumentation-mysql2/package.json index 5d7d885d02..420184e53a 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql2/package.json @@ -61,7 +61,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@opentelemetry/sql-common": "^0.40.0" }, diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts index 2d79311bcb..d2f130b2ac 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts @@ -39,7 +39,7 @@ import { VERSION } from './version'; type formatType = typeof mysqlTypes.format; -export class MySQL2Instrumentation extends InstrumentationBase { +export class MySQL2Instrumentation extends InstrumentationBase { static readonly COMMON_ATTRIBUTES = { [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_MYSQL, }; @@ -50,7 +50,7 @@ export class MySQL2Instrumentation extends InstrumentationBase { protected init() { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'mysql2', ['>= 1.4.2 < 4.0'], (moduleExports: any, moduleVersion) => { diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json index b831d12ff9..ee9a235854 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json @@ -70,7 +70,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-nestjs-core#readme" diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts index 98922126fa..d947169ec4 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts @@ -29,7 +29,7 @@ import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; import { VERSION } from './version'; import { AttributeNames, NestType } from './enums'; -export class Instrumentation extends InstrumentationBase { +export class Instrumentation extends InstrumentationBase { static readonly COMPONENT = '@nestjs/core'; static readonly COMMON_ATTRIBUTES = { component: Instrumentation.COMPONENT, @@ -40,7 +40,7 @@ export class Instrumentation extends InstrumentationBase { } init() { - const module = new InstrumentationNodeModuleDefinition( + const module = new InstrumentationNodeModuleDefinition( Instrumentation.COMPONENT, ['>=4.0.0'], (moduleExports, moduleVersion) => { @@ -66,7 +66,7 @@ export class Instrumentation extends InstrumentationBase { } getNestFactoryFileInstrumentation(versions: string[]) { - return new InstrumentationNodeModuleFile( + return new InstrumentationNodeModuleFile( '@nestjs/core/nest-factory.js', versions, (NestFactoryStatic: any, moduleVersion?: string) => { @@ -85,7 +85,7 @@ export class Instrumentation extends InstrumentationBase { } getRouterExecutionContextFileInstrumentation(versions: string[]) { - return new InstrumentationNodeModuleFile( + return new InstrumentationNodeModuleFile( '@nestjs/core/router/router-execution-context.js', versions, (RouterExecutionContext: any, moduleVersion?: string) => { diff --git a/plugins/node/opentelemetry-instrumentation-net/package.json b/plugins/node/opentelemetry-instrumentation-net/package.json index 60f25541be..0183bb0615 100644 --- a/plugins/node/opentelemetry-instrumentation-net/package.json +++ b/plugins/node/opentelemetry-instrumentation-net/package.json @@ -58,7 +58,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-net#readme" diff --git a/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts index e3aa6f1e33..59befd2daa 100644 --- a/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts @@ -27,23 +27,24 @@ import { NetTransportValues, } from '@opentelemetry/semantic-conventions'; import { TLSAttributes } from './types'; -import { Net, NormalizedOptions, SocketEvent } from './internal-types'; +import { NormalizedOptions, SocketEvent } from './internal-types'; import { getNormalizedArgs, IPC_TRANSPORT } from './utils'; import { VERSION } from './version'; import { Socket } from 'net'; import { TLSSocket } from 'tls'; +import type * as net from 'net'; -export class NetInstrumentation extends InstrumentationBase { +export class NetInstrumentation extends InstrumentationBase { constructor(_config?: InstrumentationConfig) { super('@opentelemetry/instrumentation-net', VERSION, _config); } - init(): InstrumentationNodeModuleDefinition[] { + init(): InstrumentationNodeModuleDefinition[] { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'net', ['*'], - moduleExports => { + (moduleExports: typeof net) => { diag.debug('Applying patch for net module'); if (isWrapped(moduleExports.Socket.prototype.connect)) { this._unwrap(moduleExports.Socket.prototype, 'connect'); @@ -56,7 +57,7 @@ export class NetInstrumentation extends InstrumentationBase { ); return moduleExports; }, - moduleExports => { + (moduleExports: typeof net) => { if (moduleExports === undefined) return; diag.debug('Removing patch from net module'); this._unwrap(moduleExports.Socket.prototype, 'connect'); diff --git a/plugins/node/opentelemetry-instrumentation-net/src/internal-types.ts b/plugins/node/opentelemetry-instrumentation-net/src/internal-types.ts index a9cb63f735..79726c77aa 100644 --- a/plugins/node/opentelemetry-instrumentation-net/src/internal-types.ts +++ b/plugins/node/opentelemetry-instrumentation-net/src/internal-types.ts @@ -14,10 +14,6 @@ * limitations under the License. */ -import type * as net from 'net'; - -export type Net = typeof net; - export interface NormalizedOptions { host?: string; port?: number; diff --git a/plugins/node/opentelemetry-instrumentation-pg/package.json b/plugins/node/opentelemetry-instrumentation-pg/package.json index c99ceeaf68..df71b8f324 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/package.json +++ b/plugins/node/opentelemetry-instrumentation-pg/package.json @@ -71,7 +71,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@opentelemetry/sql-common": "^0.40.0", "@types/pg": "8.6.1", diff --git a/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts index abe4e65c5e..3a05d00ce4 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts @@ -52,7 +52,7 @@ export class PgInstrumentation extends InstrumentationBase { } protected init() { - const modulePG = new InstrumentationNodeModuleDefinition( + const modulePG = new InstrumentationNodeModuleDefinition( 'pg', ['8.*'], (module: any, moduleVersion) => { @@ -95,12 +95,10 @@ export class PgInstrumentation extends InstrumentationBase { } ); - const modulePGPool = new InstrumentationNodeModuleDefinition< - typeof pgPoolTypes - >( + const modulePGPool = new InstrumentationNodeModuleDefinition( 'pg-pool', ['2.*', '3.*'], - (moduleExports, moduleVersion) => { + (moduleExports: typeof pgPoolTypes, moduleVersion) => { this._diag.debug(`Applying patch for pg-pool@${moduleVersion}`); if (isWrapped(moduleExports.prototype.connect)) { this._unwrap(moduleExports.prototype, 'connect'); @@ -112,7 +110,7 @@ export class PgInstrumentation extends InstrumentationBase { ); return moduleExports; }, - (moduleExports, moduleVersion) => { + (moduleExports: typeof pgPoolTypes, moduleVersion) => { this._diag.debug(`Removing patch for pg-pool@${moduleVersion}`); if (isWrapped(moduleExports.prototype.connect)) { this._unwrap(moduleExports.prototype, 'connect'); diff --git a/plugins/node/opentelemetry-instrumentation-pino/package.json b/plugins/node/opentelemetry-instrumentation-pino/package.json index 6e16aae45d..b23490786c 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/package.json +++ b/plugins/node/opentelemetry-instrumentation-pino/package.json @@ -64,7 +64,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-pino#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts index 3c5824b359..b84dfd4209 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts @@ -44,7 +44,7 @@ export class PinoInstrumentation extends InstrumentationBase { protected init() { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'pino', pinoVersions, (module, moduleVersion?: string) => { diff --git a/plugins/node/opentelemetry-instrumentation-redis-4/package.json b/plugins/node/opentelemetry-instrumentation-redis-4/package.json index f6e0957832..1075413252 100644 --- a/plugins/node/opentelemetry-instrumentation-redis-4/package.json +++ b/plugins/node/opentelemetry-instrumentation-redis-4/package.json @@ -66,7 +66,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/semantic-conventions": "^1.22.0" }, diff --git a/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts index 825defe5cf..42f44e8775 100644 --- a/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts @@ -52,7 +52,7 @@ const DEFAULT_CONFIG: RedisInstrumentationConfig = { requireParentSpan: false, }; -export class RedisInstrumentation extends InstrumentationBase { +export class RedisInstrumentation extends InstrumentationBase { static readonly COMPONENT = 'redis'; constructor(protected override _config: RedisInstrumentationConfig = {}) { @@ -75,8 +75,8 @@ export class RedisInstrumentation extends InstrumentationBase { private _getInstrumentationNodeModuleDefinition( basePackageName: string - ): InstrumentationNodeModuleDefinition { - const commanderModuleFile = new InstrumentationNodeModuleFile( + ): InstrumentationNodeModuleDefinition { + const commanderModuleFile = new InstrumentationNodeModuleFile( `${basePackageName}/dist/lib/commander.js`, ['^1.0.0'], (moduleExports: any, moduleVersion?: string) => { @@ -119,7 +119,7 @@ export class RedisInstrumentation extends InstrumentationBase { } ); - const multiCommanderModule = new InstrumentationNodeModuleFile( + const multiCommanderModule = new InstrumentationNodeModuleFile( `${basePackageName}/dist/lib/client/multi-command.js`, ['^1.0.0'], (moduleExports: any) => { @@ -160,7 +160,7 @@ export class RedisInstrumentation extends InstrumentationBase { } ); - const clientIndexModule = new InstrumentationNodeModuleFile( + const clientIndexModule = new InstrumentationNodeModuleFile( `${basePackageName}/dist/lib/client/index.js`, ['^1.0.0'], (moduleExports: any) => { @@ -225,7 +225,7 @@ export class RedisInstrumentation extends InstrumentationBase { } ); - return new InstrumentationNodeModuleDefinition( + return new InstrumentationNodeModuleDefinition( basePackageName, ['^1.0.0'], (moduleExports: any, moduleVersion?: string) => { diff --git a/plugins/node/opentelemetry-instrumentation-redis/package.json b/plugins/node/opentelemetry-instrumentation-redis/package.json index 7c52f2cb7b..463d608c96 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/package.json +++ b/plugins/node/opentelemetry-instrumentation-redis/package.json @@ -66,7 +66,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/redis-common": "^0.36.1", "@opentelemetry/semantic-conventions": "^1.22.0" }, diff --git a/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts index 819daa3398..a25ef5b8ed 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts @@ -45,7 +45,7 @@ export class RedisInstrumentation extends InstrumentationBase { protected init() { return [ - new InstrumentationNodeModuleDefinition( + new InstrumentationNodeModuleDefinition( 'redis', ['^2.6.0', '^3.0.0'], (moduleExports, moduleVersion) => { diff --git a/plugins/node/opentelemetry-instrumentation-restify/package.json b/plugins/node/opentelemetry-instrumentation-restify/package.json index dbe6fa86ed..de6c089427 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/package.json +++ b/plugins/node/opentelemetry-instrumentation-restify/package.json @@ -62,7 +62,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-restify#readme" diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts index a29679f6ba..f5a1ee96dd 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts @@ -37,7 +37,7 @@ import type { RestifyInstrumentationConfig } from './types'; const { diag } = api; -export class RestifyInstrumentation extends InstrumentationBase { +export class RestifyInstrumentation extends InstrumentationBase { constructor(config: RestifyInstrumentationConfig = {}) { super( `@opentelemetry/instrumentation-${constants.MODULE_NAME}`, @@ -58,7 +58,7 @@ export class RestifyInstrumentation extends InstrumentationBase { } init() { - const module = new InstrumentationNodeModuleDefinition( + const module = new InstrumentationNodeModuleDefinition( constants.MODULE_NAME, constants.SUPPORTED_VERSIONS, (moduleExports, moduleVersion) => { @@ -68,7 +68,7 @@ export class RestifyInstrumentation extends InstrumentationBase { ); module.files.push( - new InstrumentationNodeModuleFile( + new InstrumentationNodeModuleFile( 'restify/lib/server.js', constants.SUPPORTED_VERSIONS, (moduleExports, moduleVersion) => { diff --git a/plugins/node/opentelemetry-instrumentation-router/package.json b/plugins/node/opentelemetry-instrumentation-router/package.json index 48a8335379..c0ac50d89b 100644 --- a/plugins/node/opentelemetry-instrumentation-router/package.json +++ b/plugins/node/opentelemetry-instrumentation-router/package.json @@ -56,7 +56,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-router#readme" diff --git a/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts index 46f6a84836..ca5c73790c 100644 --- a/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts @@ -34,7 +34,7 @@ import * as utils from './utils'; import AttributeNames from './enums/AttributeNames'; import LayerType from './enums/LayerType'; -export default class RouterInstrumentation extends InstrumentationBase { +export default class RouterInstrumentation extends InstrumentationBase { constructor(config?: InstrumentationConfig) { super( `@opentelemetry/instrumentation-${constants.MODULE_NAME}`, @@ -46,7 +46,7 @@ export default class RouterInstrumentation extends InstrumentationBase { private _moduleVersion?: string; init() { - const module = new InstrumentationNodeModuleDefinition( + const module = new InstrumentationNodeModuleDefinition( constants.MODULE_NAME, constants.SUPPORTED_VERSIONS, (moduleExports, moduleVersion) => { @@ -65,7 +65,7 @@ export default class RouterInstrumentation extends InstrumentationBase { ); module.files.push( - new InstrumentationNodeModuleFile( + new InstrumentationNodeModuleFile( 'router/lib/layer.js', constants.SUPPORTED_VERSIONS, (moduleExports, moduleVersion) => { diff --git a/plugins/node/opentelemetry-instrumentation-winston/package.json b/plugins/node/opentelemetry-instrumentation-winston/package.json index 0c25fbb7cb..06a1302f03 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/package.json +++ b/plugins/node/opentelemetry-instrumentation-winston/package.json @@ -64,8 +64,8 @@ "winston2": "npm:winston@2.4.7" }, "dependencies": { - "@opentelemetry/api-logs": "^0.50.0", - "@opentelemetry/instrumentation": "^0.50.0" + "@opentelemetry/api-logs": "^0.51.0", + "@opentelemetry/instrumentation": "^0.51.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-winston#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts index de72ed235b..4312f2bc31 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts @@ -25,8 +25,8 @@ import { } from '@opentelemetry/instrumentation'; import type { WinstonInstrumentationConfig } from './types'; import type { - Winston2LogMethod, Winston2LoggerModule, + Winston2LogMethod, Winston3ConfigureMethod, Winston3LogMethod, Winston3Logger, @@ -43,16 +43,16 @@ export class WinstonInstrumentation extends InstrumentationBase { protected init() { const winstons3instrumentationNodeModuleDefinition = - new InstrumentationNodeModuleDefinition<{}>( + new InstrumentationNodeModuleDefinition( 'winston', winston3Versions, moduleExports => moduleExports, () => {}, [ - new InstrumentationNodeModuleFile( + new InstrumentationNodeModuleFile( 'winston/lib/winston/logger.js', winston3Versions, - (logger, moduleVersion) => { + (logger: Winston3Logger, moduleVersion) => { this._diag.debug(`Applying patch for winston@${moduleVersion}`); if (isWrapped(logger.prototype['write'])) { this._unwrap(logger.prototype, 'write'); @@ -71,7 +71,7 @@ export class WinstonInstrumentation extends InstrumentationBase { return logger; }, - (logger, moduleVersion) => { + (logger: Winston3Logger, moduleVersion) => { if (logger === undefined) return; this._diag.debug(`Removing patch for winston@${moduleVersion}`); this._unwrap(logger.prototype, 'write'); @@ -82,16 +82,16 @@ export class WinstonInstrumentation extends InstrumentationBase { ); const winstons2instrumentationNodeModuleDefinition = - new InstrumentationNodeModuleDefinition<{}>( + new InstrumentationNodeModuleDefinition( 'winston', winstonPre3Versions, moduleExports => moduleExports, () => {}, [ - new InstrumentationNodeModuleFile( + new InstrumentationNodeModuleFile( 'winston/lib/winston/logger.js', winstonPre3Versions, - (fileExports, moduleVersion) => { + (fileExports: Winston2LoggerModule, moduleVersion) => { this._diag.debug(`Applying patch for winston@${moduleVersion}`); const proto = fileExports.Logger.prototype; @@ -102,7 +102,7 @@ export class WinstonInstrumentation extends InstrumentationBase { return fileExports; }, - (fileExports, moduleVersion) => { + (fileExports: Winston2LoggerModule, moduleVersion) => { if (fileExports === undefined) return; this._diag.debug(`Removing patch for winston@${moduleVersion}`); this._unwrap(fileExports.Logger.prototype, 'log'); diff --git a/plugins/web/opentelemetry-instrumentation-document-load/package.json b/plugins/web/opentelemetry-instrumentation-document-load/package.json index 7d1a1de173..5b135a8a41 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/package.json +++ b/plugins/web/opentelemetry-instrumentation-document-load/package.json @@ -69,7 +69,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.0.0", "@opentelemetry/sdk-trace-web": "^1.15.0", "@opentelemetry/semantic-conventions": "^1.22.0" diff --git a/plugins/web/opentelemetry-instrumentation-document-load/src/instrumentation.ts b/plugins/web/opentelemetry-instrumentation-document-load/src/instrumentation.ts index ecc84b9f76..f3837177a0 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/src/instrumentation.ts +++ b/plugins/web/opentelemetry-instrumentation-document-load/src/instrumentation.ts @@ -52,7 +52,7 @@ import { /** * This class represents a document load plugin */ -export class DocumentLoadInstrumentation extends InstrumentationBase { +export class DocumentLoadInstrumentation extends InstrumentationBase { readonly component: string = 'document-load'; readonly version: string = '1'; moduleName = this.component; diff --git a/plugins/web/opentelemetry-instrumentation-long-task/package.json b/plugins/web/opentelemetry-instrumentation-long-task/package.json index 0c230f899d..6720125885 100644 --- a/plugins/web/opentelemetry-instrumentation-long-task/package.json +++ b/plugins/web/opentelemetry-instrumentation-long-task/package.json @@ -79,7 +79,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-web": "^1.8.0" }, "peerDependencies": { diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/package.json b/plugins/web/opentelemetry-instrumentation-user-interaction/package.json index 8f2658f700..272ede8cd3 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/package.json +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/package.json @@ -52,7 +52,7 @@ "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-zone-peer-dep": "^1.8.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.50.0", + "@opentelemetry/instrumentation-xml-http-request": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/jquery": "3.5.20", "@types/mocha": "7.0.2", @@ -81,7 +81,7 @@ }, "dependencies": { "@opentelemetry/core": "^1.8.0", - "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-web": "^1.8.0" }, "peerDependencies": { diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/src/instrumentation.ts b/plugins/web/opentelemetry-instrumentation-user-interaction/src/instrumentation.ts index e8be5e3fc5..bba10b2ff9 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/src/instrumentation.ts +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/src/instrumentation.ts @@ -49,7 +49,7 @@ function defaultShouldPreventSpanCreation() { * If zone.js is available then it patches the zone otherwise it patches * addEventListener of HTMLElement */ -export class UserInteractionInstrumentation extends InstrumentationBase { +export class UserInteractionInstrumentation extends InstrumentationBase { readonly version = VERSION; readonly moduleName: string = 'user-interaction'; private _spansData = new WeakMap(); From 73e01f281d2823e7f81e3efee2e0cb2a24e528e5 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Thu, 25 Apr 2024 04:34:35 -0400 Subject: [PATCH 059/121] chore(examples/graphql): use exported strings for attributes (#2122) Use exported strings for Semantic Attributes Co-authored-by: Trent Mick Co-authored-by: Amir Blum Co-authored-by: Marc Pichler --- examples/graphql/package.json | 2 +- examples/graphql/tracer.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/graphql/package.json b/examples/graphql/package.json index 53e8935933..6ca5a0371b 100644 --- a/examples/graphql/package.json +++ b/examples/graphql/package.json @@ -44,7 +44,7 @@ "@opentelemetry/resources": "~1.0.0", "@opentelemetry/sdk-trace-base": "~1.0.0", "@opentelemetry/sdk-trace-node": "~1.0.0", - "@opentelemetry/semantic-conventions": "~1.0.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "apollo-server": "^2.18.1", "cross-fetch": "^3.0.5", "express": "^4.17.1", diff --git a/examples/graphql/tracer.js b/examples/graphql/tracer.js index 2545a20874..82a24edde8 100644 --- a/examples/graphql/tracer.js +++ b/examples/graphql/tracer.js @@ -8,11 +8,11 @@ const { OTLPTraceExporter } = require('@opentelemetry/exporter-otlp-http'); const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http'); const { ExpressInstrumentation } = require('@opentelemetry/instrumentation-express'); const { Resource } = require('@opentelemetry/resources'); -const { SemanticResourceAttributes } = require('@opentelemetry/semantic-conventions'); +const { SEMRESATTRS_SERVICE_NAME } = require('@opentelemetry/semantic-conventions'); const provider = new NodeTracerProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: 'graphql-service', + [SEMRESATTRS_SERVICE_NAME]: 'graphql-service', }), }); From f3406ea864ec614dd4c26b4baf8c44c50ef7d504 Mon Sep 17 00:00:00 2001 From: Amir Blum Date: Thu, 25 Apr 2024 14:44:24 +0300 Subject: [PATCH 060/121] chore: remove patch and unpatch diag from instrumentations (#2107) * chore: remove patch and unpatch diag from instrumentations * fix: compile * fix: compile error connect instrumentation * fix: compile * fix: remove more patch and unpatch diag prints * fix: remove unused moduleVersion argument * fix: unused import from merge --- .../src/instrumentation.ts | 20 +---- .../src/instrumentation.ts | 9 +-- .../instrumentation-fs/src/instrumentation.ts | 4 - .../src/instrumentation.ts | 2 - .../instrumentation-mongoose/src/mongoose.ts | 1 - .../src/socket.io.ts | 19 +---- .../src/instrumentation.ts | 4 +- .../src/instrumentation.ts | 2 - .../src/aws-sdk.ts | 15 ---- .../src/instrumentation.ts | 3 +- .../src/instrumentation.ts | 10 +-- .../src/instrumentation.ts | 8 +- .../src/instrumentation.ts | 4 - .../src/instrumentation.ts | 6 +- .../src/instrumentation.ts | 3 +- .../src/instrumentation.ts | 18 ++--- .../src/instrumentation.ts | 24 ++---- .../src/instrumentation.ts | 3 - .../src/instrumentation.ts | 2 - .../src/instrumentation.ts | 25 +----- .../src/instrumentation.ts | 2 - .../src/instrumentation.ts | 13 +-- .../src/instrumentation.ts | 43 +++------- .../src/instrumentation.ts | 4 +- .../src/instrumentation.ts | 4 +- .../src/instrumentation.ts | 20 +---- .../src/instrumentation.ts | 4 +- .../src/instrumentation.ts | 12 +-- .../src/instrumentation.ts | 81 +++++++++---------- .../src/instrumentation.ts | 18 +---- .../src/instrumentation.ts | 3 +- .../src/instrumentation.ts | 12 +-- .../src/instrumentation.ts | 19 +---- .../src/instrumentation.ts | 12 +-- 34 files changed, 99 insertions(+), 330 deletions(-) diff --git a/plugins/node/instrumentation-cucumber/src/instrumentation.ts b/plugins/node/instrumentation-cucumber/src/instrumentation.ts index 4633707e33..29e466cb69 100644 --- a/plugins/node/instrumentation-cucumber/src/instrumentation.ts +++ b/plugins/node/instrumentation-cucumber/src/instrumentation.ts @@ -53,10 +53,7 @@ export class CucumberInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( '@cucumber/cucumber', ['^8.0.0', '^9.0.0', '^10.0.0'], - (moduleExports: Cucumber, moduleVersion) => { - this._diag.debug( - `Applying patch for @cucumber/cucumber@${moduleVersion}` - ); + (moduleExports: Cucumber) => { this.module = moduleExports; steps.forEach(step => { if (isWrapped(moduleExports[step])) { @@ -72,11 +69,8 @@ export class CucumberInstrumentation extends InstrumentationBase { }); return moduleExports; }, - (moduleExports: Cucumber, moduleVersion) => { + (moduleExports: Cucumber) => { if (moduleExports === undefined) return; - this._diag.debug( - `Removing patch for @cucumber/cucumber@${moduleVersion}` - ); [...hooks, ...steps].forEach(method => { this._unwrap(moduleExports, method); }); @@ -85,10 +79,7 @@ export class CucumberInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleFile( '@cucumber/cucumber/lib/runtime/test_case_runner.js', ['^8.0.0', '^9.0.0', '^10.0.0'], - (moduleExports, moduleVersion) => { - this._diag.debug( - `Applying patch for @cucumber/cucumber/lib/runtime/test_case_runner.js@${moduleVersion}` - ); + moduleExports => { if (isWrapped(moduleExports.default.prototype.run)) { this._unwrap(moduleExports.default.prototype, 'run'); this._unwrap(moduleExports.default.prototype, 'runStep'); @@ -115,11 +106,8 @@ export class CucumberInstrumentation extends InstrumentationBase { } return moduleExports; }, - (moduleExports, moduleVersion) => { + moduleExports => { if (moduleExports === undefined) return; - this._diag.debug( - `Removing patch for @cucumber/cucumber/lib/runtime/test_case_runner.js@${moduleVersion}` - ); this._unwrap(moduleExports.default.prototype, 'run'); this._unwrap(moduleExports.default.prototype, 'runStep'); if ('runAttempt' in moduleExports.default.prototype) { diff --git a/plugins/node/instrumentation-dataloader/src/instrumentation.ts b/plugins/node/instrumentation-dataloader/src/instrumentation.ts index 75cfb03861..55d53ece64 100644 --- a/plugins/node/instrumentation-dataloader/src/instrumentation.ts +++ b/plugins/node/instrumentation-dataloader/src/instrumentation.ts @@ -20,7 +20,6 @@ import { isWrapped, } from '@opentelemetry/instrumentation'; import { - diag, trace, context, Link, @@ -54,17 +53,13 @@ export class DataloaderInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( MODULE_NAME, ['^2.0.0'], - (dataloader, moduleVersion) => { - diag.debug(`Applying patch for ${MODULE_NAME}@${moduleVersion}`); - + dataloader => { this._patchLoad(dataloader.prototype); this._patchLoadMany(dataloader.prototype); return this._getPatchedConstructor(dataloader); }, - (dataloader, moduleVersion) => { - diag.debug(`Removing patch for ${MODULE_NAME}@${moduleVersion}`); - + dataloader => { if (isWrapped(dataloader.prototype.load)) { this._unwrap(dataloader.prototype, 'load'); } diff --git a/plugins/node/instrumentation-fs/src/instrumentation.ts b/plugins/node/instrumentation-fs/src/instrumentation.ts index 15da51a5ea..d3fea1c952 100644 --- a/plugins/node/instrumentation-fs/src/instrumentation.ts +++ b/plugins/node/instrumentation-fs/src/instrumentation.ts @@ -65,7 +65,6 @@ export default class FsInstrumentation extends InstrumentationBase { 'fs', ['*'], (fs: FS) => { - this._diag.debug('Applying patch for fs'); for (const fName of SYNC_FUNCTIONS) { const { objectToPatch, functionNameToPatch } = indexFs(fs, fName); @@ -113,7 +112,6 @@ export default class FsInstrumentation extends InstrumentationBase { }, (fs: FS) => { if (fs === undefined) return; - this._diag.debug('Removing patch for fs'); for (const fName of SYNC_FUNCTIONS) { const { objectToPatch, functionNameToPatch } = indexFs(fs, fName); if (isWrapped(objectToPatch[functionNameToPatch])) { @@ -137,7 +135,6 @@ export default class FsInstrumentation extends InstrumentationBase { 'fs/promises', ['*'], (fsPromises: FSPromises) => { - this._diag.debug('Applying patch for fs/promises'); for (const fName of PROMISE_FUNCTIONS) { if (isWrapped(fsPromises[fName])) { this._unwrap(fsPromises, fName); @@ -152,7 +149,6 @@ export default class FsInstrumentation extends InstrumentationBase { }, (fsPromises: FSPromises) => { if (fsPromises === undefined) return; - this._diag.debug('Removing patch for fs/promises'); for (const fName of PROMISE_FUNCTIONS) { if (isWrapped(fsPromises[fName])) { this._unwrap(fsPromises, fName); diff --git a/plugins/node/instrumentation-lru-memoizer/src/instrumentation.ts b/plugins/node/instrumentation-lru-memoizer/src/instrumentation.ts index c901a500a5..d11e803973 100644 --- a/plugins/node/instrumentation-lru-memoizer/src/instrumentation.ts +++ b/plugins/node/instrumentation-lru-memoizer/src/instrumentation.ts @@ -33,8 +33,6 @@ export default class LruMemoizerInstrumentation extends InstrumentationBase { 'lru-memoizer', ['>=1.3 <3'], moduleExports => { - this._diag.debug('applying patch for lru-memoizer'); - // moduleExports is a function which receives an options object, // and returns a "memoizer" function upon invocation. // We want to patch this "memoizer's" internal function diff --git a/plugins/node/instrumentation-mongoose/src/mongoose.ts b/plugins/node/instrumentation-mongoose/src/mongoose.ts index 967a30ded1..3de0ea33ee 100644 --- a/plugins/node/instrumentation-mongoose/src/mongoose.ts +++ b/plugins/node/instrumentation-mongoose/src/mongoose.ts @@ -126,7 +126,6 @@ export class MongooseInstrumentation extends InstrumentationBase { } private unpatch(moduleExports: typeof mongoose): void { - this._diag.debug('mongoose instrumentation: unpatch mongoose'); this._unwrap(moduleExports.Model.prototype, 'save'); // revert the patch for $save which we applied by aliasing it to patched `save` moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save; diff --git a/plugins/node/instrumentation-socket.io/src/socket.io.ts b/plugins/node/instrumentation-socket.io/src/socket.io.ts index f5ef96df8f..51c3d1d962 100644 --- a/plugins/node/instrumentation-socket.io/src/socket.io.ts +++ b/plugins/node/instrumentation-socket.io/src/socket.io.ts @@ -72,7 +72,6 @@ export class SocketIoInstrumentation extends InstrumentationBase { if (moduleVersion === undefined) { return moduleExports; } - this._diag.debug(`applying patch to socket.io@${moduleVersion} Socket`); if (isWrapped(moduleExports?.Socket?.prototype?.on)) { this._unwrap(moduleExports.Socket.prototype, 'on'); } @@ -112,9 +111,6 @@ export class SocketIoInstrumentation extends InstrumentationBase { if (moduleVersion === undefined) { return moduleExports; } - this._diag.debug( - `applying patch to socket.io@${moduleVersion} StrictEventEmitter` - ); if (isWrapped(moduleExports?.BroadcastOperator?.prototype?.emit)) { this._unwrap(moduleExports.BroadcastOperator.prototype, 'emit'); } @@ -142,9 +138,6 @@ export class SocketIoInstrumentation extends InstrumentationBase { if (moduleVersion === undefined) { return moduleExports; } - this._diag.debug( - `applying patch to socket.io@${moduleVersion} Namespace` - ); if (isWrapped(moduleExports?.Namespace?.prototype?.emit)) { this._unwrap(moduleExports.Namespace.prototype, 'emit'); } @@ -171,7 +164,6 @@ export class SocketIoInstrumentation extends InstrumentationBase { if (moduleVersion === undefined) { return moduleExports; } - this._diag.debug(`applying patch to socket.io@${moduleVersion} Socket`); if (isWrapped(moduleExports.prototype?.on)) { this._unwrap(moduleExports.prototype, 'on'); } @@ -206,9 +198,6 @@ export class SocketIoInstrumentation extends InstrumentationBase { if (moduleVersion === undefined) { return moduleExports; } - this._diag.debug( - `applying patch to socket.io@${moduleVersion} Namespace` - ); if (isWrapped(moduleExports?.prototype?.emit)) { this._unwrap(moduleExports.prototype, 'emit'); } @@ -237,9 +226,6 @@ export class SocketIoInstrumentation extends InstrumentationBase { if (moduleVersion === undefined) { return moduleExports; } - this._diag.debug( - `applying patch to socket.io@${moduleVersion} Server` - ); if (isWrapped(moduleExports?.Server?.prototype?.on)) { this._unwrap(moduleExports.Server.prototype, 'on'); } @@ -250,7 +236,7 @@ export class SocketIoInstrumentation extends InstrumentationBase { ); return moduleExports; }, - (moduleExports, moduleVersion) => { + moduleExports => { if (isWrapped(moduleExports?.Server?.prototype?.on)) { this._unwrap(moduleExports.Server.prototype, 'on'); } @@ -272,9 +258,6 @@ export class SocketIoInstrumentation extends InstrumentationBase { if (moduleVersion === undefined) { return moduleExports; } - this._diag.debug( - `applying patch to socket.io@${moduleVersion} Server` - ); if (isWrapped(moduleExports?.prototype?.on)) { this._unwrap(moduleExports.prototype, 'on'); } diff --git a/plugins/node/instrumentation-tedious/src/instrumentation.ts b/plugins/node/instrumentation-tedious/src/instrumentation.ts index 5415bae955..d9c23eeb86 100644 --- a/plugins/node/instrumentation-tedious/src/instrumentation.ts +++ b/plugins/node/instrumentation-tedious/src/instrumentation.ts @@ -73,9 +73,7 @@ export class TediousInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( TediousInstrumentation.COMPONENT, ['>=1.11.0 <=15'], - (moduleExports: typeof tedious, moduleVersion) => { - this._diag.debug(`Patching tedious@${moduleVersion}`); - + (moduleExports: typeof tedious) => { const ConnectionPrototype: any = moduleExports.Connection.prototype; for (const method of PATCHED_METHODS) { if (isWrapped(ConnectionPrototype[method])) { diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts index 35345739c3..0b88aeec75 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts @@ -151,7 +151,6 @@ export class AwsLambdaInstrumentation extends InstrumentationBase { module, ['*'], (moduleExports: LambdaModule) => { - diag.debug('Applying patch for lambda handler'); if (isWrapped(moduleExports[functionName])) { this._unwrap(moduleExports, functionName); } @@ -160,7 +159,6 @@ export class AwsLambdaInstrumentation extends InstrumentationBase { }, (moduleExports?: LambdaModule) => { if (moduleExports == null) return; - diag.debug('Removing patch for lambda handler'); this._unwrap(moduleExports, functionName); } ), diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts index 186976a190..7203010630 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts @@ -174,9 +174,6 @@ export class AwsInstrumentation extends InstrumentationBase { } protected patchV3ConstructStack(moduleExports: any, moduleVersion?: string) { - diag.debug( - 'aws-sdk instrumentation: applying patch to aws-sdk v3 constructStack' - ); this._wrap( moduleExports, 'constructStack', @@ -186,17 +183,11 @@ export class AwsInstrumentation extends InstrumentationBase { } protected unpatchV3ConstructStack(moduleExports: any) { - diag.debug( - 'aws-sdk instrumentation: applying unpatch to aws-sdk v3 constructStack' - ); this._unwrap(moduleExports, 'constructStack'); return moduleExports; } protected patchV3SmithyClient(moduleExports: any) { - diag.debug( - 'aws-sdk instrumentation: applying patch to aws-sdk v3 client send' - ); this._wrap( moduleExports.Client.prototype, 'send', @@ -206,17 +197,11 @@ export class AwsInstrumentation extends InstrumentationBase { } protected unpatchV3SmithyClient(moduleExports: any) { - diag.debug( - 'aws-sdk instrumentation: applying patch to aws-sdk v3 constructStack' - ); this._unwrap(moduleExports.Client.prototype, 'send'); return moduleExports; } protected patchV2(moduleExports: any, moduleVersion?: string) { - diag.debug( - `aws-sdk instrumentation: applying patch to ${AwsInstrumentation.component}` - ); this.unpatchV2(moduleExports); this._wrap( moduleExports?.Request.prototype, diff --git a/plugins/node/opentelemetry-instrumentation-bunyan/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-bunyan/src/instrumentation.ts index 08928a23d6..571cbc992e 100644 --- a/plugins/node/opentelemetry-instrumentation-bunyan/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-bunyan/src/instrumentation.ts @@ -46,8 +46,7 @@ export class BunyanInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( 'bunyan', ['<2.0'], - (module: any, moduleVersion) => { - this._diag.debug(`Applying patch for bunyan@${moduleVersion}`); + (module: any) => { const instrumentation = this; const Logger = module[Symbol.toStringTag] === 'Module' diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-cassandra/src/instrumentation.ts index a9bd3d2b85..754277310f 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-cassandra/src/instrumentation.ts @@ -51,10 +51,7 @@ export class CassandraDriverInstrumentation extends InstrumentationBase { return new InstrumentationNodeModuleDefinition( 'cassandra-driver', supportedVersions, - (driverModule, moduleVersion) => { - this._diag.debug( - `Applying patch for cassandra-driver@${moduleVersion}` - ); + driverModule => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const Client = driverModule.Client.prototype as any; @@ -76,10 +73,7 @@ export class CassandraDriverInstrumentation extends InstrumentationBase { return driverModule; }, - (driverModule, moduleVersion) => { - this._diag.debug( - `Removing patch for cassandra-driver@${moduleVersion}` - ); + driverModule => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const Client = driverModule.Client.prototype as any; diff --git a/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts index e28dd67d74..f1d13bb575 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { context, diag, Span, SpanOptions } from '@opentelemetry/api'; +import { context, Span, SpanOptions } from '@opentelemetry/api'; import { getRPCMetadata, RPCType } from '@opentelemetry/core'; import type { HandleFunction, NextFunction, Server } from 'connect'; import type { ServerResponse } from 'http'; @@ -55,12 +55,8 @@ export class ConnectInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( 'connect', ['^3.0.0'], - (moduleExports, moduleVersion) => { - diag.debug(`Applying patch for connect@${moduleVersion}`); + moduleExports => { return this._patchConstructor(moduleExports); - }, - (moduleExports, moduleVersion) => { - diag.debug(`Removing patch for connect@${moduleVersion}`); } ), ]; diff --git a/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts index ca96db7167..37ad2822fb 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts @@ -50,7 +50,6 @@ export class DnsInstrumentation extends InstrumentationBase { 'dns', ['*'], (moduleExports: typeof dns) => { - diag.debug('Applying patch for dns'); if (isWrapped(moduleExports.lookup)) { this._unwrap(moduleExports, 'lookup'); } @@ -66,7 +65,6 @@ export class DnsInstrumentation extends InstrumentationBase { }, moduleExports => { if (moduleExports === undefined) return; - diag.debug('Removing patch for dns'); this._unwrap(moduleExports, 'lookup'); this._unwrap(moduleExports.promises, 'lookup'); } @@ -75,7 +73,6 @@ export class DnsInstrumentation extends InstrumentationBase { 'dns/promises', ['*'], (moduleExports: typeof dnsPromises) => { - diag.debug('Applying patch for dns/promises'); if (isWrapped(moduleExports.lookup)) { this._unwrap(moduleExports, 'lookup'); } @@ -85,7 +82,6 @@ export class DnsInstrumentation extends InstrumentationBase { }, moduleExports => { if (moduleExports === undefined) return; - diag.debug('Removing patch for dns/promises'); this._unwrap(moduleExports, 'lookup'); } ), diff --git a/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts index 1d53559cf3..b20121b304 100644 --- a/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts @@ -71,8 +71,7 @@ export class ExpressInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( 'express', ['^4.0.0'], - (moduleExports, moduleVersion) => { - diag.debug(`Applying patch for express@${moduleVersion}`); + moduleExports => { const routerProto = moduleExports.Router as unknown as express.Router; // patch express.Router.route if (isWrapped(routerProto.route)) { @@ -97,9 +96,8 @@ export class ExpressInstrumentation extends InstrumentationBase { ); return moduleExports; }, - (moduleExports, moduleVersion) => { + moduleExports => { if (moduleExports === undefined) return; - diag.debug(`Removing patch for express@${moduleVersion}`); const routerProto = moduleExports.Router as unknown as express.Router; this._unwrap(routerProto, 'route'); this._unwrap(routerProto, 'use'); diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts index f1fb316081..aebf1bf721 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts @@ -68,8 +68,7 @@ export class FastifyInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( 'fastify', ['^3.0.0', '^4.0.0'], - (moduleExports, moduleVersion) => { - this._diag.debug(`Applying patch for fastify@${moduleVersion}`); + moduleExports => { return this._patchConstructor(moduleExports); } ), diff --git a/plugins/node/opentelemetry-instrumentation-generic-pool/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-generic-pool/src/instrumentation.ts index cea3ff9b81..29f3671688 100644 --- a/plugins/node/opentelemetry-instrumentation-generic-pool/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-generic-pool/src/instrumentation.ts @@ -41,8 +41,7 @@ export default class Instrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( MODULE_NAME, ['>=3'], - (moduleExports, moduleVersion) => { - api.diag.debug(`Applying patch for ${MODULE_NAME}@${moduleVersion}`); + moduleExports => { const Pool: any = moduleExports.Pool; if (isWrapped(Pool.prototype.acquire)) { this._unwrap(Pool.prototype, 'acquire'); @@ -54,8 +53,7 @@ export default class Instrumentation extends InstrumentationBase { ); return moduleExports; }, - (moduleExports, moduleVersion) => { - api.diag.debug(`Removing patch for ${MODULE_NAME}@${moduleVersion}`); + moduleExports => { const Pool: any = moduleExports.Pool; this._unwrap(Pool.prototype, 'acquire'); return moduleExports; @@ -64,8 +62,7 @@ export default class Instrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( MODULE_NAME, ['^2.4'], - (moduleExports, moduleVersion) => { - api.diag.debug(`Applying patch for ${MODULE_NAME}@${moduleVersion}`); + moduleExports => { const Pool: any = moduleExports.Pool; if (isWrapped(Pool.prototype.acquire)) { this._unwrap(Pool.prototype, 'acquire'); @@ -77,8 +74,7 @@ export default class Instrumentation extends InstrumentationBase { ); return moduleExports; }, - (moduleExports, moduleVersion) => { - api.diag.debug(`Removing patch for ${MODULE_NAME}@${moduleVersion}`); + moduleExports => { const Pool: any = moduleExports.Pool; this._unwrap(Pool.prototype, 'acquire'); return moduleExports; @@ -87,8 +83,7 @@ export default class Instrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( MODULE_NAME, ['2 - 2.3'], - (moduleExports, moduleVersion) => { - api.diag.debug(`Applying patch for ${MODULE_NAME}@${moduleVersion}`); + moduleExports => { this._isDisabled = false; if (isWrapped(moduleExports.Pool)) { this._unwrap(moduleExports, 'Pool'); @@ -96,8 +91,7 @@ export default class Instrumentation extends InstrumentationBase { this._wrap(moduleExports, 'Pool', this._poolWrapper.bind(this)); return moduleExports; }, - (moduleExports, moduleVersion) => { - api.diag.debug(`Removing patch for ${MODULE_NAME}@${moduleVersion}`); + moduleExports => { // since the object is created on the fly every time, we need to use // a boolean switch here to disable the instrumentation this._isDisabled = true; diff --git a/plugins/node/opentelemetry-instrumentation-graphql/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-graphql/src/instrumentation.ts index 8d30b67391..ddae6e3ddb 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-graphql/src/instrumentation.ts @@ -101,8 +101,7 @@ export class GraphQLInstrumentation extends InstrumentationBase { supportedVersions, // cannot make it work with appropriate type as execute function has 2 //types and/cannot import function but only types - (moduleExports: any, moduleVersion) => { - this._diag.debug(`Applying patch for graphql@${moduleVersion} execute`); + (moduleExports: any) => { if (isWrapped(moduleExports.execute)) { this._unwrap(moduleExports, 'execute'); } @@ -113,11 +112,8 @@ export class GraphQLInstrumentation extends InstrumentationBase { ); return moduleExports; }, - (moduleExports, moduleVersion) => { + moduleExports => { if (moduleExports) { - this._diag.debug( - `Removing patch for graphql@${moduleVersion} execute` - ); this._unwrap(moduleExports, 'execute'); } } @@ -128,17 +124,15 @@ export class GraphQLInstrumentation extends InstrumentationBase { return new InstrumentationNodeModuleFile( 'graphql/language/parser.js', supportedVersions, - (moduleExports: typeof graphqlTypes, moduleVersion) => { - this._diag.debug(`Applying patch for graphql@${moduleVersion} parse`); + (moduleExports: typeof graphqlTypes) => { if (isWrapped(moduleExports.parse)) { this._unwrap(moduleExports, 'parse'); } this._wrap(moduleExports, 'parse', this._patchParse()); return moduleExports; }, - (moduleExports: typeof graphqlTypes, moduleVersion) => { + (moduleExports: typeof graphqlTypes) => { if (moduleExports) { - this._diag.debug(`Removing patch for graphql@${moduleVersion} parse`); this._unwrap(moduleExports, 'parse'); } } @@ -149,21 +143,15 @@ export class GraphQLInstrumentation extends InstrumentationBase { return new InstrumentationNodeModuleFile( 'graphql/validation/validate.js', supportedVersions, - (moduleExports, moduleVersion) => { - this._diag.debug( - `Applying patch for graphql@${moduleVersion} validate` - ); + moduleExports => { if (isWrapped(moduleExports.validate)) { this._unwrap(moduleExports, 'validate'); } this._wrap(moduleExports, 'validate', this._patchValidate()); return moduleExports; }, - (moduleExports, moduleVersion) => { + moduleExports => { if (moduleExports) { - this._diag.debug( - `Removing patch for graphql@${moduleVersion} validate` - ); this._unwrap(moduleExports, 'validate'); } } diff --git a/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts index 4e938f438b..4e3d1d4ce9 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts @@ -59,7 +59,6 @@ export class HapiInstrumentation extends InstrumentationBase { ['>=17 <21'], (moduleExports: typeof Hapi) => { if (!isWrapped(moduleExports.server)) { - api.diag.debug('Patching Hapi.server'); this._wrap(moduleExports, 'server', this._getServerPatch.bind(this)); } @@ -69,7 +68,6 @@ export class HapiInstrumentation extends InstrumentationBase { // also be supported and instrumented. This is an issue with the DefinitelyTyped repo. // Function is defined at: https://github.com/hapijs/hapi/blob/main/lib/index.js#L9 if (!isWrapped(moduleExports.Server)) { - api.diag.debug('Patching Hapi.Server'); this._wrap( // eslint-disable-next-line @typescript-eslint/no-explicit-any moduleExports as any, @@ -80,7 +78,6 @@ export class HapiInstrumentation extends InstrumentationBase { return moduleExports; }, (moduleExports: typeof Hapi) => { - api.diag.debug('Unpatching Hapi'); this._massUnwrap([moduleExports], ['server', 'Server']); } ); diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts index d0d662cccd..26b671ab1f 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts @@ -54,7 +54,6 @@ export class IORedisInstrumentation extends InstrumentationBase { module[Symbol.toStringTag] === 'Module' ? module.default // ESM : module; // CommonJS - diag.debug('Applying patch for ioredis'); if (isWrapped(moduleExports.prototype.sendCommand)) { this._unwrap(moduleExports.prototype, 'sendCommand'); } @@ -79,7 +78,6 @@ export class IORedisInstrumentation extends InstrumentationBase { module[Symbol.toStringTag] === 'Module' ? module.default // ESM : module; // CommonJS - diag.debug('Removing patch for ioredis'); this._unwrap(moduleExports.prototype, 'sendCommand'); this._unwrap(moduleExports.prototype, 'connect'); } diff --git a/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts index 7aab25716a..ce45403efc 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts @@ -73,11 +73,7 @@ export class KnexInstrumentation extends InstrumentationBase { `knex/${basePath}/runner.js`, constants.SUPPORTED_VERSIONS, (Runner: any, moduleVersion) => { - api.diag.debug( - `Applying ${basePath}/runner.js patch for ${constants.MODULE_NAME}@${moduleVersion}` - ); this.ensureWrapped( - moduleVersion, Runner.prototype, 'query', this.createQueryWrapper(moduleVersion) @@ -85,9 +81,6 @@ export class KnexInstrumentation extends InstrumentationBase { return Runner; }, (Runner: any, moduleVersion) => { - api.diag.debug( - `Removing ${basePath}/runner.js patch for ${constants.MODULE_NAME}@${moduleVersion}` - ); this._unwrap(Runner.prototype, 'query'); return Runner; } @@ -98,24 +91,18 @@ export class KnexInstrumentation extends InstrumentationBase { return new InstrumentationNodeModuleFile( `knex/${basePath}/client.js`, constants.SUPPORTED_VERSIONS, - (Client: any, moduleVersion) => { - api.diag.debug( - `Applying ${basePath}/client.js patch for ${constants.MODULE_NAME}@${moduleVersion}` - ); + (Client: any) => { this.ensureWrapped( - moduleVersion, Client.prototype, 'queryBuilder', this.storeContext.bind(this) ); this.ensureWrapped( - moduleVersion, Client.prototype, 'schemaBuilder', this.storeContext.bind(this) ); this.ensureWrapped( - moduleVersion, Client.prototype, 'raw', this.storeContext.bind(this) @@ -214,15 +201,7 @@ export class KnexInstrumentation extends InstrumentationBase { }; } - ensureWrapped( - moduleVersion: string | undefined, - obj: any, - methodName: string, - wrapper: (original: any) => any - ) { - api.diag.debug( - `Applying ${methodName} patch for ${constants.MODULE_NAME}@${moduleVersion}` - ); + ensureWrapped(obj: any, methodName: string, wrapper: (original: any) => any) { if (isWrapped(obj[methodName])) { this._unwrap(obj, methodName); } diff --git a/plugins/node/opentelemetry-instrumentation-koa/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-koa/src/instrumentation.ts index 7ce213fe82..742e500122 100644 --- a/plugins/node/opentelemetry-instrumentation-koa/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-koa/src/instrumentation.ts @@ -63,7 +63,6 @@ export class KoaInstrumentation extends InstrumentationBase { if (moduleExports == null) { return moduleExports; } - api.diag.debug('Patching Koa'); if (isWrapped(moduleExports.prototype.use)) { this._unwrap(moduleExports.prototype, 'use'); } @@ -79,7 +78,6 @@ export class KoaInstrumentation extends InstrumentationBase { module[Symbol.toStringTag] === 'Module' ? module.default // ESM : module; // CommonJS - api.diag.debug('Unpatching Koa'); if (isWrapped(moduleExports.prototype.use)) { this._unwrap(moduleExports.prototype, 'use'); } diff --git a/plugins/node/opentelemetry-instrumentation-memcached/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-memcached/src/instrumentation.ts index 3ba0770355..fba48b5434 100644 --- a/plugins/node/opentelemetry-instrumentation-memcached/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-memcached/src/instrumentation.ts @@ -56,21 +56,14 @@ export class Instrumentation extends InstrumentationBase { 'memcached', ['>=2.2'], (moduleExports: typeof Memcached, moduleVersion) => { - this._diag.debug( - `Patching ${Instrumentation.COMPONENT}@${moduleVersion}` - ); this.ensureWrapped( - moduleVersion, moduleExports.prototype, 'command', this.wrapCommand.bind(this, moduleVersion) ); return moduleExports; }, - (moduleExports: typeof Memcached, moduleVersion) => { - this._diag.debug( - `Unpatching ${Instrumentation.COMPONENT}@${moduleVersion}` - ); + (moduleExports: typeof Memcached) => { if (moduleExports === undefined) return; // `command` is documented API missing from the types this._unwrap(moduleExports.prototype, 'command' as keyof Memcached); @@ -175,14 +168,10 @@ export class Instrumentation extends InstrumentationBase { } private ensureWrapped( - moduleVersion: string | undefined, obj: any, methodName: string, wrapper: (original: any) => any ) { - this._diag.debug( - `Applying ${methodName} patch for ${Instrumentation.COMPONENT}@${moduleVersion}` - ); if (isWrapped(obj[methodName])) { this._unwrap(obj, methodName); } diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts index 7b99c55c9a..f7c9e99d3a 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts @@ -15,7 +15,6 @@ */ import { context, - diag, trace, Span, SpanKind, @@ -148,8 +147,7 @@ export class MongoDBInstrumentation extends InstrumentationBase { private _getV3ConnectionPatches() { return { - v3PatchConnection: (moduleExports: T, moduleVersion?: string) => { - diag.debug(`Applying patch for mongodb@${moduleVersion}`); + v3PatchConnection: (moduleExports: T) => { // patch insert operation if (isWrapped(moduleExports.insert)) { this._unwrap(moduleExports, 'insert'); @@ -194,9 +192,8 @@ export class MongoDBInstrumentation extends InstrumentationBase { this._wrap(moduleExports, 'getMore', this._getV3PatchCursor()); return moduleExports; }, - v3UnpatchConnection: (moduleExports?: T, moduleVersion?: string) => { + v3UnpatchConnection: (moduleExports?: T) => { if (moduleExports === undefined) return; - diag.debug(`Removing internal patch for mongodb@${moduleVersion}`); this._unwrap(moduleExports, 'insert'); this._unwrap(moduleExports, 'remove'); this._unwrap(moduleExports, 'update'); @@ -209,8 +206,7 @@ export class MongoDBInstrumentation extends InstrumentationBase { private _getV4SessionsPatches() { return { - v4PatchSessions: (moduleExports: any, moduleVersion?: string) => { - diag.debug(`Applying patch for mongodb@${moduleVersion}`); + v4PatchSessions: (moduleExports: any) => { if (isWrapped(moduleExports.acquire)) { this._unwrap(moduleExports, 'acquire'); } @@ -230,8 +226,7 @@ export class MongoDBInstrumentation extends InstrumentationBase { ); return moduleExports; }, - v4UnpatchSessions: (moduleExports?: T, moduleVersion?: string) => { - diag.debug(`Removing internal patch for mongodb@${moduleVersion}`); + v4UnpatchSessions: (moduleExports?: T) => { if (moduleExports === undefined) return; if (isWrapped(moduleExports.acquire)) { this._unwrap(moduleExports, 'acquire'); @@ -294,8 +289,7 @@ export class MongoDBInstrumentation extends InstrumentationBase { private _getV4ConnectionPoolPatches() { return { - v4PatchConnectionPool: (moduleExports: any, moduleVersion?: string) => { - diag.debug(`Applying patch for mongodb@${moduleVersion}`); + v4PatchConnectionPool: (moduleExports: any) => { const poolPrototype = moduleExports.ConnectionPool.prototype; if (isWrapped(poolPrototype.checkOut)) { @@ -309,11 +303,7 @@ export class MongoDBInstrumentation extends InstrumentationBase { ); return moduleExports; }, - v4UnpatchConnectionPool: ( - moduleExports?: any, - moduleVersion?: string - ) => { - diag.debug(`Removing internal patch for mongodb@${moduleVersion}`); + v4UnpatchConnectionPool: (moduleExports?: any) => { if (moduleExports === undefined) return; this._unwrap(moduleExports.ConnectionPool.prototype, 'checkOut'); @@ -323,8 +313,7 @@ export class MongoDBInstrumentation extends InstrumentationBase { private _getV4ConnectPatches() { return { - v4PatchConnect: (moduleExports: any, moduleVersion?: string) => { - diag.debug(`Applying patch for mongodb@${moduleVersion}`); + v4PatchConnect: (moduleExports: any) => { if (isWrapped(moduleExports.connect)) { this._unwrap(moduleExports, 'connect'); } @@ -332,8 +321,7 @@ export class MongoDBInstrumentation extends InstrumentationBase { this._wrap(moduleExports, 'connect', this._getV4ConnectCommand()); return moduleExports; }, - v4UnpatchConnect: (moduleExports?: T, moduleVersion?: string) => { - diag.debug(`Removing internal patch for mongodb@${moduleVersion}`); + v4UnpatchConnect: (moduleExports?: T) => { if (moduleExports === undefined) return; this._unwrap(moduleExports, 'connect'); @@ -402,11 +390,7 @@ export class MongoDBInstrumentation extends InstrumentationBase { // eslint-disable-next-line @typescript-eslint/no-unused-vars private _getV4ConnectionPatches() { return { - v4PatchConnectionCallback: ( - moduleExports: any, - moduleVersion?: string - ) => { - diag.debug(`Applying patch for mongodb@${moduleVersion}`); + v4PatchConnectionCallback: (moduleExports: any) => { // patch insert operation if (isWrapped(moduleExports.Connection.prototype.command)) { this._unwrap(moduleExports.Connection.prototype, 'command'); @@ -419,11 +403,7 @@ export class MongoDBInstrumentation extends InstrumentationBase { ); return moduleExports; }, - v4PatchConnectionPromise: ( - moduleExports: any, - moduleVersion?: string - ) => { - diag.debug(`Applying patch for mongodb@${moduleVersion}`); + v4PatchConnectionPromise: (moduleExports: any) => { // patch insert operation if (isWrapped(moduleExports.Connection.prototype.command)) { this._unwrap(moduleExports.Connection.prototype, 'command'); @@ -436,9 +416,8 @@ export class MongoDBInstrumentation extends InstrumentationBase { ); return moduleExports; }, - v4UnpatchConnection: (moduleExports?: any, moduleVersion?: string) => { + v4UnpatchConnection: (moduleExports?: any) => { if (moduleExports === undefined) return; - diag.debug(`Removing internal patch for mongodb@${moduleVersion}`); this._unwrap(moduleExports.Connection.prototype, 'command'); }, }; diff --git a/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts index 78e9b78a03..2e4ba8675e 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts @@ -83,9 +83,7 @@ export class MySQLInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( 'mysql', ['2.*'], - (moduleExports: typeof mysqlTypes, moduleVersion) => { - diag.debug(`Patching mysql@${moduleVersion}`); - + (moduleExports: typeof mysqlTypes) => { diag.debug('Patching mysql.createConnection'); if (isWrapped(moduleExports.createConnection)) { this._unwrap(moduleExports, 'createConnection'); diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts index d2f130b2ac..e693488de0 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts @@ -53,9 +53,7 @@ export class MySQL2Instrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( 'mysql2', ['>= 1.4.2 < 4.0'], - (moduleExports: any, moduleVersion) => { - api.diag.debug(`Patching mysql2@${moduleVersion}`); - + (moduleExports: any) => { const ConnectionPrototype: mysqlTypes.Connection = moduleExports.Connection.prototype; api.diag.debug('Patching Connection.prototype.query'); diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts index d947169ec4..619c68760f 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts @@ -42,19 +42,7 @@ export class Instrumentation extends InstrumentationBase { init() { const module = new InstrumentationNodeModuleDefinition( Instrumentation.COMPONENT, - ['>=4.0.0'], - (moduleExports, moduleVersion) => { - this._diag.debug( - `Patching ${Instrumentation.COMPONENT}@${moduleVersion}` - ); - return moduleExports; - }, - (moduleExports, moduleVersion) => { - this._diag.debug( - `Unpatching ${Instrumentation.COMPONENT}@${moduleVersion}` - ); - if (moduleExports === undefined) return; - } + ['>=4.0.0'] ); module.files.push( @@ -71,7 +59,6 @@ export class Instrumentation extends InstrumentationBase { versions, (NestFactoryStatic: any, moduleVersion?: string) => { this.ensureWrapped( - moduleVersion, NestFactoryStatic.NestFactoryStatic.prototype, 'create', createWrapNestFactoryCreate(this.tracer, moduleVersion) @@ -90,7 +77,6 @@ export class Instrumentation extends InstrumentationBase { versions, (RouterExecutionContext: any, moduleVersion?: string) => { this.ensureWrapped( - moduleVersion, RouterExecutionContext.RouterExecutionContext.prototype, 'create', createWrapCreateHandler(this.tracer, moduleVersion) @@ -107,14 +93,10 @@ export class Instrumentation extends InstrumentationBase { } private ensureWrapped( - moduleVersion: string | undefined, obj: any, methodName: string, wrapper: (original: any) => any ) { - this._diag.debug( - `Applying ${methodName} patch for ${Instrumentation.COMPONENT}@${moduleVersion}` - ); if (isWrapped(obj[methodName])) { this._unwrap(obj, methodName); } diff --git a/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts index 59befd2daa..49611da87c 100644 --- a/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { diag, Span, SpanStatusCode, context, trace } from '@opentelemetry/api'; +import { Span, SpanStatusCode, context, trace } from '@opentelemetry/api'; import { InstrumentationBase, InstrumentationConfig, @@ -45,7 +45,6 @@ export class NetInstrumentation extends InstrumentationBase { 'net', ['*'], (moduleExports: typeof net) => { - diag.debug('Applying patch for net module'); if (isWrapped(moduleExports.Socket.prototype.connect)) { this._unwrap(moduleExports.Socket.prototype, 'connect'); } @@ -59,7 +58,6 @@ export class NetInstrumentation extends InstrumentationBase { }, (moduleExports: typeof net) => { if (moduleExports === undefined) return; - diag.debug('Removing patch from net module'); this._unwrap(moduleExports.Socket.prototype, 'connect'); } ), diff --git a/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts index 3a05d00ce4..d8043af302 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts @@ -55,8 +55,7 @@ export class PgInstrumentation extends InstrumentationBase { const modulePG = new InstrumentationNodeModuleDefinition( 'pg', ['8.*'], - (module: any, moduleVersion) => { - this._diag.debug(`Applying patch for pg@${moduleVersion}`); + (module: any) => { const moduleExports: typeof pgTypes = module[Symbol.toStringTag] === 'Module' ? module.default // ESM @@ -83,12 +82,11 @@ export class PgInstrumentation extends InstrumentationBase { return module; }, - (module: any, moduleVersion) => { + (module: any) => { const moduleExports: typeof pgTypes = module[Symbol.toStringTag] === 'Module' ? module.default // ESM : module; // CommonJS - this._diag.debug(`Removing patch for pg@${moduleVersion}`); if (isWrapped(moduleExports.Client.prototype.query)) { this._unwrap(moduleExports.Client.prototype, 'query'); } @@ -98,8 +96,7 @@ export class PgInstrumentation extends InstrumentationBase { const modulePGPool = new InstrumentationNodeModuleDefinition( 'pg-pool', ['2.*', '3.*'], - (moduleExports: typeof pgPoolTypes, moduleVersion) => { - this._diag.debug(`Applying patch for pg-pool@${moduleVersion}`); + (moduleExports: typeof pgPoolTypes) => { if (isWrapped(moduleExports.prototype.connect)) { this._unwrap(moduleExports.prototype, 'connect'); } @@ -110,8 +107,7 @@ export class PgInstrumentation extends InstrumentationBase { ); return moduleExports; }, - (moduleExports: typeof pgPoolTypes, moduleVersion) => { - this._diag.debug(`Removing patch for pg-pool@${moduleVersion}`); + (moduleExports: typeof pgPoolTypes) => { if (isWrapped(moduleExports.prototype.connect)) { this._unwrap(moduleExports.prototype, 'connect'); } diff --git a/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts index b84dfd4209..dce1ff3ecc 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts @@ -44,57 +44,52 @@ export class PinoInstrumentation extends InstrumentationBase { protected init() { return [ - new InstrumentationNodeModuleDefinition( - 'pino', - pinoVersions, - (module, moduleVersion?: string) => { - diag.debug(`Applying patch for pino@${moduleVersion}`); - const isESM = module[Symbol.toStringTag] === 'Module'; - const moduleExports = isESM ? module.default : module; - const instrumentation = this; - const patchedPino = Object.assign((...args: unknown[]) => { - if (args.length === 0) { - return moduleExports({ + new InstrumentationNodeModuleDefinition('pino', pinoVersions, module => { + const isESM = module[Symbol.toStringTag] === 'Module'; + const moduleExports = isESM ? module.default : module; + const instrumentation = this; + const patchedPino = Object.assign((...args: unknown[]) => { + if (args.length === 0) { + return moduleExports({ + mixin: instrumentation._getMixinFunction(), + }); + } + + if (args.length === 1) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const optsOrStream = args[0] as any; + if ( + typeof optsOrStream === 'string' || + typeof optsOrStream?.write === 'function' + ) { + args.splice(0, 0, { mixin: instrumentation._getMixinFunction(), }); + return moduleExports(...args); } + } - if (args.length === 1) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const optsOrStream = args[0] as any; - if ( - typeof optsOrStream === 'string' || - typeof optsOrStream?.write === 'function' - ) { - args.splice(0, 0, { - mixin: instrumentation._getMixinFunction(), - }); - return moduleExports(...args); - } - } - - args[0] = instrumentation._combineOptions(args[0]); + args[0] = instrumentation._combineOptions(args[0]); - return moduleExports(...args); - }, moduleExports); + return moduleExports(...args); + }, moduleExports); - if (typeof patchedPino.pino === 'function') { - patchedPino.pino = patchedPino; - } - if (typeof patchedPino.default === 'function') { - patchedPino.default = patchedPino; - } - if (isESM) { - if (module.pino) { - // This was added in pino@6.8.0 (https://github.com/pinojs/pino/pull/936). - module.pino = patchedPino; - } - module.default = patchedPino; + if (typeof patchedPino.pino === 'function') { + patchedPino.pino = patchedPino; + } + if (typeof patchedPino.default === 'function') { + patchedPino.default = patchedPino; + } + if (isESM) { + if (module.pino) { + // This was added in pino@6.8.0 (https://github.com/pinojs/pino/pull/936). + module.pino = patchedPino; } - - return patchedPino; + module.default = patchedPino; } - ), + + return patchedPino; + }), ]; } diff --git a/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts index 42f44e8775..a431fd76ca 100644 --- a/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts @@ -15,7 +15,6 @@ */ import { - diag, trace, context, SpanKind, @@ -96,7 +95,6 @@ export class RedisInstrumentation extends InstrumentationBase { : 'attachCommands'; // this is the function that extend a redis client with a list of commands. // the function patches the commandExecutor to record a span - this._diag.debug('Patching redis commands executor'); if (isWrapped(moduleExports?.[functionToPatch])) { this._unwrap(moduleExports, functionToPatch); } @@ -109,7 +107,6 @@ export class RedisInstrumentation extends InstrumentationBase { return moduleExports; }, (moduleExports: any) => { - this._diag.debug('Unpatching redis commands executor'); if (isWrapped(moduleExports?.extendWithCommands)) { this._unwrap(moduleExports, 'extendWithCommands'); } @@ -123,7 +120,6 @@ export class RedisInstrumentation extends InstrumentationBase { `${basePackageName}/dist/lib/client/multi-command.js`, ['^1.0.0'], (moduleExports: any) => { - this._diag.debug('Patching redis multi commands executor'); const redisClientMultiCommandPrototype = moduleExports?.default?.prototype; @@ -148,7 +144,6 @@ export class RedisInstrumentation extends InstrumentationBase { return moduleExports; }, (moduleExports: any) => { - this._diag.debug('Unpatching redis multi commands executor'); const redisClientMultiCommandPrototype = moduleExports?.default?.prototype; if (isWrapped(redisClientMultiCommandPrototype?.exec)) { @@ -164,7 +159,6 @@ export class RedisInstrumentation extends InstrumentationBase { `${basePackageName}/dist/lib/client/index.js`, ['^1.0.0'], (moduleExports: any) => { - this._diag.debug('Patching redis client'); const redisClientPrototype = moduleExports?.default?.prototype; // In some @redis/client versions 'multi' is a method. In later @@ -211,7 +205,6 @@ export class RedisInstrumentation extends InstrumentationBase { return moduleExports; }, (moduleExports: any) => { - this._diag.debug('Unpatching redis client'); const redisClientPrototype = moduleExports?.default?.prototype; if (isWrapped(redisClientPrototype?.multi)) { this._unwrap(redisClientPrototype, 'multi'); @@ -228,17 +221,10 @@ export class RedisInstrumentation extends InstrumentationBase { return new InstrumentationNodeModuleDefinition( basePackageName, ['^1.0.0'], - (moduleExports: any, moduleVersion?: string) => { - diag.debug( - `Patching ${basePackageName}/client@${moduleVersion} (redis@^4.0.0)` - ); + (moduleExports: any) => { return moduleExports; }, - (_moduleExports: any, moduleVersion?: string) => { - diag.debug( - `Unpatching ${basePackageName}/client@${moduleVersion} (redis@^4.0.0)` - ); - }, + () => {}, [commanderModuleFile, multiCommanderModule, clientIndexModule] ); } diff --git a/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts index a25ef5b8ed..09ee03e6ad 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts @@ -48,8 +48,7 @@ export class RedisInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleDefinition( 'redis', ['^2.6.0', '^3.0.0'], - (moduleExports, moduleVersion) => { - diag.debug(`Patching redis@${moduleVersion}`); + moduleExports => { diag.debug('Patching redis.RedisClient.internal_send_command'); if ( isWrapped( diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts index f5a1ee96dd..73b8b8f5e7 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts @@ -35,8 +35,6 @@ import { isPromise, isAsyncFunction } from './utils'; import { getRPCMetadata, RPCType } from '@opentelemetry/core'; import type { RestifyInstrumentationConfig } from './types'; -const { diag } = api; - export class RestifyInstrumentation extends InstrumentationBase { constructor(config: RestifyInstrumentationConfig = {}) { super( @@ -71,10 +69,7 @@ export class RestifyInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleFile( 'restify/lib/server.js', constants.SUPPORTED_VERSIONS, - (moduleExports, moduleVersion) => { - diag.debug( - `Applying patch for ${constants.MODULE_NAME}@${moduleVersion}` - ); + moduleExports => { this._isDisabled = false; const Server: any = moduleExports; for (const name of constants.RESTIFY_METHODS) { @@ -99,10 +94,7 @@ export class RestifyInstrumentation extends InstrumentationBase { } return moduleExports; }, - (moduleExports, moduleVersion) => { - diag.debug( - `Removing patch for ${constants.MODULE_NAME}@${moduleVersion}` - ); + moduleExports => { this._isDisabled = true; if (moduleExports) { const Server: any = moduleExports; diff --git a/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts index ca5c73790c..02e01d287e 100644 --- a/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts @@ -50,17 +50,8 @@ export default class RouterInstrumentation extends InstrumentationBase { constants.MODULE_NAME, constants.SUPPORTED_VERSIONS, (moduleExports, moduleVersion) => { - api.diag.debug( - `Applying patch for ${constants.MODULE_NAME}@${moduleVersion}` - ); this._moduleVersion = moduleVersion; return moduleExports; - }, - (moduleExports, moduleVersion) => { - api.diag.debug( - `Removing patch for ${constants.MODULE_NAME}@${moduleVersion}` - ); - return moduleExports; } ); @@ -68,10 +59,7 @@ export default class RouterInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleFile( 'router/lib/layer.js', constants.SUPPORTED_VERSIONS, - (moduleExports, moduleVersion) => { - api.diag.debug( - `Applying patch for "lib/layer.js" of ${constants.MODULE_NAME}@${moduleVersion}` - ); + moduleExports => { const Layer: any = moduleExports; if (isWrapped(Layer.prototype.handle_request)) { this._unwrap(Layer.prototype, 'handle_request'); @@ -91,10 +79,7 @@ export default class RouterInstrumentation extends InstrumentationBase { ); return moduleExports; }, - (moduleExports, moduleVersion) => { - api.diag.debug( - `Removing patch for "lib/layer.js" of ${constants.MODULE_NAME}@${moduleVersion}` - ); + moduleExports => { const Layer: any = moduleExports; this._unwrap(Layer.prototype, 'handle_request'); this._unwrap(Layer.prototype, 'handle_error'); diff --git a/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts index 4312f2bc31..2e75400741 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts @@ -52,8 +52,7 @@ export class WinstonInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleFile( 'winston/lib/winston/logger.js', winston3Versions, - (logger: Winston3Logger, moduleVersion) => { - this._diag.debug(`Applying patch for winston@${moduleVersion}`); + (logger: Winston3Logger) => { if (isWrapped(logger.prototype['write'])) { this._unwrap(logger.prototype, 'write'); } @@ -71,9 +70,8 @@ export class WinstonInstrumentation extends InstrumentationBase { return logger; }, - (logger: Winston3Logger, moduleVersion) => { + (logger: Winston3Logger) => { if (logger === undefined) return; - this._diag.debug(`Removing patch for winston@${moduleVersion}`); this._unwrap(logger.prototype, 'write'); this._unwrap(logger.prototype, 'configure'); } @@ -91,8 +89,7 @@ export class WinstonInstrumentation extends InstrumentationBase { new InstrumentationNodeModuleFile( 'winston/lib/winston/logger.js', winstonPre3Versions, - (fileExports: Winston2LoggerModule, moduleVersion) => { - this._diag.debug(`Applying patch for winston@${moduleVersion}`); + (fileExports: Winston2LoggerModule) => { const proto = fileExports.Logger.prototype; if (isWrapped(proto.log)) { @@ -102,9 +99,8 @@ export class WinstonInstrumentation extends InstrumentationBase { return fileExports; }, - (fileExports: Winston2LoggerModule, moduleVersion) => { + (fileExports: Winston2LoggerModule) => { if (fileExports === undefined) return; - this._diag.debug(`Removing patch for winston@${moduleVersion}`); this._unwrap(fileExports.Logger.prototype, 'log'); } ), From b31df370ce61a60a407495cac665c4131ca8dfb9 Mon Sep 17 00:00:00 2001 From: Daniel Dyla Date: Thu, 25 Apr 2024 14:02:49 -0400 Subject: [PATCH 061/121] chore: release main (#2083) * chore: release main * chore: release main * chore: sync package-lock.json --------- Co-authored-by: opentelemetrybot <107717825+opentelemetrybot@users.noreply.github.com> --- .release-please-manifest.json | 120 ++--- .../CHANGELOG.md | 14 + .../package.json | 4 +- .../CHANGELOG.md | 14 + .../package.json | 4 +- .../CHANGELOG.md | 14 + .../package.json | 4 +- .../CHANGELOG.md | 14 + .../package.json | 4 +- .../CHANGELOG.md | 14 + .../package.json | 4 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- .../CHANGELOG.md | 20 + .../package.json | 4 +- .../auto-instrumentations-node/CHANGELOG.md | 58 +++ .../auto-instrumentations-node/package.json | 80 ++-- .../auto-instrumentations-web/CHANGELOG.md | 21 + .../auto-instrumentations-web/package.json | 6 +- package-lock.json | 416 +++++++++--------- .../opentelemetry-host-metrics/CHANGELOG.md | 7 + .../opentelemetry-host-metrics/package.json | 2 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- .../CHANGELOG.md | 14 + .../package.json | 4 +- .../opentelemetry-redis-common/CHANGELOG.md | 7 + .../opentelemetry-redis-common/package.json | 2 +- .../opentelemetry-sql-common/CHANGELOG.md | 7 + .../opentelemetry-sql-common/package.json | 2 +- .../opentelemetry-test-utils/CHANGELOG.md | 13 + .../opentelemetry-test-utils/package.json | 2 +- packages/winston-transport/CHANGELOG.md | 15 + packages/winston-transport/package.json | 2 +- .../node/instrumentation-amqplib/CHANGELOG.md | 20 + .../node/instrumentation-amqplib/package.json | 4 +- .../instrumentation-cucumber/CHANGELOG.md | 13 + .../instrumentation-cucumber/package.json | 2 +- .../instrumentation-dataloader/CHANGELOG.md | 13 + .../instrumentation-dataloader/package.json | 2 +- plugins/node/instrumentation-fs/CHANGELOG.md | 8 + plugins/node/instrumentation-fs/package.json | 2 +- .../instrumentation-lru-memoizer/CHANGELOG.md | 20 + .../instrumentation-lru-memoizer/package.json | 4 +- .../instrumentation-mongoose/CHANGELOG.md | 20 + .../instrumentation-mongoose/package.json | 4 +- .../instrumentation-runtime-node/CHANGELOG.md | 13 + .../instrumentation-runtime-node/package.json | 2 +- .../instrumentation-socket.io/CHANGELOG.md | 15 + .../instrumentation-socket.io/package.json | 4 +- .../node/instrumentation-tedious/CHANGELOG.md | 20 + .../node/instrumentation-tedious/package.json | 4 +- .../node/instrumentation-undici/CHANGELOG.md | 10 + .../node/instrumentation-undici/package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 22 + .../package.json | 6 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 20 + .../package.json | 4 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 20 + .../package.json | 4 +- .../CHANGELOG.md | 20 + .../package.json | 4 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 23 + .../package.json | 6 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 20 + .../package.json | 4 +- .../CHANGELOG.md | 20 + .../package.json | 4 +- .../CHANGELOG.md | 20 + .../package.json | 4 +- .../CHANGELOG.md | 20 + .../package.json | 4 +- .../CHANGELOG.md | 22 + .../package.json | 6 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 22 + .../package.json | 6 +- .../CHANGELOG.md | 20 + .../package.json | 4 +- .../CHANGELOG.md | 22 + .../package.json | 6 +- .../CHANGELOG.md | 22 + .../package.json | 6 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 21 + .../package.json | 4 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 8 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- .../CHANGELOG.md | 7 + .../package.json | 2 +- 122 files changed, 1332 insertions(+), 402 deletions(-) create mode 100644 plugins/node/instrumentation-undici/CHANGELOG.md diff --git a/.release-please-manifest.json b/.release-please-manifest.json index b5d6facdda..ea3c50877d 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,62 +1,62 @@ { - "detectors/node/opentelemetry-resource-detector-alibaba-cloud": "0.28.8", - "detectors/node/opentelemetry-resource-detector-aws": "1.4.1", - "detectors/node/opentelemetry-resource-detector-azure": "0.2.6", - "detectors/node/opentelemetry-resource-detector-container": "0.3.8", - "detectors/node/opentelemetry-resource-detector-gcp": "0.29.8", - "detectors/node/opentelemetry-resource-detector-github": "0.28.1", - "detectors/node/opentelemetry-resource-detector-instana": "0.8.0", - "metapackages/auto-instrumentations-node": "0.44.0", - "metapackages/auto-instrumentations-web": "0.38.0", - "packages/opentelemetry-host-metrics": "0.35.0", - "packages/opentelemetry-id-generator-aws-xray": "1.2.1", - "packages/opentelemetry-propagation-utils": "0.30.8", - "packages/opentelemetry-redis-common": "0.36.1", - "packages/opentelemetry-sql-common": "0.40.0", - "packages/opentelemetry-test-utils": "0.38.0", - "packages/winston-transport": "0.2.0", - "plugins/node/instrumentation-amqplib": "0.36.0", - "plugins/node/instrumentation-cucumber": "0.5.0", - "plugins/node/instrumentation-dataloader": "0.8.0", - "plugins/node/instrumentation-fs": "0.11.0", - "plugins/node/instrumentation-lru-memoizer": "0.36.0", - "plugins/node/instrumentation-mongoose": "0.37.0", - "plugins/node/instrumentation-runtime-node": "0.3.0", - "plugins/node/instrumentation-socket.io": "0.38.0", - "plugins/node/instrumentation-tedious": "0.9.0", - "plugins/node/instrumentation-undici": "0.1.0", - "plugins/node/opentelemetry-instrumentation-aws-lambda": "0.40.0", - "plugins/node/opentelemetry-instrumentation-aws-sdk": "0.40.0", - "plugins/node/opentelemetry-instrumentation-bunyan": "0.37.0", - "plugins/node/opentelemetry-instrumentation-cassandra": "0.37.0", - "plugins/node/opentelemetry-instrumentation-connect": "0.35.0", - "plugins/node/opentelemetry-instrumentation-dns": "0.35.0", - "plugins/node/opentelemetry-instrumentation-express": "0.37.0", - "plugins/node/opentelemetry-instrumentation-fastify": "0.35.0", - "plugins/node/opentelemetry-instrumentation-generic-pool": "0.35.0", - "plugins/node/opentelemetry-instrumentation-graphql": "0.39.0", - "plugins/node/opentelemetry-instrumentation-hapi": "0.36.0", - "plugins/node/opentelemetry-instrumentation-ioredis": "0.39.0", - "plugins/node/opentelemetry-instrumentation-knex": "0.35.0", - "plugins/node/opentelemetry-instrumentation-koa": "0.39.0", - "plugins/node/opentelemetry-instrumentation-memcached": "0.35.0", - "plugins/node/opentelemetry-instrumentation-mongodb": "0.42.0", - "plugins/node/opentelemetry-instrumentation-mysql": "0.37.0", - "plugins/node/opentelemetry-instrumentation-mysql2": "0.37.0", - "plugins/node/opentelemetry-instrumentation-nestjs-core": "0.36.0", - "plugins/node/opentelemetry-instrumentation-net": "0.35.0", - "plugins/node/opentelemetry-instrumentation-pg": "0.40.0", - "plugins/node/opentelemetry-instrumentation-pino": "0.37.0", - "plugins/node/opentelemetry-instrumentation-redis": "0.38.0", - "plugins/node/opentelemetry-instrumentation-redis-4": "0.38.0", - "plugins/node/opentelemetry-instrumentation-restify": "0.37.0", - "plugins/node/opentelemetry-instrumentation-router": "0.36.0", - "plugins/node/opentelemetry-instrumentation-winston": "0.36.0", - "plugins/web/opentelemetry-instrumentation-document-load": "0.37.0", - "plugins/web/opentelemetry-instrumentation-long-task": "0.37.0", - "plugins/web/opentelemetry-instrumentation-user-interaction": "0.37.0", - "plugins/web/opentelemetry-plugin-react-load": "0.30.0", - "propagators/opentelemetry-propagator-grpc-census-binary": "0.27.1", - "propagators/opentelemetry-propagator-instana": "0.3.1", - "propagators/opentelemetry-propagator-ot-trace": "0.27.1" + "detectors/node/opentelemetry-resource-detector-alibaba-cloud": "0.28.9", + "detectors/node/opentelemetry-resource-detector-aws": "1.4.2", + "detectors/node/opentelemetry-resource-detector-azure": "0.2.7", + "detectors/node/opentelemetry-resource-detector-container": "0.3.9", + "detectors/node/opentelemetry-resource-detector-gcp": "0.29.9", + "detectors/node/opentelemetry-resource-detector-github": "0.28.2", + "detectors/node/opentelemetry-resource-detector-instana": "0.9.0", + "metapackages/auto-instrumentations-node": "0.45.0", + "metapackages/auto-instrumentations-web": "0.39.0", + "packages/opentelemetry-host-metrics": "0.35.1", + "packages/opentelemetry-id-generator-aws-xray": "1.2.2", + "packages/opentelemetry-propagation-utils": "0.30.9", + "packages/opentelemetry-redis-common": "0.36.2", + "packages/opentelemetry-sql-common": "0.40.1", + "packages/opentelemetry-test-utils": "0.39.0", + "packages/winston-transport": "0.3.0", + "plugins/node/instrumentation-amqplib": "0.37.0", + "plugins/node/instrumentation-cucumber": "0.6.0", + "plugins/node/instrumentation-dataloader": "0.9.0", + "plugins/node/instrumentation-fs": "0.12.0", + "plugins/node/instrumentation-lru-memoizer": "0.37.0", + "plugins/node/instrumentation-mongoose": "0.38.0", + "plugins/node/instrumentation-runtime-node": "0.4.0", + "plugins/node/instrumentation-socket.io": "0.39.0", + "plugins/node/instrumentation-tedious": "0.10.0", + "plugins/node/instrumentation-undici": "0.2.0", + "plugins/node/opentelemetry-instrumentation-aws-lambda": "0.41.0", + "plugins/node/opentelemetry-instrumentation-aws-sdk": "0.41.0", + "plugins/node/opentelemetry-instrumentation-bunyan": "0.38.0", + "plugins/node/opentelemetry-instrumentation-cassandra": "0.38.0", + "plugins/node/opentelemetry-instrumentation-connect": "0.36.0", + "plugins/node/opentelemetry-instrumentation-dns": "0.36.0", + "plugins/node/opentelemetry-instrumentation-express": "0.38.0", + "plugins/node/opentelemetry-instrumentation-fastify": "0.36.0", + "plugins/node/opentelemetry-instrumentation-generic-pool": "0.36.0", + "plugins/node/opentelemetry-instrumentation-graphql": "0.40.0", + "plugins/node/opentelemetry-instrumentation-hapi": "0.37.0", + "plugins/node/opentelemetry-instrumentation-ioredis": "0.40.0", + "plugins/node/opentelemetry-instrumentation-knex": "0.36.0", + "plugins/node/opentelemetry-instrumentation-koa": "0.40.0", + "plugins/node/opentelemetry-instrumentation-memcached": "0.36.0", + "plugins/node/opentelemetry-instrumentation-mongodb": "0.43.0", + "plugins/node/opentelemetry-instrumentation-mysql": "0.38.0", + "plugins/node/opentelemetry-instrumentation-mysql2": "0.38.0", + "plugins/node/opentelemetry-instrumentation-nestjs-core": "0.37.0", + "plugins/node/opentelemetry-instrumentation-net": "0.36.0", + "plugins/node/opentelemetry-instrumentation-pg": "0.41.0", + "plugins/node/opentelemetry-instrumentation-pino": "0.38.0", + "plugins/node/opentelemetry-instrumentation-redis": "0.39.0", + "plugins/node/opentelemetry-instrumentation-redis-4": "0.39.0", + "plugins/node/opentelemetry-instrumentation-restify": "0.38.0", + "plugins/node/opentelemetry-instrumentation-router": "0.37.0", + "plugins/node/opentelemetry-instrumentation-winston": "0.37.0", + "plugins/web/opentelemetry-instrumentation-document-load": "0.38.0", + "plugins/web/opentelemetry-instrumentation-long-task": "0.38.0", + "plugins/web/opentelemetry-instrumentation-user-interaction": "0.38.0", + "plugins/web/opentelemetry-plugin-react-load": "0.30.1", + "propagators/opentelemetry-propagator-grpc-census-binary": "0.27.2", + "propagators/opentelemetry-propagator-instana": "0.3.2", + "propagators/opentelemetry-propagator-ot-trace": "0.27.2" } diff --git a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/CHANGELOG.md b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/CHANGELOG.md index 7036542f0d..ae374d98a6 100644 --- a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/CHANGELOG.md +++ b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/CHANGELOG.md @@ -72,6 +72,20 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.36.0 to ^0.37.0 +## [0.28.9](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-alibaba-cloud-v0.28.8...resource-detector-alibaba-cloud-v0.28.9) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.28.8](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-alibaba-cloud-v0.28.7...resource-detector-alibaba-cloud-v0.28.8) (2024-04-03) diff --git a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/package.json b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/package.json index 6463fc2337..45de2cd410 100644 --- a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/package.json +++ b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-alibaba-cloud", - "version": "0.28.8", + "version": "0.28.9", "description": "OpenTelemetry resource detector for Alibaba Cloud", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -40,7 +40,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", diff --git a/detectors/node/opentelemetry-resource-detector-aws/CHANGELOG.md b/detectors/node/opentelemetry-resource-detector-aws/CHANGELOG.md index 18ac8f2c17..f8199248af 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/CHANGELOG.md +++ b/detectors/node/opentelemetry-resource-detector-aws/CHANGELOG.md @@ -66,6 +66,20 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.35.1 to ^0.36.0 +## [1.4.2](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-aws-v1.4.1...resource-detector-aws-v1.4.2) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [1.4.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-aws-v1.4.0...resource-detector-aws-v1.4.1) (2024-04-03) diff --git a/detectors/node/opentelemetry-resource-detector-aws/package.json b/detectors/node/opentelemetry-resource-detector-aws/package.json index 6b611bc099..86a6aad28b 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/package.json +++ b/detectors/node/opentelemetry-resource-detector-aws/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-aws", - "version": "1.4.1", + "version": "1.4.2", "description": "OpenTelemetry SDK resource detector for AWS", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -39,7 +39,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", diff --git a/detectors/node/opentelemetry-resource-detector-azure/CHANGELOG.md b/detectors/node/opentelemetry-resource-detector-azure/CHANGELOG.md index b8196ebfbf..37556413cb 100644 --- a/detectors/node/opentelemetry-resource-detector-azure/CHANGELOG.md +++ b/detectors/node/opentelemetry-resource-detector-azure/CHANGELOG.md @@ -12,6 +12,20 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.36.0 to ^0.37.0 +## [0.2.7](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-azure-v0.2.6...resource-detector-azure-v0.2.7) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.2.6](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-azure-v0.2.5...resource-detector-azure-v0.2.6) (2024-04-03) diff --git a/detectors/node/opentelemetry-resource-detector-azure/package.json b/detectors/node/opentelemetry-resource-detector-azure/package.json index 7690843f9d..205caeb2cd 100644 --- a/detectors/node/opentelemetry-resource-detector-azure/package.json +++ b/detectors/node/opentelemetry-resource-detector-azure/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-azure", - "version": "0.2.6", + "version": "0.2.7", "description": "OpenTelemetry SDK resource detector for Azure", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -32,7 +32,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", diff --git a/detectors/node/opentelemetry-resource-detector-container/CHANGELOG.md b/detectors/node/opentelemetry-resource-detector-container/CHANGELOG.md index 182be674b8..36aa20bfa8 100644 --- a/detectors/node/opentelemetry-resource-detector-container/CHANGELOG.md +++ b/detectors/node/opentelemetry-resource-detector-container/CHANGELOG.md @@ -60,6 +60,20 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.36.0 to ^0.37.0 +## [0.3.9](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-container-v0.3.8...resource-detector-container-v0.3.9) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.3.8](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-container-v0.3.7...resource-detector-container-v0.3.8) (2024-04-03) diff --git a/detectors/node/opentelemetry-resource-detector-container/package.json b/detectors/node/opentelemetry-resource-detector-container/package.json index a6fa4c9c85..61b3e45616 100644 --- a/detectors/node/opentelemetry-resource-detector-container/package.json +++ b/detectors/node/opentelemetry-resource-detector-container/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-container", - "version": "0.3.8", + "version": "0.3.9", "description": "Opentelemetry resource detector to get container resource attributes", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -34,7 +34,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", diff --git a/detectors/node/opentelemetry-resource-detector-gcp/CHANGELOG.md b/detectors/node/opentelemetry-resource-detector-gcp/CHANGELOG.md index 56b1be8e1c..6037084fb9 100644 --- a/detectors/node/opentelemetry-resource-detector-gcp/CHANGELOG.md +++ b/detectors/node/opentelemetry-resource-detector-gcp/CHANGELOG.md @@ -60,6 +60,20 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.36.0 to ^0.37.0 +## [0.29.9](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-gcp-v0.29.8...resource-detector-gcp-v0.29.9) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.29.8](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-gcp-v0.29.7...resource-detector-gcp-v0.29.8) (2024-04-03) diff --git a/detectors/node/opentelemetry-resource-detector-gcp/package.json b/detectors/node/opentelemetry-resource-detector-gcp/package.json index cc070b0c5b..f44623d65b 100644 --- a/detectors/node/opentelemetry-resource-detector-gcp/package.json +++ b/detectors/node/opentelemetry-resource-detector-gcp/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-gcp", - "version": "0.29.8", + "version": "0.29.9", "description": "OpenTelemetry SDK resource detector for GCP", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -39,7 +39,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/semver": "7.5.3", diff --git a/detectors/node/opentelemetry-resource-detector-github/CHANGELOG.md b/detectors/node/opentelemetry-resource-detector-github/CHANGELOG.md index 989227e51e..02e132ad53 100644 --- a/detectors/node/opentelemetry-resource-detector-github/CHANGELOG.md +++ b/detectors/node/opentelemetry-resource-detector-github/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.28.2](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-github-v0.28.1...resource-detector-github-v0.28.2) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.28.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-github-v0.28.0...resource-detector-github-v0.28.1) (2023-08-14) diff --git a/detectors/node/opentelemetry-resource-detector-github/package.json b/detectors/node/opentelemetry-resource-detector-github/package.json index 0b7fc892fa..b4c45dbba2 100644 --- a/detectors/node/opentelemetry-resource-detector-github/package.json +++ b/detectors/node/opentelemetry-resource-detector-github/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-github", - "version": "0.28.1", + "version": "0.28.2", "description": "OpenTelemetry SDK resource detector for GitHub", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/detectors/node/opentelemetry-resource-detector-instana/CHANGELOG.md b/detectors/node/opentelemetry-resource-detector-instana/CHANGELOG.md index c0bcedff8a..8e06bd069d 100644 --- a/detectors/node/opentelemetry-resource-detector-instana/CHANGELOG.md +++ b/detectors/node/opentelemetry-resource-detector-instana/CHANGELOG.md @@ -6,6 +6,26 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.9.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-instana-v0.8.0...resource-detector-instana-v0.9.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.8.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-instana-v0.7.0...resource-detector-instana-v0.8.0) (2024-04-03) diff --git a/detectors/node/opentelemetry-resource-detector-instana/package.json b/detectors/node/opentelemetry-resource-detector-instana/package.json index e8fc0b716b..f8fa1192b2 100644 --- a/detectors/node/opentelemetry-resource-detector-instana/package.json +++ b/detectors/node/opentelemetry-resource-detector-instana/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-instana", - "version": "0.8.0", + "version": "0.9.0", "description": "OpenTelemetry SDK resource detector for Instana", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -38,7 +38,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-node": "^0.51.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", diff --git a/metapackages/auto-instrumentations-node/CHANGELOG.md b/metapackages/auto-instrumentations-node/CHANGELOG.md index b69ff3972e..51b021f535 100644 --- a/metapackages/auto-instrumentations-node/CHANGELOG.md +++ b/metapackages/auto-instrumentations-node/CHANGELOG.md @@ -152,6 +152,64 @@ * dependencies * @opentelemetry/instrumentation-aws-sdk bumped from ^0.38.0 to ^0.38.1 +## [0.45.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-node-v0.44.0...auto-instrumentations-node-v0.45.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/instrumentation-amqplib bumped from ^0.36.0 to ^0.37.0 + * @opentelemetry/instrumentation-aws-lambda bumped from ^0.40.0 to ^0.41.0 + * @opentelemetry/instrumentation-aws-sdk bumped from ^0.40.0 to ^0.41.0 + * @opentelemetry/instrumentation-bunyan bumped from ^0.37.0 to ^0.38.0 + * @opentelemetry/instrumentation-cassandra-driver bumped from ^0.37.0 to ^0.38.0 + * @opentelemetry/instrumentation-connect bumped from ^0.35.0 to ^0.36.0 + * @opentelemetry/instrumentation-cucumber bumped from ^0.5.0 to ^0.6.0 + * @opentelemetry/instrumentation-dataloader bumped from ^0.8.0 to ^0.9.0 + * @opentelemetry/instrumentation-dns bumped from ^0.35.0 to ^0.36.0 + * @opentelemetry/instrumentation-express bumped from ^0.37.0 to ^0.38.0 + * @opentelemetry/instrumentation-fastify bumped from ^0.35.0 to ^0.36.0 + * @opentelemetry/instrumentation-fs bumped from ^0.11.0 to ^0.12.0 + * @opentelemetry/instrumentation-generic-pool bumped from ^0.35.0 to ^0.36.0 + * @opentelemetry/instrumentation-graphql bumped from ^0.39.0 to ^0.40.0 + * @opentelemetry/instrumentation-hapi bumped from ^0.36.0 to ^0.37.0 + * @opentelemetry/instrumentation-ioredis bumped from ^0.39.0 to ^0.40.0 + * @opentelemetry/instrumentation-knex bumped from ^0.35.0 to ^0.36.0 + * @opentelemetry/instrumentation-koa bumped from ^0.39.0 to ^0.40.0 + * @opentelemetry/instrumentation-lru-memoizer bumped from ^0.36.0 to ^0.37.0 + * @opentelemetry/instrumentation-memcached bumped from ^0.35.0 to ^0.36.0 + * @opentelemetry/instrumentation-mongodb bumped from ^0.42.0 to ^0.43.0 + * @opentelemetry/instrumentation-mongoose bumped from ^0.37.0 to ^0.38.0 + * @opentelemetry/instrumentation-mysql bumped from ^0.37.0 to ^0.38.0 + * @opentelemetry/instrumentation-mysql2 bumped from ^0.37.0 to ^0.38.0 + * @opentelemetry/instrumentation-nestjs-core bumped from ^0.36.0 to ^0.37.0 + * @opentelemetry/instrumentation-net bumped from ^0.35.0 to ^0.36.0 + * @opentelemetry/instrumentation-pg bumped from ^0.40.0 to ^0.41.0 + * @opentelemetry/instrumentation-pino bumped from ^0.37.0 to ^0.38.0 + * @opentelemetry/instrumentation-redis bumped from ^0.38.0 to ^0.39.0 + * @opentelemetry/instrumentation-redis-4 bumped from ^0.38.0 to ^0.39.0 + * @opentelemetry/instrumentation-restify bumped from ^0.37.0 to ^0.38.0 + * @opentelemetry/instrumentation-router bumped from ^0.36.0 to ^0.37.0 + * @opentelemetry/instrumentation-socket.io bumped from ^0.38.0 to ^0.39.0 + * @opentelemetry/instrumentation-tedious bumped from ^0.9.0 to ^0.10.0 + * @opentelemetry/instrumentation-winston bumped from ^0.36.0 to ^0.37.0 + * @opentelemetry/resource-detector-alibaba-cloud bumped from ^0.28.8 to ^0.28.9 + * @opentelemetry/resource-detector-aws bumped from ^1.4.1 to ^1.4.2 + * @opentelemetry/resource-detector-container bumped from ^0.3.8 to ^0.3.9 + * @opentelemetry/resource-detector-gcp bumped from ^0.29.8 to ^0.29.9 + ## [0.44.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-node-v0.43.0...auto-instrumentations-node-v0.44.0) (2024-04-03) diff --git a/metapackages/auto-instrumentations-node/package.json b/metapackages/auto-instrumentations-node/package.json index e1814cf072..47ee58c6b3 100644 --- a/metapackages/auto-instrumentations-node/package.json +++ b/metapackages/auto-instrumentations-node/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/auto-instrumentations-node", - "version": "0.44.0", + "version": "0.45.0", "description": "Metapackage which bundles opentelemetry node core and contrib instrumentations", "author": "OpenTelemetry Authors", "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/metapackages/auto-instrumentations-node#readme", @@ -50,47 +50,47 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/instrumentation-amqplib": "^0.36.0", - "@opentelemetry/instrumentation-aws-lambda": "^0.40.0", - "@opentelemetry/instrumentation-aws-sdk": "^0.40.0", - "@opentelemetry/instrumentation-bunyan": "^0.37.0", - "@opentelemetry/instrumentation-cassandra-driver": "^0.37.0", - "@opentelemetry/instrumentation-connect": "^0.35.0", - "@opentelemetry/instrumentation-cucumber": "^0.5.0", - "@opentelemetry/instrumentation-dataloader": "^0.8.0", - "@opentelemetry/instrumentation-dns": "^0.35.0", - "@opentelemetry/instrumentation-express": "^0.37.0", - "@opentelemetry/instrumentation-fastify": "^0.35.0", - "@opentelemetry/instrumentation-fs": "^0.11.0", - "@opentelemetry/instrumentation-generic-pool": "^0.35.0", - "@opentelemetry/instrumentation-graphql": "^0.39.0", + "@opentelemetry/instrumentation-amqplib": "^0.37.0", + "@opentelemetry/instrumentation-aws-lambda": "^0.41.0", + "@opentelemetry/instrumentation-aws-sdk": "^0.41.0", + "@opentelemetry/instrumentation-bunyan": "^0.38.0", + "@opentelemetry/instrumentation-cassandra-driver": "^0.38.0", + "@opentelemetry/instrumentation-connect": "^0.36.0", + "@opentelemetry/instrumentation-cucumber": "^0.6.0", + "@opentelemetry/instrumentation-dataloader": "^0.9.0", + "@opentelemetry/instrumentation-dns": "^0.36.0", + "@opentelemetry/instrumentation-express": "^0.38.0", + "@opentelemetry/instrumentation-fastify": "^0.36.0", + "@opentelemetry/instrumentation-fs": "^0.12.0", + "@opentelemetry/instrumentation-generic-pool": "^0.36.0", + "@opentelemetry/instrumentation-graphql": "^0.40.0", "@opentelemetry/instrumentation-grpc": "^0.51.0", - "@opentelemetry/instrumentation-hapi": "^0.36.0", + "@opentelemetry/instrumentation-hapi": "^0.37.0", "@opentelemetry/instrumentation-http": "^0.51.0", - "@opentelemetry/instrumentation-ioredis": "^0.39.0", - "@opentelemetry/instrumentation-knex": "^0.35.0", - "@opentelemetry/instrumentation-koa": "^0.39.0", - "@opentelemetry/instrumentation-lru-memoizer": "^0.36.0", - "@opentelemetry/instrumentation-memcached": "^0.35.0", - "@opentelemetry/instrumentation-mongodb": "^0.42.0", - "@opentelemetry/instrumentation-mongoose": "^0.37.0", - "@opentelemetry/instrumentation-mysql": "^0.37.0", - "@opentelemetry/instrumentation-mysql2": "^0.37.0", - "@opentelemetry/instrumentation-nestjs-core": "^0.36.0", - "@opentelemetry/instrumentation-net": "^0.35.0", - "@opentelemetry/instrumentation-pg": "^0.40.0", - "@opentelemetry/instrumentation-pino": "^0.37.0", - "@opentelemetry/instrumentation-redis": "^0.38.0", - "@opentelemetry/instrumentation-redis-4": "^0.38.0", - "@opentelemetry/instrumentation-restify": "^0.37.0", - "@opentelemetry/instrumentation-router": "^0.36.0", - "@opentelemetry/instrumentation-socket.io": "^0.38.0", - "@opentelemetry/instrumentation-tedious": "^0.9.0", - "@opentelemetry/instrumentation-winston": "^0.36.0", - "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.8", - "@opentelemetry/resource-detector-aws": "^1.4.1", - "@opentelemetry/resource-detector-container": "^0.3.8", - "@opentelemetry/resource-detector-gcp": "^0.29.8", + "@opentelemetry/instrumentation-ioredis": "^0.40.0", + "@opentelemetry/instrumentation-knex": "^0.36.0", + "@opentelemetry/instrumentation-koa": "^0.40.0", + "@opentelemetry/instrumentation-lru-memoizer": "^0.37.0", + "@opentelemetry/instrumentation-memcached": "^0.36.0", + "@opentelemetry/instrumentation-mongodb": "^0.43.0", + "@opentelemetry/instrumentation-mongoose": "^0.38.0", + "@opentelemetry/instrumentation-mysql": "^0.38.0", + "@opentelemetry/instrumentation-mysql2": "^0.38.0", + "@opentelemetry/instrumentation-nestjs-core": "^0.37.0", + "@opentelemetry/instrumentation-net": "^0.36.0", + "@opentelemetry/instrumentation-pg": "^0.41.0", + "@opentelemetry/instrumentation-pino": "^0.38.0", + "@opentelemetry/instrumentation-redis": "^0.39.0", + "@opentelemetry/instrumentation-redis-4": "^0.39.0", + "@opentelemetry/instrumentation-restify": "^0.38.0", + "@opentelemetry/instrumentation-router": "^0.37.0", + "@opentelemetry/instrumentation-socket.io": "^0.39.0", + "@opentelemetry/instrumentation-tedious": "^0.10.0", + "@opentelemetry/instrumentation-winston": "^0.37.0", + "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", + "@opentelemetry/resource-detector-aws": "^1.4.2", + "@opentelemetry/resource-detector-container": "^0.3.9", + "@opentelemetry/resource-detector-gcp": "^0.29.9", "@opentelemetry/resources": "^1.12.0", "@opentelemetry/sdk-node": "^0.51.0" }, diff --git a/metapackages/auto-instrumentations-web/CHANGELOG.md b/metapackages/auto-instrumentations-web/CHANGELOG.md index 145883734e..94fc875089 100644 --- a/metapackages/auto-instrumentations-web/CHANGELOG.md +++ b/metapackages/auto-instrumentations-web/CHANGELOG.md @@ -12,6 +12,27 @@ * dependencies * @opentelemetry/instrumentation-document-load bumped from ^0.31.1 to ^0.31.2 +## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-web-v0.38.0...auto-instrumentations-web-v0.39.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/instrumentation-document-load bumped from ^0.37.0 to ^0.38.0 + * @opentelemetry/instrumentation-user-interaction bumped from ^0.37.0 to ^0.38.0 + ## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-web-v0.37.0...auto-instrumentations-web-v0.38.0) (2024-04-03) diff --git a/metapackages/auto-instrumentations-web/package.json b/metapackages/auto-instrumentations-web/package.json index d733b95e2d..4520fe6748 100644 --- a/metapackages/auto-instrumentations-web/package.json +++ b/metapackages/auto-instrumentations-web/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/auto-instrumentations-web", - "version": "0.38.0", + "version": "0.39.0", "description": "Metapackage which bundles opentelemetry node core and contrib instrumentations", "author": "OpenTelemetry Authors", "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/metapackages/auto-instrumentations-web#readme", @@ -62,9 +62,9 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/instrumentation-document-load": "^0.37.0", + "@opentelemetry/instrumentation-document-load": "^0.38.0", "@opentelemetry/instrumentation-fetch": "^0.51.0", - "@opentelemetry/instrumentation-user-interaction": "^0.37.0", + "@opentelemetry/instrumentation-user-interaction": "^0.38.0", "@opentelemetry/instrumentation-xml-http-request": "^0.51.0" }, "files": [ diff --git a/package-lock.json b/package-lock.json index 331b9eaeed..b30e3664a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37,7 +37,7 @@ }, "detectors/node/opentelemetry-resource-detector-alibaba-cloud": { "name": "@opentelemetry/resource-detector-alibaba-cloud", - "version": "0.28.8", + "version": "0.28.9", "license": "Apache-2.0", "dependencies": { "@opentelemetry/resources": "^1.0.0", @@ -45,7 +45,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -72,7 +72,7 @@ }, "detectors/node/opentelemetry-resource-detector-aws": { "name": "@opentelemetry/resource-detector-aws", - "version": "1.4.1", + "version": "1.4.2", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.0.0", @@ -81,7 +81,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -108,7 +108,7 @@ }, "detectors/node/opentelemetry-resource-detector-azure": { "name": "@opentelemetry/resource-detector-azure", - "version": "0.2.6", + "version": "0.2.7", "license": "Apache-2.0", "dependencies": { "@opentelemetry/resources": "^1.10.1", @@ -116,7 +116,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -142,7 +142,7 @@ }, "detectors/node/opentelemetry-resource-detector-container": { "name": "@opentelemetry/resource-detector-container", - "version": "0.3.8", + "version": "0.3.9", "license": "Apache-2.0", "dependencies": { "@opentelemetry/resources": "^1.0.0", @@ -150,7 +150,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -178,7 +178,7 @@ }, "detectors/node/opentelemetry-resource-detector-gcp": { "name": "@opentelemetry/resource-detector-gcp", - "version": "0.29.8", + "version": "0.29.9", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.0.0", @@ -188,7 +188,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/semver": "7.5.3", @@ -214,7 +214,7 @@ }, "detectors/node/opentelemetry-resource-detector-github": { "name": "@opentelemetry/resource-detector-github", - "version": "0.28.1", + "version": "0.28.2", "license": "Apache-2.0", "dependencies": { "@opentelemetry/resources": "^1.0.0" @@ -246,7 +246,7 @@ }, "detectors/node/opentelemetry-resource-detector-instana": { "name": "@opentelemetry/resource-detector-instana", - "version": "0.8.0", + "version": "0.9.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/resources": "^1.0.0", @@ -254,7 +254,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-node": "^0.51.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -281,51 +281,51 @@ }, "metapackages/auto-instrumentations-node": { "name": "@opentelemetry/auto-instrumentations-node", - "version": "0.44.0", + "version": "0.45.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/instrumentation-amqplib": "^0.36.0", - "@opentelemetry/instrumentation-aws-lambda": "^0.40.0", - "@opentelemetry/instrumentation-aws-sdk": "^0.40.0", - "@opentelemetry/instrumentation-bunyan": "^0.37.0", - "@opentelemetry/instrumentation-cassandra-driver": "^0.37.0", - "@opentelemetry/instrumentation-connect": "^0.35.0", - "@opentelemetry/instrumentation-cucumber": "^0.5.0", - "@opentelemetry/instrumentation-dataloader": "^0.8.0", - "@opentelemetry/instrumentation-dns": "^0.35.0", - "@opentelemetry/instrumentation-express": "^0.37.0", - "@opentelemetry/instrumentation-fastify": "^0.35.0", - "@opentelemetry/instrumentation-fs": "^0.11.0", - "@opentelemetry/instrumentation-generic-pool": "^0.35.0", - "@opentelemetry/instrumentation-graphql": "^0.39.0", + "@opentelemetry/instrumentation-amqplib": "^0.37.0", + "@opentelemetry/instrumentation-aws-lambda": "^0.41.0", + "@opentelemetry/instrumentation-aws-sdk": "^0.41.0", + "@opentelemetry/instrumentation-bunyan": "^0.38.0", + "@opentelemetry/instrumentation-cassandra-driver": "^0.38.0", + "@opentelemetry/instrumentation-connect": "^0.36.0", + "@opentelemetry/instrumentation-cucumber": "^0.6.0", + "@opentelemetry/instrumentation-dataloader": "^0.9.0", + "@opentelemetry/instrumentation-dns": "^0.36.0", + "@opentelemetry/instrumentation-express": "^0.38.0", + "@opentelemetry/instrumentation-fastify": "^0.36.0", + "@opentelemetry/instrumentation-fs": "^0.12.0", + "@opentelemetry/instrumentation-generic-pool": "^0.36.0", + "@opentelemetry/instrumentation-graphql": "^0.40.0", "@opentelemetry/instrumentation-grpc": "^0.51.0", - "@opentelemetry/instrumentation-hapi": "^0.36.0", + "@opentelemetry/instrumentation-hapi": "^0.37.0", "@opentelemetry/instrumentation-http": "^0.51.0", - "@opentelemetry/instrumentation-ioredis": "^0.39.0", - "@opentelemetry/instrumentation-knex": "^0.35.0", - "@opentelemetry/instrumentation-koa": "^0.39.0", - "@opentelemetry/instrumentation-lru-memoizer": "^0.36.0", - "@opentelemetry/instrumentation-memcached": "^0.35.0", - "@opentelemetry/instrumentation-mongodb": "^0.42.0", - "@opentelemetry/instrumentation-mongoose": "^0.37.0", - "@opentelemetry/instrumentation-mysql": "^0.37.0", - "@opentelemetry/instrumentation-mysql2": "^0.37.0", - "@opentelemetry/instrumentation-nestjs-core": "^0.36.0", - "@opentelemetry/instrumentation-net": "^0.35.0", - "@opentelemetry/instrumentation-pg": "^0.40.0", - "@opentelemetry/instrumentation-pino": "^0.37.0", - "@opentelemetry/instrumentation-redis": "^0.38.0", - "@opentelemetry/instrumentation-redis-4": "^0.38.0", - "@opentelemetry/instrumentation-restify": "^0.37.0", - "@opentelemetry/instrumentation-router": "^0.36.0", - "@opentelemetry/instrumentation-socket.io": "^0.38.0", - "@opentelemetry/instrumentation-tedious": "^0.9.0", - "@opentelemetry/instrumentation-winston": "^0.36.0", - "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.8", - "@opentelemetry/resource-detector-aws": "^1.4.1", - "@opentelemetry/resource-detector-container": "^0.3.8", - "@opentelemetry/resource-detector-gcp": "^0.29.8", + "@opentelemetry/instrumentation-ioredis": "^0.40.0", + "@opentelemetry/instrumentation-knex": "^0.36.0", + "@opentelemetry/instrumentation-koa": "^0.40.0", + "@opentelemetry/instrumentation-lru-memoizer": "^0.37.0", + "@opentelemetry/instrumentation-memcached": "^0.36.0", + "@opentelemetry/instrumentation-mongodb": "^0.43.0", + "@opentelemetry/instrumentation-mongoose": "^0.38.0", + "@opentelemetry/instrumentation-mysql": "^0.38.0", + "@opentelemetry/instrumentation-mysql2": "^0.38.0", + "@opentelemetry/instrumentation-nestjs-core": "^0.37.0", + "@opentelemetry/instrumentation-net": "^0.36.0", + "@opentelemetry/instrumentation-pg": "^0.41.0", + "@opentelemetry/instrumentation-pino": "^0.38.0", + "@opentelemetry/instrumentation-redis": "^0.39.0", + "@opentelemetry/instrumentation-redis-4": "^0.39.0", + "@opentelemetry/instrumentation-restify": "^0.38.0", + "@opentelemetry/instrumentation-router": "^0.37.0", + "@opentelemetry/instrumentation-socket.io": "^0.39.0", + "@opentelemetry/instrumentation-tedious": "^0.10.0", + "@opentelemetry/instrumentation-winston": "^0.37.0", + "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", + "@opentelemetry/resource-detector-aws": "^1.4.2", + "@opentelemetry/resource-detector-container": "^0.3.9", + "@opentelemetry/resource-detector-gcp": "^0.29.9", "@opentelemetry/resources": "^1.12.0", "@opentelemetry/sdk-node": "^0.51.0" }, @@ -350,13 +350,13 @@ }, "metapackages/auto-instrumentations-web": { "name": "@opentelemetry/auto-instrumentations-web", - "version": "0.38.0", + "version": "0.39.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/instrumentation-document-load": "^0.37.0", + "@opentelemetry/instrumentation-document-load": "^0.38.0", "@opentelemetry/instrumentation-fetch": "^0.51.0", - "@opentelemetry/instrumentation-user-interaction": "^0.37.0", + "@opentelemetry/instrumentation-user-interaction": "^0.38.0", "@opentelemetry/instrumentation-xml-http-request": "^0.51.0" }, "devDependencies": { @@ -36623,7 +36623,7 @@ }, "packages/opentelemetry-host-metrics": { "name": "@opentelemetry/host-metrics", - "version": "0.35.0", + "version": "0.35.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/sdk-metrics": "^1.8.0", @@ -36656,7 +36656,7 @@ }, "packages/opentelemetry-id-generator-aws-xray": { "name": "@opentelemetry/id-generator-aws-xray", - "version": "1.2.1", + "version": "1.2.2", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.0.0" @@ -36698,11 +36698,11 @@ }, "packages/opentelemetry-propagation-utils": { "name": "@opentelemetry/propagation-utils", - "version": "0.30.8", + "version": "0.30.9", "license": "Apache-2.0", "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "^9.1.1", "@types/node": "18.6.5", "@types/sinon": "^10.0.11", @@ -36728,7 +36728,7 @@ }, "packages/opentelemetry-redis-common": { "name": "@opentelemetry/redis-common", - "version": "0.36.1", + "version": "0.36.2", "license": "Apache-2.0", "devDependencies": { "@types/mocha": "^9.1.1", @@ -36750,7 +36750,7 @@ }, "packages/opentelemetry-sql-common": { "name": "@opentelemetry/sql-common", - "version": "0.40.0", + "version": "0.40.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.1.0" @@ -36773,7 +36773,7 @@ }, "packages/opentelemetry-test-utils": { "name": "@opentelemetry/contrib-test-utils", - "version": "0.38.0", + "version": "0.39.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.0.0", @@ -36799,7 +36799,7 @@ }, "packages/winston-transport": { "name": "@opentelemetry/winston-transport", - "version": "0.2.0", + "version": "0.3.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/api-logs": "^0.51.0", @@ -36829,7 +36829,7 @@ }, "plugins/node/instrumentation-amqplib": { "name": "@opentelemetry/instrumentation-amqplib", - "version": "0.36.0", + "version": "0.37.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -36838,7 +36838,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/amqplib": "^0.5.17", "@types/lodash": "4.14.199", "@types/mocha": "8.2.3", @@ -36869,7 +36869,7 @@ }, "plugins/node/instrumentation-cucumber": { "name": "@opentelemetry/instrumentation-cucumber", - "version": "0.5.0", + "version": "0.6.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -36936,7 +36936,7 @@ }, "plugins/node/instrumentation-dataloader": { "name": "@opentelemetry/instrumentation-dataloader", - "version": "0.8.0", + "version": "0.9.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0" @@ -36965,7 +36965,7 @@ }, "plugins/node/instrumentation-fs": { "name": "@opentelemetry/instrumentation-fs", - "version": "0.11.0", + "version": "0.12.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -36996,14 +36996,14 @@ }, "plugins/node/instrumentation-lru-memoizer": { "name": "@opentelemetry/instrumentation-lru-memoizer", - "version": "0.36.0", + "version": "0.37.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/lru-cache": "7.10.9", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -37031,7 +37031,7 @@ }, "plugins/node/instrumentation-mongoose": { "name": "@opentelemetry/instrumentation-mongoose", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -37040,7 +37040,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -37068,7 +37068,7 @@ }, "plugins/node/instrumentation-runtime-node": { "name": "@opentelemetry/instrumentation-runtime-node", - "version": "0.3.0", + "version": "0.4.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0" @@ -37108,7 +37108,7 @@ }, "plugins/node/instrumentation-socket.io": { "name": "@opentelemetry/instrumentation-socket.io", - "version": "0.38.0", + "version": "0.39.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -37116,7 +37116,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -37357,7 +37357,7 @@ }, "plugins/node/instrumentation-tedious": { "name": "@opentelemetry/instrumentation-tedious", - "version": "0.9.0", + "version": "0.10.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -37367,7 +37367,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", @@ -37388,7 +37388,7 @@ }, "plugins/node/instrumentation-undici": { "name": "@opentelemetry/instrumentation-undici", - "version": "0.1.0", + "version": "0.2.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -37420,7 +37420,7 @@ }, "plugins/node/opentelemetry-instrumentation-aws-lambda": { "name": "@opentelemetry/instrumentation-aws-lambda", - "version": "0.40.0", + "version": "0.41.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -37452,12 +37452,12 @@ }, "plugins/node/opentelemetry-instrumentation-aws-sdk": { "name": "@opentelemetry/instrumentation-aws-sdk", - "version": "0.40.0", + "version": "0.41.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/propagation-utils": "^0.30.8", + "@opentelemetry/propagation-utils": "^0.30.9", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { @@ -37468,7 +37468,7 @@ "@aws-sdk/client-sqs": "3.85.0", "@aws-sdk/types": "3.78.0", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -37500,7 +37500,7 @@ }, "plugins/node/opentelemetry-instrumentation-bunyan": { "name": "@opentelemetry/instrumentation-bunyan", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/api-logs": "^0.51.0", @@ -37543,7 +37543,7 @@ }, "plugins/node/opentelemetry-instrumentation-cassandra": { "name": "@opentelemetry/instrumentation-cassandra-driver", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -37552,7 +37552,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -37576,7 +37576,7 @@ }, "plugins/node/opentelemetry-instrumentation-connect": { "name": "@opentelemetry/instrumentation-connect", - "version": "0.35.0", + "version": "0.36.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -37615,7 +37615,7 @@ }, "plugins/node/opentelemetry-instrumentation-dns": { "name": "@opentelemetry/instrumentation-dns", - "version": "0.35.0", + "version": "0.36.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -37648,7 +37648,7 @@ }, "plugins/node/opentelemetry-instrumentation-express": { "name": "@opentelemetry/instrumentation-express", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -37658,7 +37658,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/express": "4.17.18", @@ -37683,7 +37683,7 @@ }, "plugins/node/opentelemetry-instrumentation-fastify": { "name": "@opentelemetry/instrumentation-fastify", - "version": "0.35.0", + "version": "0.36.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -37694,7 +37694,7 @@ "@fastify/express": "^2.0.2", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -37732,7 +37732,7 @@ }, "plugins/node/opentelemetry-instrumentation-generic-pool": { "name": "@opentelemetry/instrumentation-generic-pool", - "version": "0.35.0", + "version": "0.36.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -37797,7 +37797,7 @@ }, "plugins/node/opentelemetry-instrumentation-graphql": { "name": "@opentelemetry/instrumentation-graphql", - "version": "0.39.0", + "version": "0.40.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0" @@ -37831,7 +37831,7 @@ }, "plugins/node/opentelemetry-instrumentation-hapi": { "name": "@opentelemetry/instrumentation-hapi", - "version": "0.36.0", + "version": "0.37.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -37863,17 +37863,17 @@ }, "plugins/node/opentelemetry-instrumentation-ioredis": { "name": "@opentelemetry/instrumentation-ioredis", - "version": "0.39.0", + "version": "0.40.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/redis-common": "^0.36.1", + "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/ioredis4": "npm:@types/ioredis@4.28.10", @@ -37899,7 +37899,7 @@ }, "plugins/node/opentelemetry-instrumentation-knex": { "name": "@opentelemetry/instrumentation-knex", - "version": "0.35.0", + "version": "0.36.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -37929,7 +37929,7 @@ }, "plugins/node/opentelemetry-instrumentation-koa": { "name": "@opentelemetry/instrumentation-koa", - "version": "0.39.0", + "version": "0.40.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -37942,7 +37942,7 @@ "@koa/router": "12.0.0", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -37967,7 +37967,7 @@ }, "plugins/node/opentelemetry-instrumentation-memcached": { "name": "@opentelemetry/instrumentation-memcached", - "version": "0.35.0", + "version": "0.36.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -37977,7 +37977,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -37999,7 +37999,7 @@ }, "plugins/node/opentelemetry-instrumentation-mongodb": { "name": "@opentelemetry/instrumentation-mongodb", - "version": "0.42.0", + "version": "0.43.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -38009,7 +38009,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/bson": "4.0.5", @@ -38193,7 +38193,7 @@ }, "plugins/node/opentelemetry-instrumentation-mysql": { "name": "@opentelemetry/instrumentation-mysql", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -38203,7 +38203,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-metrics": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "7.0.2", @@ -38226,17 +38226,17 @@ }, "plugins/node/opentelemetry-instrumentation-mysql2": { "name": "@opentelemetry/instrumentation-mysql2", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", - "@opentelemetry/sql-common": "^0.40.0" + "@opentelemetry/sql-common": "^0.40.1" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", @@ -38292,7 +38292,7 @@ }, "plugins/node/opentelemetry-instrumentation-nestjs-core": { "name": "@opentelemetry/instrumentation-nestjs-core", - "version": "0.36.0", + "version": "0.37.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -38365,7 +38365,7 @@ }, "plugins/node/opentelemetry-instrumentation-net": { "name": "@opentelemetry/instrumentation-net", - "version": "0.35.0", + "version": "0.36.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -38395,19 +38395,19 @@ }, "plugins/node/opentelemetry-instrumentation-pg": { "name": "@opentelemetry/instrumentation-pg", - "version": "0.40.0", + "version": "0.41.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", - "@opentelemetry/sql-common": "^0.40.0", + "@opentelemetry/sql-common": "^0.40.1", "@types/pg": "8.6.1", "@types/pg-pool": "2.0.4" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -38434,7 +38434,7 @@ }, "plugins/node/opentelemetry-instrumentation-pino": { "name": "@opentelemetry/instrumentation-pino", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0" @@ -38442,7 +38442,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -38501,17 +38501,17 @@ }, "plugins/node/opentelemetry-instrumentation-redis": { "name": "@opentelemetry/instrumentation-redis", - "version": "0.38.0", + "version": "0.39.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/redis-common": "^0.36.1", + "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -38535,17 +38535,17 @@ }, "plugins/node/opentelemetry-instrumentation-redis-4": { "name": "@opentelemetry/instrumentation-redis-4", - "version": "0.38.0", + "version": "0.39.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/redis-common": "^0.36.1", + "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -38583,7 +38583,7 @@ }, "plugins/node/opentelemetry-instrumentation-restify": { "name": "@opentelemetry/instrumentation-restify", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -38650,7 +38650,7 @@ }, "plugins/node/opentelemetry-instrumentation-router": { "name": "@opentelemetry/instrumentation-router", - "version": "0.36.0", + "version": "0.37.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -38679,7 +38679,7 @@ }, "plugins/node/opentelemetry-instrumentation-winston": { "name": "@opentelemetry/instrumentation-winston", - "version": "0.36.0", + "version": "0.37.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/api-logs": "^0.51.0", @@ -38690,7 +38690,7 @@ "@opentelemetry/context-async-hooks": "^1.21.0", "@opentelemetry/sdk-trace-base": "^1.21.0", "@opentelemetry/sdk-trace-node": "^1.21.0", - "@opentelemetry/winston-transport": "^0.2.0", + "@opentelemetry/winston-transport": "^0.3.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -38714,7 +38714,7 @@ }, "plugins/web/opentelemetry-instrumentation-document-load": { "name": "@opentelemetry/instrumentation-document-load", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -38755,7 +38755,7 @@ }, "plugins/web/opentelemetry-instrumentation-long-task": { "name": "@opentelemetry/instrumentation-long-task", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -38801,7 +38801,7 @@ }, "plugins/web/opentelemetry-instrumentation-user-interaction": { "name": "@opentelemetry/instrumentation-user-interaction", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -38850,7 +38850,7 @@ }, "plugins/web/opentelemetry-plugin-react-load": { "name": "@opentelemetry/plugin-react-load", - "version": "0.30.0", + "version": "0.30.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/context-zone": "^1.0.0", @@ -38903,7 +38903,7 @@ }, "propagators/opentelemetry-propagator-grpc-census-binary": { "name": "@opentelemetry/propagator-grpc-census-binary", - "version": "0.27.1", + "version": "0.27.2", "license": "Apache-2.0", "devDependencies": { "@opentelemetry/api": "^1.0.0", @@ -38926,7 +38926,7 @@ }, "propagators/opentelemetry-propagator-instana": { "name": "@opentelemetry/propagator-instana", - "version": "0.3.1", + "version": "0.3.2", "license": "Apache-2.0", "devDependencies": { "@jsdevtools/coverage-istanbul-loader": "3.0.5", @@ -39159,7 +39159,7 @@ }, "propagators/opentelemetry-propagator-ot-trace": { "name": "@opentelemetry/propagator-ot-trace", - "version": "0.27.1", + "version": "0.27.2", "license": "Apache-2.0", "devDependencies": { "@jsdevtools/coverage-istanbul-loader": "3.0.5", @@ -45475,47 +45475,47 @@ "requires": { "@opentelemetry/api": "^1.4.1", "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/instrumentation-amqplib": "^0.36.0", - "@opentelemetry/instrumentation-aws-lambda": "^0.40.0", - "@opentelemetry/instrumentation-aws-sdk": "^0.40.0", - "@opentelemetry/instrumentation-bunyan": "^0.37.0", - "@opentelemetry/instrumentation-cassandra-driver": "^0.37.0", - "@opentelemetry/instrumentation-connect": "^0.35.0", - "@opentelemetry/instrumentation-cucumber": "^0.5.0", - "@opentelemetry/instrumentation-dataloader": "^0.8.0", - "@opentelemetry/instrumentation-dns": "^0.35.0", - "@opentelemetry/instrumentation-express": "^0.37.0", - "@opentelemetry/instrumentation-fastify": "^0.35.0", - "@opentelemetry/instrumentation-fs": "^0.11.0", - "@opentelemetry/instrumentation-generic-pool": "^0.35.0", - "@opentelemetry/instrumentation-graphql": "^0.39.0", + "@opentelemetry/instrumentation-amqplib": "^0.37.0", + "@opentelemetry/instrumentation-aws-lambda": "^0.41.0", + "@opentelemetry/instrumentation-aws-sdk": "^0.41.0", + "@opentelemetry/instrumentation-bunyan": "^0.38.0", + "@opentelemetry/instrumentation-cassandra-driver": "^0.38.0", + "@opentelemetry/instrumentation-connect": "^0.36.0", + "@opentelemetry/instrumentation-cucumber": "^0.6.0", + "@opentelemetry/instrumentation-dataloader": "^0.9.0", + "@opentelemetry/instrumentation-dns": "^0.36.0", + "@opentelemetry/instrumentation-express": "^0.38.0", + "@opentelemetry/instrumentation-fastify": "^0.36.0", + "@opentelemetry/instrumentation-fs": "^0.12.0", + "@opentelemetry/instrumentation-generic-pool": "^0.36.0", + "@opentelemetry/instrumentation-graphql": "^0.40.0", "@opentelemetry/instrumentation-grpc": "^0.51.0", - "@opentelemetry/instrumentation-hapi": "^0.36.0", + "@opentelemetry/instrumentation-hapi": "^0.37.0", "@opentelemetry/instrumentation-http": "^0.51.0", - "@opentelemetry/instrumentation-ioredis": "^0.39.0", - "@opentelemetry/instrumentation-knex": "^0.35.0", - "@opentelemetry/instrumentation-koa": "^0.39.0", - "@opentelemetry/instrumentation-lru-memoizer": "^0.36.0", - "@opentelemetry/instrumentation-memcached": "^0.35.0", - "@opentelemetry/instrumentation-mongodb": "^0.42.0", - "@opentelemetry/instrumentation-mongoose": "^0.37.0", - "@opentelemetry/instrumentation-mysql": "^0.37.0", - "@opentelemetry/instrumentation-mysql2": "^0.37.0", - "@opentelemetry/instrumentation-nestjs-core": "^0.36.0", - "@opentelemetry/instrumentation-net": "^0.35.0", - "@opentelemetry/instrumentation-pg": "^0.40.0", - "@opentelemetry/instrumentation-pino": "^0.37.0", - "@opentelemetry/instrumentation-redis": "^0.38.0", - "@opentelemetry/instrumentation-redis-4": "^0.38.0", - "@opentelemetry/instrumentation-restify": "^0.37.0", - "@opentelemetry/instrumentation-router": "^0.36.0", - "@opentelemetry/instrumentation-socket.io": "^0.38.0", - "@opentelemetry/instrumentation-tedious": "^0.9.0", - "@opentelemetry/instrumentation-winston": "^0.36.0", - "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.8", - "@opentelemetry/resource-detector-aws": "^1.4.1", - "@opentelemetry/resource-detector-container": "^0.3.8", - "@opentelemetry/resource-detector-gcp": "^0.29.8", + "@opentelemetry/instrumentation-ioredis": "^0.40.0", + "@opentelemetry/instrumentation-knex": "^0.36.0", + "@opentelemetry/instrumentation-koa": "^0.40.0", + "@opentelemetry/instrumentation-lru-memoizer": "^0.37.0", + "@opentelemetry/instrumentation-memcached": "^0.36.0", + "@opentelemetry/instrumentation-mongodb": "^0.43.0", + "@opentelemetry/instrumentation-mongoose": "^0.38.0", + "@opentelemetry/instrumentation-mysql": "^0.38.0", + "@opentelemetry/instrumentation-mysql2": "^0.38.0", + "@opentelemetry/instrumentation-nestjs-core": "^0.37.0", + "@opentelemetry/instrumentation-net": "^0.36.0", + "@opentelemetry/instrumentation-pg": "^0.41.0", + "@opentelemetry/instrumentation-pino": "^0.38.0", + "@opentelemetry/instrumentation-redis": "^0.39.0", + "@opentelemetry/instrumentation-redis-4": "^0.39.0", + "@opentelemetry/instrumentation-restify": "^0.38.0", + "@opentelemetry/instrumentation-router": "^0.37.0", + "@opentelemetry/instrumentation-socket.io": "^0.39.0", + "@opentelemetry/instrumentation-tedious": "^0.10.0", + "@opentelemetry/instrumentation-winston": "^0.37.0", + "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", + "@opentelemetry/resource-detector-aws": "^1.4.2", + "@opentelemetry/resource-detector-container": "^0.3.9", + "@opentelemetry/resource-detector-gcp": "^0.29.9", "@opentelemetry/resources": "^1.12.0", "@opentelemetry/sdk-node": "^0.51.0", "@types/mocha": "7.0.2", @@ -45536,9 +45536,9 @@ "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/instrumentation-document-load": "^0.37.0", + "@opentelemetry/instrumentation-document-load": "^0.38.0", "@opentelemetry/instrumentation-fetch": "^0.51.0", - "@opentelemetry/instrumentation-user-interaction": "^0.37.0", + "@opentelemetry/instrumentation-user-interaction": "^0.38.0", "@opentelemetry/instrumentation-xml-http-request": "^0.51.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -45752,7 +45752,7 @@ "version": "file:plugins/node/instrumentation-amqplib", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -45812,10 +45812,10 @@ "@aws-sdk/client-sqs": "3.85.0", "@aws-sdk/types": "3.78.0", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/propagation-utils": "^0.30.8", + "@opentelemetry/propagation-utils": "^0.30.9", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", @@ -45882,7 +45882,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -46061,7 +46061,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", @@ -46087,7 +46087,7 @@ "@fastify/express": "^2.0.2", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/instrumentation-http": "^0.51.0", @@ -46275,9 +46275,9 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/redis-common": "^0.36.1", + "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -46322,7 +46322,7 @@ "@koa/router": "12.0.0", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/instrumentation-http": "^0.51.0", @@ -46384,7 +46384,7 @@ "version": "file:plugins/node/instrumentation-lru-memoizer", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", "@types/lru-cache": "7.10.9", "@types/mocha": "8.2.3", @@ -46412,7 +46412,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -46434,7 +46434,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-metrics": "^1.9.1", "@opentelemetry/sdk-trace-base": "^1.8.0", @@ -46563,7 +46563,7 @@ "version": "file:plugins/node/instrumentation-mongoose", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", @@ -46593,7 +46593,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-metrics": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", @@ -46616,11 +46616,11 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", - "@opentelemetry/sql-common": "^0.40.0", + "@opentelemetry/sql-common": "^0.40.1", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/semver": "7.5.3", @@ -46741,12 +46741,12 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", - "@opentelemetry/sql-common": "^0.40.0", + "@opentelemetry/sql-common": "^0.40.1", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/pg": "8.6.1", @@ -46770,7 +46770,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -46820,9 +46820,9 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/redis-common": "^0.36.1", + "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46844,10 +46844,10 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/redis-common": "^0.36.1", + "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -46984,7 +46984,7 @@ "version": "file:plugins/node/instrumentation-socket.io", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -47177,7 +47177,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", @@ -47262,7 +47262,7 @@ "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.21.0", "@opentelemetry/sdk-trace-node": "^1.21.0", - "@opentelemetry/winston-transport": "^0.2.0", + "@opentelemetry/winston-transport": "^0.3.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -47377,7 +47377,7 @@ "version": "file:packages/opentelemetry-propagation-utils", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "^9.1.1", "@types/node": "18.6.5", "@types/sinon": "^10.0.11", @@ -47660,7 +47660,7 @@ "version": "file:detectors/node/opentelemetry-resource-detector-alibaba-cloud", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/resources": "^1.0.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", @@ -47687,7 +47687,7 @@ "version": "file:detectors/node/opentelemetry-resource-detector-aws", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/core": "^1.0.0", "@opentelemetry/resources": "^1.0.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -47715,7 +47715,7 @@ "version": "file:detectors/node/opentelemetry-resource-detector-azure", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/resources": "^1.10.1", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", @@ -47741,7 +47741,7 @@ "version": "file:detectors/node/opentelemetry-resource-detector-container", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/resources": "^1.0.0", "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", @@ -47769,7 +47769,7 @@ "version": "file:detectors/node/opentelemetry-resource-detector-gcp", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/core": "^1.0.0", "@opentelemetry/resources": "^1.0.0", "@opentelemetry/semantic-conventions": "^1.22.0", @@ -47821,7 +47821,7 @@ "version": "file:detectors/node/opentelemetry-resource-detector-instana", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/resources": "^1.0.0", "@opentelemetry/sdk-node": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", diff --git a/packages/opentelemetry-host-metrics/CHANGELOG.md b/packages/opentelemetry-host-metrics/CHANGELOG.md index fd1f38dff1..7456803e58 100644 --- a/packages/opentelemetry-host-metrics/CHANGELOG.md +++ b/packages/opentelemetry-host-metrics/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.35.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/host-metrics-v0.35.0...host-metrics-v0.35.1) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/host-metrics-v0.34.1...host-metrics-v0.35.0) (2024-01-29) diff --git a/packages/opentelemetry-host-metrics/package.json b/packages/opentelemetry-host-metrics/package.json index 0337703640..4d0a0e1d6e 100644 --- a/packages/opentelemetry-host-metrics/package.json +++ b/packages/opentelemetry-host-metrics/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/host-metrics", - "version": "0.35.0", + "version": "0.35.1", "description": "OpenTelemetry Host Metrics for Node.js", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/packages/opentelemetry-id-generator-aws-xray/CHANGELOG.md b/packages/opentelemetry-id-generator-aws-xray/CHANGELOG.md index ff50615475..419ff2d330 100644 --- a/packages/opentelemetry-id-generator-aws-xray/CHANGELOG.md +++ b/packages/opentelemetry-id-generator-aws-xray/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.2.2](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/id-generator-aws-xray-v1.2.1...id-generator-aws-xray-v1.2.2) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [1.2.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/id-generator-aws-xray-v1.2.0...id-generator-aws-xray-v1.2.1) (2023-08-14) diff --git a/packages/opentelemetry-id-generator-aws-xray/package.json b/packages/opentelemetry-id-generator-aws-xray/package.json index d4219fa49e..9387f6cb05 100644 --- a/packages/opentelemetry-id-generator-aws-xray/package.json +++ b/packages/opentelemetry-id-generator-aws-xray/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/id-generator-aws-xray", - "version": "1.2.1", + "version": "1.2.2", "description": "AWS X-Ray ID generator for OpenTelemetry", "main": "build/src/index.js", "publishConfig": { diff --git a/packages/opentelemetry-propagation-utils/CHANGELOG.md b/packages/opentelemetry-propagation-utils/CHANGELOG.md index 48fbd04979..0b233f0097 100644 --- a/packages/opentelemetry-propagation-utils/CHANGELOG.md +++ b/packages/opentelemetry-propagation-utils/CHANGELOG.md @@ -60,6 +60,20 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.36.0 to ^0.37.0 +## [0.30.9](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagation-utils-v0.30.8...propagation-utils-v0.30.9) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.30.8](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagation-utils-v0.30.7...propagation-utils-v0.30.8) (2024-04-03) diff --git a/packages/opentelemetry-propagation-utils/package.json b/packages/opentelemetry-propagation-utils/package.json index ed5f41dcef..ce82dd204c 100644 --- a/packages/opentelemetry-propagation-utils/package.json +++ b/packages/opentelemetry-propagation-utils/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/propagation-utils", - "version": "0.30.8", + "version": "0.30.9", "description": "Propagation utilities for opentelemetry instrumentations", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -43,7 +43,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/mocha": "^9.1.1", "@types/node": "18.6.5", "@types/sinon": "^10.0.11", diff --git a/packages/opentelemetry-redis-common/CHANGELOG.md b/packages/opentelemetry-redis-common/CHANGELOG.md index c7959a4d6c..a140de285a 100644 --- a/packages/opentelemetry-redis-common/CHANGELOG.md +++ b/packages/opentelemetry-redis-common/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.36.2](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/redis-common-v0.36.1...redis-common-v0.36.2) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.36.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/redis-common-v0.36.0...redis-common-v0.36.1) (2023-08-14) diff --git a/packages/opentelemetry-redis-common/package.json b/packages/opentelemetry-redis-common/package.json index c7d6f373ea..57ea62092b 100644 --- a/packages/opentelemetry-redis-common/package.json +++ b/packages/opentelemetry-redis-common/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/redis-common", - "version": "0.36.1", + "version": "0.36.2", "description": "Redis utilities for redis instrumentations", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/packages/opentelemetry-sql-common/CHANGELOG.md b/packages/opentelemetry-sql-common/CHANGELOG.md index ee7f4757ee..37f15f923f 100644 --- a/packages/opentelemetry-sql-common/CHANGELOG.md +++ b/packages/opentelemetry-sql-common/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.40.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/sql-common-v0.40.0...sql-common-v0.40.1) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.40.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/sql-common-v0.39.0...sql-common-v0.40.0) (2023-07-12) diff --git a/packages/opentelemetry-sql-common/package.json b/packages/opentelemetry-sql-common/package.json index 61b79c6ddc..f4ba7ad04a 100644 --- a/packages/opentelemetry-sql-common/package.json +++ b/packages/opentelemetry-sql-common/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sql-common", - "version": "0.40.0", + "version": "0.40.1", "description": "Utilities for SQL instrumentations", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/packages/opentelemetry-test-utils/CHANGELOG.md b/packages/opentelemetry-test-utils/CHANGELOG.md index 1630f64d7c..84094633e1 100644 --- a/packages/opentelemetry-test-utils/CHANGELOG.md +++ b/packages/opentelemetry-test-utils/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/contrib-test-utils-v0.38.0...contrib-test-utils-v0.39.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/contrib-test-utils-v0.37.0...contrib-test-utils-v0.38.0) (2024-04-03) diff --git a/packages/opentelemetry-test-utils/package.json b/packages/opentelemetry-test-utils/package.json index 6b54001eb8..fe0b7c28f7 100644 --- a/packages/opentelemetry-test-utils/package.json +++ b/packages/opentelemetry-test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/contrib-test-utils", - "version": "0.38.0", + "version": "0.39.0", "description": "Test utilities for opentelemetry components", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/packages/winston-transport/CHANGELOG.md b/packages/winston-transport/CHANGELOG.md index e287c877ec..bea588b601 100644 --- a/packages/winston-transport/CHANGELOG.md +++ b/packages/winston-transport/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## [0.3.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/winston-transport-v0.2.0...winston-transport-v0.3.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* **instrumentation-winston:** Allow log level to be configured for log sending ([#2016](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2016)) ([b903bce](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/b903bce15d6ba4fa44daeaf6785abd6ed94cb5ff)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) +* **winston-transport:** Typescript issue with OpenTelemetryTransportV3 not assignable to TransportStream ([#2079](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2079)) ([b006f7f](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/b006f7f4ce466611e437240508b9bc4deb622175)), closes [#2015](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2015) + ## [0.2.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/winston-transport-v0.1.0...winston-transport-v0.2.0) (2024-04-03) diff --git a/packages/winston-transport/package.json b/packages/winston-transport/package.json index d7ffe927ec..f5dc513e8a 100644 --- a/packages/winston-transport/package.json +++ b/packages/winston-transport/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/winston-transport", - "version": "0.2.0", + "version": "0.3.0", "description": "OpenTelemetry Transport for winston", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/instrumentation-amqplib/CHANGELOG.md b/plugins/node/instrumentation-amqplib/CHANGELOG.md index 2a1d51fd81..abe7b56fcc 100644 --- a/plugins/node/instrumentation-amqplib/CHANGELOG.md +++ b/plugins/node/instrumentation-amqplib/CHANGELOG.md @@ -6,6 +6,26 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-amqplib-v0.36.0...instrumentation-amqplib-v0.37.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-amqplib-v0.35.0...instrumentation-amqplib-v0.36.0) (2024-04-03) diff --git a/plugins/node/instrumentation-amqplib/package.json b/plugins/node/instrumentation-amqplib/package.json index 612a6a3aab..6634aad6bd 100644 --- a/plugins/node/instrumentation-amqplib/package.json +++ b/plugins/node/instrumentation-amqplib/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-amqplib", - "version": "0.36.0", + "version": "0.37.0", "description": "OpenTelemetry automatic instrumentation for the `amqplib` package", "keywords": [ "amqplib", @@ -50,7 +50,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/amqplib": "^0.5.17", "@types/lodash": "4.14.199", "@types/mocha": "8.2.3", diff --git a/plugins/node/instrumentation-cucumber/CHANGELOG.md b/plugins/node/instrumentation-cucumber/CHANGELOG.md index 62cbee59f7..40c95823b6 100644 --- a/plugins/node/instrumentation-cucumber/CHANGELOG.md +++ b/plugins/node/instrumentation-cucumber/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.6.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-cucumber-v0.5.0...instrumentation-cucumber-v0.6.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.5.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-cucumber-v0.4.0...instrumentation-cucumber-v0.5.0) (2024-04-03) diff --git a/plugins/node/instrumentation-cucumber/package.json b/plugins/node/instrumentation-cucumber/package.json index b6f31c16ce..76c0e259aa 100644 --- a/plugins/node/instrumentation-cucumber/package.json +++ b/plugins/node/instrumentation-cucumber/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-cucumber", - "version": "0.5.0", + "version": "0.6.0", "description": "OpenTelemetry cucumber automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/instrumentation-dataloader/CHANGELOG.md b/plugins/node/instrumentation-dataloader/CHANGELOG.md index 54109c971e..6e198608a3 100644 --- a/plugins/node/instrumentation-dataloader/CHANGELOG.md +++ b/plugins/node/instrumentation-dataloader/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.9.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-dataloader-v0.8.0...instrumentation-dataloader-v0.9.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.8.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-dataloader-v0.7.0...instrumentation-dataloader-v0.8.0) (2024-04-03) diff --git a/plugins/node/instrumentation-dataloader/package.json b/plugins/node/instrumentation-dataloader/package.json index 8c5ae9eb74..5a4ef1ea76 100644 --- a/plugins/node/instrumentation-dataloader/package.json +++ b/plugins/node/instrumentation-dataloader/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-dataloader", - "version": "0.8.0", + "version": "0.9.0", "description": "OpenTelemetry instrumentation for dataloader", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/instrumentation-fs/CHANGELOG.md b/plugins/node/instrumentation-fs/CHANGELOG.md index e16b52dfbb..b77f34b167 100644 --- a/plugins/node/instrumentation-fs/CHANGELOG.md +++ b/plugins/node/instrumentation-fs/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.12.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-fs-v0.11.0...instrumentation-fs-v0.12.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + ## [0.11.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-fs-v0.10.0...instrumentation-fs-v0.11.0) (2024-04-03) diff --git a/plugins/node/instrumentation-fs/package.json b/plugins/node/instrumentation-fs/package.json index b79344d042..3d41437cbb 100644 --- a/plugins/node/instrumentation-fs/package.json +++ b/plugins/node/instrumentation-fs/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-fs", - "version": "0.11.0", + "version": "0.12.0", "description": "OpenTelemetry automatic instrumentation package for fs", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/instrumentation-lru-memoizer/CHANGELOG.md b/plugins/node/instrumentation-lru-memoizer/CHANGELOG.md index 94ca8ba5f2..0894302e84 100644 --- a/plugins/node/instrumentation-lru-memoizer/CHANGELOG.md +++ b/plugins/node/instrumentation-lru-memoizer/CHANGELOG.md @@ -6,6 +6,26 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-lru-memoizer-v0.36.0...instrumentation-lru-memoizer-v0.37.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-lru-memoizer-v0.35.0...instrumentation-lru-memoizer-v0.36.0) (2024-04-03) diff --git a/plugins/node/instrumentation-lru-memoizer/package.json b/plugins/node/instrumentation-lru-memoizer/package.json index 6ceef239a4..da739ec93e 100644 --- a/plugins/node/instrumentation-lru-memoizer/package.json +++ b/plugins/node/instrumentation-lru-memoizer/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-lru-memoizer", - "version": "0.36.0", + "version": "0.37.0", "description": "OpenTelemetry automatic instrumentation package for lru-memoizer", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -43,7 +43,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@types/lru-cache": "7.10.9", "@types/mocha": "8.2.3", "@types/node": "18.6.5", diff --git a/plugins/node/instrumentation-mongoose/CHANGELOG.md b/plugins/node/instrumentation-mongoose/CHANGELOG.md index a3bbb65de2..4015c327a4 100644 --- a/plugins/node/instrumentation-mongoose/CHANGELOG.md +++ b/plugins/node/instrumentation-mongoose/CHANGELOG.md @@ -6,6 +6,26 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mongoose-v0.37.0...instrumentation-mongoose-v0.38.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mongoose-v0.36.0...instrumentation-mongoose-v0.37.0) (2024-04-03) diff --git a/plugins/node/instrumentation-mongoose/package.json b/plugins/node/instrumentation-mongoose/package.json index 245fbc756c..ea57263dfd 100644 --- a/plugins/node/instrumentation-mongoose/package.json +++ b/plugins/node/instrumentation-mongoose/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-mongoose", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry automatic instrumentation package for mongoose", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,7 +46,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", diff --git a/plugins/node/instrumentation-runtime-node/CHANGELOG.md b/plugins/node/instrumentation-runtime-node/CHANGELOG.md index 2867662028..75742ee468 100644 --- a/plugins/node/instrumentation-runtime-node/CHANGELOG.md +++ b/plugins/node/instrumentation-runtime-node/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.4.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-runtime-node-v0.3.0...instrumentation-runtime-node-v0.4.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.3.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-runtime-node-v0.2.1...instrumentation-runtime-node-v0.3.0) (2024-04-03) diff --git a/plugins/node/instrumentation-runtime-node/package.json b/plugins/node/instrumentation-runtime-node/package.json index 15b254afc7..1d0759a869 100644 --- a/plugins/node/instrumentation-runtime-node/package.json +++ b/plugins/node/instrumentation-runtime-node/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-runtime-node", - "version": "0.3.0", + "version": "0.4.0", "description": "OpenTelemetry Node.js Performance measurement API automatic instrumentation package", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/instrumentation-socket.io/CHANGELOG.md b/plugins/node/instrumentation-socket.io/CHANGELOG.md index e1787d28a1..ff649a2854 100644 --- a/plugins/node/instrumentation-socket.io/CHANGELOG.md +++ b/plugins/node/instrumentation-socket.io/CHANGELOG.md @@ -6,6 +6,21 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-socket.io-v0.38.0...instrumentation-socket.io-v0.39.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-socket.io-v0.37.0...instrumentation-socket.io-v0.38.0) (2024-04-03) diff --git a/plugins/node/instrumentation-socket.io/package.json b/plugins/node/instrumentation-socket.io/package.json index 8cffebd79a..45557a81e4 100644 --- a/plugins/node/instrumentation-socket.io/package.json +++ b/plugins/node/instrumentation-socket.io/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-socket.io", - "version": "0.38.0", + "version": "0.39.0", "description": "OpenTelemetry automatic instrumentation package for socket.io", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -43,7 +43,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", diff --git a/plugins/node/instrumentation-tedious/CHANGELOG.md b/plugins/node/instrumentation-tedious/CHANGELOG.md index ea50ad6918..875d355bd0 100644 --- a/plugins/node/instrumentation-tedious/CHANGELOG.md +++ b/plugins/node/instrumentation-tedious/CHANGELOG.md @@ -6,6 +6,26 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.10.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-tedious-v0.9.0...instrumentation-tedious-v0.10.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.9.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-tedious-v0.8.0...instrumentation-tedious-v0.9.0) (2024-04-03) diff --git a/plugins/node/instrumentation-tedious/package.json b/plugins/node/instrumentation-tedious/package.json index b03962f166..c123a3a90b 100644 --- a/plugins/node/instrumentation-tedious/package.json +++ b/plugins/node/instrumentation-tedious/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-tedious", - "version": "0.9.0", + "version": "0.10.0", "description": "OpenTelemetry instrumentation for `tedious`", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -49,7 +49,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", diff --git a/plugins/node/instrumentation-undici/CHANGELOG.md b/plugins/node/instrumentation-undici/CHANGELOG.md new file mode 100644 index 0000000000..65d823248a --- /dev/null +++ b/plugins/node/instrumentation-undici/CHANGELOG.md @@ -0,0 +1,10 @@ +# Changelog + +## [0.2.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-undici-v0.1.0...instrumentation-undici-v0.2.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* **instr-undici:** add instrumentation for `undici` versions `>=5 <7` and global `fetch` API ([#1951](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1951)) ([fe18e2f](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fe18e2fbb2a6535cb72f314fdb1550a3a4160403)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) diff --git a/plugins/node/instrumentation-undici/package.json b/plugins/node/instrumentation-undici/package.json index 10ed52a9fd..d644222a56 100644 --- a/plugins/node/instrumentation-undici/package.json +++ b/plugins/node/instrumentation-undici/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-undici", - "version": "0.1.0", + "version": "0.2.0", "description": "OpenTelemetry instrumentation for undici and Node.js fetch().", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-aws-lambda/CHANGELOG.md index 6bfef574ff..10744b46b7 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.41.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-aws-lambda-v0.40.0...instrumentation-aws-lambda-v0.41.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.40.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-aws-lambda-v0.39.0...instrumentation-aws-lambda-v0.40.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json b/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json index 5fb1ef5f20..368ffcd5ef 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-aws-lambda", - "version": "0.40.0", + "version": "0.41.0", "description": "OpenTelemetry AWS Lambda automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-aws-sdk/CHANGELOG.md index 11054375eb..f0fbfb8ae1 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/CHANGELOG.md @@ -1,5 +1,27 @@ # Changelog +## [0.41.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-aws-sdk-v0.40.0...instrumentation-aws-sdk-v0.41.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/propagation-utils bumped from ^0.30.8 to ^0.30.9 + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.40.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-aws-sdk-v0.39.1...instrumentation-aws-sdk-v0.40.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json b/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json index 90154572fa..0500a453ef 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-aws-sdk", - "version": "0.40.0", + "version": "0.41.0", "description": "OpenTelemetry automatic instrumentation for the `aws-sdk` package", "keywords": [ "aws", @@ -46,7 +46,7 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/propagation-utils": "^0.30.8", + "@opentelemetry/propagation-utils": "^0.30.9", "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { @@ -57,7 +57,7 @@ "@aws-sdk/client-sqs": "3.85.0", "@aws-sdk/types": "3.78.0", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", diff --git a/plugins/node/opentelemetry-instrumentation-bunyan/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-bunyan/CHANGELOG.md index 48e001d183..22ea9bc8c9 100644 --- a/plugins/node/opentelemetry-instrumentation-bunyan/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-bunyan/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-bunyan-v0.37.0...instrumentation-bunyan-v0.38.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-bunyan-v0.36.0...instrumentation-bunyan-v0.37.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-bunyan/package.json b/plugins/node/opentelemetry-instrumentation-bunyan/package.json index 038e16993e..2392146e10 100644 --- a/plugins/node/opentelemetry-instrumentation-bunyan/package.json +++ b/plugins/node/opentelemetry-instrumentation-bunyan/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-bunyan", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry instrumentation for bunyan", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-cassandra/CHANGELOG.md index 9409eb0758..8f9bcdec60 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-cassandra/CHANGELOG.md @@ -6,6 +6,26 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-cassandra-driver-v0.37.0...instrumentation-cassandra-driver-v0.38.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-cassandra-driver-v0.36.0...instrumentation-cassandra-driver-v0.37.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/package.json b/plugins/node/opentelemetry-instrumentation-cassandra/package.json index aa2c88828d..2529936322 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/package.json +++ b/plugins/node/opentelemetry-instrumentation-cassandra/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-cassandra-driver", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry instrumentation for cassandra-driver", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -45,7 +45,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", diff --git a/plugins/node/opentelemetry-instrumentation-connect/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-connect/CHANGELOG.md index b131149ea0..58957c90b7 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-connect/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-connect-v0.35.0...instrumentation-connect-v0.36.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-connect-v0.34.0...instrumentation-connect-v0.35.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-connect/package.json b/plugins/node/opentelemetry-instrumentation-connect/package.json index 862d3f3823..f0a6053c9d 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/package.json +++ b/plugins/node/opentelemetry-instrumentation-connect/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-connect", - "version": "0.35.0", + "version": "0.36.0", "description": "OpenTelemetry connect automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-dns/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-dns/CHANGELOG.md index 532bace379..0eb643eff4 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-dns/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-dns-v0.35.0...instrumentation-dns-v0.36.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-dns-v0.34.0...instrumentation-dns-v0.35.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-dns/package.json b/plugins/node/opentelemetry-instrumentation-dns/package.json index d40053950b..d7796a9a05 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/package.json +++ b/plugins/node/opentelemetry-instrumentation-dns/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-dns", - "version": "0.35.0", + "version": "0.36.0", "description": "OpenTelemetry dns automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-express/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-express/CHANGELOG.md index 1e48aed920..f236522440 100644 --- a/plugins/node/opentelemetry-instrumentation-express/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-express/CHANGELOG.md @@ -1,5 +1,25 @@ # Changelog +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-express-v0.37.0...instrumentation-express-v0.38.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-express-v0.36.1...instrumentation-express-v0.37.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-express/package.json b/plugins/node/opentelemetry-instrumentation-express/package.json index a53f2967ca..ea404c3154 100644 --- a/plugins/node/opentelemetry-instrumentation-express/package.json +++ b/plugins/node/opentelemetry-instrumentation-express/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-express", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry express automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,7 +46,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/express": "4.17.18", diff --git a/plugins/node/opentelemetry-instrumentation-fastify/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-fastify/CHANGELOG.md index ccca7532ed..7b829e6bd7 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-fastify/CHANGELOG.md @@ -1,5 +1,25 @@ # Changelog +## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-fastify-v0.35.0...instrumentation-fastify-v0.36.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-fastify-v0.34.0...instrumentation-fastify-v0.35.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-fastify/package.json b/plugins/node/opentelemetry-instrumentation-fastify/package.json index e1cd5daa15..4a55548d68 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/package.json +++ b/plugins/node/opentelemetry-instrumentation-fastify/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-fastify", - "version": "0.35.0", + "version": "0.36.0", "description": "OpenTelemetry fastify automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,7 +46,7 @@ "@fastify/express": "^2.0.2", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", diff --git a/plugins/node/opentelemetry-instrumentation-generic-pool/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-generic-pool/CHANGELOG.md index 9d9de9fe99..c8706562c2 100644 --- a/plugins/node/opentelemetry-instrumentation-generic-pool/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-generic-pool/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-generic-pool-v0.35.0...instrumentation-generic-pool-v0.36.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-generic-pool-v0.34.0...instrumentation-generic-pool-v0.35.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-generic-pool/package.json b/plugins/node/opentelemetry-instrumentation-generic-pool/package.json index 15e9f888aa..62f2ac2af7 100644 --- a/plugins/node/opentelemetry-instrumentation-generic-pool/package.json +++ b/plugins/node/opentelemetry-instrumentation-generic-pool/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-generic-pool", - "version": "0.35.0", + "version": "0.36.0", "description": "OpenTelemetry Generic Pool automatic instrumentation package", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-graphql/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-graphql/CHANGELOG.md index 9a52f6e41b..0fa285f9f1 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-graphql/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.40.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-graphql-v0.39.0...instrumentation-graphql-v0.40.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-graphql-v0.38.1...instrumentation-graphql-v0.39.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-graphql/package.json b/plugins/node/opentelemetry-instrumentation-graphql/package.json index e843537130..1ae2a4bdf9 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/package.json +++ b/plugins/node/opentelemetry-instrumentation-graphql/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-graphql", - "version": "0.39.0", + "version": "0.40.0", "description": "OpenTelemetry @opentelemetry/instrumentation-graphql automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-hapi/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-hapi/CHANGELOG.md index 58289a6d2d..b6da07df1d 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-hapi/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-hapi-v0.36.0...instrumentation-hapi-v0.37.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-hapi-v0.35.0...instrumentation-hapi-v0.36.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-hapi/package.json b/plugins/node/opentelemetry-instrumentation-hapi/package.json index 182c9fe968..a39a7e5b9a 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/package.json +++ b/plugins/node/opentelemetry-instrumentation-hapi/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-hapi", - "version": "0.36.0", + "version": "0.37.0", "description": "OpenTelemetry Hapi automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-ioredis/CHANGELOG.md index 6750af082e..9c9b2b3475 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-ioredis/CHANGELOG.md @@ -1,5 +1,28 @@ # Changelog +## [0.40.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-ioredis-v0.39.0...instrumentation-ioredis-v0.40.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* **instrumentation-ioredis:** drop @types/ioredis dependency ([#2069](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2069)) ([a172f8a](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/a172f8affa2d54b13542c3dfc103dd54ccf031ad)) +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/redis-common bumped from ^0.36.1 to ^0.36.2 + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-ioredis-v0.38.0...instrumentation-ioredis-v0.39.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/package.json b/plugins/node/opentelemetry-instrumentation-ioredis/package.json index ccd6a8be2a..84895bca4d 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/package.json +++ b/plugins/node/opentelemetry-instrumentation-ioredis/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-ioredis", - "version": "0.39.0", + "version": "0.40.0", "description": "OpenTelemetry ioredis automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -49,7 +49,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/ioredis4": "npm:@types/ioredis@4.28.10", @@ -68,7 +68,7 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/redis-common": "^0.36.1", + "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/semantic-conventions": "^1.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-ioredis#readme" diff --git a/plugins/node/opentelemetry-instrumentation-knex/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-knex/CHANGELOG.md index edb2d1f024..18f3a52d96 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-knex/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-knex-v0.35.0...instrumentation-knex-v0.36.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-knex-v0.34.0...instrumentation-knex-v0.35.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-knex/package.json b/plugins/node/opentelemetry-instrumentation-knex/package.json index ca283faf29..f14eceee31 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/package.json +++ b/plugins/node/opentelemetry-instrumentation-knex/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-knex", - "version": "0.35.0", + "version": "0.36.0", "description": "OpenTelemetry Knex automatic instrumentation package", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-koa/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-koa/CHANGELOG.md index 07c521997f..37d69e9450 100644 --- a/plugins/node/opentelemetry-instrumentation-koa/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-koa/CHANGELOG.md @@ -1,5 +1,25 @@ # Changelog +## [0.40.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-koa-v0.39.0...instrumentation-koa-v0.40.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-koa-v0.38.0...instrumentation-koa-v0.39.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-koa/package.json b/plugins/node/opentelemetry-instrumentation-koa/package.json index 35eadc1cb8..e9bf3f472e 100644 --- a/plugins/node/opentelemetry-instrumentation-koa/package.json +++ b/plugins/node/opentelemetry-instrumentation-koa/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-koa", - "version": "0.39.0", + "version": "0.40.0", "description": "OpenTelemetry Koa automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -48,7 +48,7 @@ "@koa/router": "12.0.0", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", diff --git a/plugins/node/opentelemetry-instrumentation-memcached/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-memcached/CHANGELOG.md index 017dfd2c73..a33c58408f 100644 --- a/plugins/node/opentelemetry-instrumentation-memcached/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-memcached/CHANGELOG.md @@ -6,6 +6,26 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-memcached-v0.35.0...instrumentation-memcached-v0.36.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-memcached-v0.34.0...instrumentation-memcached-v0.35.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-memcached/package.json b/plugins/node/opentelemetry-instrumentation-memcached/package.json index 85181573fa..d34a39820c 100644 --- a/plugins/node/opentelemetry-instrumentation-memcached/package.json +++ b/plugins/node/opentelemetry-instrumentation-memcached/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-memcached", - "version": "0.35.0", + "version": "0.36.0", "description": "OpenTelemetry memcached automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,7 +46,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-mongodb/CHANGELOG.md index 7d67259001..2357e2c607 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-mongodb/CHANGELOG.md @@ -6,6 +6,26 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.43.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mongodb-v0.42.0...instrumentation-mongodb-v0.43.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.42.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mongodb-v0.41.0...instrumentation-mongodb-v0.42.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/package.json b/plugins/node/opentelemetry-instrumentation-mongodb/package.json index c47dd310a1..a0e9f36e85 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/package.json +++ b/plugins/node/opentelemetry-instrumentation-mongodb/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-mongodb", - "version": "0.42.0", + "version": "0.43.0", "description": "OpenTelemetry mongodb automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -50,7 +50,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/bson": "4.0.5", diff --git a/plugins/node/opentelemetry-instrumentation-mysql/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-mysql/CHANGELOG.md index de5e0cfc06..91143d0b57 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-mysql/CHANGELOG.md @@ -6,6 +6,26 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql-v0.37.0...instrumentation-mysql-v0.38.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql-v0.36.0...instrumentation-mysql-v0.37.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-mysql/package.json b/plugins/node/opentelemetry-instrumentation-mysql/package.json index 47b2ff01a4..ce0277b1c9 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-mysql", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry mysql automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -44,7 +44,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-metrics": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "7.0.2", diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-mysql2/CHANGELOG.md index 2e7ce19c41..71f8a078d8 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-mysql2/CHANGELOG.md @@ -6,6 +6,28 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql2-v0.37.0...instrumentation-mysql2-v0.38.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/sql-common bumped from ^0.40.0 to ^0.40.1 + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql2-v0.36.0...instrumentation-mysql2-v0.37.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/package.json b/plugins/node/opentelemetry-instrumentation-mysql2/package.json index 420184e53a..173fc951ef 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql2/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-mysql2", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry mysql2 automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,7 +46,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", @@ -63,7 +63,7 @@ "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", - "@opentelemetry/sql-common": "^0.40.0" + "@opentelemetry/sql-common": "^0.40.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-mysql2#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-nestjs-core/CHANGELOG.md index 20baee6a63..c66090e0d2 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-nestjs-core-v0.36.0...instrumentation-nestjs-core-v0.37.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-nestjs-core-v0.35.0...instrumentation-nestjs-core-v0.36.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json index ee9a235854..fc46a4da7d 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-nestjs-core", - "version": "0.36.0", + "version": "0.37.0", "description": "OpenTelemetry NestJS automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-net/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-net/CHANGELOG.md index d9b707ccae..ff9a1f694e 100644 --- a/plugins/node/opentelemetry-instrumentation-net/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-net/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-net-v0.35.0...instrumentation-net-v0.36.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-net-v0.34.0...instrumentation-net-v0.35.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-net/package.json b/plugins/node/opentelemetry-instrumentation-net/package.json index 0183bb0615..41eb0902b7 100644 --- a/plugins/node/opentelemetry-instrumentation-net/package.json +++ b/plugins/node/opentelemetry-instrumentation-net/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-net", - "version": "0.35.0", + "version": "0.36.0", "description": "OpenTelemetry net module automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-pg/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-pg/CHANGELOG.md index d7abf286d3..ff4aaae86e 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-pg/CHANGELOG.md @@ -6,6 +6,28 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.41.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-pg-v0.40.0...instrumentation-pg-v0.41.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/sql-common bumped from ^0.40.0 to ^0.40.1 + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.40.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-pg-v0.39.1...instrumentation-pg-v0.40.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-pg/package.json b/plugins/node/opentelemetry-instrumentation-pg/package.json index df71b8f324..d12a2348e5 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/package.json +++ b/plugins/node/opentelemetry-instrumentation-pg/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-pg", - "version": "0.40.0", + "version": "0.41.0", "description": "OpenTelemetry postgres automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -52,7 +52,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -73,7 +73,7 @@ "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/semantic-conventions": "^1.22.0", - "@opentelemetry/sql-common": "^0.40.0", + "@opentelemetry/sql-common": "^0.40.1", "@types/pg": "8.6.1", "@types/pg-pool": "2.0.4" }, diff --git a/plugins/node/opentelemetry-instrumentation-pino/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-pino/CHANGELOG.md index 90f157fe24..2b6f08b518 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-pino/CHANGELOG.md @@ -1,5 +1,25 @@ # Changelog +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-pino-v0.37.0...instrumentation-pino-v0.38.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-pino-v0.36.0...instrumentation-pino-v0.37.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-pino/package.json b/plugins/node/opentelemetry-instrumentation-pino/package.json index b23490786c..f8054397cb 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/package.json +++ b/plugins/node/opentelemetry-instrumentation-pino/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-pino", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry instrumentation for pino", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,7 +46,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", diff --git a/plugins/node/opentelemetry-instrumentation-redis-4/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-redis-4/CHANGELOG.md index a8df9ad4aa..6a8dfd06b8 100644 --- a/plugins/node/opentelemetry-instrumentation-redis-4/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-redis-4/CHANGELOG.md @@ -12,6 +12,28 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-redis-4-v0.38.0...instrumentation-redis-4-v0.39.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/redis-common bumped from ^0.36.1 to ^0.36.2 + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-redis-4-v0.37.0...instrumentation-redis-4-v0.38.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-redis-4/package.json b/plugins/node/opentelemetry-instrumentation-redis-4/package.json index 1075413252..23d061c895 100644 --- a/plugins/node/opentelemetry-instrumentation-redis-4/package.json +++ b/plugins/node/opentelemetry-instrumentation-redis-4/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-redis-4", - "version": "0.38.0", + "version": "0.39.0", "description": "Automatic OpenTelemetry instrumentation for redis package version 4", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -50,7 +50,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", @@ -67,7 +67,7 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/redis-common": "^0.36.1", + "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-redis-4#readme" diff --git a/plugins/node/opentelemetry-instrumentation-redis/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-redis/CHANGELOG.md index 180b361521..163febd386 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-redis/CHANGELOG.md @@ -12,6 +12,28 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-redis-v0.38.0...instrumentation-redis-v0.39.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/redis-common bumped from ^0.36.1 to ^0.36.2 + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.38.0 to ^0.39.0 + ## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-redis-v0.37.0...instrumentation-redis-v0.38.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-redis/package.json b/plugins/node/opentelemetry-instrumentation-redis/package.json index 463d608c96..2e30c9f96b 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/package.json +++ b/plugins/node/opentelemetry-instrumentation-redis/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-redis", - "version": "0.38.0", + "version": "0.39.0", "description": "Automatic OpenTelemetry instrumentation for redis package version 2 and 3", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -50,7 +50,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", - "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -67,7 +67,7 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/redis-common": "^0.36.1", + "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-redis#readme" diff --git a/plugins/node/opentelemetry-instrumentation-restify/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-restify/CHANGELOG.md index 65e7120fbe..a3a982f861 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-restify/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-restify-v0.37.0...instrumentation-restify-v0.38.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-restify-v0.36.0...instrumentation-restify-v0.37.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-restify/package.json b/plugins/node/opentelemetry-instrumentation-restify/package.json index de6c089427..1113783ecc 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/package.json +++ b/plugins/node/opentelemetry-instrumentation-restify/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-restify", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry restify automatic instrumentation package", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-router/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-router/CHANGELOG.md index 45643528b8..f0c10e6024 100644 --- a/plugins/node/opentelemetry-instrumentation-router/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-router/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-router-v0.36.0...instrumentation-router-v0.37.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-router-v0.35.0...instrumentation-router-v0.36.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-router/package.json b/plugins/node/opentelemetry-instrumentation-router/package.json index c0ac50d89b..7ea1a851e9 100644 --- a/plugins/node/opentelemetry-instrumentation-router/package.json +++ b/plugins/node/opentelemetry-instrumentation-router/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-router", - "version": "0.36.0", + "version": "0.37.0", "description": "OpenTelemetry Router automatic instrumentation package", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-winston/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-winston/CHANGELOG.md index 9fbe11524d..3bca394376 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-winston/CHANGELOG.md @@ -1,5 +1,26 @@ # Changelog +## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-winston-v0.36.0...instrumentation-winston-v0.37.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* **instrumentation-winston:** Allow log level to be configured for log sending ([#2016](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2016)) ([b903bce](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/b903bce15d6ba4fa44daeaf6785abd6ed94cb5ff)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/winston-transport bumped from ^0.2.0 to ^0.3.0 + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-winston-v0.35.0...instrumentation-winston-v0.36.0) (2024-04-03) diff --git a/plugins/node/opentelemetry-instrumentation-winston/package.json b/plugins/node/opentelemetry-instrumentation-winston/package.json index 06a1302f03..ecfd90546c 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/package.json +++ b/plugins/node/opentelemetry-instrumentation-winston/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-winston", - "version": "0.36.0", + "version": "0.37.0", "description": "OpenTelemetry instrumentation for winston", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -48,7 +48,7 @@ "@opentelemetry/context-async-hooks": "^1.21.0", "@opentelemetry/sdk-trace-base": "^1.21.0", "@opentelemetry/sdk-trace-node": "^1.21.0", - "@opentelemetry/winston-transport": "^0.2.0", + "@opentelemetry/winston-transport": "^0.3.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", diff --git a/plugins/web/opentelemetry-instrumentation-document-load/CHANGELOG.md b/plugins/web/opentelemetry-instrumentation-document-load/CHANGELOG.md index df45a2651b..d4750f9920 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/CHANGELOG.md +++ b/plugins/web/opentelemetry-instrumentation-document-load/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-document-load-v0.37.0...instrumentation-document-load-v0.38.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-document-load-v0.36.0...instrumentation-document-load-v0.37.0) (2024-04-03) diff --git a/plugins/web/opentelemetry-instrumentation-document-load/package.json b/plugins/web/opentelemetry-instrumentation-document-load/package.json index 5b135a8a41..f849a1de3d 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/package.json +++ b/plugins/web/opentelemetry-instrumentation-document-load/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-document-load", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry document-load automatic instrumentation package.", "main": "build/src/index.js", "module": "build/esm/index.js", diff --git a/plugins/web/opentelemetry-instrumentation-long-task/CHANGELOG.md b/plugins/web/opentelemetry-instrumentation-long-task/CHANGELOG.md index 5e8311cd24..8c28eafded 100644 --- a/plugins/web/opentelemetry-instrumentation-long-task/CHANGELOG.md +++ b/plugins/web/opentelemetry-instrumentation-long-task/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-long-task-v0.37.0...instrumentation-long-task-v0.38.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-long-task-v0.36.0...instrumentation-long-task-v0.37.0) (2024-04-03) diff --git a/plugins/web/opentelemetry-instrumentation-long-task/package.json b/plugins/web/opentelemetry-instrumentation-long-task/package.json index 6720125885..8e74d81397 100644 --- a/plugins/web/opentelemetry-instrumentation-long-task/package.json +++ b/plugins/web/opentelemetry-instrumentation-long-task/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-long-task", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry long task API automatic instrumentation package.", "main": "build/src/index.js", "module": "build/esm/index.js", diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/CHANGELOG.md b/plugins/web/opentelemetry-instrumentation-user-interaction/CHANGELOG.md index 20ecf917d0..729fe2ec9f 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/CHANGELOG.md +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-user-interaction-v0.37.0...instrumentation-user-interaction-v0.38.0) (2024-04-25) + + +### Features + +* **deps:** update otel-js to 0.51.0 ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) +* remove generic type from instrumentations ([80cbee7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/80cbee73130c65c8ccd78384485a7be8d2a4a84b)) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-user-interaction-v0.36.0...instrumentation-user-interaction-v0.37.0) (2024-04-03) diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/package.json b/plugins/web/opentelemetry-instrumentation-user-interaction/package.json index 272ede8cd3..d51c3877ea 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/package.json +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-user-interaction", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry UserInteraction automatic instrumentation package.", "main": "build/src/index.js", "module": "build/esm/index.js", diff --git a/plugins/web/opentelemetry-plugin-react-load/CHANGELOG.md b/plugins/web/opentelemetry-plugin-react-load/CHANGELOG.md index 6c1904c9d4..20e4ba31cb 100644 --- a/plugins/web/opentelemetry-plugin-react-load/CHANGELOG.md +++ b/plugins/web/opentelemetry-plugin-react-load/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.30.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/plugin-react-load-v0.30.0...plugin-react-load-v0.30.1) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.30.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/plugin-react-load-v0.29.1...plugin-react-load-v0.30.0) (2023-11-13) diff --git a/plugins/web/opentelemetry-plugin-react-load/package.json b/plugins/web/opentelemetry-plugin-react-load/package.json index 9e5f01403d..686bdcc371 100644 --- a/plugins/web/opentelemetry-plugin-react-load/package.json +++ b/plugins/web/opentelemetry-plugin-react-load/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/plugin-react-load", - "version": "0.30.0", + "version": "0.30.1", "description": "OpenTelemetry React loading automatic instrumentation package.", "main": "build/src/index.js", "module": "build/esm/index.js", diff --git a/propagators/opentelemetry-propagator-grpc-census-binary/CHANGELOG.md b/propagators/opentelemetry-propagator-grpc-census-binary/CHANGELOG.md index 55adb18c00..f6b5c40c3f 100644 --- a/propagators/opentelemetry-propagator-grpc-census-binary/CHANGELOG.md +++ b/propagators/opentelemetry-propagator-grpc-census-binary/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.27.2](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-grpc-census-binary-v0.27.1...propagator-grpc-census-binary-v0.27.2) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.27.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-grpc-census-binary-v0.27.0...propagator-grpc-census-binary-v0.27.1) (2023-08-14) diff --git a/propagators/opentelemetry-propagator-grpc-census-binary/package.json b/propagators/opentelemetry-propagator-grpc-census-binary/package.json index 604e091845..383d1cb1fb 100644 --- a/propagators/opentelemetry-propagator-grpc-census-binary/package.json +++ b/propagators/opentelemetry-propagator-grpc-census-binary/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/propagator-grpc-census-binary", - "version": "0.27.1", + "version": "0.27.2", "description": "OpenTelemetry gRPC Census propagator provides a context propagator for OpenTelemetry that can use the gRPC binary header: 'grpc-trace-bin' for interoperability with OpenCensus", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/propagators/opentelemetry-propagator-instana/CHANGELOG.md b/propagators/opentelemetry-propagator-instana/CHANGELOG.md index 087b0b72f1..3e73530daf 100644 --- a/propagators/opentelemetry-propagator-instana/CHANGELOG.md +++ b/propagators/opentelemetry-propagator-instana/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.3.2](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-instana-v0.3.1...propagator-instana-v0.3.2) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.3.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-instana-v0.3.0...propagator-instana-v0.3.1) (2023-08-14) diff --git a/propagators/opentelemetry-propagator-instana/package.json b/propagators/opentelemetry-propagator-instana/package.json index 3011ba9cc0..7bf4bd036c 100644 --- a/propagators/opentelemetry-propagator-instana/package.json +++ b/propagators/opentelemetry-propagator-instana/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/propagator-instana", - "version": "0.3.1", + "version": "0.3.2", "description": "The OpenTelemetry Instana Propagator implements the propagation format used by IBM Observability by Instana", "main": "build/src/index.js", "module": "build/esm/index.js", diff --git a/propagators/opentelemetry-propagator-ot-trace/CHANGELOG.md b/propagators/opentelemetry-propagator-ot-trace/CHANGELOG.md index 85778a7dec..0ee89eb51e 100644 --- a/propagators/opentelemetry-propagator-ot-trace/CHANGELOG.md +++ b/propagators/opentelemetry-propagator-ot-trace/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.27.2](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-ot-trace-v0.27.1...propagator-ot-trace-v0.27.2) (2024-04-25) + + +### Bug Fixes + +* revert modifications to Apache license ([#2105](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2105)) ([4590c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4590c8df184bbcb9bd67ce1111df9f25f865ccf2)) + ## [0.27.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-ot-trace-v0.27.0...propagator-ot-trace-v0.27.1) (2023-08-14) diff --git a/propagators/opentelemetry-propagator-ot-trace/package.json b/propagators/opentelemetry-propagator-ot-trace/package.json index f65c0d1ebd..20ceb7a58f 100644 --- a/propagators/opentelemetry-propagator-ot-trace/package.json +++ b/propagators/opentelemetry-propagator-ot-trace/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/propagator-ot-trace", - "version": "0.27.1", + "version": "0.27.2", "description": "The OpenTelemetry OTTracepropagator implements the propagation format used by the \"basic tracer\" implementations from the OpenTracing project", "main": "build/src/index.js", "module": "build/esm/index.js", From 96a87b48934f0afcf1fe637eed6704f35bd8e973 Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Thu, 25 Apr 2024 20:42:36 +0200 Subject: [PATCH 062/121] fix(ci): rollback ##2133 (#2148) --- .github/workflows/release-please.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 6bf4f04da7..1c58cefc06 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -54,15 +54,11 @@ jobs: # get main again - name: Checkout Repository - # only checkout if a release has been created - if: ${{ steps.release.outputs.release_created }} uses: actions/checkout@v4 with: fetch-depth: 0 - name: Rebuild Packages - # only rebuild if a release has been created - if: ${{ steps.release.outputs.release_created }} run: | npm ci npm run compile @@ -71,8 +67,6 @@ jobs: # need to publish all unpublished versions to npm here # See: https://github.com/lerna/lerna/tree/main/commands/publish#bump-from-package - name: Publish to npm - # only publish if a release has been created - if: ${{ steps.release.outputs.release_created }} env: NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} run: npx lerna publish from-package --no-push --no-private --no-git-tag-version --no-verify-access --yes From b0ac2c9d7d96e27ce42b82bb1a152c40f7a92387 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Thu, 25 Apr 2024 18:39:15 -0400 Subject: [PATCH 063/121] chore(examples/redis): use exported strings for attributes (#2128) Use exported strings for Semantic Attributes Refs: #2025 --- examples/redis/package.json | 1 + examples/redis/src/tracer.ts | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/redis/package.json b/examples/redis/package.json index fedef04c8d..5e989b9fd2 100644 --- a/examples/redis/package.json +++ b/examples/redis/package.json @@ -39,6 +39,7 @@ "@opentelemetry/instrumentation-redis": "^0.32.0", "@opentelemetry/sdk-trace-base": "^1.0.0", "@opentelemetry/sdk-trace-node": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "axios": "^1.6.0", "express": "^4.17.1", "redis": "^3.1.1" diff --git a/examples/redis/src/tracer.ts b/examples/redis/src/tracer.ts index e50633493a..de70a60418 100644 --- a/examples/redis/src/tracer.ts +++ b/examples/redis/src/tracer.ts @@ -9,14 +9,14 @@ import { registerInstrumentations } from '@opentelemetry/instrumentation'; import { HttpInstrumentation } from '@opentelemetry/instrumentation-http'; import { RedisInstrumentation } from '@opentelemetry/instrumentation-redis'; import { Resource } from '@opentelemetry/resources'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; const EXPORTER = process.env.EXPORTER || ''; export const setupTracing = (serviceName: string) => { const provider = new NodeTracerProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: serviceName, + [SEMRESATTRS_SERVICE_NAME]: serviceName, }),}); let exporter; From c96293de9528769c0cce610ef6493faee1c6020a Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Thu, 25 Apr 2024 18:39:41 -0400 Subject: [PATCH 064/121] chore(examples/react-load): use exported strings for attributes (#2127) Use exported strings for Semantic Attributes Refs: #2025 --- examples/react-load/react/package.json | 1 + examples/react-load/react/src/web-tracer.js | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/react-load/react/package.json b/examples/react-load/react/package.json index 702f88cfac..9c9ce0281a 100644 --- a/examples/react-load/react/package.json +++ b/examples/react-load/react/package.json @@ -43,6 +43,7 @@ "@opentelemetry/plugin-react-load": "^0.23.0", "@opentelemetry/sdk-trace-base": "^0.25.0", "@opentelemetry/sdk-trace-web": "^0.25.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "react": "^16.13.1", "react-dom": "^16.13.1", "react-router-dom": "^5.2.0", diff --git a/examples/react-load/react/src/web-tracer.js b/examples/react-load/react/src/web-tracer.js index ea1b5ca952..80796da13e 100644 --- a/examples/react-load/react/src/web-tracer.js +++ b/examples/react-load/react/src/web-tracer.js @@ -5,12 +5,12 @@ import { ZoneContextManager } from '@opentelemetry/context-zone'; import { CollectorTraceExporter } from '@opentelemetry/exporter-collector'; import { diag, DiagConsoleLogger } from '@opentelemetry/api'; import { Resource } from '@opentelemetry/resources'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions' +import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions' export default (serviceName) => { const provider = new WebTracerProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: "react-load-example" + [SEMRESATTRS_SERVICE_NAME]: "react-load-example" }), }); From 09c8e428d6d52847176e3dc50d78c36248a1bb62 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Thu, 25 Apr 2024 18:40:01 -0400 Subject: [PATCH 065/121] chore(examples/mysql): use exported strings for attributes (#2126) Use exported strings for Semantic Attributes Signed-off-by: maryliag Refs: #2025 --- examples/mysql/package.json | 1 + examples/mysql/src/tracer.ts | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/mysql/package.json b/examples/mysql/package.json index 3291020209..8455f63678 100644 --- a/examples/mysql/package.json +++ b/examples/mysql/package.json @@ -39,6 +39,7 @@ "@opentelemetry/instrumentation-mysql": "^0.31.0", "@opentelemetry/sdk-trace-base": "^1.0.0", "@opentelemetry/sdk-trace-node": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "@opentelemetry/exporter-metrics-otlp-grpc": "^0.48.0", "mysql": "^2.18.1" }, diff --git a/examples/mysql/src/tracer.ts b/examples/mysql/src/tracer.ts index f37153aa64..b5c2f522cb 100644 --- a/examples/mysql/src/tracer.ts +++ b/examples/mysql/src/tracer.ts @@ -9,7 +9,7 @@ import { registerInstrumentations } from '@opentelemetry/instrumentation'; import { HttpInstrumentation } from '@opentelemetry/instrumentation-http'; import { MySQLInstrumentation } from '@opentelemetry/instrumentation-mysql'; import { Resource } from '@opentelemetry/resources'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; import { MeterProvider, PeriodicExportingMetricReader, @@ -33,7 +33,7 @@ export const setupTracing = (serviceName: string) => { //traces: const tracerProvider = new NodeTracerProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: serviceName, + [SEMRESATTRS_SERVICE_NAME]: serviceName, }),}); if (EXPORTER.toLowerCase().startsWith('z')) { From 4a4a087eff401bb03300184896b55c0de73d0546 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Thu, 25 Apr 2024 18:40:17 -0400 Subject: [PATCH 066/121] chore(examples/mongodb): use exported strings for attributes (#2125) Use exported strings for Semantic Attributes Refs: #2025 --- examples/mongodb/package.json | 1 + examples/mongodb/src/tracer.ts | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/mongodb/package.json b/examples/mongodb/package.json index f96cd0feb2..7bf097e553 100644 --- a/examples/mongodb/package.json +++ b/examples/mongodb/package.json @@ -38,6 +38,7 @@ "@opentelemetry/instrumentation-mongodb": "^0.32.0", "@opentelemetry/sdk-trace-node": "^1.0.0", "@opentelemetry/sdk-trace-base": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "mongodb": "^3.6.11" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib#readme", diff --git a/examples/mongodb/src/tracer.ts b/examples/mongodb/src/tracer.ts index e38075df25..4e63724503 100644 --- a/examples/mongodb/src/tracer.ts +++ b/examples/mongodb/src/tracer.ts @@ -8,13 +8,13 @@ import { ZipkinExporter } from '@opentelemetry/exporter-zipkin'; import { registerInstrumentations } from '@opentelemetry/instrumentation'; import { HttpInstrumentation } from '@opentelemetry/instrumentation-http'; import { MongoDBInstrumentation } from '@opentelemetry/instrumentation-mongodb'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; export const setupTracing = (serviceName: string): api.Tracer => { const provider = new NodeTracerProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: serviceName + [SEMRESATTRS_SERVICE_NAME]: serviceName }) }); From e04362a8ea4d2878d44449f8c14a4d6ee600a70a Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Thu, 25 Apr 2024 18:40:27 -0400 Subject: [PATCH 067/121] chore(examples/memcached): use exported strings for attributes (#2124) Use exported strings for Semantic Attributes Signed-off-by: maryliag Refs: #2025 --- examples/memcached/package.json | 4 +++- examples/memcached/tracer.js | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/examples/memcached/package.json b/examples/memcached/package.json index 73170fe28a..858393ab71 100644 --- a/examples/memcached/package.json +++ b/examples/memcached/package.json @@ -31,8 +31,10 @@ "@opentelemetry/api": "^1.0.2", "@opentelemetry/instrumentation": "^0.25.0", "@opentelemetry/instrumentation-memcached": "^0.23.0", - "@opentelemetry/sdk-trace-node": "^0.25.0", + "@opentelemetry/resources": "^1.23.0", "@opentelemetry/sdk-trace-base": "^0.25.0", + "@opentelemetry/sdk-trace-node": "^0.25.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "memcached": "^2.2.2" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib#readme" diff --git a/examples/memcached/tracer.js b/examples/memcached/tracer.js index 0dbda86a19..285233199a 100644 --- a/examples/memcached/tracer.js +++ b/examples/memcached/tracer.js @@ -9,14 +9,14 @@ const { registerInstrumentations } = require('@opentelemetry/instrumentation'); const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); const { SimpleSpanProcessor, ConsoleSpanExporter } = require('@opentelemetry/sdk-trace-base'); const { Resource } = require('@opentelemetry/resources'); -const { SemanticResourceAttributes } = require('@opentelemetry/semantic-conventions'); +const { SEMRESATTRS_SERVICE_NAME } = require('@opentelemetry/semantic-conventions'); const { MemcachedInstrumentation } = require('@opentelemetry/instrumentation-memcached'); module.exports = (serviceName) => { const provider = new NodeTracerProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: serviceName, + [SEMRESATTRS_SERVICE_NAME]: serviceName, }), }); registerInstrumentations({ From 7f5f20c20aeac4bea80280eaf7fc353a0d96cafd Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Thu, 25 Apr 2024 18:40:42 -0400 Subject: [PATCH 068/121] chore(examples/koa): use exported strings for attributes (#2123) Use exported strings for Semantic Attributes Signed-off-by: maryliag Refs: #2025 --- examples/koa/package.json | 1 + examples/koa/src/tracer.ts | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/koa/package.json b/examples/koa/package.json index a3447a8273..9165d6ebdd 100644 --- a/examples/koa/package.json +++ b/examples/koa/package.json @@ -39,6 +39,7 @@ "@opentelemetry/instrumentation-koa": "^0.31.0", "@opentelemetry/sdk-trace-node": "^1.0.0", "@opentelemetry/sdk-trace-base": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "axios": "^1.6.0", "koa": "^2.13.0" }, diff --git a/examples/koa/src/tracer.ts b/examples/koa/src/tracer.ts index 32bc6b166d..d0a3321a68 100644 --- a/examples/koa/src/tracer.ts +++ b/examples/koa/src/tracer.ts @@ -10,14 +10,14 @@ import { SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base'; import { JaegerExporter } from '@opentelemetry/exporter-jaeger'; import { ZipkinExporter } from '@opentelemetry/exporter-zipkin'; import { Resource } from '@opentelemetry/resources'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions' +import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions' const EXPORTER = process.env.EXPORTER || ''; export const setupTracing = (serviceName: string) => { const provider = new NodeTracerProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: serviceName + [SEMRESATTRS_SERVICE_NAME]: serviceName }) }); From 7822461f53081937594ecf0ebcdecd79c2b08a2e Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Thu, 25 Apr 2024 18:40:57 -0400 Subject: [PATCH 069/121] chore(examples/express): use exported strings for attributes (#2121) Use exported strings for Semantic Resource Attributes Signed-off-by: maryliag Refs: #2025 --- examples/express/package.json | 2 +- examples/express/src/tracer.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/express/package.json b/examples/express/package.json index f3bac84d8e..61442eeac2 100644 --- a/examples/express/package.json +++ b/examples/express/package.json @@ -40,7 +40,7 @@ "@opentelemetry/resources": "^1.18.1", "@opentelemetry/sdk-trace-base": "^1.18.1", "@opentelemetry/sdk-trace-node": "^1.18.1", - "@opentelemetry/semantic-conventions": "^1.18.1", + "@opentelemetry/semantic-conventions": "^1.23.0", "axios": "^1.6.0", "cross-env": "^7.0.3", "express": "^4.17.1" diff --git a/examples/express/src/tracer.ts b/examples/express/src/tracer.ts index 93a1515f69..4ad569644f 100644 --- a/examples/express/src/tracer.ts +++ b/examples/express/src/tracer.ts @@ -14,7 +14,7 @@ import { Sampler, AlwaysOnSampler, SimpleSpanProcessor } from '@opentelemetry/sd import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto'; import { ZipkinExporter } from '@opentelemetry/exporter-zipkin'; import { Resource } from '@opentelemetry/resources'; -import { SemanticAttributes, SemanticResourceAttributes as ResourceAttributesSC } from '@opentelemetry/semantic-conventions'; +import { SEMRESATTRS_SERVICE_NAME, SEMATTRS_HTTP_ROUTE } from '@opentelemetry/semantic-conventions'; const Exporter = (process.env.EXPORTER || '').toLowerCase().startsWith('z') ? ZipkinExporter : OTLPTraceExporter; import { ExpressInstrumentation } from '@opentelemetry/instrumentation-express'; @@ -23,7 +23,7 @@ const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http'); export const setupTracing = (serviceName: string) => { const provider = new NodeTracerProvider({ resource: new Resource({ - [ResourceAttributesSC.SERVICE_NAME]: serviceName, + [SEMRESATTRS_SERVICE_NAME]: serviceName, }), sampler: filterSampler(ignoreHealthCheck, new AlwaysOnSampler()), }); @@ -65,5 +65,5 @@ function filterSampler(filterFn: FilterFunction, parent: Sampler): Sampler { } function ignoreHealthCheck(spanName: string, spanKind: SpanKind, attributes: Attributes) { - return spanKind !== opentelemetry.SpanKind.SERVER || attributes[SemanticAttributes.HTTP_ROUTE] !== "/health"; + return spanKind !== opentelemetry.SpanKind.SERVER || attributes[SEMATTRS_HTTP_ROUTE] !== "/health"; } From 56392f4097dd2632de3275782f4ff49c91c552b7 Mon Sep 17 00:00:00 2001 From: David Luna Date: Mon, 29 Apr 2024 07:36:22 +0200 Subject: [PATCH 070/121] refactor(instr-socket.io): use exported strings for attributes (#2147) * refactor(instr-socket.io): use exported strings for attributes * chore(instr-socket.io): fix lint issues * fix(instr-socket.io): fix missing entries in package-lock.json * fix(instr-socket.io): fix bad entry in package.json --- package-lock.json | 4 +- .../node/instrumentation-socket.io/README.md | 13 +++ .../instrumentation-socket.io/package.json | 2 +- .../src/socket.io.ts | 27 +++--- .../test/socket.io.test.ts | 82 +++++++++---------- 5 files changed, 69 insertions(+), 59 deletions(-) diff --git a/package-lock.json b/package-lock.json index b30e3664a6..4663055e9d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37112,7 +37112,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -46987,7 +46987,7 @@ "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "expect": "27.4.2", diff --git a/plugins/node/instrumentation-socket.io/README.md b/plugins/node/instrumentation-socket.io/README.md index ca242046f9..28370b58f2 100644 --- a/plugins/node/instrumentation-socket.io/README.md +++ b/plugins/node/instrumentation-socket.io/README.md @@ -59,6 +59,19 @@ Few breaking changes were made during porting to the contrib repo: The instrumentation's config `filterHttpTransport` option was removed to decouple this instrumentation from the http instrumentation. if you do not want to trace the socket.io http requests, add the default socket.io route (`/socket.io/`) to the `HttpInstrumentationConfig.ignoreIncomingPaths` array +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | +| ---------------------------- | ------------------------------------------------------------------------------------------------ | +| `messaging.destination` | The message destination name. This might be equal to the span name but is required nevertheless. | +| `messaging.destination_kind` | The kind of message destination. | +| `messaging.operation` | A string identifying the kind of message consumption. | +| `messaging.system` | A string identifying the messaging system. | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/instrumentation-socket.io/package.json b/plugins/node/instrumentation-socket.io/package.json index 45557a81e4..7ec6a4e6b2 100644 --- a/plugins/node/instrumentation-socket.io/package.json +++ b/plugins/node/instrumentation-socket.io/package.json @@ -59,7 +59,7 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-socket.io#readme" } diff --git a/plugins/node/instrumentation-socket.io/src/socket.io.ts b/plugins/node/instrumentation-socket.io/src/socket.io.ts index 51c3d1d962..5ed289c65b 100644 --- a/plugins/node/instrumentation-socket.io/src/socket.io.ts +++ b/plugins/node/instrumentation-socket.io/src/socket.io.ts @@ -28,9 +28,12 @@ import { safeExecuteInTheMiddle, } from '@opentelemetry/instrumentation'; import { - SemanticAttributes, - MessagingOperationValues, - MessagingDestinationKindValues, + SEMATTRS_MESSAGING_DESTINATION, + SEMATTRS_MESSAGING_DESTINATION_KIND, + SEMATTRS_MESSAGING_OPERATION, + SEMATTRS_MESSAGING_SYSTEM, + MESSAGINGOPERATIONVALUES_RECEIVE, + MESSAGINGDESTINATIONKINDVALUES_TOPIC, } from '@opentelemetry/semantic-conventions'; import { SocketIoInstrumentationConfig } from './types'; import { SocketIoInstrumentationAttributes } from './AttributeNames'; @@ -302,14 +305,14 @@ export class SocketIoInstrumentation extends InstrumentationBase { ? eventName : `${namespace} ${eventName}`; const span: Span = self.tracer.startSpan( - `${destination} ${MessagingOperationValues.RECEIVE}`, + `${destination} ${MESSAGINGOPERATIONVALUES_RECEIVE}`, { kind: SpanKind.CONSUMER, attributes: { - [SemanticAttributes.MESSAGING_SYSTEM]: 'socket.io', - [SemanticAttributes.MESSAGING_DESTINATION]: namespace, - [SemanticAttributes.MESSAGING_OPERATION]: - MessagingOperationValues.RECEIVE, + [SEMATTRS_MESSAGING_SYSTEM]: 'socket.io', + [SEMATTRS_MESSAGING_DESTINATION]: namespace, + [SEMATTRS_MESSAGING_OPERATION]: + MESSAGINGOPERATIONVALUES_RECEIVE, [SocketIoInstrumentationAttributes.SOCKET_IO_EVENT_NAME]: eventName, }, @@ -379,9 +382,9 @@ export class SocketIoInstrumentation extends InstrumentationBase { const messagingSystem = 'socket.io'; const eventName = ev; const attributes: any = { - [SemanticAttributes.MESSAGING_SYSTEM]: messagingSystem, - [SemanticAttributes.MESSAGING_DESTINATION_KIND]: - MessagingDestinationKindValues.TOPIC, + [SEMATTRS_MESSAGING_SYSTEM]: messagingSystem, + [SEMATTRS_MESSAGING_DESTINATION_KIND]: + MESSAGINGDESTINATIONKINDVALUES_TOPIC, [SocketIoInstrumentationAttributes.SOCKET_IO_EVENT_NAME]: eventName, }; @@ -394,7 +397,7 @@ export class SocketIoInstrumentation extends InstrumentationBase { if (namespace) { attributes[SocketIoInstrumentationAttributes.SOCKET_IO_NAMESPACE] = namespace; - attributes[SemanticAttributes.MESSAGING_DESTINATION] = namespace; + attributes[SEMATTRS_MESSAGING_DESTINATION] = namespace; } const spanRooms = rooms.length ? `[${rooms.join()}]` : ''; const span = self.tracer.startSpan(`${namespace}${spanRooms} send`, { diff --git a/plugins/node/instrumentation-socket.io/test/socket.io.test.ts b/plugins/node/instrumentation-socket.io/test/socket.io.test.ts index 1b47fd5d73..0b733a438c 100644 --- a/plugins/node/instrumentation-socket.io/test/socket.io.test.ts +++ b/plugins/node/instrumentation-socket.io/test/socket.io.test.ts @@ -14,8 +14,10 @@ * limitations under the License. */ import { - MessagingDestinationKindValues, - SemanticAttributes, + MESSAGINGDESTINATIONKINDVALUES_TOPIC, + SEMATTRS_MESSAGING_DESTINATION, + SEMATTRS_MESSAGING_DESTINATION_KIND, + SEMATTRS_MESSAGING_SYSTEM, } from '@opentelemetry/semantic-conventions'; import { SocketIoInstrumentation, @@ -56,12 +58,10 @@ describe('SocketIoInstrumentation', () => { io.emit('test'); expectSpan('/ send', span => { expect(span.kind).toEqual(SpanKind.PRODUCER); - expect(span.attributes[SemanticAttributes.MESSAGING_SYSTEM]).toEqual( - 'socket.io' + expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual('socket.io'); + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND]).toEqual( + MESSAGINGDESTINATIONKINDVALUES_TOPIC ); - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.TOPIC); }); }); @@ -89,7 +89,7 @@ describe('SocketIoInstrumentation', () => { // only for v2: connect do not throw, but are just ignored return expectSpan('/ send', span => { expect(span.kind).toEqual(SpanKind.PRODUCER); - expect(span.attributes[SemanticAttributes.MESSAGING_SYSTEM]).toEqual( + expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( 'socket.io' ); }); @@ -107,12 +107,10 @@ describe('SocketIoInstrumentation', () => { io.send('test'); expectSpan('/ send', span => { expect(span.kind).toEqual(SpanKind.PRODUCER); - expect(span.attributes[SemanticAttributes.MESSAGING_SYSTEM]).toEqual( - 'socket.io' + expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual('socket.io'); + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND]).toEqual( + MESSAGINGDESTINATIONKINDVALUES_TOPIC ); - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION_KIND] - ).toEqual(MessagingDestinationKindValues.TOPIC); }); }); @@ -173,9 +171,9 @@ describe('SocketIoInstrumentation', () => { span => { try { expect(span.kind).toEqual(SpanKind.CONSUMER); - expect( - span.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('socket.io'); + expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'socket.io' + ); expect(span.attributes['payload']).toEqual( JSON.stringify([data]) ); @@ -213,9 +211,9 @@ describe('SocketIoInstrumentation', () => { setTimeout(() => { expectSpan('connection receive', span => { expect(span.kind).toEqual(SpanKind.CONSUMER); - expect( - span.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('socket.io'); + expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'socket.io' + ); done(); }); }); @@ -244,9 +242,9 @@ describe('SocketIoInstrumentation', () => { span => { try { expect(span.kind).toEqual(SpanKind.CONSUMER); - expect( - span.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('socket.io'); + expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'socket.io' + ); done(); } catch (e) { done(e); @@ -294,9 +292,7 @@ describe('SocketIoInstrumentation', () => { const sio = createServerInstance(); sio.to(roomName).emit('broadcast', '1234'); expectSpan('/[room] send', span => { - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual('/'); + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual('/'); expect( span.attributes[SocketIoInstrumentationAttributes.SOCKET_IO_ROOMS] ).toEqual([roomName]); @@ -307,9 +303,7 @@ describe('SocketIoInstrumentation', () => { const sio = createServerInstance(); sio.to('room1').to('room2').emit('broadcast', '1234'); expectSpan('/[room1,room2] send', span => { - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual('/'); + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual('/'); expect( span.attributes[SocketIoInstrumentationAttributes.SOCKET_IO_ROOMS] ).toEqual(['room1', 'room2']); @@ -323,9 +317,9 @@ describe('SocketIoInstrumentation', () => { const namespace = io.of('/testing'); namespace.emit('namespace'); expectSpan('/testing send', span => { - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual('/testing'); + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + '/testing' + ); expect( span.attributes[SocketIoInstrumentationAttributes.SOCKET_IO_NAMESPACE] ).toEqual('/testing'); @@ -338,9 +332,9 @@ describe('SocketIoInstrumentation', () => { const namespace = io.of('/testing'); namespace.to(roomName).emit('broadcast', '1234'); expectSpan('/testing[room] send', span => { - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual('/testing'); + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + '/testing' + ); expect( span.attributes[SocketIoInstrumentationAttributes.SOCKET_IO_ROOMS] ).toEqual([roomName]); @@ -355,9 +349,9 @@ describe('SocketIoInstrumentation', () => { const namespace = io.of('/testing'); namespace.to('room1').to('room2').emit('broadcast', '1234'); expectSpan('/testing[room1,room2] send', span => { - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION] - ).toEqual('/testing'); + expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + '/testing' + ); expect( span.attributes[SocketIoInstrumentationAttributes.SOCKET_IO_NAMESPACE] ).toEqual('/testing'); @@ -389,11 +383,11 @@ describe('SocketIoInstrumentation', () => { span => { try { expect(span.kind).toEqual(SpanKind.CONSUMER); + expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'socket.io' + ); expect( - span.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('socket.io'); - expect( - span.attributes[SemanticAttributes.MESSAGING_DESTINATION] + span.attributes[SEMATTRS_MESSAGING_DESTINATION] ).toEqual('/testing'); done(); } catch (e) { @@ -431,9 +425,9 @@ describe('SocketIoInstrumentation', () => { span => { try { expect(span.kind).toEqual(SpanKind.PRODUCER); - expect( - span.attributes[SemanticAttributes.MESSAGING_SYSTEM] - ).toEqual('socket.io'); + expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual( + 'socket.io' + ); done(); } catch (e) { done(e); From b40926e9686598a991ed1ca0c4fdf034ae07bec6 Mon Sep 17 00:00:00 2001 From: David Luna Date: Mon, 29 Apr 2024 07:55:19 +0200 Subject: [PATCH 071/121] refactor(instr-tedious): use exported strings for attributes (#2144) Co-authored-by: Amir Blum --- package-lock.json | 4 +- .../node/instrumentation-tedious/README.md | 16 ++++++++ .../node/instrumentation-tedious/package.json | 2 +- .../src/instrumentation.ts | 24 ++++++----- .../test/instrumentation.test.ts | 40 ++++++++----------- 5 files changed, 51 insertions(+), 35 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4663055e9d..3ec369f264 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37361,7 +37361,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/tedious": "^4.0.10" }, "devDependencies": { @@ -47180,7 +47180,7 @@ "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/tedious": "^4.0.10", diff --git a/plugins/node/instrumentation-tedious/README.md b/plugins/node/instrumentation-tedious/README.md index ee8a9ee535..48863d1a3c 100644 --- a/plugins/node/instrumentation-tedious/README.md +++ b/plugins/node/instrumentation-tedious/README.md @@ -40,6 +40,22 @@ registerInstrumentations({ }) ``` +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | +| ----------------------- | ------------------------------------------------------------------------------ | +| `db.name` | This attribute is used to report the name of the database being accessed. | +| `db.sql.table` | The name of the primary table that the operation is acting upon. | +| `db.statement` | The database statement being executed. | +| `db.system` | An identifier for the database management system (DBMS) product being used. | +| `db.user` | Username for accessing the database. | +| `net.peer.name` | Remote hostname or similar. | +| `net.peer.port` | Remote port number. | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/instrumentation-tedious/package.json b/plugins/node/instrumentation-tedious/package.json index c123a3a90b..8d2948bf55 100644 --- a/plugins/node/instrumentation-tedious/package.json +++ b/plugins/node/instrumentation-tedious/package.json @@ -63,7 +63,7 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/tedious": "^4.0.10" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-tedious#readme" diff --git a/plugins/node/instrumentation-tedious/src/instrumentation.ts b/plugins/node/instrumentation-tedious/src/instrumentation.ts index d9c23eeb86..24935a32c3 100644 --- a/plugins/node/instrumentation-tedious/src/instrumentation.ts +++ b/plugins/node/instrumentation-tedious/src/instrumentation.ts @@ -22,8 +22,14 @@ import { isWrapped, } from '@opentelemetry/instrumentation'; import { - DbSystemValues, - SemanticAttributes, + DBSYSTEMVALUES_MSSQL, + SEMATTRS_DB_NAME, + SEMATTRS_DB_SQL_TABLE, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, + SEMATTRS_DB_USER, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, } from '@opentelemetry/semantic-conventions'; import type * as tedious from 'tedious'; import { TediousInstrumentationConfig } from './types'; @@ -155,16 +161,16 @@ export class TediousInstrumentation extends InstrumentationBase { { kind: api.SpanKind.CLIENT, attributes: { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.MSSQL, - [SemanticAttributes.DB_NAME]: databaseName, - [SemanticAttributes.NET_PEER_PORT]: this.config?.options?.port, - [SemanticAttributes.NET_PEER_NAME]: this.config?.server, + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_MSSQL, + [SEMATTRS_DB_NAME]: databaseName, + [SEMATTRS_NET_PEER_PORT]: this.config?.options?.port, + [SEMATTRS_NET_PEER_NAME]: this.config?.server, // >=4 uses `authentication` object, older versions just userName and password pair - [SemanticAttributes.DB_USER]: + [SEMATTRS_DB_USER]: this.config?.userName ?? this.config?.authentication?.options?.userName, - [SemanticAttributes.DB_STATEMENT]: sql, - [SemanticAttributes.DB_SQL_TABLE]: request.table, + [SEMATTRS_DB_STATEMENT]: sql, + [SEMATTRS_DB_SQL_TABLE]: request.table, }, } ); diff --git a/plugins/node/instrumentation-tedious/test/instrumentation.test.ts b/plugins/node/instrumentation-tedious/test/instrumentation.test.ts index 9313281838..5a531e2815 100644 --- a/plugins/node/instrumentation-tedious/test/instrumentation.test.ts +++ b/plugins/node/instrumentation-tedious/test/instrumentation.test.ts @@ -17,8 +17,14 @@ import { context, trace, SpanStatusCode, SpanKind } from '@opentelemetry/api'; import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks'; import { - DbSystemValues, - SemanticAttributes, + DBSYSTEMVALUES_MSSQL, + SEMATTRS_DB_NAME, + SEMATTRS_DB_SQL_TABLE, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, + SEMATTRS_DB_USER, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, } from '@opentelemetry/semantic-conventions'; import * as util from 'util'; import * as testUtils from '@opentelemetry/contrib-test-utils'; @@ -335,17 +341,14 @@ function assertSpan(span: ReadableSpan, expected: any) { assert(span); assert.strictEqual(span.name, expected.name); assert.strictEqual(span.kind, SpanKind.CLIENT); + assert.strictEqual(span.attributes[SEMATTRS_DB_SYSTEM], DBSYSTEMVALUES_MSSQL); assert.strictEqual( - span.attributes[SemanticAttributes.DB_SYSTEM], - DbSystemValues.MSSQL - ); - assert.strictEqual( - span.attributes[SemanticAttributes.DB_NAME], + span.attributes[SEMATTRS_DB_NAME], expected.database ?? database ); - assert.strictEqual(span.attributes[SemanticAttributes.NET_PEER_PORT], port); - assert.strictEqual(span.attributes[SemanticAttributes.NET_PEER_NAME], host); - assert.strictEqual(span.attributes[SemanticAttributes.DB_USER], user); + assert.strictEqual(span.attributes[SEMATTRS_NET_PEER_PORT], port); + assert.strictEqual(span.attributes[SEMATTRS_NET_PEER_NAME], host); + assert.strictEqual(span.attributes[SEMATTRS_DB_USER], user); assert.strictEqual( span.attributes['tedious.procedure_count'], expected.procCount ?? 1, @@ -362,27 +365,18 @@ function assertSpan(span: ReadableSpan, expected: any) { expected.parentSpan.spanContext().spanId ); } - assert.strictEqual( - span.attributes[SemanticAttributes.DB_SQL_TABLE], - expected.table - ); + assert.strictEqual(span.attributes[SEMATTRS_DB_SQL_TABLE], expected.table); if (expected.sql) { if (expected.sql instanceof RegExp) { assertMatch( - span.attributes[SemanticAttributes.DB_STATEMENT] as string | undefined, + span.attributes[SEMATTRS_DB_STATEMENT] as string | undefined, expected.sql ); } else { - assert.strictEqual( - span.attributes[SemanticAttributes.DB_STATEMENT], - expected.sql - ); + assert.strictEqual(span.attributes[SEMATTRS_DB_STATEMENT], expected.sql); } } else { - assert.strictEqual( - span.attributes[SemanticAttributes.DB_STATEMENT], - undefined - ); + assert.strictEqual(span.attributes[SEMATTRS_DB_STATEMENT], undefined); } if (expected.error) { assert( From 2d07c1858bad8461dd7bd411e56f6305664ca331 Mon Sep 17 00:00:00 2001 From: David Luna Date: Mon, 29 Apr 2024 08:12:46 +0200 Subject: [PATCH 072/121] fix(instr-knex): set correct SpanKind for traces (#2157) Co-authored-by: Amir Blum --- .../opentelemetry-instrumentation-knex/src/instrumentation.ts | 1 + .../node/opentelemetry-instrumentation-knex/test/index.test.ts | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts index ce45403efc..40577aa886 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts @@ -160,6 +160,7 @@ export class KnexInstrumentation extends InstrumentationBase { const span = instrumentation.tracer.startSpan( utils.getName(name, operation, table), { + kind: api.SpanKind.CLIENT, attributes, }, parent diff --git a/plugins/node/opentelemetry-instrumentation-knex/test/index.test.ts b/plugins/node/opentelemetry-instrumentation-knex/test/index.test.ts index 1f660cf273..9072465c47 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/test/index.test.ts +++ b/plugins/node/opentelemetry-instrumentation-knex/test/index.test.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { context, trace } from '@opentelemetry/api'; +import { SpanKind, context, trace } from '@opentelemetry/api'; import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks'; import { @@ -471,6 +471,7 @@ const assertSpans = (actualSpans: any[], expectedSpans: any[]) => { try { assert.notStrictEqual(span, undefined); assert.notStrictEqual(expected, undefined); + assert.strictEqual(span.kind, SpanKind.CLIENT); assertMatch(span.name, new RegExp(expected.op)); assertMatch(span.name, new RegExp(':memory:')); assert.strictEqual(span.attributes['db.system'], 'sqlite'); From 49d77cede61188f71f75459eb1ff9c84e4cc3abf Mon Sep 17 00:00:00 2001 From: David Luna Date: Mon, 29 Apr 2024 09:23:58 +0200 Subject: [PATCH 073/121] refactor(instr-cucumber): use exported strings for attributes (#2143) Co-authored-by: Amir Blum --- package-lock.json | 4 ++-- .../node/instrumentation-cucumber/README.md | 13 +++++++++++++ .../instrumentation-cucumber/package.json | 2 +- .../src/instrumentation.ts | 15 ++++++++++----- .../test/cucumber.test.ts | 19 ++++++++++++------- 5 files changed, 38 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3ec369f264..dd02d74395 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36873,7 +36873,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@cucumber/cucumber": "^9.0.0", @@ -45940,7 +45940,7 @@ "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.3.1", "@opentelemetry/sdk-trace-node": "^1.3.1", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "7.0.2", "@types/semver": "7.5.3", "@types/shimmer": "1.0.3", diff --git a/plugins/node/instrumentation-cucumber/README.md b/plugins/node/instrumentation-cucumber/README.md index c3fd434353..acc5466c36 100644 --- a/plugins/node/instrumentation-cucumber/README.md +++ b/plugins/node/instrumentation-cucumber/README.md @@ -43,6 +43,19 @@ Cucumber instrumentation has currently no options. | Options | Type | Description | | ------- | ---- | ----------- | +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | +| ---------------- | -------------------------------------------------------------------------------- | +| `code.filepath` | The source code file name that identifies the code unit as uniquely as possible. | +| `code.function` | The method or function name, or equivalent. | +| `code.lineno` | The line number in `code.filepath` best representing the operation. | +| `code.namespace` | The "namespace" within which `code.function` is defined. | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/instrumentation-cucumber/package.json b/plugins/node/instrumentation-cucumber/package.json index 76c0e259aa..ee4b117fd0 100644 --- a/plugins/node/instrumentation-cucumber/package.json +++ b/plugins/node/instrumentation-cucumber/package.json @@ -63,7 +63,7 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-cucumber#readme" } diff --git a/plugins/node/instrumentation-cucumber/src/instrumentation.ts b/plugins/node/instrumentation-cucumber/src/instrumentation.ts index 29e466cb69..255b2a297c 100644 --- a/plugins/node/instrumentation-cucumber/src/instrumentation.ts +++ b/plugins/node/instrumentation-cucumber/src/instrumentation.ts @@ -21,7 +21,12 @@ import { InstrumentationNodeModuleFile, isWrapped, } from '@opentelemetry/instrumentation'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_CODE_FILEPATH, + SEMATTRS_CODE_FUNCTION, + SEMATTRS_CODE_LINENO, + SEMATTRS_CODE_NAMESPACE, +} from '@opentelemetry/semantic-conventions'; import type * as cucumber from '@cucumber/cucumber'; import type * as messages from '@cucumber/messages'; @@ -174,10 +179,10 @@ export class CucumberInstrumentation extends InstrumentationBase { { kind: SpanKind.CLIENT, attributes: { - [SemanticAttributes.CODE_FILEPATH]: gherkinDocument.uri, - [SemanticAttributes.CODE_LINENO]: scenario.location.line, - [SemanticAttributes.CODE_FUNCTION]: scenario.name, - [SemanticAttributes.CODE_NAMESPACE]: feature.name, + [SEMATTRS_CODE_FILEPATH]: gherkinDocument.uri, + [SEMATTRS_CODE_LINENO]: scenario.location.line, + [SEMATTRS_CODE_FUNCTION]: scenario.name, + [SEMATTRS_CODE_NAMESPACE]: feature.name, [AttributeNames.FEATURE_TAGS]: CucumberInstrumentation.mapTags( feature.tags ), diff --git a/plugins/node/instrumentation-cucumber/test/cucumber.test.ts b/plugins/node/instrumentation-cucumber/test/cucumber.test.ts index 87679cb7bd..deffbef31d 100644 --- a/plugins/node/instrumentation-cucumber/test/cucumber.test.ts +++ b/plugins/node/instrumentation-cucumber/test/cucumber.test.ts @@ -21,9 +21,14 @@ import { InMemorySpanExporter, SimpleSpanProcessor, } from '@opentelemetry/sdk-trace-base'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_CODE_FILEPATH, + SEMATTRS_CODE_FUNCTION, + SEMATTRS_CODE_LINENO, + SEMATTRS_CODE_NAMESPACE, + SEMRESATTRS_SERVICE_NAME, +} from '@opentelemetry/semantic-conventions'; import { Resource } from '@opentelemetry/resources'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; import * as path from 'path'; import * as assert from 'assert'; @@ -50,7 +55,7 @@ import { PassThrough } from 'stream'; describe('CucumberInstrumentation', () => { const provider = new NodeTracerProvider({ resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: 'CucumberInstrumentation', + [SEMRESATTRS_SERVICE_NAME]: 'CucumberInstrumentation', }), }); const memoryExporter = new InMemorySpanExporter(); @@ -165,10 +170,10 @@ describe('CucumberInstrumentation', () => { assert(parent, 'Expected a parent span'); assert.deepEqual(parent.attributes, { - [SemanticAttributes.CODE_FILEPATH]: 'test/current.feature', - [SemanticAttributes.CODE_LINENO]: 7, - [SemanticAttributes.CODE_FUNCTION]: 'Button pushing', - [SemanticAttributes.CODE_NAMESPACE]: 'Basic', + [SEMATTRS_CODE_FILEPATH]: 'test/current.feature', + [SEMATTRS_CODE_LINENO]: 7, + [SEMATTRS_CODE_FUNCTION]: 'Button pushing', + [SEMATTRS_CODE_NAMESPACE]: 'Basic', [AttributeNames.FEATURE_DESCRIPTION]: ' A very basic feature file with a single scenario', [AttributeNames.FEATURE_LANGUAGE]: 'en', From 86d143aef90f8381a4eb51e1fca70d8114d2e4b9 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 29 Apr 2024 09:44:31 +0200 Subject: [PATCH 074/121] chore(deps): update dependency @fastify/express to v3 (#2117) --- package-lock.json | 16 ++++++++-------- .../package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index dd02d74395..89f33d1864 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5122,9 +5122,9 @@ "dev": true }, "node_modules/@fastify/express": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@fastify/express/-/express-2.3.0.tgz", - "integrity": "sha512-jvvjlPPCfJsSHfF6tQDyARJ3+c3xXiqcxVZu6bi3xMWCWB3fl07vrjFDeaqnwqKhLZ9+m6cog5dw7gIMKEsTnQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@fastify/express/-/express-3.0.0.tgz", + "integrity": "sha512-Ug6aulXCUiHgMyrHVYQqnQbGdsAV0aTad6nZxbOr6w3QjKn1mdQS3Kyzvc+I0xMjZ9yIyMUWHSooHgZ0l7nOng==", "dev": true, "dependencies": { "express": "^4.17.1", @@ -37691,7 +37691,7 @@ "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { - "@fastify/express": "^2.0.2", + "@fastify/express": "^3.0.0", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.39.0", @@ -43079,9 +43079,9 @@ "dev": true }, "@fastify/express": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@fastify/express/-/express-2.3.0.tgz", - "integrity": "sha512-jvvjlPPCfJsSHfF6tQDyARJ3+c3xXiqcxVZu6bi3xMWCWB3fl07vrjFDeaqnwqKhLZ9+m6cog5dw7gIMKEsTnQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@fastify/express/-/express-3.0.0.tgz", + "integrity": "sha512-Ug6aulXCUiHgMyrHVYQqnQbGdsAV0aTad6nZxbOr6w3QjKn1mdQS3Kyzvc+I0xMjZ9yIyMUWHSooHgZ0l7nOng==", "dev": true, "requires": { "express": "^4.17.1", @@ -46084,7 +46084,7 @@ "@opentelemetry/instrumentation-fastify": { "version": "file:plugins/node/opentelemetry-instrumentation-fastify", "requires": { - "@fastify/express": "^2.0.2", + "@fastify/express": "^3.0.0", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.39.0", diff --git a/plugins/node/opentelemetry-instrumentation-fastify/package.json b/plugins/node/opentelemetry-instrumentation-fastify/package.json index 4a55548d68..fe7cf44d17 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/package.json +++ b/plugins/node/opentelemetry-instrumentation-fastify/package.json @@ -43,7 +43,7 @@ "@opentelemetry/api": "^1.3.0" }, "devDependencies": { - "@fastify/express": "^2.0.2", + "@fastify/express": "^3.0.0", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/contrib-test-utils": "^0.39.0", From af2f3f1e5a2608900fcea721f08b2e541a17927c Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Mon, 29 Apr 2024 04:08:11 -0400 Subject: [PATCH 075/121] feat(auto-instrumentation-node): add azure detector (#2101) The Azure detectors were not being added to the list of possible detectors. All other cloud providers were possible values, so this commit adds the missing detectors for Azure. Signed-off-by: maryliag Co-authored-by: Amir Blum --- metapackages/auto-instrumentations-node/README.md | 1 + metapackages/auto-instrumentations-node/package.json | 1 + metapackages/auto-instrumentations-node/src/utils.ts | 12 +++++++++++- .../auto-instrumentations-node/test/utils.test.ts | 4 ++-- package-lock.json | 2 ++ 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/metapackages/auto-instrumentations-node/README.md b/metapackages/auto-instrumentations-node/README.md index dccf55a266..ba31c44d9a 100644 --- a/metapackages/auto-instrumentations-node/README.md +++ b/metapackages/auto-instrumentations-node/README.md @@ -65,6 +65,7 @@ By default, all SDK resource detectors are used, but you can use the environment - `container` - `alibaba` - `aws` +- `azure` - `gcp` - `all` - enable all resource detectors - `none` - disable resource detection diff --git a/metapackages/auto-instrumentations-node/package.json b/metapackages/auto-instrumentations-node/package.json index 47ee58c6b3..7704e11d66 100644 --- a/metapackages/auto-instrumentations-node/package.json +++ b/metapackages/auto-instrumentations-node/package.json @@ -89,6 +89,7 @@ "@opentelemetry/instrumentation-winston": "^0.37.0", "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", "@opentelemetry/resource-detector-aws": "^1.4.2", + "@opentelemetry/resource-detector-azure": "^0.2.6", "@opentelemetry/resource-detector-container": "^0.3.9", "@opentelemetry/resource-detector-gcp": "^0.29.9", "@opentelemetry/resources": "^1.12.0", diff --git a/metapackages/auto-instrumentations-node/src/utils.ts b/metapackages/auto-instrumentations-node/src/utils.ts index 67cfa900c8..de7d0c7026 100644 --- a/metapackages/auto-instrumentations-node/src/utils.ts +++ b/metapackages/auto-instrumentations-node/src/utils.ts @@ -73,6 +73,11 @@ import { osDetectorSync, processDetectorSync, } from '@opentelemetry/resources'; +import { + azureAppServiceDetector, + azureFunctionsDetector, + azureVmDetector, +} from '@opentelemetry/resource-detector-azure'; const RESOURCE_DETECTOR_CONTAINER = 'container'; const RESOURCE_DETECTOR_ENVIRONMENT = 'env'; @@ -81,6 +86,7 @@ const RESOURCE_DETECTOR_OS = 'os'; const RESOURCE_DETECTOR_PROCESS = 'process'; const RESOURCE_DETECTOR_ALIBABA = 'alibaba'; const RESOURCE_DETECTOR_AWS = 'aws'; +const RESOURCE_DETECTOR_AZURE = 'azure'; const RESOURCE_DETECTOR_GCP = 'gcp'; const InstrumentationMap = { @@ -196,7 +202,7 @@ function getEnabledInstrumentationsFromEnv() { export function getResourceDetectorsFromEnv(): Array { const resourceDetectors = new Map< string, - Detector | DetectorSync | Detector[] + Detector | DetectorSync | Detector[] | DetectorSync[] >([ [RESOURCE_DETECTOR_CONTAINER, containerDetector], [RESOURCE_DETECTOR_ENVIRONMENT, envDetectorSync], @@ -215,6 +221,10 @@ export function getResourceDetectorsFromEnv(): Array { awsLambdaDetector, ], ], + [ + RESOURCE_DETECTOR_AZURE, + [azureAppServiceDetector, azureFunctionsDetector, azureVmDetector], + ], ]); const resourceDetectorsFromEnv = diff --git a/metapackages/auto-instrumentations-node/test/utils.test.ts b/metapackages/auto-instrumentations-node/test/utils.test.ts index 3a04c01569..29fae3cef2 100644 --- a/metapackages/auto-instrumentations-node/test/utils.test.ts +++ b/metapackages/auto-instrumentations-node/test/utils.test.ts @@ -114,13 +114,13 @@ describe('utils', () => { describe('getResourceDetectorsFromEnv', () => { it('should return all resource detectors by default', () => { - assert.equal(getResourceDetectorsFromEnv().length, 12); + assert.equal(getResourceDetectorsFromEnv().length, 15); }); it('should return all resource detectors when OTEL_NODE_RESOURCE_DETECTORS contains "all"', () => { process.env.OTEL_NODE_RESOURCE_DETECTORS = 'all'; - assert.equal(getResourceDetectorsFromEnv().length, 12); + assert.equal(getResourceDetectorsFromEnv().length, 15); delete process.env.OTEL_NODE_RESOURCE_DETECTORS; }); diff --git a/package-lock.json b/package-lock.json index 89f33d1864..ec53fe1355 100644 --- a/package-lock.json +++ b/package-lock.json @@ -324,6 +324,7 @@ "@opentelemetry/instrumentation-winston": "^0.37.0", "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", "@opentelemetry/resource-detector-aws": "^1.4.2", + "@opentelemetry/resource-detector-azure": "^0.2.6", "@opentelemetry/resource-detector-container": "^0.3.9", "@opentelemetry/resource-detector-gcp": "^0.29.9", "@opentelemetry/resources": "^1.12.0", @@ -45514,6 +45515,7 @@ "@opentelemetry/instrumentation-winston": "^0.37.0", "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", "@opentelemetry/resource-detector-aws": "^1.4.2", + "@opentelemetry/resource-detector-azure": "^0.2.6", "@opentelemetry/resource-detector-container": "^0.3.9", "@opentelemetry/resource-detector-gcp": "^0.29.9", "@opentelemetry/resources": "^1.12.0", From 3ad9fdfe1e18e597f31bb546d9b00824a7d1ffe9 Mon Sep 17 00:00:00 2001 From: Zirak Date: Mon, 29 Apr 2024 08:20:51 +0000 Subject: [PATCH 076/121] fix(instrumentation-redis): Take host and port used for connection (#2072) * fix(instrumentation-redis): Take host and port used for connection The Redis client allows specifying connection options in several ways, with sensible defaults. The following all translate into `127.0.0.1:6379`: ```js createClient('redis://127.0.0.1:6379'); createClient({ host: '127.0.0.1', port: NaN }); createClient({}) createClient() ``` Redis somewhat normalises these separate options into its `options` member, and stores the properties it uses to connect to the server in `connection_options`. Examples of the difference between the two in the examples preceding (slightly redacted for ease of reading): ```js createClient('redis://127.0.0.1:6379'); // options = { port: '6379', host: '127.0.0.1' } // connection_options = { port: 6379, host: '127.0.0.1', family: 4 } createClient({ host: '127.0.0.1', port: NaN }); // options = { host: '127.0.0.1', port: NaN } // connection_options = { port: 6379, host: '127.0.0.1', family: 4 } createClient() // options = { host: undefined } // connection_options = { port: 6379, host: '127.0.0.1', family: 4 } ``` The instrumentation before this commit looks at the `options` property, which contains caller-supplied values before they're fully normalised and smoothed over by Redis. This means that for these weird cases, the instrumentation would populate `NET_PEER_NAME` and `NET_PEER_PORT` with erroneous values. This commit has the instrumentation the values the Redis client uses to connect to the server, mirroring actual use. * test(instrumentation-redis): Explicitly expect for a numeric port --------- Co-authored-by: Amir Blum --- .../src/internal-types.ts | 6 +++--- .../node/opentelemetry-instrumentation-redis/src/utils.ts | 6 +++--- .../opentelemetry-instrumentation-redis/test/redis.test.ts | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/plugins/node/opentelemetry-instrumentation-redis/src/internal-types.ts b/plugins/node/opentelemetry-instrumentation-redis/src/internal-types.ts index 99e2efe829..545a1927e4 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/src/internal-types.ts +++ b/plugins/node/opentelemetry-instrumentation-redis/src/internal-types.ts @@ -14,9 +14,9 @@ * limitations under the License. */ export interface RedisPluginClientTypes { - options?: { - host: string; - port: string; + connection_options?: { + port?: string; + host?: string; }; address?: string; diff --git a/plugins/node/opentelemetry-instrumentation-redis/src/utils.ts b/plugins/node/opentelemetry-instrumentation-redis/src/utils.ts index fed4f769f9..d863089f30 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/src/utils.ts +++ b/plugins/node/opentelemetry-instrumentation-redis/src/utils.ts @@ -111,10 +111,10 @@ export const getTracedInternalSendCommand = ( ); // Set attributes for not explicitly typed RedisPluginClientTypes - if (this.options) { + if (this.connection_options) { span.setAttributes({ - [SEMATTRS_NET_PEER_NAME]: this.options.host, - [SEMATTRS_NET_PEER_PORT]: this.options.port, + [SEMATTRS_NET_PEER_NAME]: this.connection_options.host, + [SEMATTRS_NET_PEER_PORT]: this.connection_options.port, }); } if (this.address) { diff --git a/plugins/node/opentelemetry-instrumentation-redis/test/redis.test.ts b/plugins/node/opentelemetry-instrumentation-redis/test/redis.test.ts index 63ab337e86..13113a2f3d 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/test/redis.test.ts +++ b/plugins/node/opentelemetry-instrumentation-redis/test/redis.test.ts @@ -51,7 +51,7 @@ const memoryExporter = new InMemorySpanExporter(); const CONFIG = { host: process.env.OPENTELEMETRY_REDIS_HOST || 'localhost', - port: process.env.OPENTELEMETRY_REDIS_PORT || '63790', + port: Number(process.env.OPENTELEMETRY_REDIS_PORT || 63790), }; const URL = `redis://${CONFIG.host}:${CONFIG.port}`; From 405472df3b1d218daab79e9caa7c8a51c3d7a7bf Mon Sep 17 00:00:00 2001 From: Ievgen Makukh Date: Mon, 29 Apr 2024 11:36:06 +0300 Subject: [PATCH 077/121] perf(instrumentation-nestjs-core): extract reusable span attributes to outer scope (#2087) Co-authored-by: Amir Blum --- .../src/instrumentation.ts | 36 ++++++++++--------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts index 619c68760f..c480f3a546 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts @@ -148,21 +148,21 @@ function createWrapCreateHandler(tracer: api.Tracer, moduleVersion?: string) { ) { arguments[1] = createWrapHandler(tracer, moduleVersion, callback); const handler = original.apply(this, arguments as any); + const callbackName = callback.name; + const instanceName = + instance.constructor && instance.constructor.name + ? instance.constructor.name + : 'UnnamedInstance'; + const spanName = callbackName + ? `${instanceName}.${callbackName}` + : instanceName; + return function ( this: any, req: any, res: any, next: (...args: any[]) => unknown ) { - const callbackName = callback.name; - const instanceName = - instance.constructor && instance.constructor.name - ? instance.constructor.name - : 'UnnamedInstance'; - const spanName = callbackName - ? `${instanceName}.${callbackName}` - : instanceName; - const span = tracer.startSpan(spanName, { attributes: { ...Instrumentation.COMMON_ATTRIBUTES, @@ -197,15 +197,17 @@ function createWrapHandler( moduleVersion: string | undefined, handler: Function ) { + const spanName = handler.name || 'anonymous nest handler'; + const options = { + attributes: { + ...Instrumentation.COMMON_ATTRIBUTES, + [AttributeNames.VERSION]: moduleVersion, + [AttributeNames.TYPE]: NestType.REQUEST_HANDLER, + [AttributeNames.CALLBACK]: handler.name, + }, + }; const wrappedHandler = function (this: RouterExecutionContext) { - const span = tracer.startSpan(handler.name || 'anonymous nest handler', { - attributes: { - ...Instrumentation.COMMON_ATTRIBUTES, - [AttributeNames.VERSION]: moduleVersion, - [AttributeNames.TYPE]: NestType.REQUEST_HANDLER, - [AttributeNames.CALLBACK]: handler.name, - }, - }); + const span = tracer.startSpan(spanName, options); const spanContext = api.trace.setSpan(api.context.active(), span); return api.context.with(spanContext, async () => { From eb6e8ef6b4c72710a98ed3590392b85c8c3b79e5 Mon Sep 17 00:00:00 2001 From: Niklas Lochschmidt Date: Mon, 29 Apr 2024 13:29:32 +0200 Subject: [PATCH 078/121] feat(instrumentation-hapi): support v21 (#1985) * update hapi bindings to v21 * fix(instrumentation-hapi): restore support for v17 to v20 * fix(instrumentation-hapi): route.options function not patched * fix: update package-lock.json * style: remove newline in test * style: convert ternary to if statements * fix: remove joi devDependency * test: test hapi 21 against node 14 * chore: add joi dev dependency to compile auto-instrumentation-node * chore: remove skipLibCheck in tsconfig.json * chore: fix package-json.lock * chore: insert missing newline Co-authored-by: Marc Pichler --------- Co-authored-by: toddtarsi Co-authored-by: Marc Pichler --- package-lock.json | 1577 ++++++++++++----- .../.tav.yml | 4 + .../README.md | 2 +- .../package.json | 6 +- .../src/instrumentation.ts | 72 +- .../src/internal-types.ts | 10 +- .../src/utils.ts | 13 + .../test/hapi.test.ts | 46 + 8 files changed, 1220 insertions(+), 510 deletions(-) diff --git a/package-lock.json b/package-lock.json index ec53fe1355..cdf76d19ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5186,311 +5186,654 @@ } }, "node_modules/@hapi/accept": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-5.0.2.tgz", - "integrity": "sha512-CmzBx/bXUR8451fnZRuZAJRlzgm0Jgu5dltTX/bszmR2lheb9BpyN47Q1RbaGTsvFzn0PXAEs+lXDKfshccYZw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-6.0.3.tgz", + "integrity": "sha512-p72f9k56EuF0n3MwlBNThyVE5PXX40g+aQh+C/xbKrfzahM2Oispv3AXmOIU51t3j77zay1qrX7IIziZXspMlw==", "dev": true, "dependencies": { - "@hapi/boom": "9.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" } }, - "node_modules/@hapi/ammo": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@hapi/ammo/-/ammo-5.0.1.tgz", - "integrity": "sha512-FbCNwcTbnQP4VYYhLNGZmA76xb2aHg9AMPiy18NZyWMG310P5KdFGyA9v2rm5ujrIny77dEEIkMOwl0Xv+fSSA==", + "node_modules/@hapi/accept/node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", "dev": true, "dependencies": { - "@hapi/hoek": "9.x.x" + "@hapi/hoek": "^11.0.2" } }, - "node_modules/@hapi/b64": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@hapi/b64/-/b64-5.0.0.tgz", - "integrity": "sha512-ngu0tSEmrezoiIaNGG6rRvKOUkUuDdf4XTPnONHGYfSGRmDqPZX5oJL6HAdKTo1UQHECbdB4OzhWrfgVppjHUw==", + "node_modules/@hapi/accept/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "node_modules/@hapi/ammo": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/ammo/-/ammo-6.0.1.tgz", + "integrity": "sha512-pmL+nPod4g58kXrMcsGLp05O2jF4P2Q3GiL8qYV7nKYEh3cGf+rV4P5Jyi2Uq0agGhVU63GtaSAfBEZOlrJn9w==", + "dev": true, "dependencies": { - "@hapi/hoek": "9.x.x" + "@hapi/hoek": "^11.0.2" } }, - "node_modules/@hapi/boom": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.4.tgz", - "integrity": "sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==", + "node_modules/@hapi/ammo/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "node_modules/@hapi/bounce": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@hapi/bounce/-/bounce-3.0.1.tgz", + "integrity": "sha512-G+/Pp9c1Ha4FDP+3Sy/Xwg2O4Ahaw3lIZFSX+BL4uWi64CmiETuZPxhKDUD4xBMOUZbBlzvO8HjiK8ePnhBadA==", + "dev": true, "dependencies": { - "@hapi/hoek": "9.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" } }, - "node_modules/@hapi/bounce": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@hapi/bounce/-/bounce-2.0.0.tgz", - "integrity": "sha512-JesW92uyzOOyuzJKjoLHM1ThiOvHPOLDHw01YV8yh5nCso7sDwJho1h0Ad2N+E62bZyz46TG3xhAi/78Gsct6A==", + "node_modules/@hapi/bounce/node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", "dev": true, "dependencies": { - "@hapi/boom": "9.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/hoek": "^11.0.2" } }, - "node_modules/@hapi/bourne": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.1.0.tgz", - "integrity": "sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q==" + "node_modules/@hapi/bounce/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true }, "node_modules/@hapi/call": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@hapi/call/-/call-8.0.1.tgz", - "integrity": "sha512-bOff6GTdOnoe5b8oXRV3lwkQSb/LAWylvDMae6RgEWWntd0SHtkYbQukDHKlfaYtVnSAgIavJ0kqszF/AIBb6g==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@hapi/call/-/call-9.0.1.tgz", + "integrity": "sha512-uPojQRqEL1GRZR4xXPqcLMujQGaEpyVPRyBlD8Pp5rqgIwLhtveF9PkixiKru2THXvuN8mUrLeet5fqxKAAMGg==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/call/node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", "dev": true, "dependencies": { - "@hapi/boom": "9.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/hoek": "^11.0.2" } }, + "node_modules/@hapi/call/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, "node_modules/@hapi/catbox": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/@hapi/catbox/-/catbox-11.1.1.tgz", - "integrity": "sha512-u/8HvB7dD/6X8hsZIpskSDo4yMKpHxFd7NluoylhGrL6cUfYxdQPnvUp9YU2C6F9hsyBVLGulBd9vBN1ebfXOQ==", + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@hapi/catbox/-/catbox-12.1.1.tgz", + "integrity": "sha512-hDqYB1J+R0HtZg4iPH3LEnldoaBsar6bYp0EonBmNQ9t5CO+1CqgCul2ZtFveW1ReA5SQuze9GPSU7/aecERhw==", "dev": true, "dependencies": { - "@hapi/boom": "9.x.x", - "@hapi/hoek": "9.x.x", - "@hapi/podium": "4.x.x", - "@hapi/validate": "1.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/podium": "^5.0.0", + "@hapi/validate": "^2.0.1" } }, "node_modules/@hapi/catbox-memory": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/catbox-memory/-/catbox-memory-6.0.1.tgz", + "integrity": "sha512-sVb+/ZxbZIvaMtJfAbdyY+QJUQg9oKTwamXpEg/5xnfG5WbJLTjvEn4kIGKz9pN3ENNbIL/bIdctmHmqi/AdGA==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/catbox-memory/node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/catbox-memory/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "node_modules/@hapi/catbox/node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/catbox/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "node_modules/@hapi/catbox/node_modules/@hapi/podium": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@hapi/catbox-memory/-/catbox-memory-5.0.1.tgz", - "integrity": "sha512-QWw9nOYJq5PlvChLWV8i6hQHJYfvdqiXdvTupJFh0eqLZ64Xir7mKNi96d5/ZMUAqXPursfNDIDxjFgoEDUqeQ==", + "resolved": "https://registry.npmjs.org/@hapi/podium/-/podium-5.0.1.tgz", + "integrity": "sha512-eznFTw6rdBhAijXFIlBOMJJd+lXTvqbrBIS4Iu80r2KTVIo4g+7fLy4NKp/8+UnSt5Ox6mJtAlKBU/Sf5080TQ==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/teamwork": "^6.0.0", + "@hapi/validate": "^2.0.1" + } + }, + "node_modules/@hapi/catbox/node_modules/@hapi/teamwork": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@hapi/teamwork/-/teamwork-6.0.0.tgz", + "integrity": "sha512-05HumSy3LWfXpmJ9cr6HzwhAavrHkJ1ZRCmNE2qJMihdM5YcWreWPfyN0yKT2ZjCM92au3ZkuodjBxOibxM67A==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@hapi/catbox/node_modules/@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", "dev": true, "dependencies": { - "@hapi/boom": "9.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/catbox/node_modules/@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" } }, "node_modules/@hapi/content": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@hapi/content/-/content-5.0.2.tgz", - "integrity": "sha512-mre4dl1ygd4ZyOH3tiYBrOUBzV7Pu/EOs8VLGf58vtOEECWed8Uuw6B4iR9AN/8uQt42tB04qpVaMyoMQh0oMw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@hapi/content/-/content-6.0.0.tgz", + "integrity": "sha512-CEhs7j+H0iQffKfe5Htdak5LBOz/Qc8TRh51cF+BFv0qnuph3Em4pjGVzJMkI2gfTDdlJKWJISGWS1rK34POGA==", "dev": true, "dependencies": { - "@hapi/boom": "9.x.x" + "@hapi/boom": "^10.0.0" } }, - "node_modules/@hapi/cryptiles": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/cryptiles/-/cryptiles-5.1.0.tgz", - "integrity": "sha512-fo9+d1Ba5/FIoMySfMqPBR/7Pa29J2RsiPrl7bkwo5W5o+AN1dAYQRi4SPrPwwVxVGKjgLOEWrsvt1BonJSfLA==", + "node_modules/@hapi/content/node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, "dependencies": { - "@hapi/boom": "9.x.x" - }, - "engines": { - "node": ">=12.0.0" + "@hapi/hoek": "^11.0.2" } }, + "node_modules/@hapi/content/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, "node_modules/@hapi/file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@hapi/file/-/file-2.0.0.tgz", - "integrity": "sha512-WSrlgpvEqgPWkI18kkGELEZfXr0bYLtr16iIN4Krh9sRnzBZN6nnWxHFxtsnP684wueEySBbXPDg/WfA9xJdBQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/file/-/file-3.0.0.tgz", + "integrity": "sha512-w+lKW+yRrLhJu620jT3y+5g2mHqnKfepreykvdOcl9/6up8GrQQn+l3FRTsjHTKbkbfQFkuksHpdv2EcpKcJ4Q==", "dev": true }, "node_modules/@hapi/hapi": { - "version": "20.1.5", - "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-20.1.5.tgz", - "integrity": "sha512-BhJ5XFR9uWPUBj/z5pPqXSk8OnvQQU/EbQjwpmjZy0ymNEiq7kIhXkAmzXcntbBHta9o7zpW8XMeXnfV4wudXw==", - "dev": true, - "dependencies": { - "@hapi/accept": "^5.0.1", - "@hapi/ammo": "^5.0.1", - "@hapi/boom": "^9.1.0", - "@hapi/bounce": "^2.0.0", - "@hapi/call": "^8.0.0", - "@hapi/catbox": "^11.1.1", - "@hapi/catbox-memory": "^5.0.0", - "@hapi/heavy": "^7.0.1", - "@hapi/hoek": "^9.0.4", - "@hapi/mimos": "^6.0.0", - "@hapi/podium": "^4.1.1", - "@hapi/shot": "^5.0.5", - "@hapi/somever": "^3.0.0", - "@hapi/statehood": "^7.0.3", - "@hapi/subtext": "^7.0.3", - "@hapi/teamwork": "^5.1.0", - "@hapi/topo": "^5.0.0", - "@hapi/validate": "^1.1.1" + "version": "21.3.3", + "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-21.3.3.tgz", + "integrity": "sha512-6pgwWVl/aSKSNVn86n+mWa06jRqCAKi2adZp/Hti19A0u5x3/6eiKz8UTBPMzfrdGf9WcrYbFBYzWr/qd2s28g==", + "dev": true, + "dependencies": { + "@hapi/accept": "^6.0.1", + "@hapi/ammo": "^6.0.1", + "@hapi/boom": "^10.0.1", + "@hapi/bounce": "^3.0.1", + "@hapi/call": "^9.0.1", + "@hapi/catbox": "^12.1.1", + "@hapi/catbox-memory": "^6.0.1", + "@hapi/heavy": "^8.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/mimos": "^7.0.1", + "@hapi/podium": "^5.0.1", + "@hapi/shot": "^6.0.1", + "@hapi/somever": "^4.1.1", + "@hapi/statehood": "^8.1.1", + "@hapi/subtext": "^8.1.0", + "@hapi/teamwork": "^6.0.0", + "@hapi/topo": "^6.0.1", + "@hapi/validate": "^2.0.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.15.0" } }, - "node_modules/@hapi/heavy": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@hapi/heavy/-/heavy-7.0.1.tgz", - "integrity": "sha512-vJ/vzRQ13MtRzz6Qd4zRHWS3FaUc/5uivV2TIuExGTM9Qk+7Zzqj0e2G7EpE6KztO9SalTbiIkTh7qFKj/33cA==", + "node_modules/@hapi/hapi/node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", "dev": true, "dependencies": { - "@hapi/boom": "9.x.x", - "@hapi/hoek": "9.x.x", - "@hapi/validate": "1.x.x" + "@hapi/hoek": "^11.0.2" } }, - "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + "node_modules/@hapi/hapi/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true }, - "node_modules/@hapi/iron": { + "node_modules/@hapi/hapi/node_modules/@hapi/podium": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@hapi/podium/-/podium-5.0.1.tgz", + "integrity": "sha512-eznFTw6rdBhAijXFIlBOMJJd+lXTvqbrBIS4Iu80r2KTVIo4g+7fLy4NKp/8+UnSt5Ox6mJtAlKBU/Sf5080TQ==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/teamwork": "^6.0.0", + "@hapi/validate": "^2.0.1" + } + }, + "node_modules/@hapi/hapi/node_modules/@hapi/teamwork": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@hapi/iron/-/iron-6.0.0.tgz", - "integrity": "sha512-zvGvWDufiTGpTJPG1Y/McN8UqWBu0k/xs/7l++HVU535NLHXsHhy54cfEMdW7EjwKfbBfM9Xy25FmTiobb7Hvw==", + "resolved": "https://registry.npmjs.org/@hapi/teamwork/-/teamwork-6.0.0.tgz", + "integrity": "sha512-05HumSy3LWfXpmJ9cr6HzwhAavrHkJ1ZRCmNE2qJMihdM5YcWreWPfyN0yKT2ZjCM92au3ZkuodjBxOibxM67A==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@hapi/hapi/node_modules/@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/hapi/node_modules/@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" + } + }, + "node_modules/@hapi/heavy": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@hapi/heavy/-/heavy-8.0.1.tgz", + "integrity": "sha512-gBD/NANosNCOp6RsYTsjo2vhr5eYA3BEuogk6cxY0QdhllkkTaJFYtTXv46xd6qhBVMbMMqcSdtqey+UQU3//w==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/validate": "^2.0.1" + } + }, + "node_modules/@hapi/heavy/node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/heavy/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "node_modules/@hapi/heavy/node_modules/@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "dev": true, "dependencies": { - "@hapi/b64": "5.x.x", - "@hapi/boom": "9.x.x", - "@hapi/bourne": "2.x.x", - "@hapi/cryptiles": "5.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/hoek": "^11.0.2" } }, + "node_modules/@hapi/heavy/node_modules/@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true + }, "node_modules/@hapi/mimos": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@hapi/mimos/-/mimos-6.0.0.tgz", - "integrity": "sha512-Op/67tr1I+JafN3R3XN5DucVSxKRT/Tc+tUszDwENoNpolxeXkhrJ2Czt6B6AAqrespHoivhgZBWYSuANN9QXg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@hapi/mimos/-/mimos-7.0.1.tgz", + "integrity": "sha512-b79V+BrG0gJ9zcRx1VGcCI6r6GEzzZUgiGEJVoq5gwzuB2Ig9Cax8dUuBauQCFKvl2YWSWyOc8mZ8HDaJOtkew==", "dev": true, "dependencies": { - "@hapi/hoek": "9.x.x", - "mime-db": "1.x.x" + "@hapi/hoek": "^11.0.2", + "mime-db": "^1.52.0" } }, + "node_modules/@hapi/mimos/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, "node_modules/@hapi/nigel": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@hapi/nigel/-/nigel-4.0.2.tgz", - "integrity": "sha512-ht2KoEsDW22BxQOEkLEJaqfpoKPXxi7tvabXy7B/77eFtOyG5ZEstfZwxHQcqAiZhp58Ae5vkhEqI03kawkYNw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@hapi/nigel/-/nigel-5.0.1.tgz", + "integrity": "sha512-uv3dtYuB4IsNaha+tigWmN8mQw/O9Qzl5U26Gm4ZcJVtDdB1AVJOwX3X5wOX+A07qzpEZnOMBAm8jjSqGsU6Nw==", "dev": true, "dependencies": { - "@hapi/hoek": "^9.0.4", - "@hapi/vise": "^4.0.0" + "@hapi/hoek": "^11.0.2", + "@hapi/vise": "^5.0.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" } }, + "node_modules/@hapi/nigel/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, "node_modules/@hapi/pez": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/pez/-/pez-5.1.0.tgz", - "integrity": "sha512-YfB0btnkLB3lb6Ry/1KifnMPBm5ZPfaAHWFskzOMAgDgXgcBgA+zjpIynyEiBfWEz22DBT8o1e2tAaBdlt8zbw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@hapi/pez/-/pez-6.1.0.tgz", + "integrity": "sha512-+FE3sFPYuXCpuVeHQ/Qag1b45clR2o54QoonE/gKHv9gukxQ8oJJZPR7o3/ydDTK6racnCJXxOyT1T93FCJMIg==", "dev": true, "dependencies": { - "@hapi/b64": "5.x.x", - "@hapi/boom": "9.x.x", - "@hapi/content": "^5.0.2", - "@hapi/hoek": "9.x.x", - "@hapi/nigel": "4.x.x" + "@hapi/b64": "^6.0.1", + "@hapi/boom": "^10.0.1", + "@hapi/content": "^6.0.0", + "@hapi/hoek": "^11.0.2", + "@hapi/nigel": "^5.0.1" } }, - "node_modules/@hapi/podium": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@hapi/podium/-/podium-4.1.3.tgz", - "integrity": "sha512-ljsKGQzLkFqnQxE7qeanvgGj4dejnciErYd30dbrYzUOF/FyS/DOF97qcrT3bhoVwCYmxa6PEMhxfCPlnUcD2g==", + "node_modules/@hapi/pez/node_modules/@hapi/b64": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/b64/-/b64-6.0.1.tgz", + "integrity": "sha512-ZvjX4JQReUmBheeCq+S9YavcnMMHWqx3S0jHNXWIM1kQDxB9cyfSycpVvjfrKcIS8Mh5N3hmu/YKo4Iag9g2Kw==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/pez/node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, "dependencies": { - "@hapi/hoek": "9.x.x", - "@hapi/teamwork": "5.x.x", - "@hapi/validate": "1.x.x" + "@hapi/hoek": "^11.0.2" } }, + "node_modules/@hapi/pez/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, "node_modules/@hapi/shot": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@hapi/shot/-/shot-5.0.5.tgz", - "integrity": "sha512-x5AMSZ5+j+Paa8KdfCoKh+klB78otxF+vcJR/IoN91Vo2e5ulXIW6HUsFTCU+4W6P/Etaip9nmdAx2zWDimB2A==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/shot/-/shot-6.0.1.tgz", + "integrity": "sha512-s5ynMKZXYoDd3dqPw5YTvOR/vjHvMTxc388+0qL0jZZP1+uwXuUD32o9DuuuLsmTlyXCWi02BJl1pBpwRuUrNA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/validate": "^2.0.1" + } + }, + "node_modules/@hapi/shot/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "node_modules/@hapi/shot/node_modules/@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/shot/node_modules/@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", "dev": true, "dependencies": { - "@hapi/hoek": "9.x.x", - "@hapi/validate": "1.x.x" + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" } }, "node_modules/@hapi/somever": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@hapi/somever/-/somever-3.0.1.tgz", - "integrity": "sha512-4ZTSN3YAHtgpY/M4GOtHUXgi6uZtG9nEZfNI6QrArhK0XN/RDVgijlb9kOmXwCR5VclDSkBul9FBvhSuKXx9+w==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@hapi/somever/-/somever-4.1.1.tgz", + "integrity": "sha512-lt3QQiDDOVRatS0ionFDNrDIv4eXz58IibQaZQDOg4DqqdNme8oa0iPWcE0+hkq/KTeBCPtEOjDOBKBKwDumVg==", "dev": true, "dependencies": { - "@hapi/bounce": "2.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/bounce": "^3.0.1", + "@hapi/hoek": "^11.0.2" } }, + "node_modules/@hapi/somever/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, "node_modules/@hapi/statehood": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@hapi/statehood/-/statehood-7.0.4.tgz", - "integrity": "sha512-Fia6atroOVmc5+2bNOxF6Zv9vpbNAjEXNcUbWXavDqhnJDlchwUUwKS5LCi5mGtCTxRhUKKHwuxuBZJkmLZ7fw==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@hapi/statehood/-/statehood-8.1.1.tgz", + "integrity": "sha512-YbK7PSVUA59NArAW5Np0tKRoIZ5VNYUicOk7uJmWZF6XyH5gGL+k62w77SIJb0AoAJ0QdGQMCQ/WOGL1S3Ydow==", "dev": true, "dependencies": { - "@hapi/boom": "9.x.x", - "@hapi/bounce": "2.x.x", - "@hapi/bourne": "2.x.x", - "@hapi/cryptiles": "5.x.x", - "@hapi/hoek": "9.x.x", - "@hapi/iron": "6.x.x", - "@hapi/validate": "1.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/bounce": "^3.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/cryptiles": "^6.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/iron": "^7.0.1", + "@hapi/validate": "^2.0.1" } }, - "node_modules/@hapi/subtext": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@hapi/subtext/-/subtext-7.1.0.tgz", - "integrity": "sha512-n94cU6hlvsNRIpXaROzBNEJGwxC+HA69q769pChzej84On8vsU14guHDub7Pphr/pqn5b93zV3IkMPDU5AUiXA==", + "node_modules/@hapi/statehood/node_modules/@hapi/b64": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/b64/-/b64-6.0.1.tgz", + "integrity": "sha512-ZvjX4JQReUmBheeCq+S9YavcnMMHWqx3S0jHNXWIM1kQDxB9cyfSycpVvjfrKcIS8Mh5N3hmu/YKo4Iag9g2Kw==", "dev": true, "dependencies": { - "@hapi/boom": "9.x.x", - "@hapi/bourne": "2.x.x", - "@hapi/content": "^5.0.2", - "@hapi/file": "2.x.x", - "@hapi/hoek": "9.x.x", - "@hapi/pez": "^5.1.0", - "@hapi/wreck": "17.x.x" + "@hapi/hoek": "^11.0.2" } }, - "node_modules/@hapi/teamwork": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@hapi/teamwork/-/teamwork-5.1.1.tgz", - "integrity": "sha512-1oPx9AE5TIv+V6Ih54RP9lTZBso3rP8j4Xhb6iSVwPXtAM+sDopl5TFMv5Paw73UnpZJ9gjcrTE1BXrWt9eQrg==", + "node_modules/@hapi/statehood/node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/statehood/node_modules/@hapi/bourne": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", + "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", + "dev": true + }, + "node_modules/@hapi/statehood/node_modules/@hapi/cryptiles": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/cryptiles/-/cryptiles-6.0.1.tgz", + "integrity": "sha512-9GM9ECEHfR8lk5ASOKG4+4ZsEzFqLfhiryIJ2ISePVB92OHLp/yne4m+zn7z9dgvM98TLpiFebjDFQ0UHcqxXQ==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1" + }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" } }, + "node_modules/@hapi/statehood/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "node_modules/@hapi/statehood/node_modules/@hapi/iron": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@hapi/iron/-/iron-7.0.1.tgz", + "integrity": "sha512-tEZnrOujKpS6jLKliyWBl3A9PaE+ppuL/+gkbyPPDb/l2KSKQyH4lhMkVb+sBhwN+qaxxlig01JRqB8dk/mPxQ==", + "dev": true, + "dependencies": { + "@hapi/b64": "^6.0.1", + "@hapi/boom": "^10.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/cryptiles": "^6.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/statehood/node_modules/@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/statehood/node_modules/@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" + } + }, + "node_modules/@hapi/subtext": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@hapi/subtext/-/subtext-8.1.0.tgz", + "integrity": "sha512-PyaN4oSMtqPjjVxLny1k0iYg4+fwGusIhaom9B2StinBclHs7v46mIW706Y+Wo21lcgulGyXbQrmT/w4dus6ww==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/content": "^6.0.0", + "@hapi/file": "^3.0.0", + "@hapi/hoek": "^11.0.2", + "@hapi/pez": "^6.1.0", + "@hapi/wreck": "^18.0.1" + } + }, + "node_modules/@hapi/subtext/node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/subtext/node_modules/@hapi/bourne": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", + "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", + "dev": true + }, + "node_modules/@hapi/subtext/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, "node_modules/@hapi/topo": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, "dependencies": { "@hapi/hoek": "^9.0.0" } }, - "node_modules/@hapi/validate": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-1.1.3.tgz", - "integrity": "sha512-/XMR0N0wjw0Twzq2pQOzPBZlDzkekGcoCtzO314BpIEsbXdYGthQUbxgkGDf4nhk1+IPDAsXqWjMohRQYO06UA==", + "node_modules/@hapi/vise": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@hapi/vise/-/vise-5.0.1.tgz", + "integrity": "sha512-XZYWzzRtINQLedPYlIkSkUr7m5Ddwlu99V9elh8CSygXstfv3UnWIXT0QD+wmR0VAG34d2Vx3olqcEhRRoTu9A==", + "dev": true, "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0" + "@hapi/hoek": "^11.0.2" } }, - "node_modules/@hapi/vise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@hapi/vise/-/vise-4.0.0.tgz", - "integrity": "sha512-eYyLkuUiFZTer59h+SGy7hUm+qE9p+UemePTHLlIWppEd+wExn3Df5jO04bFQTm7nleF5V8CtuYQYb+VFpZ6Sg==", + "node_modules/@hapi/vise/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "node_modules/@hapi/wreck": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-18.1.0.tgz", + "integrity": "sha512-0z6ZRCmFEfV/MQqkQomJ7sl/hyxvcZM7LtuVqN3vdAO4vM9eBbowl0kaqQj9EJJQab+3Uuh1GxbGIBFy4NfJ4w==", "dev": true, "dependencies": { - "@hapi/hoek": "9.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/hoek": "^11.0.2" } }, - "node_modules/@hapi/wreck": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-17.2.0.tgz", - "integrity": "sha512-pJ5kjYoRPYDv+eIuiLQqhGon341fr2bNIYZjuotuPJG/3Ilzr/XtI+JAp0A86E2bYfsS3zBPABuS2ICkaXFT8g==", + "node_modules/@hapi/wreck/node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", "dev": true, "dependencies": { - "@hapi/boom": "9.x.x", - "@hapi/bourne": "2.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/hoek": "^11.0.2" } }, + "node_modules/@hapi/wreck/node_modules/@hapi/bourne": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", + "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", + "dev": true + }, + "node_modules/@hapi/wreck/node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, "node_modules/@humanwhocodes/config-array": { "version": "0.9.5", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", @@ -9375,6 +9718,7 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "dev": true, "dependencies": { "@hapi/hoek": "^9.0.0" } @@ -9382,12 +9726,14 @@ "node_modules/@sideway/formula": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "dev": true }, "node_modules/@sideway/pinpoint": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true }, "node_modules/@sigstore/bundle": { "version": "1.1.0", @@ -10534,42 +10880,6 @@ "generic-pool": "*" } }, - "node_modules/@types/hapi__catbox": { - "version": "10.2.6", - "resolved": "https://registry.npmjs.org/@types/hapi__catbox/-/hapi__catbox-10.2.6.tgz", - "integrity": "sha512-qdMHk4fBlwRfnBBDJaoaxb+fU9Ewi2xqkXD3mNjSPl2v/G/8IJbDpVRBuIcF7oXrcE8YebU5M8cCeKh1NXEn0w==" - }, - "node_modules/@types/hapi__hapi": { - "version": "20.0.13", - "resolved": "https://registry.npmjs.org/@types/hapi__hapi/-/hapi__hapi-20.0.13.tgz", - "integrity": "sha512-LP4IPfhIO5ZPVOrJo7H8c8Slc0WYTFAUNQX1U0LBPKyXioXhH5H2TawIgxKujIyOhbwoBbpvOsBf6o5+ToJIrQ==", - "dependencies": { - "@hapi/boom": "^9.0.0", - "@hapi/iron": "^6.0.0", - "@hapi/podium": "^4.1.3", - "@types/hapi__catbox": "*", - "@types/hapi__mimos": "*", - "@types/hapi__shot": "*", - "@types/node": "*", - "joi": "^17.3.0" - } - }, - "node_modules/@types/hapi__mimos": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@types/hapi__mimos/-/hapi__mimos-4.1.4.tgz", - "integrity": "sha512-i9hvJpFYTT/qzB5xKWvDYaSXrIiNqi4ephi+5Lo6+DoQdwqPXQgmVVOZR+s3MBiHoFqsCZCX9TmVWG3HczmTEQ==", - "dependencies": { - "@types/mime-db": "*" - } - }, - "node_modules/@types/hapi__shot": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/hapi__shot/-/hapi__shot-4.1.6.tgz", - "integrity": "sha512-h33NBjx2WyOs/9JgcFeFhkxnioYWQAZxOHdmqDuoJ1Qjxpcs+JGvSjEEoDeWfcrF+1n47kKgqph5IpfmPOnzbg==", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/http-assert": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.5.tgz", @@ -10705,11 +11015,6 @@ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" }, - "node_modules/@types/mime-db": { - "version": "1.43.5", - "resolved": "https://registry.npmjs.org/@types/mime-db/-/mime-db-1.43.5.tgz", - "integrity": "sha512-/bfTiIUTNPUBnwnYvUxXAre5MhD88jgagLEQiQtIASjU+bwxd8kS/ASDA4a8ufd8m0Lheu6eeMJHEUpLHoJ28A==" - }, "node_modules/@types/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", @@ -21330,6 +21635,7 @@ "version": "17.12.2", "resolved": "https://registry.npmjs.org/joi/-/joi-17.12.2.tgz", "integrity": "sha512-RonXAIzCiHLc8ss3Ibuz45u28GOsWE1UpfDXLbN/9NKbL4tCJf8TWYVKsoYuuh+sAUt7fsSNpA+r2+TBA6Wjmw==", + "dev": true, "dependencies": { "@hapi/hoek": "^9.3.0", "@hapi/topo": "^5.1.0", @@ -37837,17 +38143,17 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0", - "@types/hapi__hapi": "20.0.13" + "@opentelemetry/semantic-conventions": "^1.0.0" }, "devDependencies": { - "@hapi/hapi": "20.1.5", + "@hapi/hapi": "21.3.3", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", + "joi": "17.12.2", "mocha": "7.2.0", "nyc": "15.1.0", "rimraf": "5.0.5", @@ -43134,297 +43440,673 @@ } }, "@hapi/accept": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-5.0.2.tgz", - "integrity": "sha512-CmzBx/bXUR8451fnZRuZAJRlzgm0Jgu5dltTX/bszmR2lheb9BpyN47Q1RbaGTsvFzn0PXAEs+lXDKfshccYZw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-6.0.3.tgz", + "integrity": "sha512-p72f9k56EuF0n3MwlBNThyVE5PXX40g+aQh+C/xbKrfzahM2Oispv3AXmOIU51t3j77zay1qrX7IIziZXspMlw==", "dev": true, "requires": { - "@hapi/boom": "9.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + }, + "dependencies": { + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, "@hapi/ammo": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@hapi/ammo/-/ammo-5.0.1.tgz", - "integrity": "sha512-FbCNwcTbnQP4VYYhLNGZmA76xb2aHg9AMPiy18NZyWMG310P5KdFGyA9v2rm5ujrIny77dEEIkMOwl0Xv+fSSA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/ammo/-/ammo-6.0.1.tgz", + "integrity": "sha512-pmL+nPod4g58kXrMcsGLp05O2jF4P2Q3GiL8qYV7nKYEh3cGf+rV4P5Jyi2Uq0agGhVU63GtaSAfBEZOlrJn9w==", "dev": true, "requires": { - "@hapi/hoek": "9.x.x" - } - }, - "@hapi/b64": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@hapi/b64/-/b64-5.0.0.tgz", - "integrity": "sha512-ngu0tSEmrezoiIaNGG6rRvKOUkUuDdf4XTPnONHGYfSGRmDqPZX5oJL6HAdKTo1UQHECbdB4OzhWrfgVppjHUw==", - "requires": { - "@hapi/hoek": "9.x.x" - } - }, - "@hapi/boom": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.4.tgz", - "integrity": "sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==", - "requires": { - "@hapi/hoek": "9.x.x" + "@hapi/hoek": "^11.0.2" + }, + "dependencies": { + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, "@hapi/bounce": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@hapi/bounce/-/bounce-2.0.0.tgz", - "integrity": "sha512-JesW92uyzOOyuzJKjoLHM1ThiOvHPOLDHw01YV8yh5nCso7sDwJho1h0Ad2N+E62bZyz46TG3xhAi/78Gsct6A==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@hapi/bounce/-/bounce-3.0.1.tgz", + "integrity": "sha512-G+/Pp9c1Ha4FDP+3Sy/Xwg2O4Ahaw3lIZFSX+BL4uWi64CmiETuZPxhKDUD4xBMOUZbBlzvO8HjiK8ePnhBadA==", "dev": true, "requires": { - "@hapi/boom": "9.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + }, + "dependencies": { + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, - "@hapi/bourne": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.1.0.tgz", - "integrity": "sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q==" - }, "@hapi/call": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@hapi/call/-/call-8.0.1.tgz", - "integrity": "sha512-bOff6GTdOnoe5b8oXRV3lwkQSb/LAWylvDMae6RgEWWntd0SHtkYbQukDHKlfaYtVnSAgIavJ0kqszF/AIBb6g==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@hapi/call/-/call-9.0.1.tgz", + "integrity": "sha512-uPojQRqEL1GRZR4xXPqcLMujQGaEpyVPRyBlD8Pp5rqgIwLhtveF9PkixiKru2THXvuN8mUrLeet5fqxKAAMGg==", "dev": true, "requires": { - "@hapi/boom": "9.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + }, + "dependencies": { + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, "@hapi/catbox": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/@hapi/catbox/-/catbox-11.1.1.tgz", - "integrity": "sha512-u/8HvB7dD/6X8hsZIpskSDo4yMKpHxFd7NluoylhGrL6cUfYxdQPnvUp9YU2C6F9hsyBVLGulBd9vBN1ebfXOQ==", + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@hapi/catbox/-/catbox-12.1.1.tgz", + "integrity": "sha512-hDqYB1J+R0HtZg4iPH3LEnldoaBsar6bYp0EonBmNQ9t5CO+1CqgCul2ZtFveW1ReA5SQuze9GPSU7/aecERhw==", "dev": true, "requires": { - "@hapi/boom": "9.x.x", - "@hapi/hoek": "9.x.x", - "@hapi/podium": "4.x.x", - "@hapi/validate": "1.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/podium": "^5.0.0", + "@hapi/validate": "^2.0.1" + }, + "dependencies": { + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "@hapi/podium": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@hapi/podium/-/podium-5.0.1.tgz", + "integrity": "sha512-eznFTw6rdBhAijXFIlBOMJJd+lXTvqbrBIS4Iu80r2KTVIo4g+7fLy4NKp/8+UnSt5Ox6mJtAlKBU/Sf5080TQ==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2", + "@hapi/teamwork": "^6.0.0", + "@hapi/validate": "^2.0.1" + } + }, + "@hapi/teamwork": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@hapi/teamwork/-/teamwork-6.0.0.tgz", + "integrity": "sha512-05HumSy3LWfXpmJ9cr6HzwhAavrHkJ1ZRCmNE2qJMihdM5YcWreWPfyN0yKT2ZjCM92au3ZkuodjBxOibxM67A==", + "dev": true + }, + "@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" + } + } } }, "@hapi/catbox-memory": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@hapi/catbox-memory/-/catbox-memory-5.0.1.tgz", - "integrity": "sha512-QWw9nOYJq5PlvChLWV8i6hQHJYfvdqiXdvTupJFh0eqLZ64Xir7mKNi96d5/ZMUAqXPursfNDIDxjFgoEDUqeQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/catbox-memory/-/catbox-memory-6.0.1.tgz", + "integrity": "sha512-sVb+/ZxbZIvaMtJfAbdyY+QJUQg9oKTwamXpEg/5xnfG5WbJLTjvEn4kIGKz9pN3ENNbIL/bIdctmHmqi/AdGA==", "dev": true, "requires": { - "@hapi/boom": "9.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + }, + "dependencies": { + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, "@hapi/content": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@hapi/content/-/content-5.0.2.tgz", - "integrity": "sha512-mre4dl1ygd4ZyOH3tiYBrOUBzV7Pu/EOs8VLGf58vtOEECWed8Uuw6B4iR9AN/8uQt42tB04qpVaMyoMQh0oMw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@hapi/content/-/content-6.0.0.tgz", + "integrity": "sha512-CEhs7j+H0iQffKfe5Htdak5LBOz/Qc8TRh51cF+BFv0qnuph3Em4pjGVzJMkI2gfTDdlJKWJISGWS1rK34POGA==", "dev": true, "requires": { - "@hapi/boom": "9.x.x" - } - }, - "@hapi/cryptiles": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/cryptiles/-/cryptiles-5.1.0.tgz", - "integrity": "sha512-fo9+d1Ba5/FIoMySfMqPBR/7Pa29J2RsiPrl7bkwo5W5o+AN1dAYQRi4SPrPwwVxVGKjgLOEWrsvt1BonJSfLA==", - "requires": { - "@hapi/boom": "9.x.x" + "@hapi/boom": "^10.0.0" + }, + "dependencies": { + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, "@hapi/file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@hapi/file/-/file-2.0.0.tgz", - "integrity": "sha512-WSrlgpvEqgPWkI18kkGELEZfXr0bYLtr16iIN4Krh9sRnzBZN6nnWxHFxtsnP684wueEySBbXPDg/WfA9xJdBQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/file/-/file-3.0.0.tgz", + "integrity": "sha512-w+lKW+yRrLhJu620jT3y+5g2mHqnKfepreykvdOcl9/6up8GrQQn+l3FRTsjHTKbkbfQFkuksHpdv2EcpKcJ4Q==", "dev": true }, "@hapi/hapi": { - "version": "20.1.5", - "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-20.1.5.tgz", - "integrity": "sha512-BhJ5XFR9uWPUBj/z5pPqXSk8OnvQQU/EbQjwpmjZy0ymNEiq7kIhXkAmzXcntbBHta9o7zpW8XMeXnfV4wudXw==", - "dev": true, - "requires": { - "@hapi/accept": "^5.0.1", - "@hapi/ammo": "^5.0.1", - "@hapi/boom": "^9.1.0", - "@hapi/bounce": "^2.0.0", - "@hapi/call": "^8.0.0", - "@hapi/catbox": "^11.1.1", - "@hapi/catbox-memory": "^5.0.0", - "@hapi/heavy": "^7.0.1", - "@hapi/hoek": "^9.0.4", - "@hapi/mimos": "^6.0.0", - "@hapi/podium": "^4.1.1", - "@hapi/shot": "^5.0.5", - "@hapi/somever": "^3.0.0", - "@hapi/statehood": "^7.0.3", - "@hapi/subtext": "^7.0.3", - "@hapi/teamwork": "^5.1.0", - "@hapi/topo": "^5.0.0", - "@hapi/validate": "^1.1.1" + "version": "21.3.3", + "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-21.3.3.tgz", + "integrity": "sha512-6pgwWVl/aSKSNVn86n+mWa06jRqCAKi2adZp/Hti19A0u5x3/6eiKz8UTBPMzfrdGf9WcrYbFBYzWr/qd2s28g==", + "dev": true, + "requires": { + "@hapi/accept": "^6.0.1", + "@hapi/ammo": "^6.0.1", + "@hapi/boom": "^10.0.1", + "@hapi/bounce": "^3.0.1", + "@hapi/call": "^9.0.1", + "@hapi/catbox": "^12.1.1", + "@hapi/catbox-memory": "^6.0.1", + "@hapi/heavy": "^8.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/mimos": "^7.0.1", + "@hapi/podium": "^5.0.1", + "@hapi/shot": "^6.0.1", + "@hapi/somever": "^4.1.1", + "@hapi/statehood": "^8.1.1", + "@hapi/subtext": "^8.1.0", + "@hapi/teamwork": "^6.0.0", + "@hapi/topo": "^6.0.1", + "@hapi/validate": "^2.0.1" + }, + "dependencies": { + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "@hapi/podium": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@hapi/podium/-/podium-5.0.1.tgz", + "integrity": "sha512-eznFTw6rdBhAijXFIlBOMJJd+lXTvqbrBIS4Iu80r2KTVIo4g+7fLy4NKp/8+UnSt5Ox6mJtAlKBU/Sf5080TQ==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2", + "@hapi/teamwork": "^6.0.0", + "@hapi/validate": "^2.0.1" + } + }, + "@hapi/teamwork": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@hapi/teamwork/-/teamwork-6.0.0.tgz", + "integrity": "sha512-05HumSy3LWfXpmJ9cr6HzwhAavrHkJ1ZRCmNE2qJMihdM5YcWreWPfyN0yKT2ZjCM92au3ZkuodjBxOibxM67A==", + "dev": true + }, + "@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" + } + } } }, "@hapi/heavy": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@hapi/heavy/-/heavy-7.0.1.tgz", - "integrity": "sha512-vJ/vzRQ13MtRzz6Qd4zRHWS3FaUc/5uivV2TIuExGTM9Qk+7Zzqj0e2G7EpE6KztO9SalTbiIkTh7qFKj/33cA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@hapi/heavy/-/heavy-8.0.1.tgz", + "integrity": "sha512-gBD/NANosNCOp6RsYTsjo2vhr5eYA3BEuogk6cxY0QdhllkkTaJFYtTXv46xd6qhBVMbMMqcSdtqey+UQU3//w==", "dev": true, "requires": { - "@hapi/boom": "9.x.x", - "@hapi/hoek": "9.x.x", - "@hapi/validate": "1.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/validate": "^2.0.1" + }, + "dependencies": { + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" + } + } } }, "@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - }, - "@hapi/iron": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@hapi/iron/-/iron-6.0.0.tgz", - "integrity": "sha512-zvGvWDufiTGpTJPG1Y/McN8UqWBu0k/xs/7l++HVU535NLHXsHhy54cfEMdW7EjwKfbBfM9Xy25FmTiobb7Hvw==", - "requires": { - "@hapi/b64": "5.x.x", - "@hapi/boom": "9.x.x", - "@hapi/bourne": "2.x.x", - "@hapi/cryptiles": "5.x.x", - "@hapi/hoek": "9.x.x" - } + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true }, "@hapi/mimos": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@hapi/mimos/-/mimos-6.0.0.tgz", - "integrity": "sha512-Op/67tr1I+JafN3R3XN5DucVSxKRT/Tc+tUszDwENoNpolxeXkhrJ2Czt6B6AAqrespHoivhgZBWYSuANN9QXg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@hapi/mimos/-/mimos-7.0.1.tgz", + "integrity": "sha512-b79V+BrG0gJ9zcRx1VGcCI6r6GEzzZUgiGEJVoq5gwzuB2Ig9Cax8dUuBauQCFKvl2YWSWyOc8mZ8HDaJOtkew==", "dev": true, "requires": { - "@hapi/hoek": "9.x.x", - "mime-db": "1.x.x" + "@hapi/hoek": "^11.0.2", + "mime-db": "^1.52.0" + }, + "dependencies": { + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, "@hapi/nigel": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@hapi/nigel/-/nigel-4.0.2.tgz", - "integrity": "sha512-ht2KoEsDW22BxQOEkLEJaqfpoKPXxi7tvabXy7B/77eFtOyG5ZEstfZwxHQcqAiZhp58Ae5vkhEqI03kawkYNw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@hapi/nigel/-/nigel-5.0.1.tgz", + "integrity": "sha512-uv3dtYuB4IsNaha+tigWmN8mQw/O9Qzl5U26Gm4ZcJVtDdB1AVJOwX3X5wOX+A07qzpEZnOMBAm8jjSqGsU6Nw==", "dev": true, "requires": { - "@hapi/hoek": "^9.0.4", - "@hapi/vise": "^4.0.0" + "@hapi/hoek": "^11.0.2", + "@hapi/vise": "^5.0.1" + }, + "dependencies": { + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, "@hapi/pez": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/pez/-/pez-5.1.0.tgz", - "integrity": "sha512-YfB0btnkLB3lb6Ry/1KifnMPBm5ZPfaAHWFskzOMAgDgXgcBgA+zjpIynyEiBfWEz22DBT8o1e2tAaBdlt8zbw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@hapi/pez/-/pez-6.1.0.tgz", + "integrity": "sha512-+FE3sFPYuXCpuVeHQ/Qag1b45clR2o54QoonE/gKHv9gukxQ8oJJZPR7o3/ydDTK6racnCJXxOyT1T93FCJMIg==", "dev": true, "requires": { - "@hapi/b64": "5.x.x", - "@hapi/boom": "9.x.x", - "@hapi/content": "^5.0.2", - "@hapi/hoek": "9.x.x", - "@hapi/nigel": "4.x.x" - } - }, - "@hapi/podium": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@hapi/podium/-/podium-4.1.3.tgz", - "integrity": "sha512-ljsKGQzLkFqnQxE7qeanvgGj4dejnciErYd30dbrYzUOF/FyS/DOF97qcrT3bhoVwCYmxa6PEMhxfCPlnUcD2g==", - "requires": { - "@hapi/hoek": "9.x.x", - "@hapi/teamwork": "5.x.x", - "@hapi/validate": "1.x.x" + "@hapi/b64": "^6.0.1", + "@hapi/boom": "^10.0.1", + "@hapi/content": "^6.0.0", + "@hapi/hoek": "^11.0.2", + "@hapi/nigel": "^5.0.1" + }, + "dependencies": { + "@hapi/b64": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/b64/-/b64-6.0.1.tgz", + "integrity": "sha512-ZvjX4JQReUmBheeCq+S9YavcnMMHWqx3S0jHNXWIM1kQDxB9cyfSycpVvjfrKcIS8Mh5N3hmu/YKo4Iag9g2Kw==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, "@hapi/shot": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@hapi/shot/-/shot-5.0.5.tgz", - "integrity": "sha512-x5AMSZ5+j+Paa8KdfCoKh+klB78otxF+vcJR/IoN91Vo2e5ulXIW6HUsFTCU+4W6P/Etaip9nmdAx2zWDimB2A==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/shot/-/shot-6.0.1.tgz", + "integrity": "sha512-s5ynMKZXYoDd3dqPw5YTvOR/vjHvMTxc388+0qL0jZZP1+uwXuUD32o9DuuuLsmTlyXCWi02BJl1pBpwRuUrNA==", "dev": true, "requires": { - "@hapi/hoek": "9.x.x", - "@hapi/validate": "1.x.x" + "@hapi/hoek": "^11.0.2", + "@hapi/validate": "^2.0.1" + }, + "dependencies": { + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" + } + } } }, "@hapi/somever": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@hapi/somever/-/somever-3.0.1.tgz", - "integrity": "sha512-4ZTSN3YAHtgpY/M4GOtHUXgi6uZtG9nEZfNI6QrArhK0XN/RDVgijlb9kOmXwCR5VclDSkBul9FBvhSuKXx9+w==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@hapi/somever/-/somever-4.1.1.tgz", + "integrity": "sha512-lt3QQiDDOVRatS0ionFDNrDIv4eXz58IibQaZQDOg4DqqdNme8oa0iPWcE0+hkq/KTeBCPtEOjDOBKBKwDumVg==", "dev": true, "requires": { - "@hapi/bounce": "2.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/bounce": "^3.0.1", + "@hapi/hoek": "^11.0.2" + }, + "dependencies": { + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, "@hapi/statehood": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@hapi/statehood/-/statehood-7.0.4.tgz", - "integrity": "sha512-Fia6atroOVmc5+2bNOxF6Zv9vpbNAjEXNcUbWXavDqhnJDlchwUUwKS5LCi5mGtCTxRhUKKHwuxuBZJkmLZ7fw==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@hapi/statehood/-/statehood-8.1.1.tgz", + "integrity": "sha512-YbK7PSVUA59NArAW5Np0tKRoIZ5VNYUicOk7uJmWZF6XyH5gGL+k62w77SIJb0AoAJ0QdGQMCQ/WOGL1S3Ydow==", "dev": true, "requires": { - "@hapi/boom": "9.x.x", - "@hapi/bounce": "2.x.x", - "@hapi/bourne": "2.x.x", - "@hapi/cryptiles": "5.x.x", - "@hapi/hoek": "9.x.x", - "@hapi/iron": "6.x.x", - "@hapi/validate": "1.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/bounce": "^3.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/cryptiles": "^6.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/iron": "^7.0.1", + "@hapi/validate": "^2.0.1" + }, + "dependencies": { + "@hapi/b64": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/b64/-/b64-6.0.1.tgz", + "integrity": "sha512-ZvjX4JQReUmBheeCq+S9YavcnMMHWqx3S0jHNXWIM1kQDxB9cyfSycpVvjfrKcIS8Mh5N3hmu/YKo4Iag9g2Kw==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/bourne": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", + "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", + "dev": true + }, + "@hapi/cryptiles": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/cryptiles/-/cryptiles-6.0.1.tgz", + "integrity": "sha512-9GM9ECEHfR8lk5ASOKG4+4ZsEzFqLfhiryIJ2ISePVB92OHLp/yne4m+zn7z9dgvM98TLpiFebjDFQ0UHcqxXQ==", + "dev": true, + "requires": { + "@hapi/boom": "^10.0.1" + } + }, + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "@hapi/iron": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@hapi/iron/-/iron-7.0.1.tgz", + "integrity": "sha512-tEZnrOujKpS6jLKliyWBl3A9PaE+ppuL/+gkbyPPDb/l2KSKQyH4lhMkVb+sBhwN+qaxxlig01JRqB8dk/mPxQ==", + "dev": true, + "requires": { + "@hapi/b64": "^6.0.1", + "@hapi/boom": "^10.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/cryptiles": "^6.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" + } + } } }, "@hapi/subtext": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@hapi/subtext/-/subtext-7.1.0.tgz", - "integrity": "sha512-n94cU6hlvsNRIpXaROzBNEJGwxC+HA69q769pChzej84On8vsU14guHDub7Pphr/pqn5b93zV3IkMPDU5AUiXA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@hapi/subtext/-/subtext-8.1.0.tgz", + "integrity": "sha512-PyaN4oSMtqPjjVxLny1k0iYg4+fwGusIhaom9B2StinBclHs7v46mIW706Y+Wo21lcgulGyXbQrmT/w4dus6ww==", "dev": true, "requires": { - "@hapi/boom": "9.x.x", - "@hapi/bourne": "2.x.x", - "@hapi/content": "^5.0.2", - "@hapi/file": "2.x.x", - "@hapi/hoek": "9.x.x", - "@hapi/pez": "^5.1.0", - "@hapi/wreck": "17.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/content": "^6.0.0", + "@hapi/file": "^3.0.0", + "@hapi/hoek": "^11.0.2", + "@hapi/pez": "^6.1.0", + "@hapi/wreck": "^18.0.1" + }, + "dependencies": { + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/bourne": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", + "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", + "dev": true + }, + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, - "@hapi/teamwork": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@hapi/teamwork/-/teamwork-5.1.1.tgz", - "integrity": "sha512-1oPx9AE5TIv+V6Ih54RP9lTZBso3rP8j4Xhb6iSVwPXtAM+sDopl5TFMv5Paw73UnpZJ9gjcrTE1BXrWt9eQrg==" - }, "@hapi/topo": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, "requires": { "@hapi/hoek": "^9.0.0" } }, - "@hapi/validate": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-1.1.3.tgz", - "integrity": "sha512-/XMR0N0wjw0Twzq2pQOzPBZlDzkekGcoCtzO314BpIEsbXdYGthQUbxgkGDf4nhk1+IPDAsXqWjMohRQYO06UA==", - "requires": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0" - } - }, "@hapi/vise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@hapi/vise/-/vise-4.0.0.tgz", - "integrity": "sha512-eYyLkuUiFZTer59h+SGy7hUm+qE9p+UemePTHLlIWppEd+wExn3Df5jO04bFQTm7nleF5V8CtuYQYb+VFpZ6Sg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@hapi/vise/-/vise-5.0.1.tgz", + "integrity": "sha512-XZYWzzRtINQLedPYlIkSkUr7m5Ddwlu99V9elh8CSygXstfv3UnWIXT0QD+wmR0VAG34d2Vx3olqcEhRRoTu9A==", "dev": true, "requires": { - "@hapi/hoek": "9.x.x" + "@hapi/hoek": "^11.0.2" + }, + "dependencies": { + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, "@hapi/wreck": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-17.2.0.tgz", - "integrity": "sha512-pJ5kjYoRPYDv+eIuiLQqhGon341fr2bNIYZjuotuPJG/3Ilzr/XtI+JAp0A86E2bYfsS3zBPABuS2ICkaXFT8g==", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-18.1.0.tgz", + "integrity": "sha512-0z6ZRCmFEfV/MQqkQomJ7sl/hyxvcZM7LtuVqN3vdAO4vM9eBbowl0kaqQj9EJJQab+3Uuh1GxbGIBFy4NfJ4w==", "dev": true, "requires": { - "@hapi/boom": "9.x.x", - "@hapi/bourne": "2.x.x", - "@hapi/hoek": "9.x.x" + "@hapi/boom": "^10.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/hoek": "^11.0.2" + }, + "dependencies": { + "@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "requires": { + "@hapi/hoek": "^11.0.2" + } + }, + "@hapi/bourne": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", + "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", + "dev": true + }, + "@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + } } }, "@humanwhocodes/config-array": { @@ -46242,7 +46924,7 @@ "@opentelemetry/instrumentation-hapi": { "version": "file:plugins/node/opentelemetry-instrumentation-hapi", "requires": { - "@hapi/hapi": "20.1.5", + "@hapi/hapi": "21.3.3", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/core": "^1.8.0", @@ -46250,9 +46932,9 @@ "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@opentelemetry/semantic-conventions": "^1.0.0", - "@types/hapi__hapi": "20.0.13", "@types/mocha": "7.0.2", "@types/node": "18.6.5", + "joi": "17.12.2", "mocha": "7.2.0", "nyc": "15.1.0", "rimraf": "5.0.5", @@ -48284,6 +48966,7 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "dev": true, "requires": { "@hapi/hoek": "^9.0.0" } @@ -48291,12 +48974,14 @@ "@sideway/formula": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "dev": true }, "@sideway/pinpoint": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true }, "@sigstore/bundle": { "version": "1.1.0", @@ -49288,42 +49973,6 @@ "generic-pool": "*" } }, - "@types/hapi__catbox": { - "version": "10.2.6", - "resolved": "https://registry.npmjs.org/@types/hapi__catbox/-/hapi__catbox-10.2.6.tgz", - "integrity": "sha512-qdMHk4fBlwRfnBBDJaoaxb+fU9Ewi2xqkXD3mNjSPl2v/G/8IJbDpVRBuIcF7oXrcE8YebU5M8cCeKh1NXEn0w==" - }, - "@types/hapi__hapi": { - "version": "20.0.13", - "resolved": "https://registry.npmjs.org/@types/hapi__hapi/-/hapi__hapi-20.0.13.tgz", - "integrity": "sha512-LP4IPfhIO5ZPVOrJo7H8c8Slc0WYTFAUNQX1U0LBPKyXioXhH5H2TawIgxKujIyOhbwoBbpvOsBf6o5+ToJIrQ==", - "requires": { - "@hapi/boom": "^9.0.0", - "@hapi/iron": "^6.0.0", - "@hapi/podium": "^4.1.3", - "@types/hapi__catbox": "*", - "@types/hapi__mimos": "*", - "@types/hapi__shot": "*", - "@types/node": "*", - "joi": "^17.3.0" - } - }, - "@types/hapi__mimos": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@types/hapi__mimos/-/hapi__mimos-4.1.4.tgz", - "integrity": "sha512-i9hvJpFYTT/qzB5xKWvDYaSXrIiNqi4ephi+5Lo6+DoQdwqPXQgmVVOZR+s3MBiHoFqsCZCX9TmVWG3HczmTEQ==", - "requires": { - "@types/mime-db": "*" - } - }, - "@types/hapi__shot": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/hapi__shot/-/hapi__shot-4.1.6.tgz", - "integrity": "sha512-h33NBjx2WyOs/9JgcFeFhkxnioYWQAZxOHdmqDuoJ1Qjxpcs+JGvSjEEoDeWfcrF+1n47kKgqph5IpfmPOnzbg==", - "requires": { - "@types/node": "*" - } - }, "@types/http-assert": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.5.tgz", @@ -49458,11 +50107,6 @@ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" }, - "@types/mime-db": { - "version": "1.43.5", - "resolved": "https://registry.npmjs.org/@types/mime-db/-/mime-db-1.43.5.tgz", - "integrity": "sha512-/bfTiIUTNPUBnwnYvUxXAre5MhD88jgagLEQiQtIASjU+bwxd8kS/ASDA4a8ufd8m0Lheu6eeMJHEUpLHoJ28A==" - }, "@types/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", @@ -57793,6 +58437,7 @@ "version": "17.12.2", "resolved": "https://registry.npmjs.org/joi/-/joi-17.12.2.tgz", "integrity": "sha512-RonXAIzCiHLc8ss3Ibuz45u28GOsWE1UpfDXLbN/9NKbL4tCJf8TWYVKsoYuuh+sAUt7fsSNpA+r2+TBA6Wjmw==", + "dev": true, "requires": { "@hapi/hoek": "^9.3.0", "@hapi/topo": "^5.1.0", diff --git a/plugins/node/opentelemetry-instrumentation-hapi/.tav.yml b/plugins/node/opentelemetry-instrumentation-hapi/.tav.yml index 995b6c88d1..c1d07484cb 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/.tav.yml +++ b/plugins/node/opentelemetry-instrumentation-hapi/.tav.yml @@ -5,3 +5,7 @@ - versions: "^20.3.0" node: ">=14" commands: npm test + - versions: "^21.3.3" + node: ">=14.15.0" + commands: npm test + diff --git a/plugins/node/opentelemetry-instrumentation-hapi/README.md b/plugins/node/opentelemetry-instrumentation-hapi/README.md index 5868e6a53c..d3cb9ec9ad 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/README.md +++ b/plugins/node/opentelemetry-instrumentation-hapi/README.md @@ -21,7 +21,7 @@ npm install --save @opentelemetry/instrumentation-hapi ### Supported Versions -- `>=17.0.0 <21` +- `>=17.0.0 <22` ## Usage diff --git a/plugins/node/opentelemetry-instrumentation-hapi/package.json b/plugins/node/opentelemetry-instrumentation-hapi/package.json index a39a7e5b9a..9308e2555a 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/package.json +++ b/plugins/node/opentelemetry-instrumentation-hapi/package.json @@ -43,13 +43,14 @@ "@opentelemetry/api": "^1.3.0" }, "devDependencies": { - "@hapi/hapi": "20.1.5", + "@hapi/hapi": "21.3.3", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", + "joi": "17.12.2", "mocha": "7.2.0", "nyc": "15.1.0", "rimraf": "5.0.5", @@ -60,8 +61,7 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0", - "@types/hapi__hapi": "20.0.13" + "@opentelemetry/semantic-conventions": "^1.0.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-hapi#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts index 4e3d1d4ce9..2b1988aa69 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts @@ -23,8 +23,7 @@ import { isWrapped, } from '@opentelemetry/instrumentation'; -// types for @hapi/hapi are published under @types/hapi__hapi -import type * as Hapi from 'hapi__hapi'; +import type * as Hapi from '@hapi/hapi'; import { VERSION } from './version'; import { HapiComponentName, @@ -45,6 +44,7 @@ import { getExtMetadata, isDirectExtInput, isPatchableExtMethod, + getPluginFromInput, } from './utils'; /** Hapi instrumentation for OpenTelemetry */ @@ -56,23 +56,21 @@ export class HapiInstrumentation extends InstrumentationBase { protected init() { return new InstrumentationNodeModuleDefinition( HapiComponentName, - ['>=17 <21'], + ['>=17 <22'], (moduleExports: typeof Hapi) => { if (!isWrapped(moduleExports.server)) { - this._wrap(moduleExports, 'server', this._getServerPatch.bind(this)); + this._wrap( + moduleExports, + 'server', + this._getServerPatch.bind(this) as any + ); } - // Casting as any is necessary here due to an issue with the @types/hapi__hapi - // type definition for Hapi.Server. Hapi.Server (note the uppercase) can also function - // as a factory function, similarly to Hapi.server (lowercase), and so should - // also be supported and instrumented. This is an issue with the DefinitelyTyped repo. - // Function is defined at: https://github.com/hapijs/hapi/blob/main/lib/index.js#L9 if (!isWrapped(moduleExports.Server)) { this._wrap( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - moduleExports as any, + moduleExports, 'Server', - this._getServerPatch.bind(this) + this._getServerPatch.bind(this) as any ); } return moduleExports; @@ -145,14 +143,12 @@ export class HapiInstrumentation extends InstrumentationBase { ) { if (Array.isArray(pluginInput)) { for (const pluginObj of pluginInput) { - instrumentation._wrapRegisterHandler( - pluginObj.plugin?.plugin ?? pluginObj.plugin ?? pluginObj - ); + const plugin = getPluginFromInput(pluginObj); + instrumentation._wrapRegisterHandler(plugin); } } else { - instrumentation._wrapRegisterHandler( - pluginInput.plugin?.plugin ?? pluginInput.plugin ?? pluginInput - ); + const plugin = getPluginFromInput(pluginInput); + instrumentation._wrapRegisterHandler(plugin); } return original.apply(this, [pluginInput, options]); }; @@ -272,7 +268,6 @@ export class HapiInstrumentation extends InstrumentationBase { const oldHandler = plugin.register; const self = this; const newRegisterHandler = function (server: Hapi.Server, options: T) { - server.route; self._wrap(server, 'route', original => { return instrumentation._getServerRoutePatch.bind(instrumentation)( original, @@ -312,7 +307,6 @@ export class HapiInstrumentation extends InstrumentationBase { pluginName?: string ): T { const instrumentation: HapiInstrumentation = this; - if (method instanceof Array) { for (let i = 0; i < method.length; i++) { method[i] = instrumentation._wrapExtMethods( @@ -375,13 +369,13 @@ export class HapiInstrumentation extends InstrumentationBase { const instrumentation: HapiInstrumentation = this; if (route[handlerPatched] === true) return route; route[handlerPatched] = true; - const oldHandler = route.options?.handler ?? route.handler; - if (typeof oldHandler === 'function') { - const newHandler: Hapi.Lifecycle.Method = async function ( - ...params: Parameters - ) { + + const wrapHandler: ( + oldHandler: Hapi.Lifecycle.Method + ) => Hapi.Lifecycle.Method = oldHandler => { + return async function (...params: Parameters) { if (api.trace.getSpan(api.context.active()) === undefined) { - return await oldHandler(...params); + return await oldHandler.call(this, ...params); } const rpcMetadata = getRPCMetadata(api.context.active()); if (rpcMetadata?.type === RPCType.HTTP) { @@ -394,7 +388,7 @@ export class HapiInstrumentation extends InstrumentationBase { try { return await api.context.with( api.trace.setSpan(api.context.active(), span), - () => oldHandler(...params) + () => oldHandler.call(this, ...params) ); } catch (err: any) { span.recordException(err); @@ -407,11 +401,25 @@ export class HapiInstrumentation extends InstrumentationBase { span.end(); } }; - if (route.options?.handler) { - route.options.handler = newHandler; - } else { - route.handler = newHandler; - } + }; + + if (typeof route.handler === 'function') { + route.handler = wrapHandler(route.handler as Hapi.Lifecycle.Method); + } else if (typeof route.options === 'function') { + const oldOptions = route.options; + route.options = function (server) { + const options = oldOptions(server); + if (typeof options.handler === 'function') { + options.handler = wrapHandler( + options.handler as Hapi.Lifecycle.Method + ); + } + return options; + }; + } else if (typeof route.options?.handler === 'function') { + route.options.handler = wrapHandler( + route.options.handler as Hapi.Lifecycle.Method + ); } return route; } diff --git a/plugins/node/opentelemetry-instrumentation-hapi/src/internal-types.ts b/plugins/node/opentelemetry-instrumentation-hapi/src/internal-types.ts index 8586d272d9..2c133199cb 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/src/internal-types.ts +++ b/plugins/node/opentelemetry-instrumentation-hapi/src/internal-types.ts @@ -14,8 +14,7 @@ * limitations under the License. */ -// types for @hapi/hapi are published under @types/hapi__hapi -import type * as Hapi from 'hapi__hapi'; +import type * as Hapi from '@hapi/hapi'; export const HapiComponentName = '@hapi/hapi'; @@ -35,14 +34,9 @@ export type HapiServerRouteInput = export type PatchableServerRoute = Hapi.ServerRoute & { [handlerPatched]?: boolean; - options?: { - handler?: Hapi.Lifecycle.Method; - }; }; -export type HapiPluginObject = Hapi.ServerRegisterPluginObject & { - plugin: Hapi.ServerRegisterPluginObject; -}; +export type HapiPluginObject = Hapi.ServerRegisterPluginObject; export type HapiPluginInput = | HapiPluginObject diff --git a/plugins/node/opentelemetry-instrumentation-hapi/src/utils.ts b/plugins/node/opentelemetry-instrumentation-hapi/src/utils.ts index 14de861366..41b794c59e 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/src/utils.ts +++ b/plugins/node/opentelemetry-instrumentation-hapi/src/utils.ts @@ -20,6 +20,7 @@ import type * as Hapi from '@hapi/hapi'; import { HapiLayerType, HapiLifecycleMethodNames, + HapiPluginObject, PatchableExtMethod, ServerExtDirectInput, } from './internal-types'; @@ -119,3 +120,15 @@ export const getExtMetadata = ( name: `ext - ${extPoint}`, }; }; + +export const getPluginFromInput = ( + pluginObj: HapiPluginObject +): Hapi.Plugin => { + if ('plugin' in pluginObj) { + if ('plugin' in pluginObj.plugin) { + return pluginObj.plugin.plugin; + } + return pluginObj.plugin; + } + return pluginObj; +}; diff --git a/plugins/node/opentelemetry-instrumentation-hapi/test/hapi.test.ts b/plugins/node/opentelemetry-instrumentation-hapi/test/hapi.test.ts index 86eb626c76..7ecd84384f 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/test/hapi.test.ts +++ b/plugins/node/opentelemetry-instrumentation-hapi/test/hapi.test.ts @@ -153,6 +153,52 @@ describe('Hapi Instrumentation - Core Tests', () => { }); }); + describe('when handler is returned by route.options function', () => { + it('should create a child span for single routes', async () => { + const rootSpan = tracer.startSpan('rootSpan'); + server.route({ + method: 'GET', + path: '/', + options: () => ({ + handler: (request, h) => { + return 'Hello World!'; + }, + }), + }); + + await server.start(); + assert.strictEqual(memoryExporter.getFinishedSpans().length, 0); + + await context.with( + trace.setSpan(context.active(), rootSpan), + async () => { + const res = await server.inject({ + method: 'GET', + url: '/', + }); + assert.strictEqual(res.statusCode, 200); + + rootSpan.end(); + assert.deepStrictEqual(memoryExporter.getFinishedSpans().length, 2); + + const requestHandlerSpan = memoryExporter + .getFinishedSpans() + .find(span => span.name === 'route - /'); + assert.notStrictEqual(requestHandlerSpan, undefined); + assert.strictEqual( + requestHandlerSpan?.attributes[AttributeNames.HAPI_TYPE], + HapiLayerType.ROUTER + ); + + const exportedRootSpan = memoryExporter + .getFinishedSpans() + .find(span => span.name === 'rootSpan'); + assert.notStrictEqual(exportedRootSpan, undefined); + } + ); + }); + }); + it('should instrument the Hapi.Server (note: uppercase) method', async () => { const rootSpan = tracer.startSpan('rootSpan'); server = new hapi.Server({ From 394bb93ce9badc787ac42f4145c1853254bce40a Mon Sep 17 00:00:00 2001 From: Jamie Danielson Date: Mon, 29 Apr 2024 08:19:41 -0400 Subject: [PATCH 079/121] ci: only publish after releases are created (#2160) * ci: only publish after releases are created * clarify terms, checkout if any release is created * Update .github/workflows/release-please.yml * Update .github/workflows/release-please.yml --------- Co-authored-by: Marc Pichler --- .github/workflows/release-please.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 1c58cefc06..18a14e5130 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -54,11 +54,15 @@ jobs: # get main again - name: Checkout Repository + # only checkout if a release has been created + if: ${{ steps.release.outputs.releases_created }} uses: actions/checkout@v4 with: fetch-depth: 0 - name: Rebuild Packages + # only rebuild if a release has been created + if: ${{ steps.release.outputs.releases_created }} run: | npm ci npm run compile @@ -67,6 +71,8 @@ jobs: # need to publish all unpublished versions to npm here # See: https://github.com/lerna/lerna/tree/main/commands/publish#bump-from-package - name: Publish to npm + # only publish if a release has been created + if: ${{ steps.release.outputs.releases_created }} env: NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} run: npx lerna publish from-package --no-push --no-private --no-git-tag-version --no-verify-access --yes From 379b7571fe3fead239285b503581094f42a79d66 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Mon, 29 Apr 2024 09:07:50 -0400 Subject: [PATCH 080/121] feat(auto-instrumentation-node): add options for `serviceinstance` (#2158) Signed-off-by: maryliag --- .../auto-instrumentations-node/README.md | 3 +- .../auto-instrumentations-node/package.json | 2 +- .../auto-instrumentations-node/src/utils.ts | 3 + .../test/utils.test.ts | 13 +- package-lock.json | 564 +++++++++++++++++- 5 files changed, 576 insertions(+), 9 deletions(-) diff --git a/metapackages/auto-instrumentations-node/README.md b/metapackages/auto-instrumentations-node/README.md index ba31c44d9a..3f79b645d2 100644 --- a/metapackages/auto-instrumentations-node/README.md +++ b/metapackages/auto-instrumentations-node/README.md @@ -50,7 +50,7 @@ export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="https://your-endpoint" export OTEL_EXPORTER_OTLP_HEADERS="x-api-key=your-api-key" export OTEL_EXPORTER_OTLP_TRACES_HEADERS="x-api-key=your-api-key" export OTEL_RESOURCE_ATTRIBUTES="service.namespace=my-namespace" -export OTEL_NODE_RESOURCE_DETECTORS="env,host,os" +export OTEL_NODE_RESOURCE_DETECTORS="env,host,os,serviceinstace" export OTEL_SERVICE_NAME="client" export NODE_OPTIONS="--require @opentelemetry/auto-instrumentations-node/register" node app.js @@ -62,6 +62,7 @@ By default, all SDK resource detectors are used, but you can use the environment - `host` - `os` - `process` +- `serviceinstance` - `container` - `alibaba` - `aws` diff --git a/metapackages/auto-instrumentations-node/package.json b/metapackages/auto-instrumentations-node/package.json index 7704e11d66..a94d199602 100644 --- a/metapackages/auto-instrumentations-node/package.json +++ b/metapackages/auto-instrumentations-node/package.json @@ -92,7 +92,7 @@ "@opentelemetry/resource-detector-azure": "^0.2.6", "@opentelemetry/resource-detector-container": "^0.3.9", "@opentelemetry/resource-detector-gcp": "^0.29.9", - "@opentelemetry/resources": "^1.12.0", + "@opentelemetry/resources": "^1.24.0", "@opentelemetry/sdk-node": "^0.51.0" }, "files": [ diff --git a/metapackages/auto-instrumentations-node/src/utils.ts b/metapackages/auto-instrumentations-node/src/utils.ts index de7d0c7026..faeec6990a 100644 --- a/metapackages/auto-instrumentations-node/src/utils.ts +++ b/metapackages/auto-instrumentations-node/src/utils.ts @@ -72,6 +72,7 @@ import { hostDetectorSync, osDetectorSync, processDetectorSync, + serviceInstanceIdDetectorSync, } from '@opentelemetry/resources'; import { azureAppServiceDetector, @@ -83,6 +84,7 @@ const RESOURCE_DETECTOR_CONTAINER = 'container'; const RESOURCE_DETECTOR_ENVIRONMENT = 'env'; const RESOURCE_DETECTOR_HOST = 'host'; const RESOURCE_DETECTOR_OS = 'os'; +const RESOURCE_DETECTOR_SERVICE_INSTANCE_ID = 'serviceinstance'; const RESOURCE_DETECTOR_PROCESS = 'process'; const RESOURCE_DETECTOR_ALIBABA = 'alibaba'; const RESOURCE_DETECTOR_AWS = 'aws'; @@ -208,6 +210,7 @@ export function getResourceDetectorsFromEnv(): Array { [RESOURCE_DETECTOR_ENVIRONMENT, envDetectorSync], [RESOURCE_DETECTOR_HOST, hostDetectorSync], [RESOURCE_DETECTOR_OS, osDetectorSync], + [RESOURCE_DETECTOR_SERVICE_INSTANCE_ID, serviceInstanceIdDetectorSync], [RESOURCE_DETECTOR_PROCESS, processDetectorSync], [RESOURCE_DETECTOR_ALIBABA, alibabaCloudEcsDetector], [RESOURCE_DETECTOR_GCP, gcpDetector], diff --git a/metapackages/auto-instrumentations-node/test/utils.test.ts b/metapackages/auto-instrumentations-node/test/utils.test.ts index 29fae3cef2..0622022f36 100644 --- a/metapackages/auto-instrumentations-node/test/utils.test.ts +++ b/metapackages/auto-instrumentations-node/test/utils.test.ts @@ -114,25 +114,28 @@ describe('utils', () => { describe('getResourceDetectorsFromEnv', () => { it('should return all resource detectors by default', () => { - assert.equal(getResourceDetectorsFromEnv().length, 15); + assert.equal(getResourceDetectorsFromEnv().length, 16); }); it('should return all resource detectors when OTEL_NODE_RESOURCE_DETECTORS contains "all"', () => { process.env.OTEL_NODE_RESOURCE_DETECTORS = 'all'; - - assert.equal(getResourceDetectorsFromEnv().length, 15); + assert.equal(getResourceDetectorsFromEnv().length, 16); delete process.env.OTEL_NODE_RESOURCE_DETECTORS; }); it('should return specific resource detectors depending on OTEL_NODE_RESOURCE_DETECTORS', () => { - process.env.OTEL_NODE_RESOURCE_DETECTORS = 'env,host'; + process.env.OTEL_NODE_RESOURCE_DETECTORS = 'env,host,serviceinstance'; const resourceDetectors = getResourceDetectorsFromEnv(); - assert.equal(resourceDetectors.length, 2); + assert.equal(resourceDetectors.length, 3); assert.equal(resourceDetectors[0].constructor.name, 'EnvDetectorSync'); assert.equal(resourceDetectors[1].constructor.name, 'HostDetectorSync'); + assert.equal( + resourceDetectors[2].constructor.name, + 'ServiceInstanceIdDetectorSync' + ); delete process.env.OTEL_NODE_RESOURCE_DETECTORS; }); diff --git a/package-lock.json b/package-lock.json index cdf76d19ab..848955b6be 100644 --- a/package-lock.json +++ b/package-lock.json @@ -327,7 +327,7 @@ "@opentelemetry/resource-detector-azure": "^0.2.6", "@opentelemetry/resource-detector-container": "^0.3.9", "@opentelemetry/resource-detector-gcp": "^0.29.9", - "@opentelemetry/resources": "^1.12.0", + "@opentelemetry/resources": "^1.24.0", "@opentelemetry/sdk-node": "^0.51.0" }, "devDependencies": { @@ -349,6 +349,344 @@ "@opentelemetry/api": "^1.4.1" } }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/api-logs": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.51.0.tgz", + "integrity": "sha512-m/jtfBPEIXS1asltl8fPQtO3Sb1qMpuL61unQajUmM8zIxeMF1AlqzWXM3QedcYgTTFiJCew5uJjyhpmqhc0+g==", + "dependencies": { + "@opentelemetry/api": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/context-async-hooks": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.24.0.tgz", + "integrity": "sha512-s7xaQ9ifDpJvwbWRLkZD/J5hY35w+MECm4TQUkg6szRcny9lf6oVhWij4w3JJFQgvHQMXU7oXOpX8Z05HxV/8g==", + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/core": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.0.tgz", + "integrity": "sha512-FP2oN7mVPqcdxJDTTnKExj4mi91EH+DNuArKfHTjPuJWe2K1JfMIVXNfahw1h3onJxQnxS8K0stKkogX05s+Aw==", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/exporter-trace-otlp-grpc": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.51.0.tgz", + "integrity": "sha512-xQpxKzS8ZnxYCa1v+3EKWhwMrSK3+RezpJ+AEKaP2pf2QbLfHt7kKfSn7niR2u3A1Tbe2aC7Ptt9+MafhThOOQ==", + "dependencies": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.51.0", + "@opentelemetry/otlp-transformer": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/exporter-trace-otlp-http": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.51.0.tgz", + "integrity": "sha512-zODqnLZmPOxj9CarFv0TrVlx9mgj0TfCMCiUiTdNi9iA2rgdKVo+bjJjpYF6LCTJOQCR5TScAUCKyzwkgDI+iA==", + "dependencies": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", + "@opentelemetry/otlp-transformer": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/exporter-trace-otlp-proto": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.51.0.tgz", + "integrity": "sha512-Fi7r0iMqGoFCQQ+WY0pYOWp395vdinZJIkYKnNbnreHxAN/kVDBl2FxbV3DeOKuRxEY08Gyb9ggPf+Zrqp7l/w==", + "dependencies": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", + "@opentelemetry/otlp-proto-exporter-base": "0.51.0", + "@opentelemetry/otlp-transformer": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/exporter-zipkin": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.24.0.tgz", + "integrity": "sha512-QeGv0PHONswmu567pf9QliJ6s6DgCu5+ziF+soNS1LTcr1VRRVLViYLmGxmzDFUC48sjNTu7sumcKT0nJXsGBw==", + "dependencies": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.51.0.tgz", + "integrity": "sha512-hR4c9vWVz1QgzCBSyy9zSDkvfTgaK96E6/tfVP6O4dzdZW9HqWimA3lXV/KXadEGqShvM4GToz9EHp2A5RU5bQ==", + "dependencies": { + "@opentelemetry/core": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/otlp-grpc-exporter-base": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.51.0.tgz", + "integrity": "sha512-oTRtDvvB0bTRTBVrvKA/oM1gIAqQ6DVQS07pvqiL1cZS8wBrGgpw+2iTd0nV661Y/MhDn/kNWp8lRhMEIKN9bw==", + "dependencies": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", + "protobufjs": "^7.2.3" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/otlp-proto-exporter-base": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.51.0.tgz", + "integrity": "sha512-WDANDLSUh11Gu5o6iCzmjZraIv5bK8z1L/t6lxQ2NeEKiKUPo5pVOBBQQC/yAQU2yeqkiO1GRCieH+XahZf60A==", + "dependencies": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", + "protobufjs": "^7.2.3" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/otlp-transformer": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.51.0.tgz", + "integrity": "sha512-ylLgx2xumVoSefDHP9GMAU/LG+TU3+8eacVDXV5o1RqWxsdVOaQmCTY0XyDgeRTn6hIOVAq/HHQbRq3iWOrt2A==", + "dependencies": { + "@opentelemetry/api-logs": "0.51.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-logs": "0.51.0", + "@opentelemetry/sdk-metrics": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.9.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/propagator-b3": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.24.0.tgz", + "integrity": "sha512-7TMIDE4+NO5vnkor+zned42wqca+hmhW5gWKhmYjUHC5B5uojo1PvtmBrd7kigFu96XvL4ZUWVzibWRWIQ/++Q==", + "dependencies": { + "@opentelemetry/core": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/propagator-jaeger": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.24.0.tgz", + "integrity": "sha512-r3MX3AmJiUeiWTXSDOdwBeaO+ahvWcFCpuKxmhhsH8Q8LqDnjhNd3krqBh4Qsq9wa0WhWtiQaDs/NOCWoMOlOw==", + "dependencies": { + "@opentelemetry/core": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/resources": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.24.0.tgz", + "integrity": "sha512-mxC7E7ocUS1tLzepnA7O9/G8G6ZTdjCH2pXme1DDDuCuk6n2/53GADX+GWBuyX0dfIxeMInIbJAdjlfN9GNr6A==", + "dependencies": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/sdk-logs": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.51.0.tgz", + "integrity": "sha512-K4fMBRFD8hQ6khk0rvYFuo6L9ymeGgByir6BcuFIgQuQ00OhYwBi9AruZz5V733Ejq7P8ObR3YyubkOUIbeVAw==", + "dependencies": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.9.0", + "@opentelemetry/api-logs": ">=0.39.1" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/sdk-metrics": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.24.0.tgz", + "integrity": "sha512-4tJ+E6N019OZVB/nUW/LoK9xHxfeh88TCoaTqHeLBE9wLYfi6irWW6J9cphMav7J8Qk0D5b7/RM4VEY4dArWOA==", + "dependencies": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "lodash.merge": "^4.6.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.9.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/sdk-node": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.51.0.tgz", + "integrity": "sha512-MrPXDQsTAj3lcY8YUCjb7dvSXVZ5jG6wmjD2LB68V1rsLBdP8j70jsI9GaKijY7QB6psbLq6apO1vYeim5U7aw==", + "dependencies": { + "@opentelemetry/api-logs": "0.51.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.51.0", + "@opentelemetry/exporter-trace-otlp-http": "0.51.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.51.0", + "@opentelemetry/exporter-zipkin": "1.24.0", + "@opentelemetry/instrumentation": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-logs": "0.51.0", + "@opentelemetry/sdk-metrics": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "@opentelemetry/sdk-trace-node": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.9.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/instrumentation": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.51.0.tgz", + "integrity": "sha512-Eg/+Od5bEvzpvZQGhvMyKIkrzB9S7jW+6z9LHEI2VXhl/GrqQ3oBqlzJt4tA6pGtxRmqQWKWGM1wAbwDdW/gUA==", + "dependencies": { + "@opentelemetry/api-logs": "0.51.0", + "@types/shimmer": "^1.0.2", + "import-in-the-middle": "1.7.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.24.0.tgz", + "integrity": "sha512-H9sLETZ4jw9UJ3totV8oM5R0m4CW0ZIOLfp4NV3g0CM8HD5zGZcaW88xqzWDgiYRpctFxd+WmHtGX/Upoa2vRg==", + "dependencies": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/sdk-trace-node": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.24.0.tgz", + "integrity": "sha512-QgByHmM9uloTpcYEEyW9YJEIMKHFSIM677RH9pJPWWwtM2NQFbEp/8HIJw80Ymtaz6cAxg1Kay1ByqIVzq3t5g==", + "dependencies": { + "@opentelemetry/context-async-hooks": "1.24.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/propagator-b3": "1.24.0", + "@opentelemetry/propagator-jaeger": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "semver": "^7.5.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.0.tgz", + "integrity": "sha512-yL0jI6Ltuz8R+Opj7jClGrul6pOoYrdfVmzQS4SITXRPH7I5IRZbrwe/6/v8v4WYMa6MYZG480S1+uc/IGfqsA==", + "engines": { + "node": ">=14" + } + }, "metapackages/auto-instrumentations-web": { "name": "@opentelemetry/auto-instrumentations-web", "version": "0.39.0", @@ -46200,7 +46538,7 @@ "@opentelemetry/resource-detector-azure": "^0.2.6", "@opentelemetry/resource-detector-container": "^0.3.9", "@opentelemetry/resource-detector-gcp": "^0.29.9", - "@opentelemetry/resources": "^1.12.0", + "@opentelemetry/resources": "^1.24.0", "@opentelemetry/sdk-node": "^0.51.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", @@ -46211,6 +46549,228 @@ "sinon": "15.2.0", "ts-mocha": "10.0.0", "typescript": "4.4.4" + }, + "dependencies": { + "@opentelemetry/api-logs": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.51.0.tgz", + "integrity": "sha512-m/jtfBPEIXS1asltl8fPQtO3Sb1qMpuL61unQajUmM8zIxeMF1AlqzWXM3QedcYgTTFiJCew5uJjyhpmqhc0+g==", + "requires": { + "@opentelemetry/api": "^1.0.0" + } + }, + "@opentelemetry/context-async-hooks": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.24.0.tgz", + "integrity": "sha512-s7xaQ9ifDpJvwbWRLkZD/J5hY35w+MECm4TQUkg6szRcny9lf6oVhWij4w3JJFQgvHQMXU7oXOpX8Z05HxV/8g==", + "requires": {} + }, + "@opentelemetry/core": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.0.tgz", + "integrity": "sha512-FP2oN7mVPqcdxJDTTnKExj4mi91EH+DNuArKfHTjPuJWe2K1JfMIVXNfahw1h3onJxQnxS8K0stKkogX05s+Aw==", + "requires": { + "@opentelemetry/semantic-conventions": "1.24.0" + } + }, + "@opentelemetry/exporter-trace-otlp-grpc": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.51.0.tgz", + "integrity": "sha512-xQpxKzS8ZnxYCa1v+3EKWhwMrSK3+RezpJ+AEKaP2pf2QbLfHt7kKfSn7niR2u3A1Tbe2aC7Ptt9+MafhThOOQ==", + "requires": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.51.0", + "@opentelemetry/otlp-transformer": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" + } + }, + "@opentelemetry/exporter-trace-otlp-http": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.51.0.tgz", + "integrity": "sha512-zODqnLZmPOxj9CarFv0TrVlx9mgj0TfCMCiUiTdNi9iA2rgdKVo+bjJjpYF6LCTJOQCR5TScAUCKyzwkgDI+iA==", + "requires": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", + "@opentelemetry/otlp-transformer": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" + } + }, + "@opentelemetry/exporter-trace-otlp-proto": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.51.0.tgz", + "integrity": "sha512-Fi7r0iMqGoFCQQ+WY0pYOWp395vdinZJIkYKnNbnreHxAN/kVDBl2FxbV3DeOKuRxEY08Gyb9ggPf+Zrqp7l/w==", + "requires": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", + "@opentelemetry/otlp-proto-exporter-base": "0.51.0", + "@opentelemetry/otlp-transformer": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" + } + }, + "@opentelemetry/exporter-zipkin": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.24.0.tgz", + "integrity": "sha512-QeGv0PHONswmu567pf9QliJ6s6DgCu5+ziF+soNS1LTcr1VRRVLViYLmGxmzDFUC48sjNTu7sumcKT0nJXsGBw==", + "requires": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" + } + }, + "@opentelemetry/otlp-exporter-base": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.51.0.tgz", + "integrity": "sha512-hR4c9vWVz1QgzCBSyy9zSDkvfTgaK96E6/tfVP6O4dzdZW9HqWimA3lXV/KXadEGqShvM4GToz9EHp2A5RU5bQ==", + "requires": { + "@opentelemetry/core": "1.24.0" + } + }, + "@opentelemetry/otlp-grpc-exporter-base": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.51.0.tgz", + "integrity": "sha512-oTRtDvvB0bTRTBVrvKA/oM1gIAqQ6DVQS07pvqiL1cZS8wBrGgpw+2iTd0nV661Y/MhDn/kNWp8lRhMEIKN9bw==", + "requires": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", + "protobufjs": "^7.2.3" + } + }, + "@opentelemetry/otlp-proto-exporter-base": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.51.0.tgz", + "integrity": "sha512-WDANDLSUh11Gu5o6iCzmjZraIv5bK8z1L/t6lxQ2NeEKiKUPo5pVOBBQQC/yAQU2yeqkiO1GRCieH+XahZf60A==", + "requires": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/otlp-exporter-base": "0.51.0", + "protobufjs": "^7.2.3" + } + }, + "@opentelemetry/otlp-transformer": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.51.0.tgz", + "integrity": "sha512-ylLgx2xumVoSefDHP9GMAU/LG+TU3+8eacVDXV5o1RqWxsdVOaQmCTY0XyDgeRTn6hIOVAq/HHQbRq3iWOrt2A==", + "requires": { + "@opentelemetry/api-logs": "0.51.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-logs": "0.51.0", + "@opentelemetry/sdk-metrics": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0" + } + }, + "@opentelemetry/propagator-b3": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.24.0.tgz", + "integrity": "sha512-7TMIDE4+NO5vnkor+zned42wqca+hmhW5gWKhmYjUHC5B5uojo1PvtmBrd7kigFu96XvL4ZUWVzibWRWIQ/++Q==", + "requires": { + "@opentelemetry/core": "1.24.0" + } + }, + "@opentelemetry/propagator-jaeger": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.24.0.tgz", + "integrity": "sha512-r3MX3AmJiUeiWTXSDOdwBeaO+ahvWcFCpuKxmhhsH8Q8LqDnjhNd3krqBh4Qsq9wa0WhWtiQaDs/NOCWoMOlOw==", + "requires": { + "@opentelemetry/core": "1.24.0" + } + }, + "@opentelemetry/resources": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.24.0.tgz", + "integrity": "sha512-mxC7E7ocUS1tLzepnA7O9/G8G6ZTdjCH2pXme1DDDuCuk6n2/53GADX+GWBuyX0dfIxeMInIbJAdjlfN9GNr6A==", + "requires": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" + } + }, + "@opentelemetry/sdk-logs": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.51.0.tgz", + "integrity": "sha512-K4fMBRFD8hQ6khk0rvYFuo6L9ymeGgByir6BcuFIgQuQ00OhYwBi9AruZz5V733Ejq7P8ObR3YyubkOUIbeVAw==", + "requires": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0" + } + }, + "@opentelemetry/sdk-metrics": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.24.0.tgz", + "integrity": "sha512-4tJ+E6N019OZVB/nUW/LoK9xHxfeh88TCoaTqHeLBE9wLYfi6irWW6J9cphMav7J8Qk0D5b7/RM4VEY4dArWOA==", + "requires": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "lodash.merge": "^4.6.2" + } + }, + "@opentelemetry/sdk-node": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.51.0.tgz", + "integrity": "sha512-MrPXDQsTAj3lcY8YUCjb7dvSXVZ5jG6wmjD2LB68V1rsLBdP8j70jsI9GaKijY7QB6psbLq6apO1vYeim5U7aw==", + "requires": { + "@opentelemetry/api-logs": "0.51.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.51.0", + "@opentelemetry/exporter-trace-otlp-http": "0.51.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.51.0", + "@opentelemetry/exporter-zipkin": "1.24.0", + "@opentelemetry/instrumentation": "0.51.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/sdk-logs": "0.51.0", + "@opentelemetry/sdk-metrics": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "@opentelemetry/sdk-trace-node": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" + }, + "dependencies": { + "@opentelemetry/instrumentation": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.51.0.tgz", + "integrity": "sha512-Eg/+Od5bEvzpvZQGhvMyKIkrzB9S7jW+6z9LHEI2VXhl/GrqQ3oBqlzJt4tA6pGtxRmqQWKWGM1wAbwDdW/gUA==", + "requires": { + "@opentelemetry/api-logs": "0.51.0", + "@types/shimmer": "^1.0.2", + "import-in-the-middle": "1.7.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + } + } + } + }, + "@opentelemetry/sdk-trace-base": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.24.0.tgz", + "integrity": "sha512-H9sLETZ4jw9UJ3totV8oM5R0m4CW0ZIOLfp4NV3g0CM8HD5zGZcaW88xqzWDgiYRpctFxd+WmHtGX/Upoa2vRg==", + "requires": { + "@opentelemetry/core": "1.24.0", + "@opentelemetry/resources": "1.24.0", + "@opentelemetry/semantic-conventions": "1.24.0" + } + }, + "@opentelemetry/sdk-trace-node": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.24.0.tgz", + "integrity": "sha512-QgByHmM9uloTpcYEEyW9YJEIMKHFSIM677RH9pJPWWwtM2NQFbEp/8HIJw80Ymtaz6cAxg1Kay1ByqIVzq3t5g==", + "requires": { + "@opentelemetry/context-async-hooks": "1.24.0", + "@opentelemetry/core": "1.24.0", + "@opentelemetry/propagator-b3": "1.24.0", + "@opentelemetry/propagator-jaeger": "1.24.0", + "@opentelemetry/sdk-trace-base": "1.24.0", + "semver": "^7.5.2" + } + }, + "@opentelemetry/semantic-conventions": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.0.tgz", + "integrity": "sha512-yL0jI6Ltuz8R+Opj7jClGrul6pOoYrdfVmzQS4SITXRPH7I5IRZbrwe/6/v8v4WYMa6MYZG480S1+uc/IGfqsA==" + } } }, "@opentelemetry/auto-instrumentations-web": { From 4463483515c335de4cbb5b066f92c7ce0336619a Mon Sep 17 00:00:00 2001 From: Jamie Danielson Date: Mon, 29 Apr 2024 23:57:34 -0400 Subject: [PATCH 081/121] feat(auto-instrumentation-node): add undici instrumentation (#2131) * feat(auto-instrumentation-node): add undici instrumentation * add back undici from bad merge --- metapackages/auto-instrumentations-node/README.md | 1 + metapackages/auto-instrumentations-node/package.json | 1 + metapackages/auto-instrumentations-node/src/utils.ts | 2 ++ package-lock.json | 2 ++ 4 files changed, 6 insertions(+) diff --git a/metapackages/auto-instrumentations-node/README.md b/metapackages/auto-instrumentations-node/README.md index 3f79b645d2..181d920386 100644 --- a/metapackages/auto-instrumentations-node/README.md +++ b/metapackages/auto-instrumentations-node/README.md @@ -181,6 +181,7 @@ registerInstrumentations({ - [@opentelemetry/instrumentation-redis](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-redis) - [@opentelemetry/instrumentation-restify](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-restify) - [@opentelemetry/instrumentation-socket.io](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-socket.io) +- [@opentelemetry/instrumentation-undici](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-undici) - [@opentelemetry/instrumentation-winston](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-winston) ## Useful links diff --git a/metapackages/auto-instrumentations-node/package.json b/metapackages/auto-instrumentations-node/package.json index a94d199602..e4b40119a1 100644 --- a/metapackages/auto-instrumentations-node/package.json +++ b/metapackages/auto-instrumentations-node/package.json @@ -86,6 +86,7 @@ "@opentelemetry/instrumentation-router": "^0.37.0", "@opentelemetry/instrumentation-socket.io": "^0.39.0", "@opentelemetry/instrumentation-tedious": "^0.10.0", + "@opentelemetry/instrumentation-undici": "^0.2.0", "@opentelemetry/instrumentation-winston": "^0.37.0", "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", "@opentelemetry/resource-detector-aws": "^1.4.2", diff --git a/metapackages/auto-instrumentations-node/src/utils.ts b/metapackages/auto-instrumentations-node/src/utils.ts index faeec6990a..04f4c1ed50 100644 --- a/metapackages/auto-instrumentations-node/src/utils.ts +++ b/metapackages/auto-instrumentations-node/src/utils.ts @@ -53,6 +53,7 @@ import { RestifyInstrumentation } from '@opentelemetry/instrumentation-restify'; import { RouterInstrumentation } from '@opentelemetry/instrumentation-router'; import { SocketIoInstrumentation } from '@opentelemetry/instrumentation-socket.io'; import { TediousInstrumentation } from '@opentelemetry/instrumentation-tedious'; +import { UndiciInstrumentation } from '@opentelemetry/instrumentation-undici'; import { WinstonInstrumentation } from '@opentelemetry/instrumentation-winston'; import { alibabaCloudEcsDetector } from '@opentelemetry/resource-detector-alibaba-cloud'; @@ -129,6 +130,7 @@ const InstrumentationMap = { '@opentelemetry/instrumentation-router': RouterInstrumentation, '@opentelemetry/instrumentation-socket.io': SocketIoInstrumentation, '@opentelemetry/instrumentation-tedious': TediousInstrumentation, + '@opentelemetry/instrumentation-undici': UndiciInstrumentation, '@opentelemetry/instrumentation-winston': WinstonInstrumentation, }; diff --git a/package-lock.json b/package-lock.json index 848955b6be..4c8e6c2a3b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -321,6 +321,7 @@ "@opentelemetry/instrumentation-router": "^0.37.0", "@opentelemetry/instrumentation-socket.io": "^0.39.0", "@opentelemetry/instrumentation-tedious": "^0.10.0", + "@opentelemetry/instrumentation-undici": "^0.2.0", "@opentelemetry/instrumentation-winston": "^0.37.0", "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", "@opentelemetry/resource-detector-aws": "^1.4.2", @@ -46532,6 +46533,7 @@ "@opentelemetry/instrumentation-router": "^0.37.0", "@opentelemetry/instrumentation-socket.io": "^0.39.0", "@opentelemetry/instrumentation-tedious": "^0.10.0", + "@opentelemetry/instrumentation-undici": "^0.2.0", "@opentelemetry/instrumentation-winston": "^0.37.0", "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", "@opentelemetry/resource-detector-aws": "^1.4.2", From d06685471a3b2ce89ca8c59eb73894629418290f Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Tue, 30 Apr 2024 11:29:47 +0200 Subject: [PATCH 082/121] chore: remove skipLibCheck: true from tsconfigs where it is not necessary (#2165) --- metapackages/auto-instrumentations-web/tsconfig.esm.json | 1 - metapackages/auto-instrumentations-web/tsconfig.esnext.json | 1 - metapackages/auto-instrumentations-web/tsconfig.json | 1 - plugins/node/instrumentation-cucumber/tsconfig.json | 3 +-- plugins/node/instrumentation-mongoose/tsconfig.json | 3 +-- .../node/opentelemetry-instrumentation-mongodb/tsconfig.json | 3 +-- .../tsconfig.esm.json | 1 - .../tsconfig.esnext.json | 1 - .../tsconfig.json | 3 +-- 9 files changed, 4 insertions(+), 13 deletions(-) diff --git a/metapackages/auto-instrumentations-web/tsconfig.esm.json b/metapackages/auto-instrumentations-web/tsconfig.esm.json index 356b6d0307..a94adff6aa 100644 --- a/metapackages/auto-instrumentations-web/tsconfig.esm.json +++ b/metapackages/auto-instrumentations-web/tsconfig.esm.json @@ -3,7 +3,6 @@ "compilerOptions": { "rootDir": "src", "outDir": "build/esm", - "skipLibCheck": true, "tsBuildInfoFile": "build/esm/tsconfig.esm.tsbuildinfo" }, "include": [ diff --git a/metapackages/auto-instrumentations-web/tsconfig.esnext.json b/metapackages/auto-instrumentations-web/tsconfig.esnext.json index d6054d1fb0..ff1191ab29 100644 --- a/metapackages/auto-instrumentations-web/tsconfig.esnext.json +++ b/metapackages/auto-instrumentations-web/tsconfig.esnext.json @@ -3,7 +3,6 @@ "compilerOptions": { "rootDir": "src", "outDir": "build/esnext", - "skipLibCheck": true, "tsBuildInfoFile": "build/esnext/tsconfig.esnext.tsbuildinfo" }, "include": ["src/**/*.ts"] diff --git a/metapackages/auto-instrumentations-web/tsconfig.json b/metapackages/auto-instrumentations-web/tsconfig.json index e1baf4c16d..569e38e289 100644 --- a/metapackages/auto-instrumentations-web/tsconfig.json +++ b/metapackages/auto-instrumentations-web/tsconfig.json @@ -3,7 +3,6 @@ "compilerOptions": { "rootDir": ".", "outDir": "build", - "skipLibCheck": true }, "include": [ "src/**/*.ts", diff --git a/plugins/node/instrumentation-cucumber/tsconfig.json b/plugins/node/instrumentation-cucumber/tsconfig.json index 568e7bb7cb..c87523782b 100644 --- a/plugins/node/instrumentation-cucumber/tsconfig.json +++ b/plugins/node/instrumentation-cucumber/tsconfig.json @@ -2,8 +2,7 @@ "extends": "../../../tsconfig.base", "compilerOptions": { "rootDir": ".", - "outDir": "build", - "skipLibCheck": true + "outDir": "build" }, "include": ["src/**/*.ts", "test/**/*.ts"] } diff --git a/plugins/node/instrumentation-mongoose/tsconfig.json b/plugins/node/instrumentation-mongoose/tsconfig.json index 5c3680dd33..28be80d266 100644 --- a/plugins/node/instrumentation-mongoose/tsconfig.json +++ b/plugins/node/instrumentation-mongoose/tsconfig.json @@ -2,8 +2,7 @@ "extends": "../../../tsconfig.base", "compilerOptions": { "rootDir": ".", - "outDir": "build", - "skipLibCheck": true + "outDir": "build" }, "include": [ "src/**/*.ts", diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/tsconfig.json b/plugins/node/opentelemetry-instrumentation-mongodb/tsconfig.json index 5c3680dd33..28be80d266 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/tsconfig.json +++ b/plugins/node/opentelemetry-instrumentation-mongodb/tsconfig.json @@ -2,8 +2,7 @@ "extends": "../../../tsconfig.base", "compilerOptions": { "rootDir": ".", - "outDir": "build", - "skipLibCheck": true + "outDir": "build" }, "include": [ "src/**/*.ts", diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/tsconfig.esm.json b/plugins/web/opentelemetry-instrumentation-user-interaction/tsconfig.esm.json index 2eb13ff857..379f547a46 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/tsconfig.esm.json +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/tsconfig.esm.json @@ -3,7 +3,6 @@ "compilerOptions": { "rootDir": "src", "outDir": "build/esm", - "skipLibCheck": true, "tsBuildInfoFile": "build/esm/tsconfig.esm.tsbuildinfo" }, "include": [ diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/tsconfig.esnext.json b/plugins/web/opentelemetry-instrumentation-user-interaction/tsconfig.esnext.json index b7a30a41f1..cb78dd6ff3 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/tsconfig.esnext.json +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/tsconfig.esnext.json @@ -3,7 +3,6 @@ "compilerOptions": { "rootDir": "src", "outDir": "build/esnext", - "skipLibCheck": true, "tsBuildInfoFile": "build/esnext/tsconfig.esnext.tsbuildinfo" }, "include": [ diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/tsconfig.json b/plugins/web/opentelemetry-instrumentation-user-interaction/tsconfig.json index 5c3680dd33..28be80d266 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/tsconfig.json +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/tsconfig.json @@ -2,8 +2,7 @@ "extends": "../../../tsconfig.base", "compilerOptions": { "rootDir": ".", - "outDir": "build", - "skipLibCheck": true + "outDir": "build" }, "include": [ "src/**/*.ts", From 59583f240715f29a80776dd6de5a36f2c6341765 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 30 Apr 2024 12:57:49 +0200 Subject: [PATCH 083/121] chore(deps): update postgres docker tag to v16 (#1703) * chore(deps): update postgres docker tag to v16 * fix(test-utils): align postgres docker image --------- Co-authored-by: Amir Blum --- .github/workflows/test-all-versions.yml | 2 +- .github/workflows/unit-test.yml | 2 +- packages/opentelemetry-test-utils/src/test-utils.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test-all-versions.yml b/.github/workflows/test-all-versions.yml index aa0b908342..cc231a5174 100644 --- a/.github/workflows/test-all-versions.yml +++ b/.github/workflows/test-all-versions.yml @@ -53,7 +53,7 @@ jobs: --health-timeout 5s --health-retries 5 postgres: - image: postgres:15-alpine + image: postgres:16-alpine env: POSTGRES_USER: postgres POSTGRES_DB: otel_pg_database diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 025b727e9b..a03af4c942 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -51,7 +51,7 @@ jobs: --health-timeout 5s --health-retries 5 postgres: - image: postgres:15-alpine + image: postgres:16-alpine env: POSTGRES_USER: postgres POSTGRES_DB: otel_pg_database diff --git a/packages/opentelemetry-test-utils/src/test-utils.ts b/packages/opentelemetry-test-utils/src/test-utils.ts index 0020e043fd..aae38f160a 100644 --- a/packages/opentelemetry-test-utils/src/test-utils.ts +++ b/packages/opentelemetry-test-utils/src/test-utils.ts @@ -40,7 +40,7 @@ const dockerRunCmds = { mysql: 'docker run --rm -d --name otel-mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=rootpw -e MYSQL_DATABASE=test_db -e MYSQL_USER=otel -e MYSQL_PASSWORD=secret mysql:5.7 --log_output=TABLE --general_log=ON', postgres: - 'docker run --rm -d --name otel-postgres -p 54320:5432 -e POSTGRES_PASSWORD=postgres postgres:15-alpine', + 'docker run --rm -d --name otel-postgres -p 54320:5432 -e POSTGRES_PASSWORD=postgres postgres:16-alpine', redis: 'docker run --rm -d --name otel-redis -p 63790:6379 redis:alpine', }; From 585b833dc8e911c17b483e871f752ad4988cee5a Mon Sep 17 00:00:00 2001 From: Amir Blum Date: Tue, 30 Apr 2024 16:49:22 +0300 Subject: [PATCH 084/121] feat(pino): support new pino version ^9.0.0 (#2163) Co-authored-by: Marc Pichler --- plugins/node/opentelemetry-instrumentation-pino/.tav.yml | 5 ++++- plugins/node/opentelemetry-instrumentation-pino/README.md | 2 +- .../src/instrumentation.ts | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/plugins/node/opentelemetry-instrumentation-pino/.tav.yml b/plugins/node/opentelemetry-instrumentation-pino/.tav.yml index ca1f8bbabc..94d5d5f97e 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/.tav.yml +++ b/plugins/node/opentelemetry-instrumentation-pino/.tav.yml @@ -1,5 +1,8 @@ pino: - - versions: "^8.16.2 || 8.12.1 || 8.8.0 || 8.4.0 || 8.0.0 || ^7.11.0 || 7.8.0 || 7.2.0 || ^6.13.3 || 5.17.0 || 5.14.0" + - versions: "^9.0.0" + node: ">=18" + commands: npm run test + - versions: "^8.21.0 || 8.20.0 || 8.16.2 || 8.12.1 || 8.8.0 || 8.4.0 || 8.0.0 || ^7.11.0 || 7.8.0 || 7.2.0 || ^6.13.3 || 5.17.0 || 5.14.0" node: ">=14" commands: npm run test - versions: "^7.11.0 || 7.8.0 || 7.2.0 || ^6.13.1 || 5.17.0 || 5.14.0" diff --git a/plugins/node/opentelemetry-instrumentation-pino/README.md b/plugins/node/opentelemetry-instrumentation-pino/README.md index 7d8c7393f1..377ce7aa6e 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/README.md +++ b/plugins/node/opentelemetry-instrumentation-pino/README.md @@ -63,7 +63,7 @@ When no span context is active or the span context is invalid, injection is skip ### Supported versions -`>=5.14.0 <9` +`>=5.14.0 <10` ## Useful links diff --git a/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts index dce1ff3ecc..d5821a2f6f 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts @@ -29,7 +29,7 @@ import { import { PinoInstrumentationConfig } from './types'; import { VERSION } from './version'; -const pinoVersions = ['>=5.14.0 <9']; +const pinoVersions = ['>=5.14.0 <10']; const DEFAULT_LOG_KEYS = { traceId: 'trace_id', From e74cee49a7f8dde2e34a5a6e37d87e3b7d1bd949 Mon Sep 17 00:00:00 2001 From: David Luna Date: Wed, 1 May 2024 05:30:19 +0200 Subject: [PATCH 085/121] refactor(instr-cassandra-driver): use exported strings for attributes (#2139) Also, correct component-label mapping for instrumentation-cassandra-driver package Co-authored-by: Trent Mick Refs: #2025 --- .github/component-label-map.yml | 2 +- package-lock.json | 4 +-- .../README.md | 15 +++++++++++ .../package.json | 2 +- .../src/instrumentation.ts | 25 ++++++++++------- .../test/cassandra-driver.test.ts | 27 +++++++++++-------- 6 files changed, 50 insertions(+), 25 deletions(-) diff --git a/.github/component-label-map.yml b/.github/component-label-map.yml index 5a9fc3af56..c766a864d0 100644 --- a/.github/component-label-map.yml +++ b/.github/component-label-map.yml @@ -71,7 +71,7 @@ pkg:instrumentation-bunyan: - changed-files: - any-glob-to-any-file: - plugins/node/opentelemetry-instrumentation-bunyan/** -pkg:instrumentation-cassandra: +pkg:instrumentation-cassandra-driver: - changed-files: - any-glob-to-any-file: - plugins/node/opentelemetry-instrumentation-cassandra/** diff --git a/package-lock.json b/package-lock.json index 4c8e6c2a3b..72cbe122ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38193,7 +38193,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -47132,7 +47132,7 @@ "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/semver": "7.5.3", diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/README.md b/plugins/node/opentelemetry-instrumentation-cassandra/README.md index 637bcf4fa2..8743ebffaf 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/README.md +++ b/plugins/node/opentelemetry-instrumentation-cassandra/README.md @@ -49,6 +49,21 @@ await client.execute('select * from foo'); `>=4.4 <5.0` +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | +| ----------------------- | ------------------------------------------------------------------------------ | +| `db.name` | This attribute is used to report the name of the database being accessed. | +| `db.statement` | The database statement being executed. | +| `db.system` | An identifier for the database management system (DBMS) product being used. | +| `db.user` | Username for accessing the database. | +| `net.peer.name` | Remote hostname or similar. | +| `net.peer.port` | Remote port number. | + ## Useful links * For more information on OpenTelemetry, visit: diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/package.json b/plugins/node/opentelemetry-instrumentation-cassandra/package.json index 2529936322..73ffc747d6 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/package.json +++ b/plugins/node/opentelemetry-instrumentation-cassandra/package.json @@ -62,7 +62,7 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-cassandra#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-cassandra/src/instrumentation.ts index 754277310f..f11ffab83e 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-cassandra/src/instrumentation.ts @@ -18,7 +18,7 @@ import { context, trace, Span, - SpanAttributes, + Attributes, SpanKind, SpanStatusCode, } from '@opentelemetry/api'; @@ -31,8 +31,13 @@ import { } from '@opentelemetry/instrumentation'; import { CassandraDriverInstrumentationConfig, ResultSet } from './types'; import { - SemanticAttributes, - DbSystemValues, + DBSYSTEMVALUES_CASSANDRA, + SEMATTRS_DB_NAME, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, + SEMATTRS_DB_USER, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, } from '@opentelemetry/semantic-conventions'; import { VERSION } from './version'; import { EventEmitter } from 'events'; @@ -172,10 +177,10 @@ export class CassandraDriverInstrumentation extends InstrumentationBase { if (span !== undefined && conn !== undefined) { const port = parseInt(conn.port, 10); - span.setAttribute(SemanticAttributes.NET_PEER_NAME, conn.address); + span.setAttribute(SEMATTRS_NET_PEER_NAME, conn.address); if (!isNaN(port)) { - span.setAttribute(SemanticAttributes.NET_PEER_PORT, port); + span.setAttribute(SEMATTRS_NET_PEER_PORT, port); } } @@ -302,24 +307,24 @@ export class CassandraDriverInstrumentation extends InstrumentationBase { { op, query }: { op: string; query?: unknown }, client: CassandraDriver.Client ): Span { - const attributes: SpanAttributes = { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.CASSANDRA, + const attributes: Attributes = { + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_CASSANDRA, }; if (this._shouldIncludeDbStatement() && query !== undefined) { const statement = truncateQuery(query, this._getMaxQueryLength()); - attributes[SemanticAttributes.DB_STATEMENT] = statement; + attributes[SEMATTRS_DB_STATEMENT] = statement; } // eslint-disable-next-line @typescript-eslint/no-explicit-any const user = (client as any).options?.credentials?.username; if (user) { - attributes[SemanticAttributes.DB_USER] = user; + attributes[SEMATTRS_DB_USER] = user; } if (client.keyspace) { - attributes[SemanticAttributes.DB_NAME] = client.keyspace; + attributes[SEMATTRS_DB_NAME] = client.keyspace; } return this.tracer.startSpan(`cassandra-driver.${op}`, { diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/test/cassandra-driver.test.ts b/plugins/node/opentelemetry-instrumentation-cassandra/test/cassandra-driver.test.ts index c7a802d4b8..c663ab0abe 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/test/cassandra-driver.test.ts +++ b/plugins/node/opentelemetry-instrumentation-cassandra/test/cassandra-driver.test.ts @@ -30,8 +30,13 @@ import { import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks'; import { - SemanticAttributes, - DbSystemValues, + DBSYSTEMVALUES_CASSANDRA, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, + SEMATTRS_DB_USER, + SEMATTRS_EXCEPTION_MESSAGE, + SEMATTRS_EXCEPTION_STACKTRACE, + SEMATTRS_EXCEPTION_TYPE, } from '@opentelemetry/semantic-conventions'; import * as assert from 'assert'; import * as testUtils from '@opentelemetry/contrib-test-utils'; @@ -60,13 +65,13 @@ function assertSpan( customAttributes?: Attributes ) { const attributes: Attributes = { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.CASSANDRA, - [SemanticAttributes.DB_USER]: 'cassandra', + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_CASSANDRA, + [SEMATTRS_DB_USER]: 'cassandra', ...customAttributes, }; if (query !== undefined) { - attributes[SemanticAttributes.DB_STATEMENT] = query; + attributes[SEMATTRS_DB_STATEMENT] = query; } const spanStatus = @@ -98,12 +103,12 @@ function assertErrorSpan( const [span] = spans; const attributes: Attributes = { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.CASSANDRA, - [SemanticAttributes.DB_USER]: 'cassandra', + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_CASSANDRA, + [SEMATTRS_DB_USER]: 'cassandra', }; if (query !== undefined) { - attributes[SemanticAttributes.DB_STATEMENT] = query; + attributes[SEMATTRS_DB_STATEMENT] = query; } const events = [ @@ -111,9 +116,9 @@ function assertErrorSpan( name: 'exception', droppedAttributesCount: 0, attributes: { - [SemanticAttributes.EXCEPTION_STACKTRACE]: error.stack, - [SemanticAttributes.EXCEPTION_MESSAGE]: error.message, - [SemanticAttributes.EXCEPTION_TYPE]: String(error.code), + [SEMATTRS_EXCEPTION_STACKTRACE]: error.stack, + [SEMATTRS_EXCEPTION_MESSAGE]: error.message, + [SEMATTRS_EXCEPTION_TYPE]: String(error.code), }, time: span.events[0].time, }, From 2ade5ae8da68c3b2e6d0d971ea6bd994d97d872b Mon Sep 17 00:00:00 2001 From: Amir Blum Date: Thu, 2 May 2024 08:18:52 +0300 Subject: [PATCH 086/121] chore: align config constructor pattern across instrumentations (#2162) * chore: align config constructor pattern across instrumentations * fix: unused import * revert: remove diag patch message * fix: align config pattern for mongoose and koa * fix: apply common config handling in setConfig --- plugins/node/instrumentation-amqplib/src/amqplib.ts | 2 +- .../node/instrumentation-dataloader/src/instrumentation.ts | 2 +- plugins/node/instrumentation-fs/src/instrumentation.ts | 2 +- .../instrumentation-lru-memoizer/src/instrumentation.ts | 2 +- plugins/node/instrumentation-mongoose/src/mongoose.ts | 6 +----- plugins/node/instrumentation-tedious/src/instrumentation.ts | 2 +- plugins/node/instrumentation-undici/src/undici.ts | 4 ++-- .../src/instrumentation.ts | 6 ++++-- .../opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts | 6 +----- .../src/instrumentation.ts | 2 +- .../src/instrumentation.ts | 6 +----- .../src/instrumentation.ts | 6 ++++-- .../src/instrumentation.ts | 6 +----- .../src/instrumentation.ts | 6 +----- .../src/instrumentation.ts | 2 +- .../src/instrumentation.ts | 5 +---- .../src/instrumentation.ts | 2 +- .../src/instrumentation.ts | 6 ++++-- .../src/instrumentation.ts | 6 +----- .../src/instrumentation.ts | 6 ++++-- .../src/instrumentation.ts | 2 +- .../src/instrumentation.ts | 2 +- .../src/instrumentation.ts | 2 +- .../src/instrumentation.ts | 4 ++-- .../opentelemetry-instrumentation-pg/src/instrumentation.ts | 6 +----- .../src/instrumentation.ts | 2 +- .../src/instrumentation.ts | 6 ++++-- .../src/instrumentation.ts | 6 ++++-- .../src/instrumentation.ts | 2 +- .../src/instrumentation.ts | 2 +- .../src/instrumentation.ts | 2 +- .../src/instrumentation.ts | 2 +- 32 files changed, 52 insertions(+), 71 deletions(-) diff --git a/plugins/node/instrumentation-amqplib/src/amqplib.ts b/plugins/node/instrumentation-amqplib/src/amqplib.ts index 16224096fc..c81e2b51a3 100644 --- a/plugins/node/instrumentation-amqplib/src/amqplib.ts +++ b/plugins/node/instrumentation-amqplib/src/amqplib.ts @@ -77,7 +77,7 @@ import { VERSION } from './version'; export class AmqplibInstrumentation extends InstrumentationBase { protected override _config!: AmqplibInstrumentationConfig; - constructor(config?: AmqplibInstrumentationConfig) { + constructor(config: AmqplibInstrumentationConfig = {}) { super( '@opentelemetry/instrumentation-amqplib', VERSION, diff --git a/plugins/node/instrumentation-dataloader/src/instrumentation.ts b/plugins/node/instrumentation-dataloader/src/instrumentation.ts index 55d53ece64..adabc3c36d 100644 --- a/plugins/node/instrumentation-dataloader/src/instrumentation.ts +++ b/plugins/node/instrumentation-dataloader/src/instrumentation.ts @@ -76,7 +76,7 @@ export class DataloaderInstrumentation extends InstrumentationBase { return this._config; } - override setConfig(config: DataloaderInstrumentationConfig) { + override setConfig(config: DataloaderInstrumentationConfig = {}) { this._config = config; } diff --git a/plugins/node/instrumentation-fs/src/instrumentation.ts b/plugins/node/instrumentation-fs/src/instrumentation.ts index d3fea1c952..08490f496b 100644 --- a/plugins/node/instrumentation-fs/src/instrumentation.ts +++ b/plugins/node/instrumentation-fs/src/instrumentation.ts @@ -52,7 +52,7 @@ function patchedFunctionWithOriginalProperties< } export default class FsInstrumentation extends InstrumentationBase { - constructor(config?: FsInstrumentationConfig) { + constructor(config: FsInstrumentationConfig = {}) { super('@opentelemetry/instrumentation-fs', VERSION, config); } diff --git a/plugins/node/instrumentation-lru-memoizer/src/instrumentation.ts b/plugins/node/instrumentation-lru-memoizer/src/instrumentation.ts index d11e803973..09112043d2 100644 --- a/plugins/node/instrumentation-lru-memoizer/src/instrumentation.ts +++ b/plugins/node/instrumentation-lru-memoizer/src/instrumentation.ts @@ -23,7 +23,7 @@ import { import { VERSION } from './version'; export default class LruMemoizerInstrumentation extends InstrumentationBase { - constructor(config?: InstrumentationConfig) { + constructor(config: InstrumentationConfig = {}) { super('@opentelemetry/instrumentation-lru-memoizer', VERSION, config); } diff --git a/plugins/node/instrumentation-mongoose/src/mongoose.ts b/plugins/node/instrumentation-mongoose/src/mongoose.ts index 3de0ea33ee..33aa3bf380 100644 --- a/plugins/node/instrumentation-mongoose/src/mongoose.ts +++ b/plugins/node/instrumentation-mongoose/src/mongoose.ts @@ -61,11 +61,7 @@ export class MongooseInstrumentation extends InstrumentationBase { protected override _config!: MongooseInstrumentationConfig; constructor(config: MongooseInstrumentationConfig = {}) { - super( - '@opentelemetry/instrumentation-mongoose', - VERSION, - Object.assign({}, config) - ); + super('@opentelemetry/instrumentation-mongoose', VERSION, config); } override setConfig(config: MongooseInstrumentationConfig = {}) { diff --git a/plugins/node/instrumentation-tedious/src/instrumentation.ts b/plugins/node/instrumentation-tedious/src/instrumentation.ts index 24935a32c3..ba63ce1eae 100644 --- a/plugins/node/instrumentation-tedious/src/instrumentation.ts +++ b/plugins/node/instrumentation-tedious/src/instrumentation.ts @@ -70,7 +70,7 @@ function setDatabase(this: ApproxConnection, databaseName: string) { export class TediousInstrumentation extends InstrumentationBase { static readonly COMPONENT = 'tedious'; - constructor(config?: TediousInstrumentationConfig) { + constructor(config: TediousInstrumentationConfig = {}) { super('@opentelemetry/instrumentation-tedious', VERSION, config); } diff --git a/plugins/node/instrumentation-undici/src/undici.ts b/plugins/node/instrumentation-undici/src/undici.ts index 0fa07f97a3..ececad63c7 100644 --- a/plugins/node/instrumentation-undici/src/undici.ts +++ b/plugins/node/instrumentation-undici/src/undici.ts @@ -66,7 +66,7 @@ export class UndiciInstrumentation extends InstrumentationBase { private _recordFromReq = new WeakMap(); private _httpClientDurationHistogram!: Histogram; - constructor(config?: UndiciInstrumentationConfig) { + constructor(config: UndiciInstrumentationConfig = {}) { super('@opentelemetry/instrumentation-undici', VERSION, config); this.setConfig(config); } @@ -111,7 +111,7 @@ export class UndiciInstrumentation extends InstrumentationBase { this.subscribeToChannel('undici:request:error', this.onError.bind(this)); } - override setConfig(config?: UndiciInstrumentationConfig): void { + override setConfig(config: UndiciInstrumentationConfig = {}): void { super.setConfig(config); if (config?.enabled) { diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts index 0b88aeec75..6d475f91dc 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/src/instrumentation.ts @@ -77,8 +77,10 @@ export class AwsLambdaInstrumentation extends InstrumentationBase { private _traceForceFlusher?: () => Promise; private _metricForceFlusher?: () => Promise; - constructor(protected override _config: AwsLambdaInstrumentationConfig = {}) { - super('@opentelemetry/instrumentation-aws-lambda', VERSION, _config); + protected override _config!: AwsLambdaInstrumentationConfig; + + constructor(config: AwsLambdaInstrumentationConfig = {}) { + super('@opentelemetry/instrumentation-aws-lambda', VERSION, config); if (this._config.disableAwsContextPropagation == null) { if ( typeof env['OTEL_LAMBDA_DISABLE_AWS_CONTEXT_PROPAGATION'] === diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts index 7203010630..d20d480180 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts @@ -78,11 +78,7 @@ export class AwsInstrumentation extends InstrumentationBase { private servicesExtensions: ServicesExtensions = new ServicesExtensions(); constructor(config: AwsSdkInstrumentationConfig = {}) { - super( - '@opentelemetry/instrumentation-aws-sdk', - VERSION, - Object.assign({}, config) - ); + super('@opentelemetry/instrumentation-aws-sdk', VERSION, config); } override setConfig(config: AwsSdkInstrumentationConfig = {}) { diff --git a/plugins/node/opentelemetry-instrumentation-bunyan/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-bunyan/src/instrumentation.ts index 571cbc992e..0f218787ea 100644 --- a/plugins/node/opentelemetry-instrumentation-bunyan/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-bunyan/src/instrumentation.ts @@ -103,7 +103,7 @@ export class BunyanInstrumentation extends InstrumentationBase { return this._config; } - override setConfig(config: BunyanInstrumentationConfig) { + override setConfig(config: BunyanInstrumentationConfig = {}) { this._config = Object.assign({}, DEFAULT_CONFIG, config); } diff --git a/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts index f1d13bb575..63264490bc 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts @@ -43,11 +43,7 @@ export const ANONYMOUS_NAME = 'anonymous'; /** Connect instrumentation for OpenTelemetry */ export class ConnectInstrumentation extends InstrumentationBase { constructor(config: InstrumentationConfig = {}) { - super( - '@opentelemetry/instrumentation-connect', - VERSION, - Object.assign({}, config) - ); + super('@opentelemetry/instrumentation-connect', VERSION, config); } init() { diff --git a/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts index 37ad2822fb..f408f7f17b 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts @@ -37,8 +37,10 @@ import { * Dns instrumentation for Opentelemetry */ export class DnsInstrumentation extends InstrumentationBase { - constructor(protected override _config: DnsInstrumentationConfig = {}) { - super('@opentelemetry/instrumentation-dns', VERSION, _config); + protected override _config!: DnsInstrumentationConfig; + + constructor(config: DnsInstrumentationConfig = {}) { + super('@opentelemetry/instrumentation-dns', VERSION, config); } init(): ( diff --git a/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts index b20121b304..45a07f7446 100644 --- a/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts @@ -51,11 +51,7 @@ import { /** Express instrumentation for OpenTelemetry */ export class ExpressInstrumentation extends InstrumentationBase { constructor(config: ExpressInstrumentationConfig = {}) { - super( - '@opentelemetry/instrumentation-express', - VERSION, - Object.assign({}, config) - ); + super('@opentelemetry/instrumentation-express', VERSION, config); } override setConfig(config: ExpressInstrumentationConfig = {}) { diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts index aebf1bf721..914b608fd8 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts @@ -48,11 +48,7 @@ export const ANONYMOUS_NAME = 'anonymous'; /** Fastify instrumentation for OpenTelemetry */ export class FastifyInstrumentation extends InstrumentationBase { constructor(config: FastifyInstrumentationConfig = {}) { - super( - '@opentelemetry/instrumentation-fastify', - VERSION, - Object.assign({}, config) - ); + super('@opentelemetry/instrumentation-fastify', VERSION, config); } override setConfig(config: FastifyInstrumentationConfig = {}) { diff --git a/plugins/node/opentelemetry-instrumentation-generic-pool/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-generic-pool/src/instrumentation.ts index 29f3671688..adefe5a7be 100644 --- a/plugins/node/opentelemetry-instrumentation-generic-pool/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-generic-pool/src/instrumentation.ts @@ -33,7 +33,7 @@ export default class Instrumentation extends InstrumentationBase { private _isDisabled = false; constructor(config: InstrumentationConfig = {}) { - super(`@opentelemetry/instrumentation-${MODULE_NAME}`, VERSION); + super(`@opentelemetry/instrumentation-${MODULE_NAME}`, VERSION, config); } init() { diff --git a/plugins/node/opentelemetry-instrumentation-graphql/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-graphql/src/instrumentation.ts index ddae6e3ddb..32fc2f4507 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-graphql/src/instrumentation.ts @@ -18,7 +18,6 @@ import { context, trace } from '@opentelemetry/api'; import { isWrapped, InstrumentationBase, - InstrumentationConfig, InstrumentationNodeModuleDefinition, InstrumentationNodeModuleFile, safeExecuteInTheMiddle, @@ -65,9 +64,7 @@ const DEFAULT_CONFIG: GraphQLInstrumentationConfig = { const supportedVersions = ['>=14 <17']; export class GraphQLInstrumentation extends InstrumentationBase { - constructor( - config: GraphQLInstrumentationConfig & InstrumentationConfig = {} - ) { + constructor(config: GraphQLInstrumentationConfig = {}) { super( '@opentelemetry/instrumentation-graphql', VERSION, diff --git a/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts index 2b1988aa69..af550b137c 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts @@ -49,7 +49,7 @@ import { /** Hapi instrumentation for OpenTelemetry */ export class HapiInstrumentation extends InstrumentationBase { - constructor(config?: InstrumentationConfig) { + constructor(config: InstrumentationConfig = {}) { super('@opentelemetry/instrumentation-hapi', VERSION, config); } diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts index 26b671ab1f..00e3257ed4 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts @@ -36,11 +36,13 @@ const DEFAULT_CONFIG: IORedisInstrumentationConfig = { }; export class IORedisInstrumentation extends InstrumentationBase { - constructor(_config: IORedisInstrumentationConfig = {}) { + protected override _config!: IORedisInstrumentationConfig; + + constructor(config: IORedisInstrumentationConfig = {}) { super( '@opentelemetry/instrumentation-ioredis', VERSION, - Object.assign({}, DEFAULT_CONFIG, _config) + Object.assign({}, DEFAULT_CONFIG, config) ); } diff --git a/plugins/node/opentelemetry-instrumentation-koa/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-koa/src/instrumentation.ts index 742e500122..ab6c2927be 100644 --- a/plugins/node/opentelemetry-instrumentation-koa/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-koa/src/instrumentation.ts @@ -36,11 +36,7 @@ import { /** Koa instrumentation for OpenTelemetry */ export class KoaInstrumentation extends InstrumentationBase { constructor(config: KoaInstrumentationConfig = {}) { - super( - '@opentelemetry/instrumentation-koa', - VERSION, - Object.assign({}, config) - ); + super('@opentelemetry/instrumentation-koa', VERSION, config); } override setConfig(config: KoaInstrumentationConfig = {}) { diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts index f7c9e99d3a..7f9fa8e9c3 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mongodb/src/instrumentation.ts @@ -58,8 +58,10 @@ export class MongoDBInstrumentation extends InstrumentationBase { private _connectionsUsage!: UpDownCounter; private _poolName!: string; - constructor(protected override _config: MongoDBInstrumentationConfig = {}) { - super('@opentelemetry/instrumentation-mongodb', VERSION, _config); + protected override _config!: MongoDBInstrumentationConfig; + + constructor(config: MongoDBInstrumentationConfig = {}) { + super('@opentelemetry/instrumentation-mongodb', VERSION, config); } override _updateMetricInstruments() { diff --git a/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts index 2e4ba8675e..f4de0bc36a 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts @@ -57,7 +57,7 @@ export class MySQLInstrumentation extends InstrumentationBase { }; private _connectionsUsage!: UpDownCounter; - constructor(config?: MySQLInstrumentationConfig) { + constructor(config: MySQLInstrumentationConfig = {}) { super('@opentelemetry/instrumentation-mysql', VERSION, config); this._setMetricInstruments(); } diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts index e693488de0..18cb1681e0 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts @@ -44,7 +44,7 @@ export class MySQL2Instrumentation extends InstrumentationBase { [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_MYSQL, }; - constructor(config?: MySQL2InstrumentationConfig) { + constructor(config: MySQL2InstrumentationConfig = {}) { super('@opentelemetry/instrumentation-mysql2', VERSION, config); } diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts index c480f3a546..29b86aadba 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts @@ -36,7 +36,7 @@ export class Instrumentation extends InstrumentationBase { }; constructor(config: InstrumentationConfig = {}) { - super('@opentelemetry/instrumentation-nestjs-core', VERSION); + super('@opentelemetry/instrumentation-nestjs-core', VERSION, config); } init() { diff --git a/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts index 49611da87c..b832473ef4 100644 --- a/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts @@ -35,8 +35,8 @@ import { TLSSocket } from 'tls'; import type * as net from 'net'; export class NetInstrumentation extends InstrumentationBase { - constructor(_config?: InstrumentationConfig) { - super('@opentelemetry/instrumentation-net', VERSION, _config); + constructor(config: InstrumentationConfig = {}) { + super('@opentelemetry/instrumentation-net', VERSION, config); } init(): InstrumentationNodeModuleDefinition[] { diff --git a/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts index d8043af302..38ccad0fe4 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-pg/src/instrumentation.ts @@ -44,11 +44,7 @@ import { SpanNames } from './enums/SpanNames'; export class PgInstrumentation extends InstrumentationBase { constructor(config: PgInstrumentationConfig = {}) { - super( - '@opentelemetry/instrumentation-pg', - VERSION, - Object.assign({}, config) - ); + super('@opentelemetry/instrumentation-pg', VERSION, config); } protected init() { diff --git a/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts index d5821a2f6f..96a0796cc5 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-pino/src/instrumentation.ts @@ -97,7 +97,7 @@ export class PinoInstrumentation extends InstrumentationBase { return this._config; } - override setConfig(config: PinoInstrumentationConfig) { + override setConfig(config: PinoInstrumentationConfig = {}) { this._config = config; } diff --git a/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts index a431fd76ca..75ae380965 100644 --- a/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-redis-4/src/instrumentation.ts @@ -54,8 +54,10 @@ const DEFAULT_CONFIG: RedisInstrumentationConfig = { export class RedisInstrumentation extends InstrumentationBase { static readonly COMPONENT = 'redis'; - constructor(protected override _config: RedisInstrumentationConfig = {}) { - super('@opentelemetry/instrumentation-redis-4', VERSION, _config); + protected override _config!: RedisInstrumentationConfig; + + constructor(config: RedisInstrumentationConfig = {}) { + super('@opentelemetry/instrumentation-redis-4', VERSION, config); } override setConfig(config: RedisInstrumentationConfig = {}) { diff --git a/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts index 09ee03e6ad..85bb908c07 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts @@ -35,8 +35,10 @@ const DEFAULT_CONFIG: RedisInstrumentationConfig = { export class RedisInstrumentation extends InstrumentationBase { static readonly COMPONENT = 'redis'; - constructor(protected override _config: RedisInstrumentationConfig = {}) { - super('@opentelemetry/instrumentation-redis', VERSION, _config); + protected override _config!: RedisInstrumentationConfig; + + constructor(config: RedisInstrumentationConfig = {}) { + super('@opentelemetry/instrumentation-redis', VERSION, config); } override setConfig(config: RedisInstrumentationConfig = {}) { diff --git a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts index 73b8b8f5e7..a00c24ba98 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-restify/src/instrumentation.ts @@ -40,7 +40,7 @@ export class RestifyInstrumentation extends InstrumentationBase { super( `@opentelemetry/instrumentation-${constants.MODULE_NAME}`, VERSION, - Object.assign({}, config) + config ); } diff --git a/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts index 02e01d287e..fb02262e30 100644 --- a/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-router/src/instrumentation.ts @@ -35,7 +35,7 @@ import AttributeNames from './enums/AttributeNames'; import LayerType from './enums/LayerType'; export default class RouterInstrumentation extends InstrumentationBase { - constructor(config?: InstrumentationConfig) { + constructor(config: InstrumentationConfig = {}) { super( `@opentelemetry/instrumentation-${constants.MODULE_NAME}`, VERSION, diff --git a/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts index 2e75400741..4d4b1cfcc5 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-winston/src/instrumentation.ts @@ -116,7 +116,7 @@ export class WinstonInstrumentation extends InstrumentationBase { return this._config; } - override setConfig(config: WinstonInstrumentationConfig) { + override setConfig(config: WinstonInstrumentationConfig = {}) { this._config = config; } diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/src/instrumentation.ts b/plugins/web/opentelemetry-instrumentation-user-interaction/src/instrumentation.ts index bba10b2ff9..ea05bddbf1 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/src/instrumentation.ts +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/src/instrumentation.ts @@ -67,7 +67,7 @@ export class UserInteractionInstrumentation extends InstrumentationBase { private _eventNames: Set; private _shouldPreventSpanCreation: ShouldPreventSpanCreation; - constructor(config?: UserInteractionInstrumentationConfig) { + constructor(config: UserInteractionInstrumentationConfig = {}) { super('@opentelemetry/instrumentation-user-interaction', VERSION, config); this._eventNames = new Set(config?.eventNames ?? DEFAULT_EVENT_NAMES); this._shouldPreventSpanCreation = From 34f56e0e28a0873b69a499c9e91798b19fea8e96 Mon Sep 17 00:00:00 2001 From: Amir Blum Date: Thu, 2 May 2024 09:10:48 +0300 Subject: [PATCH 087/121] fix: remove unuseful patch message from instrumentations (#2161) * chore(mongoose): remove diag prints in patch * chore(tedious): remove diag prints in patch * chore(dns): remove diag prints in patch * chore(fastify): remove diag prints in patch * chore(hapi): remove diag prints in patch * chore(knex): remove diag prints in patch * chore(mysql): remove diag prints in patch * chore(pg): remove diag prints in patch * chore(redis): remove diag prints in patch * docs: document when to use diag for patch * chore: lint markdown * fix: unused import * chore: remove unused import * Update GUIDELINES.md Co-authored-by: Jamie Danielson * Update GUIDELINES.md Co-authored-by: Jamie Danielson * Update GUIDELINES.md Co-authored-by: Jamie Danielson * Update GUIDELINES.md Co-authored-by: Jamie Danielson * Update GUIDELINES.md Co-authored-by: Jamie Danielson * Update GUIDELINES.md Co-authored-by: Trent Mick * fix: name of diag in CHANGELOG --------- Co-authored-by: Jamie Danielson Co-authored-by: Trent Mick --- GUIDELINES.md | 33 +++++++++++++++++++ .../instrumentation-mongoose/src/mongoose.ts | 5 --- .../src/instrumentation.ts | 3 -- .../src/instrumentation.ts | 1 - .../src/instrumentation.ts | 1 - .../src/instrumentation.ts | 3 -- .../src/instrumentation.ts | 5 +-- .../src/instrumentation.ts | 13 -------- .../src/instrumentation.ts | 3 -- .../src/instrumentation.ts | 4 --- 10 files changed, 34 insertions(+), 37 deletions(-) diff --git a/GUIDELINES.md b/GUIDELINES.md index b67f294370..04bc219b14 100644 --- a/GUIDELINES.md +++ b/GUIDELINES.md @@ -164,3 +164,36 @@ To support this use case, you can choose one of the following options: }; ... ``` + +## Diag Logging + +The OpenTelemetry diagnostic logging channel can be used to troubleshoot issues with instrumentation packages. + +### Patching Messages + +When OpenTelemetry is installed in a user application, and expected spans are missing from generated traces, it is often useful to differentiate between the following scenarios: + +- The instrumentation is not auto loaded - due to issue with the require/import interception, an unsupported version of the instrumented package, or some other issue. This knowledge can pin-point the issue to the instrumentation package. +- The instrumentation patch was applied but expected spans are missing -- this can suggest an issue with instrumented package logic, configuration, limits, otel sdk, or other issues. + +It can also be useful to know when the instrumentation is loaded and patched, to understand the order of operations in the application. + +Instrumentation packages should use the `@opentelemetry/instrumentation` package `InstrumentationBase` class to register patches and unpatch callbacks for specific require/import of the instrumented package, it's dependency or an internal module file. When this mechanism is used, the base class will automatically emit a debug message on instrumentation diag component logger, looking like this: + +```shell +@opentelemetry/instrumentation-foo Applying instrumentation patch for module on require hook { + module: 'foo', + version: '1.2.3', + baseDir: '/node_modules/foo' +} +``` + +Instrumentation should not add additional debug messages for triggering the patching and unpatching callbacks, as the base class will handle this. + +Instrumentation may add additional patch/unpatch messages for specific functions if it is expected to help in troubleshooting issues with the instrumentation. Few examples: + +- If the patch logic is conditional, and user can benefit from ensuring the condition is met and the patch happened. `koa` patching logic examine an object and branch between patching it as router vs middleware, which is applied at runtime. `aws-lambda` will abort patching if the environment is not configured properly. +- When the patch is not applied directly on a `moduleExports` object in the `InstrumentationBase` callbacks, but rather from an event in the package, like creating new client instance, registering a listener, etc. `fastify` instrumentation applies a patch when a hook is added to the fastify app instance, which is patched from `moduleExports`. +- In situations where the patch logic is not trivial and it helps to specify patch events in the right context and nuances. `aws-lambda` logs additional properties extracted from the lambda framework and exposes them for troubleshooting. + +The cases above are not covered by the base class and offer additional context to the user troubleshooting an issue with the instrumentation. diff --git a/plugins/node/instrumentation-mongoose/src/mongoose.ts b/plugins/node/instrumentation-mongoose/src/mongoose.ts index 33aa3bf380..ff76b33735 100644 --- a/plugins/node/instrumentation-mongoose/src/mongoose.ts +++ b/plugins/node/instrumentation-mongoose/src/mongoose.ts @@ -137,7 +137,6 @@ export class MongooseInstrumentation extends InstrumentationBase { private patchAggregateExec(moduleVersion: string | undefined) { const self = this; - this._diag.debug('patched mongoose Aggregate exec function'); return (originalAggregate: Function) => { return function exec(this: any, callback?: Function) { if ( @@ -179,7 +178,6 @@ export class MongooseInstrumentation extends InstrumentationBase { private patchQueryExec(moduleVersion: string | undefined) { const self = this; - this._diag.debug('patched mongoose Query exec function'); return (originalExec: Function) => { return function exec(this: any, callback?: Function) { if ( @@ -222,7 +220,6 @@ export class MongooseInstrumentation extends InstrumentationBase { private patchOnModelMethods(op: string, moduleVersion: string | undefined) { const self = this; - this._diag.debug(`patching mongoose Model '${op}' operation`); return (originalOnModelFunction: Function) => { return function method(this: any, options?: any, callback?: Function) { if ( @@ -271,7 +268,6 @@ export class MongooseInstrumentation extends InstrumentationBase { // the aggregate of Model, and set the context on the Aggregate object private patchModelAggregate() { const self = this; - this._diag.debug('patched mongoose model aggregate function'); return (original: Function) => { return function captureSpanContext(this: any) { const currentSpan = trace.getSpan(context.active()); @@ -286,7 +282,6 @@ export class MongooseInstrumentation extends InstrumentationBase { private patchAndCaptureSpanContext(funcName: string) { const self = this; - this._diag.debug(`patching mongoose query ${funcName} function`); return (original: Function) => { return function captureSpanContext(this: any) { this[_STORED_PARENT_SPAN] = trace.getSpan(context.active()); diff --git a/plugins/node/instrumentation-tedious/src/instrumentation.ts b/plugins/node/instrumentation-tedious/src/instrumentation.ts index ba63ce1eae..78b11de517 100644 --- a/plugins/node/instrumentation-tedious/src/instrumentation.ts +++ b/plugins/node/instrumentation-tedious/src/instrumentation.ts @@ -129,9 +129,6 @@ export class TediousInstrumentation extends InstrumentationBase { private _patchQuery(operation: string) { return (originalMethod: UnknownFunction): UnknownFunction => { const thisPlugin = this; - this._diag.debug( - `TediousInstrumentation: patched Connection.prototype.${operation}` - ); function patchedMethod(this: ApproxConnection, request: ApproxRequest) { if (!(request instanceof EventEmitter)) { diff --git a/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts index f408f7f17b..0be1211a60 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-dns/src/instrumentation.ts @@ -105,7 +105,6 @@ export class DnsInstrumentation extends InstrumentationBase { private _getPatchLookupFunction( original: (hostname: string, ...args: unknown[]) => void ) { - diag.debug('patch lookup function'); const plugin = this; return function patchedLookup( this: {}, diff --git a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts index 914b608fd8..208a2e09a5 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-fastify/src/instrumentation.ts @@ -194,7 +194,6 @@ export class FastifyInstrumentation extends InstrumentationBase { fastify: () => FastifyInstance; }): () => FastifyInstance { const instrumentation = this; - this._diag.debug('Patching fastify constructor function'); function fastify(this: FastifyInstance, ...args: any) { const app: FastifyInstance = moduleExports.fastify.apply(this, args); diff --git a/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts index af550b137c..ac930ffa68 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts @@ -135,7 +135,6 @@ export class HapiInstrumentation extends InstrumentationBase { original: RegisterFunction ): RegisterFunction { const instrumentation: HapiInstrumentation = this; - api.diag.debug('Patching Hapi.Server register function'); return function register( this: Hapi.Server, pluginInput: HapiPluginInput, @@ -169,7 +168,6 @@ export class HapiInstrumentation extends InstrumentationBase { pluginName?: string ) { const instrumentation: HapiInstrumentation = this; - api.diag.debug('Patching Hapi.Server ext function'); return function ext( this: ThisParameterType, @@ -231,7 +229,6 @@ export class HapiInstrumentation extends InstrumentationBase { pluginName?: string ) { const instrumentation: HapiInstrumentation = this; - api.diag.debug('Patching Hapi.Server route function'); return function route( this: Hapi.Server, route: HapiServerRouteInput diff --git a/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts index 40577aa886..762b9d1455 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-knex/src/instrumentation.ts @@ -109,10 +109,7 @@ export class KnexInstrumentation extends InstrumentationBase { ); return Client; }, - (Client: any, moduleVersion) => { - api.diag.debug( - `Removing ${basePath}/client.js patch for ${constants.MODULE_NAME}@${moduleVersion}` - ); + (Client: any) => { this._unwrap(Client.prototype, 'queryBuilder'); this._unwrap(Client.prototype, 'schemaBuilder'); this._unwrap(Client.prototype, 'raw'); diff --git a/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts index f4de0bc36a..cf43c406e6 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql/src/instrumentation.ts @@ -17,7 +17,6 @@ import { context, Context, - diag, trace, Span, SpanKind, @@ -84,7 +83,6 @@ export class MySQLInstrumentation extends InstrumentationBase { 'mysql', ['2.*'], (moduleExports: typeof mysqlTypes) => { - diag.debug('Patching mysql.createConnection'); if (isWrapped(moduleExports.createConnection)) { this._unwrap(moduleExports, 'createConnection'); } @@ -94,7 +92,6 @@ export class MySQLInstrumentation extends InstrumentationBase { this._patchCreateConnection() as any ); - diag.debug('Patching mysql.createPool'); if (isWrapped(moduleExports.createPool)) { this._unwrap(moduleExports, 'createPool'); } @@ -104,7 +101,6 @@ export class MySQLInstrumentation extends InstrumentationBase { this._patchCreatePool() as any ); - diag.debug('Patching mysql.createPoolCluster'); if (isWrapped(moduleExports.createPoolCluster)) { this._unwrap(moduleExports, 'createPoolCluster'); } @@ -130,7 +126,6 @@ export class MySQLInstrumentation extends InstrumentationBase { private _patchCreateConnection() { return (originalCreateConnection: Function) => { const thisPlugin = this; - diag.debug('MySQLInstrumentation#patch: patched mysql createConnection'); return function createConnection( _connectionUri: string | mysqlTypes.ConnectionConfig @@ -153,7 +148,6 @@ export class MySQLInstrumentation extends InstrumentationBase { private _patchCreatePool() { return (originalCreatePool: Function) => { const thisPlugin = this; - diag.debug('MySQLInstrumentation#patch: patched mysql createPool'); return function createPool(_config: string | mysqlTypes.PoolConfig) { const pool = originalCreatePool(...arguments); @@ -173,7 +167,6 @@ export class MySQLInstrumentation extends InstrumentationBase { private _patchPoolEnd(pool: any) { return (originalPoolEnd: Function) => { const thisPlugin = this; - diag.debug('MySQLInstrumentation#patch: patched mysql pool end'); return function end(callback?: unknown) { const nAll = (pool as any)._allConnections.length; const nFree = (pool as any)._freeConnections.length; @@ -196,7 +189,6 @@ export class MySQLInstrumentation extends InstrumentationBase { private _patchCreatePoolCluster() { return (originalCreatePoolCluster: Function) => { const thisPlugin = this; - diag.debug('MySQLInstrumentation#patch: patched mysql createPoolCluster'); return function createPool(_config: string | mysqlTypes.PoolConfig) { const cluster = originalCreatePoolCluster(...arguments); @@ -215,7 +207,6 @@ export class MySQLInstrumentation extends InstrumentationBase { private _patchAdd(cluster: mysqlTypes.PoolCluster) { return (originalAdd: Function) => { const thisPlugin = this; - diag.debug('MySQLInstrumentation#patch: patched mysql pool cluster add'); return function add(id: string, config: unknown) { // Unwrap if unpatch has been called if (!thisPlugin['_enabled']) { @@ -241,9 +232,6 @@ export class MySQLInstrumentation extends InstrumentationBase { private _patchGetConnection(pool: mysqlTypes.Pool | mysqlTypes.PoolCluster) { return (originalGetConnection: Function) => { const thisPlugin = this; - diag.debug( - 'MySQLInstrumentation#patch: patched mysql pool getConnection' - ); return function getConnection( arg1?: unknown, @@ -308,7 +296,6 @@ export class MySQLInstrumentation extends InstrumentationBase { private _patchQuery(connection: mysqlTypes.Connection | mysqlTypes.Pool) { return (originalQuery: Function): mysqlTypes.QueryFunction => { const thisPlugin = this; - diag.debug('MySQLInstrumentation: patched mysql query'); return function query( query: string | mysqlTypes.Query | mysqlTypes.QueryOptions, diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts index 18cb1681e0..ade7fd117f 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql2/src/instrumentation.ts @@ -56,7 +56,6 @@ export class MySQL2Instrumentation extends InstrumentationBase { (moduleExports: any) => { const ConnectionPrototype: mysqlTypes.Connection = moduleExports.Connection.prototype; - api.diag.debug('Patching Connection.prototype.query'); if (isWrapped(ConnectionPrototype.query)) { this._unwrap(ConnectionPrototype, 'query'); } @@ -91,8 +90,6 @@ export class MySQL2Instrumentation extends InstrumentationBase { private _patchQuery(format: formatType, isPrepared: boolean) { return (originalQuery: Function): Function => { const thisPlugin = this; - api.diag.debug('MySQL2Instrumentation: patched mysql query/execute'); - return function query( this: mysqlTypes.Connection, query: string | mysqlTypes.Query | mysqlTypes.QueryOptions, diff --git a/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts index 85bb908c07..8d6f2ba88d 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-redis/src/instrumentation.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { diag } from '@opentelemetry/api'; import { isWrapped, InstrumentationBase, @@ -51,7 +50,6 @@ export class RedisInstrumentation extends InstrumentationBase { 'redis', ['^2.6.0', '^3.0.0'], moduleExports => { - diag.debug('Patching redis.RedisClient.internal_send_command'); if ( isWrapped( moduleExports.RedisClient.prototype['internal_send_command'] @@ -68,7 +66,6 @@ export class RedisInstrumentation extends InstrumentationBase { this._getPatchInternalSendCommand() ); - diag.debug('patching redis.RedisClient.create_stream'); if (isWrapped(moduleExports.RedisClient.prototype['create_stream'])) { this._unwrap(moduleExports.RedisClient.prototype, 'create_stream'); } @@ -78,7 +75,6 @@ export class RedisInstrumentation extends InstrumentationBase { this._getPatchCreateStream() ); - diag.debug('patching redis.createClient'); if (isWrapped(moduleExports.createClient)) { this._unwrap(moduleExports, 'createClient'); } From a2e2b5a1aa2910b903829d215184c43d2107b9ac Mon Sep 17 00:00:00 2001 From: Daniel Dyla Date: Thu, 2 May 2024 03:51:55 -0400 Subject: [PATCH 088/121] chore: release main (#2164) * chore: release main * chore: sync package-lock.json --------- Co-authored-by: opentelemetrybot <107717825+opentelemetrybot@users.noreply.github.com> --- .release-please-manifest.json | 24 +++---- .../auto-instrumentations-node/CHANGELOG.md | 26 +++++++ .../auto-instrumentations-node/package.json | 24 +++---- package-lock.json | 68 +++++++++---------- .../instrumentation-mongoose/CHANGELOG.md | 7 ++ .../instrumentation-mongoose/package.json | 2 +- .../node/instrumentation-tedious/CHANGELOG.md | 7 ++ .../node/instrumentation-tedious/package.json | 2 +- .../CHANGELOG.md | 7 ++ .../package.json | 2 +- .../CHANGELOG.md | 7 ++ .../package.json | 2 +- .../CHANGELOG.md | 12 ++++ .../package.json | 2 +- .../CHANGELOG.md | 8 +++ .../package.json | 2 +- .../CHANGELOG.md | 7 ++ .../package.json | 2 +- .../CHANGELOG.md | 7 ++ .../package.json | 2 +- .../CHANGELOG.md | 7 ++ .../package.json | 2 +- .../CHANGELOG.md | 7 ++ .../package.json | 2 +- .../CHANGELOG.md | 8 +++ .../package.json | 2 +- 26 files changed, 179 insertions(+), 69 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index ea3c50877d..eb6cd74761 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -6,7 +6,7 @@ "detectors/node/opentelemetry-resource-detector-gcp": "0.29.9", "detectors/node/opentelemetry-resource-detector-github": "0.28.2", "detectors/node/opentelemetry-resource-detector-instana": "0.9.0", - "metapackages/auto-instrumentations-node": "0.45.0", + "metapackages/auto-instrumentations-node": "0.46.0", "metapackages/auto-instrumentations-web": "0.39.0", "packages/opentelemetry-host-metrics": "0.35.1", "packages/opentelemetry-id-generator-aws-xray": "1.2.2", @@ -20,34 +20,34 @@ "plugins/node/instrumentation-dataloader": "0.9.0", "plugins/node/instrumentation-fs": "0.12.0", "plugins/node/instrumentation-lru-memoizer": "0.37.0", - "plugins/node/instrumentation-mongoose": "0.38.0", + "plugins/node/instrumentation-mongoose": "0.38.1", "plugins/node/instrumentation-runtime-node": "0.4.0", "plugins/node/instrumentation-socket.io": "0.39.0", - "plugins/node/instrumentation-tedious": "0.10.0", + "plugins/node/instrumentation-tedious": "0.10.1", "plugins/node/instrumentation-undici": "0.2.0", "plugins/node/opentelemetry-instrumentation-aws-lambda": "0.41.0", "plugins/node/opentelemetry-instrumentation-aws-sdk": "0.41.0", "plugins/node/opentelemetry-instrumentation-bunyan": "0.38.0", "plugins/node/opentelemetry-instrumentation-cassandra": "0.38.0", "plugins/node/opentelemetry-instrumentation-connect": "0.36.0", - "plugins/node/opentelemetry-instrumentation-dns": "0.36.0", + "plugins/node/opentelemetry-instrumentation-dns": "0.36.1", "plugins/node/opentelemetry-instrumentation-express": "0.38.0", - "plugins/node/opentelemetry-instrumentation-fastify": "0.36.0", + "plugins/node/opentelemetry-instrumentation-fastify": "0.36.1", "plugins/node/opentelemetry-instrumentation-generic-pool": "0.36.0", "plugins/node/opentelemetry-instrumentation-graphql": "0.40.0", - "plugins/node/opentelemetry-instrumentation-hapi": "0.37.0", + "plugins/node/opentelemetry-instrumentation-hapi": "0.38.0", "plugins/node/opentelemetry-instrumentation-ioredis": "0.40.0", - "plugins/node/opentelemetry-instrumentation-knex": "0.36.0", + "plugins/node/opentelemetry-instrumentation-knex": "0.36.1", "plugins/node/opentelemetry-instrumentation-koa": "0.40.0", "plugins/node/opentelemetry-instrumentation-memcached": "0.36.0", "plugins/node/opentelemetry-instrumentation-mongodb": "0.43.0", - "plugins/node/opentelemetry-instrumentation-mysql": "0.38.0", - "plugins/node/opentelemetry-instrumentation-mysql2": "0.38.0", - "plugins/node/opentelemetry-instrumentation-nestjs-core": "0.37.0", + "plugins/node/opentelemetry-instrumentation-mysql": "0.38.1", + "plugins/node/opentelemetry-instrumentation-mysql2": "0.38.1", + "plugins/node/opentelemetry-instrumentation-nestjs-core": "0.37.1", "plugins/node/opentelemetry-instrumentation-net": "0.36.0", "plugins/node/opentelemetry-instrumentation-pg": "0.41.0", - "plugins/node/opentelemetry-instrumentation-pino": "0.38.0", - "plugins/node/opentelemetry-instrumentation-redis": "0.39.0", + "plugins/node/opentelemetry-instrumentation-pino": "0.39.0", + "plugins/node/opentelemetry-instrumentation-redis": "0.39.1", "plugins/node/opentelemetry-instrumentation-redis-4": "0.39.0", "plugins/node/opentelemetry-instrumentation-restify": "0.38.0", "plugins/node/opentelemetry-instrumentation-router": "0.37.0", diff --git a/metapackages/auto-instrumentations-node/CHANGELOG.md b/metapackages/auto-instrumentations-node/CHANGELOG.md index 51b021f535..31f144fd3d 100644 --- a/metapackages/auto-instrumentations-node/CHANGELOG.md +++ b/metapackages/auto-instrumentations-node/CHANGELOG.md @@ -152,6 +152,32 @@ * dependencies * @opentelemetry/instrumentation-aws-sdk bumped from ^0.38.0 to ^0.38.1 +## [0.46.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-node-v0.45.0...auto-instrumentations-node-v0.46.0) (2024-05-02) + + +### Features + +* **auto-instrumentation-node:** add azure detector ([#2101](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2101)) ([af2f3f1](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/af2f3f1e5a2608900fcea721f08b2e541a17927c)) +* **auto-instrumentation-node:** add options for `serviceinstance` ([#2158](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2158)) ([379b757](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/379b7571fe3fead239285b503581094f42a79d66)) +* **auto-instrumentation-node:** add undici instrumentation ([#2131](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2131)) ([4463483](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4463483515c335de4cbb5b066f92c7ce0336619a)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/instrumentation-dns bumped from ^0.36.0 to ^0.36.1 + * @opentelemetry/instrumentation-fastify bumped from ^0.36.0 to ^0.36.1 + * @opentelemetry/instrumentation-hapi bumped from ^0.37.0 to ^0.38.0 + * @opentelemetry/instrumentation-knex bumped from ^0.36.0 to ^0.36.1 + * @opentelemetry/instrumentation-mongoose bumped from ^0.38.0 to ^0.38.1 + * @opentelemetry/instrumentation-mysql bumped from ^0.38.0 to ^0.38.1 + * @opentelemetry/instrumentation-mysql2 bumped from ^0.38.0 to ^0.38.1 + * @opentelemetry/instrumentation-nestjs-core bumped from ^0.37.0 to ^0.37.1 + * @opentelemetry/instrumentation-pino bumped from ^0.38.0 to ^0.39.0 + * @opentelemetry/instrumentation-redis bumped from ^0.39.0 to ^0.39.1 + * @opentelemetry/instrumentation-tedious bumped from ^0.10.0 to ^0.10.1 + ## [0.45.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-node-v0.44.0...auto-instrumentations-node-v0.45.0) (2024-04-25) diff --git a/metapackages/auto-instrumentations-node/package.json b/metapackages/auto-instrumentations-node/package.json index e4b40119a1..0a3ae85cc1 100644 --- a/metapackages/auto-instrumentations-node/package.json +++ b/metapackages/auto-instrumentations-node/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/auto-instrumentations-node", - "version": "0.45.0", + "version": "0.46.0", "description": "Metapackage which bundles opentelemetry node core and contrib instrumentations", "author": "OpenTelemetry Authors", "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/metapackages/auto-instrumentations-node#readme", @@ -58,34 +58,34 @@ "@opentelemetry/instrumentation-connect": "^0.36.0", "@opentelemetry/instrumentation-cucumber": "^0.6.0", "@opentelemetry/instrumentation-dataloader": "^0.9.0", - "@opentelemetry/instrumentation-dns": "^0.36.0", + "@opentelemetry/instrumentation-dns": "^0.36.1", "@opentelemetry/instrumentation-express": "^0.38.0", - "@opentelemetry/instrumentation-fastify": "^0.36.0", + "@opentelemetry/instrumentation-fastify": "^0.36.1", "@opentelemetry/instrumentation-fs": "^0.12.0", "@opentelemetry/instrumentation-generic-pool": "^0.36.0", "@opentelemetry/instrumentation-graphql": "^0.40.0", "@opentelemetry/instrumentation-grpc": "^0.51.0", - "@opentelemetry/instrumentation-hapi": "^0.37.0", + "@opentelemetry/instrumentation-hapi": "^0.38.0", "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/instrumentation-ioredis": "^0.40.0", - "@opentelemetry/instrumentation-knex": "^0.36.0", + "@opentelemetry/instrumentation-knex": "^0.36.1", "@opentelemetry/instrumentation-koa": "^0.40.0", "@opentelemetry/instrumentation-lru-memoizer": "^0.37.0", "@opentelemetry/instrumentation-memcached": "^0.36.0", "@opentelemetry/instrumentation-mongodb": "^0.43.0", - "@opentelemetry/instrumentation-mongoose": "^0.38.0", - "@opentelemetry/instrumentation-mysql": "^0.38.0", - "@opentelemetry/instrumentation-mysql2": "^0.38.0", - "@opentelemetry/instrumentation-nestjs-core": "^0.37.0", + "@opentelemetry/instrumentation-mongoose": "^0.38.1", + "@opentelemetry/instrumentation-mysql": "^0.38.1", + "@opentelemetry/instrumentation-mysql2": "^0.38.1", + "@opentelemetry/instrumentation-nestjs-core": "^0.37.1", "@opentelemetry/instrumentation-net": "^0.36.0", "@opentelemetry/instrumentation-pg": "^0.41.0", - "@opentelemetry/instrumentation-pino": "^0.38.0", - "@opentelemetry/instrumentation-redis": "^0.39.0", + "@opentelemetry/instrumentation-pino": "^0.39.0", + "@opentelemetry/instrumentation-redis": "^0.39.1", "@opentelemetry/instrumentation-redis-4": "^0.39.0", "@opentelemetry/instrumentation-restify": "^0.38.0", "@opentelemetry/instrumentation-router": "^0.37.0", "@opentelemetry/instrumentation-socket.io": "^0.39.0", - "@opentelemetry/instrumentation-tedious": "^0.10.0", + "@opentelemetry/instrumentation-tedious": "^0.10.1", "@opentelemetry/instrumentation-undici": "^0.2.0", "@opentelemetry/instrumentation-winston": "^0.37.0", "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", diff --git a/package-lock.json b/package-lock.json index 72cbe122ef..a5edc671e2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -281,7 +281,7 @@ }, "metapackages/auto-instrumentations-node": { "name": "@opentelemetry/auto-instrumentations-node", - "version": "0.45.0", + "version": "0.46.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -293,34 +293,34 @@ "@opentelemetry/instrumentation-connect": "^0.36.0", "@opentelemetry/instrumentation-cucumber": "^0.6.0", "@opentelemetry/instrumentation-dataloader": "^0.9.0", - "@opentelemetry/instrumentation-dns": "^0.36.0", + "@opentelemetry/instrumentation-dns": "^0.36.1", "@opentelemetry/instrumentation-express": "^0.38.0", - "@opentelemetry/instrumentation-fastify": "^0.36.0", + "@opentelemetry/instrumentation-fastify": "^0.36.1", "@opentelemetry/instrumentation-fs": "^0.12.0", "@opentelemetry/instrumentation-generic-pool": "^0.36.0", "@opentelemetry/instrumentation-graphql": "^0.40.0", "@opentelemetry/instrumentation-grpc": "^0.51.0", - "@opentelemetry/instrumentation-hapi": "^0.37.0", + "@opentelemetry/instrumentation-hapi": "^0.38.0", "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/instrumentation-ioredis": "^0.40.0", - "@opentelemetry/instrumentation-knex": "^0.36.0", + "@opentelemetry/instrumentation-knex": "^0.36.1", "@opentelemetry/instrumentation-koa": "^0.40.0", "@opentelemetry/instrumentation-lru-memoizer": "^0.37.0", "@opentelemetry/instrumentation-memcached": "^0.36.0", "@opentelemetry/instrumentation-mongodb": "^0.43.0", - "@opentelemetry/instrumentation-mongoose": "^0.38.0", - "@opentelemetry/instrumentation-mysql": "^0.38.0", - "@opentelemetry/instrumentation-mysql2": "^0.38.0", - "@opentelemetry/instrumentation-nestjs-core": "^0.37.0", + "@opentelemetry/instrumentation-mongoose": "^0.38.1", + "@opentelemetry/instrumentation-mysql": "^0.38.1", + "@opentelemetry/instrumentation-mysql2": "^0.38.1", + "@opentelemetry/instrumentation-nestjs-core": "^0.37.1", "@opentelemetry/instrumentation-net": "^0.36.0", "@opentelemetry/instrumentation-pg": "^0.41.0", - "@opentelemetry/instrumentation-pino": "^0.38.0", - "@opentelemetry/instrumentation-redis": "^0.39.0", + "@opentelemetry/instrumentation-pino": "^0.39.0", + "@opentelemetry/instrumentation-redis": "^0.39.1", "@opentelemetry/instrumentation-redis-4": "^0.39.0", "@opentelemetry/instrumentation-restify": "^0.38.0", "@opentelemetry/instrumentation-router": "^0.37.0", "@opentelemetry/instrumentation-socket.io": "^0.39.0", - "@opentelemetry/instrumentation-tedious": "^0.10.0", + "@opentelemetry/instrumentation-tedious": "^0.10.1", "@opentelemetry/instrumentation-undici": "^0.2.0", "@opentelemetry/instrumentation-winston": "^0.37.0", "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", @@ -37677,7 +37677,7 @@ }, "plugins/node/instrumentation-mongoose": { "name": "@opentelemetry/instrumentation-mongoose", - "version": "0.38.0", + "version": "0.38.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -38003,7 +38003,7 @@ }, "plugins/node/instrumentation-tedious": { "name": "@opentelemetry/instrumentation-tedious", - "version": "0.10.0", + "version": "0.10.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -38261,7 +38261,7 @@ }, "plugins/node/opentelemetry-instrumentation-dns": { "name": "@opentelemetry/instrumentation-dns", - "version": "0.36.0", + "version": "0.36.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -38329,7 +38329,7 @@ }, "plugins/node/opentelemetry-instrumentation-fastify": { "name": "@opentelemetry/instrumentation-fastify", - "version": "0.36.0", + "version": "0.36.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -38477,7 +38477,7 @@ }, "plugins/node/opentelemetry-instrumentation-hapi": { "name": "@opentelemetry/instrumentation-hapi", - "version": "0.37.0", + "version": "0.38.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -38545,7 +38545,7 @@ }, "plugins/node/opentelemetry-instrumentation-knex": { "name": "@opentelemetry/instrumentation-knex", - "version": "0.36.0", + "version": "0.36.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -38839,7 +38839,7 @@ }, "plugins/node/opentelemetry-instrumentation-mysql": { "name": "@opentelemetry/instrumentation-mysql", - "version": "0.38.0", + "version": "0.38.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -38872,7 +38872,7 @@ }, "plugins/node/opentelemetry-instrumentation-mysql2": { "name": "@opentelemetry/instrumentation-mysql2", - "version": "0.38.0", + "version": "0.38.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -38938,7 +38938,7 @@ }, "plugins/node/opentelemetry-instrumentation-nestjs-core": { "name": "@opentelemetry/instrumentation-nestjs-core", - "version": "0.37.0", + "version": "0.37.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -39080,7 +39080,7 @@ }, "plugins/node/opentelemetry-instrumentation-pino": { "name": "@opentelemetry/instrumentation-pino", - "version": "0.38.0", + "version": "0.39.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0" @@ -39147,7 +39147,7 @@ }, "plugins/node/opentelemetry-instrumentation-redis": { "name": "@opentelemetry/instrumentation-redis", - "version": "0.39.0", + "version": "0.39.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -46505,34 +46505,34 @@ "@opentelemetry/instrumentation-connect": "^0.36.0", "@opentelemetry/instrumentation-cucumber": "^0.6.0", "@opentelemetry/instrumentation-dataloader": "^0.9.0", - "@opentelemetry/instrumentation-dns": "^0.36.0", + "@opentelemetry/instrumentation-dns": "^0.36.1", "@opentelemetry/instrumentation-express": "^0.38.0", - "@opentelemetry/instrumentation-fastify": "^0.36.0", + "@opentelemetry/instrumentation-fastify": "^0.36.1", "@opentelemetry/instrumentation-fs": "^0.12.0", "@opentelemetry/instrumentation-generic-pool": "^0.36.0", "@opentelemetry/instrumentation-graphql": "^0.40.0", "@opentelemetry/instrumentation-grpc": "^0.51.0", - "@opentelemetry/instrumentation-hapi": "^0.37.0", + "@opentelemetry/instrumentation-hapi": "^0.38.0", "@opentelemetry/instrumentation-http": "^0.51.0", "@opentelemetry/instrumentation-ioredis": "^0.40.0", - "@opentelemetry/instrumentation-knex": "^0.36.0", + "@opentelemetry/instrumentation-knex": "^0.36.1", "@opentelemetry/instrumentation-koa": "^0.40.0", "@opentelemetry/instrumentation-lru-memoizer": "^0.37.0", "@opentelemetry/instrumentation-memcached": "^0.36.0", "@opentelemetry/instrumentation-mongodb": "^0.43.0", - "@opentelemetry/instrumentation-mongoose": "^0.38.0", - "@opentelemetry/instrumentation-mysql": "^0.38.0", - "@opentelemetry/instrumentation-mysql2": "^0.38.0", - "@opentelemetry/instrumentation-nestjs-core": "^0.37.0", + "@opentelemetry/instrumentation-mongoose": "^0.38.1", + "@opentelemetry/instrumentation-mysql": "^0.38.1", + "@opentelemetry/instrumentation-mysql2": "^0.38.1", + "@opentelemetry/instrumentation-nestjs-core": "^0.37.1", "@opentelemetry/instrumentation-net": "^0.36.0", "@opentelemetry/instrumentation-pg": "^0.41.0", - "@opentelemetry/instrumentation-pino": "^0.38.0", - "@opentelemetry/instrumentation-redis": "^0.39.0", + "@opentelemetry/instrumentation-pino": "^0.39.0", + "@opentelemetry/instrumentation-redis": "^0.39.1", "@opentelemetry/instrumentation-redis-4": "^0.39.0", "@opentelemetry/instrumentation-restify": "^0.38.0", "@opentelemetry/instrumentation-router": "^0.37.0", "@opentelemetry/instrumentation-socket.io": "^0.39.0", - "@opentelemetry/instrumentation-tedious": "^0.10.0", + "@opentelemetry/instrumentation-tedious": "^0.10.1", "@opentelemetry/instrumentation-undici": "^0.2.0", "@opentelemetry/instrumentation-winston": "^0.37.0", "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", diff --git a/plugins/node/instrumentation-mongoose/CHANGELOG.md b/plugins/node/instrumentation-mongoose/CHANGELOG.md index 4015c327a4..3ecd94b550 100644 --- a/plugins/node/instrumentation-mongoose/CHANGELOG.md +++ b/plugins/node/instrumentation-mongoose/CHANGELOG.md @@ -6,6 +6,13 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.38.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mongoose-v0.38.0...instrumentation-mongoose-v0.38.1) (2024-05-02) + + +### Bug Fixes + +* remove unuseful patch message from instrumentations ([#2161](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2161)) ([34f56e0](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/34f56e0e28a0873b69a499c9e91798b19fea8e96)) + ## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mongoose-v0.37.0...instrumentation-mongoose-v0.38.0) (2024-04-25) diff --git a/plugins/node/instrumentation-mongoose/package.json b/plugins/node/instrumentation-mongoose/package.json index ea57263dfd..e67c4b4aa5 100644 --- a/plugins/node/instrumentation-mongoose/package.json +++ b/plugins/node/instrumentation-mongoose/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-mongoose", - "version": "0.38.0", + "version": "0.38.1", "description": "OpenTelemetry automatic instrumentation package for mongoose", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/instrumentation-tedious/CHANGELOG.md b/plugins/node/instrumentation-tedious/CHANGELOG.md index 875d355bd0..455ad22ac5 100644 --- a/plugins/node/instrumentation-tedious/CHANGELOG.md +++ b/plugins/node/instrumentation-tedious/CHANGELOG.md @@ -6,6 +6,13 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.10.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-tedious-v0.10.0...instrumentation-tedious-v0.10.1) (2024-05-02) + + +### Bug Fixes + +* remove unuseful patch message from instrumentations ([#2161](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2161)) ([34f56e0](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/34f56e0e28a0873b69a499c9e91798b19fea8e96)) + ## [0.10.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-tedious-v0.9.0...instrumentation-tedious-v0.10.0) (2024-04-25) diff --git a/plugins/node/instrumentation-tedious/package.json b/plugins/node/instrumentation-tedious/package.json index 8d2948bf55..4474df3657 100644 --- a/plugins/node/instrumentation-tedious/package.json +++ b/plugins/node/instrumentation-tedious/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-tedious", - "version": "0.10.0", + "version": "0.10.1", "description": "OpenTelemetry instrumentation for `tedious`", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-dns/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-dns/CHANGELOG.md index 0eb643eff4..ff4e23d5ae 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-dns/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.36.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-dns-v0.36.0...instrumentation-dns-v0.36.1) (2024-05-02) + + +### Bug Fixes + +* remove unuseful patch message from instrumentations ([#2161](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2161)) ([34f56e0](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/34f56e0e28a0873b69a499c9e91798b19fea8e96)) + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-dns-v0.35.0...instrumentation-dns-v0.36.0) (2024-04-25) diff --git a/plugins/node/opentelemetry-instrumentation-dns/package.json b/plugins/node/opentelemetry-instrumentation-dns/package.json index d7796a9a05..f22e99e808 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/package.json +++ b/plugins/node/opentelemetry-instrumentation-dns/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-dns", - "version": "0.36.0", + "version": "0.36.1", "description": "OpenTelemetry dns automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-fastify/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-fastify/CHANGELOG.md index 7b829e6bd7..e74deb3ea1 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-fastify/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.36.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-fastify-v0.36.0...instrumentation-fastify-v0.36.1) (2024-05-02) + + +### Bug Fixes + +* remove unuseful patch message from instrumentations ([#2161](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2161)) ([34f56e0](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/34f56e0e28a0873b69a499c9e91798b19fea8e96)) + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-fastify-v0.35.0...instrumentation-fastify-v0.36.0) (2024-04-25) diff --git a/plugins/node/opentelemetry-instrumentation-fastify/package.json b/plugins/node/opentelemetry-instrumentation-fastify/package.json index fe7cf44d17..f8ab73c62d 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/package.json +++ b/plugins/node/opentelemetry-instrumentation-fastify/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-fastify", - "version": "0.36.0", + "version": "0.36.1", "description": "OpenTelemetry fastify automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-hapi/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-hapi/CHANGELOG.md index b6da07df1d..7bf0defa8b 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-hapi/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-hapi-v0.37.0...instrumentation-hapi-v0.38.0) (2024-05-02) + + +### Features + +* **instrumentation-hapi:** support v21 ([#1985](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1985)) ([eb6e8ef](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/eb6e8ef6b4c72710a98ed3590392b85c8c3b79e5)) + + +### Bug Fixes + +* remove unuseful patch message from instrumentations ([#2161](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2161)) ([34f56e0](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/34f56e0e28a0873b69a499c9e91798b19fea8e96)) + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-hapi-v0.36.0...instrumentation-hapi-v0.37.0) (2024-04-25) diff --git a/plugins/node/opentelemetry-instrumentation-hapi/package.json b/plugins/node/opentelemetry-instrumentation-hapi/package.json index 9308e2555a..0f3bda5fb2 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/package.json +++ b/plugins/node/opentelemetry-instrumentation-hapi/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-hapi", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry Hapi automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-knex/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-knex/CHANGELOG.md index 18f3a52d96..3236c252cd 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-knex/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.36.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-knex-v0.36.0...instrumentation-knex-v0.36.1) (2024-05-02) + + +### Bug Fixes + +* **instr-knex:** set correct SpanKind for traces ([#2157](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2157)) ([2d07c18](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/2d07c1858bad8461dd7bd411e56f6305664ca331)) +* remove unuseful patch message from instrumentations ([#2161](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2161)) ([34f56e0](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/34f56e0e28a0873b69a499c9e91798b19fea8e96)) + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-knex-v0.35.0...instrumentation-knex-v0.36.0) (2024-04-25) diff --git a/plugins/node/opentelemetry-instrumentation-knex/package.json b/plugins/node/opentelemetry-instrumentation-knex/package.json index f14eceee31..b88ab6dc6e 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/package.json +++ b/plugins/node/opentelemetry-instrumentation-knex/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-knex", - "version": "0.36.0", + "version": "0.36.1", "description": "OpenTelemetry Knex automatic instrumentation package", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-mysql/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-mysql/CHANGELOG.md index 91143d0b57..8ca1ed7f1e 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-mysql/CHANGELOG.md @@ -6,6 +6,13 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.38.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql-v0.38.0...instrumentation-mysql-v0.38.1) (2024-05-02) + + +### Bug Fixes + +* remove unuseful patch message from instrumentations ([#2161](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2161)) ([34f56e0](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/34f56e0e28a0873b69a499c9e91798b19fea8e96)) + ## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql-v0.37.0...instrumentation-mysql-v0.38.0) (2024-04-25) diff --git a/plugins/node/opentelemetry-instrumentation-mysql/package.json b/plugins/node/opentelemetry-instrumentation-mysql/package.json index ce0277b1c9..7c8a6bec9e 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-mysql", - "version": "0.38.0", + "version": "0.38.1", "description": "OpenTelemetry mysql automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-mysql2/CHANGELOG.md index 71f8a078d8..54125f5ba2 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-mysql2/CHANGELOG.md @@ -6,6 +6,13 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.38.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql2-v0.38.0...instrumentation-mysql2-v0.38.1) (2024-05-02) + + +### Bug Fixes + +* remove unuseful patch message from instrumentations ([#2161](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2161)) ([34f56e0](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/34f56e0e28a0873b69a499c9e91798b19fea8e96)) + ## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql2-v0.37.0...instrumentation-mysql2-v0.38.0) (2024-04-25) diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/package.json b/plugins/node/opentelemetry-instrumentation-mysql2/package.json index 173fc951ef..7ae9310af3 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql2/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-mysql2", - "version": "0.38.0", + "version": "0.38.1", "description": "OpenTelemetry mysql2 automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-nestjs-core/CHANGELOG.md index c66090e0d2..3419f0bc3b 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.37.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-nestjs-core-v0.37.0...instrumentation-nestjs-core-v0.37.1) (2024-05-02) + + +### Performance Improvements + +* **instrumentation-nestjs-core:** extract reusable span attributes to outer scope ([#2087](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2087)) ([405472d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/405472df3b1d218daab79e9caa7c8a51c3d7a7bf)) + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-nestjs-core-v0.36.0...instrumentation-nestjs-core-v0.37.0) (2024-04-25) diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json index fc46a4da7d..d6b7964932 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-nestjs-core", - "version": "0.37.0", + "version": "0.37.1", "description": "OpenTelemetry NestJS automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-pino/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-pino/CHANGELOG.md index 2b6f08b518..c5027eb721 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-pino/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-pino-v0.38.0...instrumentation-pino-v0.39.0) (2024-05-02) + + +### Features + +* **pino:** support new pino version ^9.0.0 ([#2163](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2163)) ([585b833](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/585b833dc8e911c17b483e871f752ad4988cee5a)) + ## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-pino-v0.37.0...instrumentation-pino-v0.38.0) (2024-04-25) diff --git a/plugins/node/opentelemetry-instrumentation-pino/package.json b/plugins/node/opentelemetry-instrumentation-pino/package.json index f8054397cb..7cf0afeec6 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/package.json +++ b/plugins/node/opentelemetry-instrumentation-pino/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-pino", - "version": "0.38.0", + "version": "0.39.0", "description": "OpenTelemetry instrumentation for pino", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-redis/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-redis/CHANGELOG.md index 163febd386..cd856dc0a7 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-redis/CHANGELOG.md @@ -12,6 +12,14 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.34.3 to ^0.35.0 +## [0.39.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-redis-v0.39.0...instrumentation-redis-v0.39.1) (2024-05-02) + + +### Bug Fixes + +* **instrumentation-redis:** Take host and port used for connection ([#2072](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2072)) ([3ad9fdf](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/3ad9fdfe1e18e597f31bb546d9b00824a7d1ffe9)) +* remove unuseful patch message from instrumentations ([#2161](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2161)) ([34f56e0](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/34f56e0e28a0873b69a499c9e91798b19fea8e96)) + ## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-redis-v0.38.0...instrumentation-redis-v0.39.0) (2024-04-25) diff --git a/plugins/node/opentelemetry-instrumentation-redis/package.json b/plugins/node/opentelemetry-instrumentation-redis/package.json index 2e30c9f96b..4515a23f3d 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/package.json +++ b/plugins/node/opentelemetry-instrumentation-redis/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-redis", - "version": "0.39.0", + "version": "0.39.1", "description": "Automatic OpenTelemetry instrumentation for redis package version 2 and 3", "main": "build/src/index.js", "types": "build/src/index.d.ts", From 6e6ef624dde33ca943d95bacc1d1abafd125e90b Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Thu, 2 May 2024 14:00:05 +0200 Subject: [PATCH 089/121] fix: remove postgres example (security) (#2171) --- examples/postgres/README.md | 109 ---------------------------- examples/postgres/client.js | 33 --------- examples/postgres/images/jaeger.png | Bin 139647 -> 0 bytes examples/postgres/images/zipkin.png | Bin 109072 -> 0 bytes examples/postgres/package.json | 48 ------------ examples/postgres/server.js | 54 -------------- examples/postgres/setupPsql.js | 32 -------- examples/postgres/tracer.js | 43 ----------- 8 files changed, 319 deletions(-) delete mode 100644 examples/postgres/README.md delete mode 100644 examples/postgres/client.js delete mode 100644 examples/postgres/images/jaeger.png delete mode 100644 examples/postgres/images/zipkin.png delete mode 100644 examples/postgres/package.json delete mode 100644 examples/postgres/server.js delete mode 100644 examples/postgres/setupPsql.js delete mode 100644 examples/postgres/tracer.js diff --git a/examples/postgres/README.md b/examples/postgres/README.md deleted file mode 100644 index 4b29d482c8..0000000000 --- a/examples/postgres/README.md +++ /dev/null @@ -1,109 +0,0 @@ -# Overview - -OpenTelemetry PostgreSQL Instrumentation allows the user to automatically collect trace data and export them to the backend of choice (we can use Zipkin or Jaeger for this example), to give observability to distributed systems. - -This is a simple example that demonstrates tracing HTTP request from client to server. The example -shows key aspects of tracing such as - -- Root Span (on Client) -- Child Span (on Client) -- Child Span from a Remote Parent (on Server) -- SpanContext Propagation (from Client to Server) -- Span Events -- Span Attributes - -## Installation - -```sh -# from this directory -npm install -``` - -Setup [Zipkin Tracing](https://zipkin.io/pages/quickstart.html) -or -Setup [Jaeger Tracing](https://www.jaegertracing.io/docs/latest/getting-started/#all-in-one) - -## Run the Application - -### Zipkin - -- Start postgres via docker - - ```sh - # from this directory - npm run docker:start - ``` - -- Run the server - - ```sh - # from this directory - npm run zipkin:server - ``` - -- Run the client - - ```sh - # from this directory - npm run zipkin:client - ``` - -- Cleanup docker - - ```sh - # from this directory - npm run docker:stop - ``` - -#### Zipkin UI - -`zipkin:server` script should output the `traceid` in the terminal (e.g `traceid: 4815c3d576d930189725f1f1d1bdfcc6`). -Go to Zipkin with your browser (e.g ) - -

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

- -## Useful links - -- For more information on OpenTelemetry, visit: -- For more information on OpenTelemetry for Node.js, visit: - -## LICENSE - -Apache License 2.0 diff --git a/examples/postgres/client.js b/examples/postgres/client.js deleted file mode 100644 index 86e96ad263..0000000000 --- a/examples/postgres/client.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -const api = require('@opentelemetry/api'); -const tracer = require('./tracer')('postgres-client-service'); -// eslint-disable-next-line import/order -const http = require('http'); - -function makeRequest() { - const span = tracer.startSpan('makeRequest'); - const randomId = Math.floor(Math.random() * 10); - api.context.with(api.trace.setSpan(api.ROOT_CONTEXT, span), () => { - console.log('Client traceId ', span.spanContext().traceId); - http.get({ - host: 'localhost', - port: 3000, - path: `/insert?id=${randomId}&text=randomstring`, - }); - - http.get({ - host: 'localhost', - port: 3000, - path: `/get?id=${randomId}`, - }); - }); - - // The process must live for at least the interval past any traces that - // must be exported, or some risk being lost if they are recorded after the - // last export. - console.log('Sleeping 5 seconds before shutdown to ensure all records are flushed.'); - setTimeout(() => { console.log('Completed.'); }, 5000); -} - -makeRequest(); diff --git a/examples/postgres/images/jaeger.png b/examples/postgres/images/jaeger.png deleted file mode 100644 index aaecd50a56fa92395a2291edb8151a5f7e6724c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139647 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ð|y9YCf&p9XM`T?1hn#mEkstz$AM3I~Z;x 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%0Du?zwFHvUN?qiLI8E97ZwO1-qRUez$_W&C2a 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≫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 diff --git a/examples/postgres/images/zipkin.png b/examples/postgres/images/zipkin.png deleted file mode 100644 index ea907ae04786b78d9ec559852ec4f4031c485803..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109072 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�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 z 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 Q2QS?7boFyt=akR{0OhjGp#T5? diff --git a/examples/postgres/package.json b/examples/postgres/package.json deleted file mode 100644 index 0197d15772..0000000000 --- a/examples/postgres/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "postgres-example", - "private": true, - "version": "0.23.0", - "description": "Example of Postgres integration with OpenTelemetry", - "main": "index.js", - "scripts": { - "zipkin:server": "cross-env EXPORTER=zipkin node ./server.js", - "zipkin:client": "cross-env EXPORTER=zipkin node ./client.js", - "jaeger:server": "cross-env EXPORTER=jaeger node ./server.js", - "jaeger:client": "cross-env EXPORTER=jaeger node ./client.js", - "docker:start": "docker run -d -p 54320:5432 -e POSTGRES_PASSWORD=postgres --name otpostgres postgres:alpine", - "docker:stop": "docker stop otpostgres & docker rm otpostgres" - }, - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/open-telemetry/opentelemetry-js.git" - }, - "keywords": [ - "opentelemetry", - "postgres", - "tracing" - ], - "engines": { - "node": ">=8.5.0" - }, - "author": "OpenTelemetry Authors", - "license": "Apache-2.0", - "bugs": { - "url": "https://github.com/open-telemetry/opentelemetry-js/issues" - }, - "dependencies": { - "@opentelemetry/api": "^1.0.2", - "@opentelemetry/exporter-jaeger": "^0.25.0", - "@opentelemetry/exporter-zipkin": "^0.25.0", - "@opentelemetry/instrumentation": "^0.25.0", - "@opentelemetry/instrumentation-http": "^0.25.0", - "@opentelemetry/instrumentation-pg": "^0.23.0", - "@opentelemetry/sdk-trace-node": "^0.25.0", - "@opentelemetry/sdk-trace-base": "^0.25.0", - "express": "^4.17.1", - "pg": "^8.6.0" - }, - "homepage": "https://github.com/open-telemetry/opentelemetry-js#readme", - "devDependencies": { - "cross-env": "^6.0.0" - } -} diff --git a/examples/postgres/server.js b/examples/postgres/server.js deleted file mode 100644 index 1c2ac91c54..0000000000 --- a/examples/postgres/server.js +++ /dev/null @@ -1,54 +0,0 @@ -'use strict'; - -const api = require('@opentelemetry/api'); -// eslint-disable-next-line import/order -const tracer = require('./tracer')('postgres-server-service'); -const { SpanKind, SpanStatusCode } = require('@opentelemetry/api'); -const express = require('express'); -const setupPg = require('./setupPsql'); - -const pool = setupPg.startPsql(); - -const app = express(); - -app.get('/:cmd', (req, res) => { - const cmd = req.path.slice(1); - if (!req.query.id) { - res.status(400).send('No id provided'); - return; - } - let queryText = `SELECT id, text FROM test WHERE id = ${req.query.id}`; - if (cmd === 'insert') { - if (!req.query.text) { - res.status(400).send('No text provided'); - return; - } - queryText = { - text: 'INSERT INTO test (id, text) VALUES($1, $2) ON CONFLICT(id) DO UPDATE SET text=$2', - values: [req.query.id, req.query.text], - }; - } - const currentSpan = api.trace.getSpan(api.context.active()); - console.log(`traceid: ${currentSpan.spanContext().traceId}`); - const span = tracer.startSpan(cmd, { - kind: SpanKind.SERVER, - }); - api.context.with(api.trace.setSpan(api.ROOT_CONTEXT, span), () => { - try { - pool.query(queryText, (err, ret) => { - if (err) throw err; - res.send(ret.rows); - }); - } catch (e) { - res.status(400).send({ message: e.message }); - span.setStatus(SpanStatusCode.ERROR); - } - span.end(); - }); -}); - -// start server -const port = 3000; -app.listen(port, () => { - console.log(`Node HTTP listening on ${port}`); -}); diff --git a/examples/postgres/setupPsql.js b/examples/postgres/setupPsql.js deleted file mode 100644 index e07ae2604c..0000000000 --- a/examples/postgres/setupPsql.js +++ /dev/null @@ -1,32 +0,0 @@ -'use strict'; - -const { Pool } = require('pg'); - -// create new pool for psql -const CONFIG = { - password: process.env.POSTGRES_USER || 'postgres', - user: process.env.POSTGRES_USER || 'postgres', - database: process.env.POSTGRES_DB || 'postgres', - host: process.env.POSTGRES_HOST || 'localhost', - port: process.env.POSTGRES_PORT - ? parseInt(process.env.POSTGRES_PORT, 10) - : 54320, -}; - -function startPsql() { - const pool = new Pool(CONFIG); - - pool.connect((connectErr, client, release) => { - if (connectErr) throw connectErr; - release(); - const queryText = 'CREATE TABLE IF NOT EXISTS test(id SERIAL PRIMARY KEY, text VARCHAR(40) not null)'; - client.query(queryText, (err, res) => { - if (err) throw err; - console.log(res.rows[0]); - }); - }); - - return pool; -} - -exports.startPsql = startPsql; diff --git a/examples/postgres/tracer.js b/examples/postgres/tracer.js deleted file mode 100644 index 3f1c5f7e66..0000000000 --- a/examples/postgres/tracer.js +++ /dev/null @@ -1,43 +0,0 @@ -'use strict'; - -const opentelemetry = require('@opentelemetry/api'); -const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); -const { SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base'); -const { JaegerExporter } = require('@opentelemetry/exporter-jaeger'); -const { ZipkinExporter } = require('@opentelemetry/exporter-zipkin'); -const { registerInstrumentations } = require('@opentelemetry/instrumentation'); -const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http'); -const { PgInstrumentation } = require('@opentelemetry/instrumentation-pg'); - -const EXPORTER = process.env.EXPORTER || ''; - -module.exports = (serviceName) => { - const provider = new NodeTracerProvider(); - - let exporter; - if (EXPORTER.toLowerCase().startsWith('z')) { - exporter = new ZipkinExporter({ - serviceName, - }); - } else { - exporter = new JaegerExporter({ - serviceName, - // The default flush interval is 5 seconds. - flushInterval: 2000, - }); - } - - provider.addSpanProcessor(new SimpleSpanProcessor(exporter)); - - // Initialize the OpenTelemetry APIs to use the BasicTracer bindings - provider.register(); - - registerInstrumentations({ - instrumentations: [ - new PgInstrumentation(), - new HttpInstrumentation(), - ], - }); - - return opentelemetry.trace.getTracer('example-postgres'); -}; From 525bbba67accc20eeb96899ab7dc9ccb125a4b2d Mon Sep 17 00:00:00 2001 From: Onur Temizkan Date: Thu, 2 May 2024 14:03:32 +0100 Subject: [PATCH 090/121] feat(instrumentation-express): Support non-string routes (#2008) * feat(instrumentation-express): Support multiple routes with RegExp. * Cover more uses. * Update plugins/node/opentelemetry-instrumentation-express/src/utils.ts Co-authored-by: Jamie Danielson * Fix linter errors. * Add getLayerPath unit tests. * Address review suggestions. * Fix linter errors --------- Co-authored-by: Jamie Danielson Co-authored-by: Jamie Danielson Co-authored-by: Marc Pichler --- .../src/instrumentation.ts | 13 +- .../src/types.ts | 2 + .../src/utils.ts | 34 +++- .../test/express.test.ts | 164 ++++++++++++++++++ .../test/fixtures/use-express-regex.mjs | 85 +++++++++ .../test/utils.test.ts | 24 +++ 6 files changed, 312 insertions(+), 10 deletions(-) create mode 100644 plugins/node/opentelemetry-instrumentation-express/test/fixtures/use-express-regex.mjs diff --git a/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts index 45a07f7446..76da7ffe5f 100644 --- a/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-express/src/instrumentation.ts @@ -29,6 +29,7 @@ import { AttributeNames } from './enums/AttributeNames'; import { asErrorAndMessage, getLayerMetadata, + getLayerPath, isLayerIgnored, storeLayerPath, } from './utils'; @@ -115,10 +116,7 @@ export class ExpressInstrumentation extends InstrumentationBase { ) { const route = original.apply(this, args); const layer = this.stack[this.stack.length - 1] as ExpressLayer; - instrumentation._applyPatch( - layer, - typeof args[0] === 'string' ? args[0] : undefined - ); + instrumentation._applyPatch(layer, getLayerPath(args)); return route; }; }; @@ -136,10 +134,7 @@ export class ExpressInstrumentation extends InstrumentationBase { ) { const route = original.apply(this, args); const layer = this.stack[this.stack.length - 1] as ExpressLayer; - instrumentation._applyPatch( - layer, - typeof args[0] === 'string' ? args[0] : undefined - ); + instrumentation._applyPatch(layer, getLayerPath(args)); return route; }; }; @@ -160,7 +155,7 @@ export class ExpressInstrumentation extends InstrumentationBase { instrumentation._applyPatch.call( instrumentation, layer, - typeof args[0] === 'string' ? args[0] : undefined + getLayerPath(args) ); return route; }; diff --git a/plugins/node/opentelemetry-instrumentation-express/src/types.ts b/plugins/node/opentelemetry-instrumentation-express/src/types.ts index 50d76df514..4ccb36e6af 100644 --- a/plugins/node/opentelemetry-instrumentation-express/src/types.ts +++ b/plugins/node/opentelemetry-instrumentation-express/src/types.ts @@ -18,6 +18,8 @@ import { Span } from '@opentelemetry/api'; import { InstrumentationConfig } from '@opentelemetry/instrumentation'; import { ExpressLayerType } from './enums/ExpressLayerType'; +export type LayerPathSegment = string | RegExp | number; + export type IgnoreMatcher = string | RegExp | ((name: string) => boolean); export type ExpressRequestInfo = { diff --git a/plugins/node/opentelemetry-instrumentation-express/src/utils.ts b/plugins/node/opentelemetry-instrumentation-express/src/utils.ts index 7e51b84124..fa7b0ee9a0 100644 --- a/plugins/node/opentelemetry-instrumentation-express/src/utils.ts +++ b/plugins/node/opentelemetry-instrumentation-express/src/utils.ts @@ -15,7 +15,11 @@ */ import { Attributes } from '@opentelemetry/api'; -import { IgnoreMatcher, ExpressInstrumentationConfig } from './types'; +import { + IgnoreMatcher, + ExpressInstrumentationConfig, + LayerPathSegment, +} from './types'; import { ExpressLayerType } from './enums/ExpressLayerType'; import { AttributeNames } from './enums/AttributeNames'; import { @@ -145,3 +149,31 @@ export const asErrorAndMessage = ( error instanceof Error ? [error, error.message] : [String(error), String(error)]; + +/** + * Extracts the layer path from the route arguments + * + * @param args - Arguments of the route + * @returns The layer path + */ +export const getLayerPath = ( + args: [LayerPathSegment | LayerPathSegment[], ...unknown[]] +): string | undefined => { + if (Array.isArray(args[0])) { + return args[0].map(arg => extractLayerPathSegment(arg) || '').join(','); + } + + return extractLayerPathSegment(args[0]); +}; + +const extractLayerPathSegment = (arg: LayerPathSegment) => { + if (typeof arg === 'string') { + return arg; + } + + if (arg instanceof RegExp || typeof arg === 'number') { + return arg.toString(); + } + + return; +}; diff --git a/plugins/node/opentelemetry-instrumentation-express/test/express.test.ts b/plugins/node/opentelemetry-instrumentation-express/test/express.test.ts index f573a4a669..16c4602b36 100644 --- a/plugins/node/opentelemetry-instrumentation-express/test/express.test.ts +++ b/plugins/node/opentelemetry-instrumentation-express/test/express.test.ts @@ -566,4 +566,168 @@ describe('ExpressInstrumentation', () => { }, }); }); + + it('should set a correct transaction name for routes specified in RegEx', async () => { + await testUtils.runTestFixture({ + cwd: __dirname, + argv: ['fixtures/use-express-regex.mjs'], + env: { + NODE_OPTIONS: + '--experimental-loader=@opentelemetry/instrumentation/hook.mjs', + NODE_NO_WARNINGS: '1', + TEST_REGEX_ROUTE: '/test/regex', + }, + checkResult: (err, stdout, stderr) => { + assert.ifError(err); + }, + checkCollector: (collector: testUtils.TestCollector) => { + const spans = collector.sortedSpans; + + assert.strictEqual(spans[0].name, 'GET /\\/test\\/regex/'); + assert.strictEqual(spans[0].kind, SpanKind.CLIENT); + assert.strictEqual(spans[1].name, 'middleware - query'); + assert.strictEqual(spans[1].kind, SpanKind.SERVER); + assert.strictEqual(spans[1].parentSpanId, spans[0].spanId); + assert.strictEqual(spans[2].name, 'middleware - expressInit'); + assert.strictEqual(spans[2].kind, SpanKind.SERVER); + assert.strictEqual(spans[2].parentSpanId, spans[0].spanId); + assert.strictEqual(spans[3].name, 'middleware - simpleMiddleware'); + assert.strictEqual(spans[3].kind, SpanKind.SERVER); + assert.strictEqual(spans[3].parentSpanId, spans[0].spanId); + assert.strictEqual( + spans[4].name, + 'request handler - /\\/test\\/regex/' + ); + assert.strictEqual(spans[4].kind, SpanKind.SERVER); + assert.strictEqual(spans[4].parentSpanId, spans[0].spanId); + }, + }); + }); + + it('should set a correct transaction name for routes consisting of array including numbers', async () => { + await testUtils.runTestFixture({ + cwd: __dirname, + argv: ['fixtures/use-express-regex.mjs'], + env: { + NODE_OPTIONS: + '--experimental-loader=@opentelemetry/instrumentation/hook.mjs', + NODE_NO_WARNINGS: '1', + TEST_REGEX_ROUTE: '/test/6/test', + }, + checkResult: err => { + assert.ifError(err); + }, + checkCollector: (collector: testUtils.TestCollector) => { + const spans = collector.sortedSpans; + + assert.strictEqual(spans[0].name, 'GET /test,6,/test/'); + assert.strictEqual(spans[0].kind, SpanKind.CLIENT); + assert.strictEqual(spans[1].name, 'middleware - query'); + assert.strictEqual(spans[1].kind, SpanKind.SERVER); + assert.strictEqual(spans[1].parentSpanId, spans[0].spanId); + assert.strictEqual(spans[2].name, 'middleware - expressInit'); + assert.strictEqual(spans[2].kind, SpanKind.SERVER); + assert.strictEqual(spans[2].parentSpanId, spans[0].spanId); + assert.strictEqual(spans[3].name, 'middleware - simpleMiddleware'); + assert.strictEqual(spans[3].kind, SpanKind.SERVER); + assert.strictEqual(spans[3].parentSpanId, spans[0].spanId); + assert.strictEqual(spans[4].name, 'request handler - /test,6,/test/'); + assert.strictEqual(spans[4].kind, SpanKind.SERVER); + assert.strictEqual(spans[4].parentSpanId, spans[0].spanId); + }, + }); + }); + + for (const segment of ['array1', 'array5']) { + it('should set a correct transaction name for routes consisting of arrays of routes', async () => { + await testUtils.runTestFixture({ + cwd: __dirname, + argv: ['fixtures/use-express-regex.mjs'], + env: { + NODE_OPTIONS: + '--experimental-loader=@opentelemetry/instrumentation/hook.mjs', + NODE_NO_WARNINGS: '1', + TEST_REGEX_ROUTE: `/test/${segment}`, + }, + checkResult: err => { + assert.ifError(err); + }, + checkCollector: (collector: testUtils.TestCollector) => { + const spans = collector.sortedSpans; + + assert.strictEqual( + spans[0].name, + 'GET /test/array1,/\\/test\\/array[2-9]/' + ); + assert.strictEqual(spans[0].kind, SpanKind.CLIENT); + assert.strictEqual(spans[1].name, 'middleware - query'); + assert.strictEqual(spans[1].kind, SpanKind.SERVER); + assert.strictEqual(spans[1].parentSpanId, spans[0].spanId); + assert.strictEqual(spans[2].name, 'middleware - expressInit'); + assert.strictEqual(spans[2].kind, SpanKind.SERVER); + assert.strictEqual(spans[2].parentSpanId, spans[0].spanId); + assert.strictEqual(spans[3].name, 'middleware - simpleMiddleware'); + assert.strictEqual(spans[3].kind, SpanKind.SERVER); + assert.strictEqual(spans[3].parentSpanId, spans[0].spanId); + assert.strictEqual( + spans[4].name, + 'request handler - /test/array1,/\\/test\\/array[2-9]/' + ); + assert.strictEqual(spans[4].kind, SpanKind.SERVER); + assert.strictEqual(spans[4].parentSpanId, spans[0].spanId); + }, + }); + }); + } + + for (const segment of [ + 'arr/545', + 'arr/required', + 'arr/required', + 'arr/requiredPath', + 'arr/required/lastParam', + 'arr55/required/lastParam', + 'arr/requiredPath/optionalPath/', + 'arr/requiredPath/optionalPath/lastParam', + ]) { + it('should handle more complex regexes in route arrays correctly', async () => { + await testUtils.runTestFixture({ + cwd: __dirname, + argv: ['fixtures/use-express-regex.mjs'], + env: { + NODE_OPTIONS: + '--experimental-loader=@opentelemetry/instrumentation/hook.mjs', + NODE_NO_WARNINGS: '1', + TEST_REGEX_ROUTE: `/test/${segment}`, + }, + checkResult: err => { + assert.ifError(err); + }, + checkCollector: (collector: testUtils.TestCollector) => { + const spans = collector.sortedSpans; + + assert.strictEqual( + spans[0].name, + 'GET /test/arr/:id,/\\/test\\/arr[0-9]*\\/required(path)?(\\/optionalPath)?\\/(lastParam)?/' + ); + assert.strictEqual(spans[0].kind, SpanKind.CLIENT); + assert.strictEqual(spans[1].name, 'middleware - query'); + assert.strictEqual(spans[1].kind, SpanKind.SERVER); + assert.strictEqual(spans[1].parentSpanId, spans[0].spanId); + assert.strictEqual(spans[2].name, 'middleware - expressInit'); + assert.strictEqual(spans[2].kind, SpanKind.SERVER); + assert.strictEqual(spans[2].parentSpanId, spans[0].spanId); + assert.strictEqual(spans[3].name, 'middleware - simpleMiddleware'); + assert.strictEqual(spans[3].kind, SpanKind.SERVER); + assert.strictEqual(spans[3].parentSpanId, spans[0].spanId); + assert.strictEqual( + spans[4].name, + 'request handler - /test/arr/:id,/\\/test\\/arr[0-9]*\\/required(path)?(\\/optionalPath)?\\/(lastParam)?/' + ); + assert.strictEqual(spans[4].kind, SpanKind.SERVER); + assert.strictEqual(spans[4].parentSpanId, spans[0].spanId); + }, + }); + }); + } }); diff --git a/plugins/node/opentelemetry-instrumentation-express/test/fixtures/use-express-regex.mjs b/plugins/node/opentelemetry-instrumentation-express/test/fixtures/use-express-regex.mjs new file mode 100644 index 0000000000..8fc412841b --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-express/test/fixtures/use-express-regex.mjs @@ -0,0 +1,85 @@ +/* + * 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. + */ + +// Use express from an ES module: +// node --experimental-loader=@opentelemetry/instrumentation/hook.mjs use-express-regex.mjs + +import { promisify } from 'util'; +import { createTestNodeSdk } from '@opentelemetry/contrib-test-utils'; + +import { HttpInstrumentation } from '@opentelemetry/instrumentation-http'; +import { ExpressInstrumentation } from '../../build/src/index.js'; + +const sdk = createTestNodeSdk({ + serviceName: 'use-express-regex', + instrumentations: [new HttpInstrumentation(), new ExpressInstrumentation()], +}); +sdk.start(); + +import express from 'express'; +import * as http from 'http'; + +const app = express(); + +app.use(async function simpleMiddleware(req, res, next) { + // Wait a short delay to ensure this "middleware - ..." span clearly starts + // before the "router - ..." span. The test rely on a start-time-based sort + // of the produced spans. If they start in the same millisecond, then tests + // can be flaky. + await promisify(setTimeout)(10); + next(); +}); + +app.get( + [ + '/test/arr/:id', + /\/test\/arr[0-9]*\/required(path)?(\/optionalPath)?\/(lastParam)?/, + ], + (_req, res) => { + res.send({ response: 'response' }); + } +); + +app.get(/\/test\/regex/, (_req, res) => { + res.send({ response: 'response 2' }); +}); + +app.get(['/test/array1', /\/test\/array[2-9]/], (_req, res) => { + res.send({ response: 'response 3' }); +}); + +app.get(['/test', 6, /test/], (_req, res) => { + res.send({ response: 'response 4' }); +}); + +const server = http.createServer(app); +await new Promise(resolve => server.listen(0, resolve)); +const port = server.address().port; + +await new Promise(resolve => { + http.get( + `http://localhost:${port}${process.env.TEST_REGEX_ROUTE}`, + res => { + res.resume(); + res.on('end', () => { + resolve(); + }); + } + ); +}); + +await new Promise(resolve => server.close(resolve)); +await sdk.shutdown(); diff --git a/plugins/node/opentelemetry-instrumentation-express/test/utils.test.ts b/plugins/node/opentelemetry-instrumentation-express/test/utils.test.ts index fc927a9b7f..098bab4e8c 100644 --- a/plugins/node/opentelemetry-instrumentation-express/test/utils.test.ts +++ b/plugins/node/opentelemetry-instrumentation-express/test/utils.test.ts @@ -165,4 +165,28 @@ describe('Utils', () => { assert.strictEqual(message, '2'); }); }); + + describe('getLayerPath', () => { + it('should return path for a string route definition', () => { + assert.strictEqual(utils.getLayerPath(['/test']), '/test'); + }); + + it('should return path for a regex route definition', () => { + assert.strictEqual(utils.getLayerPath([/^\/test$/]), '/^\\/test$/'); + }); + + it('should return path for an array of route definitions', () => { + assert.strictEqual( + utils.getLayerPath([[/^\/test$/, '/test']]), + '/^\\/test$/,/test' + ); + }); + + it('should return path for a mixed array of route definitions', () => { + assert.strictEqual( + utils.getLayerPath([[/^\/test$/, '/test', /^\/test$/]]), + '/^\\/test$/,/test,/^\\/test$/' + ); + }); + }); }); From 695177b69cfb51f70064dc1ee615383d560aa62a Mon Sep 17 00:00:00 2001 From: Mike Goldsmith Date: Thu, 2 May 2024 15:02:23 +0100 Subject: [PATCH 091/121] feat: Add new baggage span processor package (#2114) * Add new baggage span processor package * add new package to release manifest * tweak version in release manifest * update package directory structure * update readme title * add link to baggage docs * add example to readme * update baggage span processor to implement SpanProcessor interface * add entry to component_owners * fix linting errors * Apply suggestions from code review Co-authored-by: Jamie Danielson * Update readme with cleaner example Co-authored-by: Jamie Danielson * Remove OTel API from "dependencies" Co-authored-by: Jamie Danielson * add src/index.js that exports processor * add processor to release-please-config * add tests for no-op funcs * make src/index a ts file --------- Co-authored-by: Jamie Danielson Co-authored-by: Jamie Danielson --- .github/component_owners.yml | 3 + .release-please-manifest.json | 1 + package-lock.json | 59 +++++ packages/baggage-span-processor/.eslintignore | 1 + packages/baggage-span-processor/.eslintrc.js | 7 + packages/baggage-span-processor/CHANGELOG.md | 5 + packages/baggage-span-processor/LICENSE | 201 ++++++++++++++++++ packages/baggage-span-processor/README.md | 63 ++++++ packages/baggage-span-processor/package.json | 59 +++++ .../src/baggage-span-processor.ts | 84 ++++++++ packages/baggage-span-processor/src/index.ts | 17 ++ .../test/baggage-span-processor.test.ts | 74 +++++++ packages/baggage-span-processor/tsconfig.json | 11 + release-please-config.json | 3 +- 14 files changed, 587 insertions(+), 1 deletion(-) create mode 100644 packages/baggage-span-processor/.eslintignore create mode 100644 packages/baggage-span-processor/.eslintrc.js create mode 100644 packages/baggage-span-processor/CHANGELOG.md create mode 100644 packages/baggage-span-processor/LICENSE create mode 100644 packages/baggage-span-processor/README.md create mode 100644 packages/baggage-span-processor/package.json create mode 100644 packages/baggage-span-processor/src/baggage-span-processor.ts create mode 100644 packages/baggage-span-processor/src/index.ts create mode 100644 packages/baggage-span-processor/test/baggage-span-processor.test.ts create mode 100644 packages/baggage-span-processor/tsconfig.json diff --git a/.github/component_owners.yml b/.github/component_owners.yml index cafc2a7065..210413659d 100644 --- a/.github/component_owners.yml +++ b/.github/component_owners.yml @@ -27,6 +27,9 @@ components: - pichlermarc - legendecas - blumamir + packages/baggage-span-processor: + - mikegoldsmith + - jamiedanielson packages/opentelemetry-host-metrics: - legendecas packages/opentelemetry-id-generator-aws-xray: diff --git a/.release-please-manifest.json b/.release-please-manifest.json index eb6cd74761..43ec74b8a0 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -8,6 +8,7 @@ "detectors/node/opentelemetry-resource-detector-instana": "0.9.0", "metapackages/auto-instrumentations-node": "0.46.0", "metapackages/auto-instrumentations-web": "0.39.0", + "packages/baggage-span-processor": "0.1.0", "packages/opentelemetry-host-metrics": "0.35.1", "packages/opentelemetry-id-generator-aws-xray": "1.2.2", "packages/opentelemetry-propagation-utils": "0.30.9", diff --git a/package-lock.json b/package-lock.json index a5edc671e2..17021fa231 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8898,6 +8898,10 @@ "resolved": "metapackages/auto-instrumentations-web", "link": true }, + "node_modules/@opentelemetry/baggage-span-processor": { + "resolved": "packages/baggage-span-processor", + "link": true + }, "node_modules/@opentelemetry/context-async-hooks": { "version": "1.24.0", "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.24.0.tgz", @@ -37267,6 +37271,38 @@ "tslib": "^2.0.0" } }, + "packages/baggage-span-processor": { + "name": "@opentelemetry/baggage-span-processor", + "version": "0.1.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.0.0", + "@opentelemetry/sdk-trace-base": "^1.0.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@types/mocha": "8.2.3", + "@types/node": "18.6.5", + "expect": "29.2.0", + "mocha": "7.2.0", + "nyc": "15.1.0", + "rimraf": "5.0.5", + "ts-mocha": "10.0.0", + "typescript": "4.4.4" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "packages/baggage-span-processor/node_modules/@types/mocha": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", + "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", + "dev": true + }, "packages/opentelemetry-host-metrics": { "name": "@opentelemetry/host-metrics", "version": "0.35.1", @@ -46817,6 +46853,29 @@ } } }, + "@opentelemetry/baggage-span-processor": { + "version": "file:packages/baggage-span-processor", + "requires": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/sdk-trace-base": "^1.0.0", + "@types/mocha": "8.2.3", + "@types/node": "18.6.5", + "expect": "29.2.0", + "mocha": "7.2.0", + "nyc": "15.1.0", + "rimraf": "5.0.5", + "ts-mocha": "10.0.0", + "typescript": "4.4.4" + }, + "dependencies": { + "@types/mocha": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", + "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", + "dev": true + } + } + }, "@opentelemetry/context-async-hooks": { "version": "1.24.0", "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.24.0.tgz", diff --git a/packages/baggage-span-processor/.eslintignore b/packages/baggage-span-processor/.eslintignore new file mode 100644 index 0000000000..378eac25d3 --- /dev/null +++ b/packages/baggage-span-processor/.eslintignore @@ -0,0 +1 @@ +build diff --git a/packages/baggage-span-processor/.eslintrc.js b/packages/baggage-span-processor/.eslintrc.js new file mode 100644 index 0000000000..f726f3becb --- /dev/null +++ b/packages/baggage-span-processor/.eslintrc.js @@ -0,0 +1,7 @@ +module.exports = { + "env": { + "mocha": true, + "node": true + }, + ...require('../../eslint.config.js') +} diff --git a/packages/baggage-span-processor/CHANGELOG.md b/packages/baggage-span-processor/CHANGELOG.md new file mode 100644 index 0000000000..bb2d503c69 --- /dev/null +++ b/packages/baggage-span-processor/CHANGELOG.md @@ -0,0 +1,5 @@ +# Changelog + +## 0.1.0 + +Initial version. diff --git a/packages/baggage-span-processor/LICENSE b/packages/baggage-span-processor/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/packages/baggage-span-processor/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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 + + http://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. diff --git a/packages/baggage-span-processor/README.md b/packages/baggage-span-processor/README.md new file mode 100644 index 0000000000..913abdba9d --- /dev/null +++ b/packages/baggage-span-processor/README.md @@ -0,0 +1,63 @@ +# OpenTelemetry Baggage Span Processor for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-url] + +The BaggageSpanProcessor reads entries stored in Baggage from the parent context and adds the [baggage](https://opentelemetry.io/docs/concepts/signals/baggage) entries' keys and +values to the span as attributes on span start. + +Add this span processor to a tracer provider. + +Keys and values added to Baggage will appear on subsequent child spans for a trace within this service *and* be propagated to external services in accordance with any configured propagation formats configured. +If the external services also have a Baggage span processor, the keys and values will appear in those child spans as well. + +⚠ Warning ⚠️ + +Do not put sensitive information in Baggage. + +To repeat: a consequence of adding data to Baggage is that the keys and values will appear in all outgoing HTTP headers from the application. + +Compatible with OpenTelemetry JS API and SDK `1.0+`. + +## Installation + +```bash +npm install --save @opentelemetry/baggage-span-processor +``` + +### Usage + +Add to the span processors during configuration: + +```javascript +import { NodeSDK, tracing } from "@opentelemetry/sdk-node"; +import { BaggageSpanProcessor } from "@opentelemetry/baggage-span-processor"; + +const spanProcessors = [ + new tracing.SimpleSpanProcessor( + new tracing.ConsoleSpanExporter()), + new BaggageSpanProcessor()]; + +const sdk = new NodeSDK({ + serviceName: "example-service", + spanProcessors +}); + +sdk.start(); +``` + +## Useful links + +* For more information on OpenTelemetry, visit: +* For more about OpenTelemetry JavaScript: +* For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +APACHE 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/host-metrics +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fhost-metrics.svg diff --git a/packages/baggage-span-processor/package.json b/packages/baggage-span-processor/package.json new file mode 100644 index 0000000000..ca10dfb792 --- /dev/null +++ b/packages/baggage-span-processor/package.json @@ -0,0 +1,59 @@ +{ + "name": "@opentelemetry/baggage-span-processor", + "version": "0.1.0", + "description": "OpenTelemetry Baggage Span Processor for Node.js", + "main": "build/src/index.ts", + "types": "build/src/index.d.ts", + "repository": "open-telemetry/opentelemetry-js-contrib", + "scripts": { + "clean": "rimraf build/*", + "compile": "tsc -p .", + "lint": "eslint . --ext .ts", + "lint:fix": "eslint . --ext .ts --fix", + "precompile": "tsc --version && lerna run version:update --scope @opentelemetry/baggage-span-processor --include-dependencies", + "prewatch": "npm run precompile", + "prepublishOnly": "npm run compile", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc ts-mocha -p tsconfig.json test/**/*.test.ts", + "version:update": "node ../../scripts/version-update.js", + "watch": "tsc -w" + }, + "keywords": [ + "opentelemetry", + "nodejs", + "tracing", + "baggage", + "plugin" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + }, + "dependencies": { + "@opentelemetry/sdk-trace-base": "^1.0.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.0.0", + "@types/mocha": "8.2.3", + "@types/node": "18.6.5", + "expect": "29.2.0", + "mocha": "7.2.0", + "nyc": "15.1.0", + "rimraf": "5.0.5", + "ts-mocha": "10.0.0", + "typescript": "4.4.4" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/baggage-span-processor#readme" +} diff --git a/packages/baggage-span-processor/src/baggage-span-processor.ts b/packages/baggage-span-processor/src/baggage-span-processor.ts new file mode 100644 index 0000000000..13d3c84260 --- /dev/null +++ b/packages/baggage-span-processor/src/baggage-span-processor.ts @@ -0,0 +1,84 @@ +/* + * 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, propagation } from '@opentelemetry/api'; +import { + SpanProcessor, + Span, + ReadableSpan, +} from '@opentelemetry/sdk-trace-base'; + +/** + * BaggageSpanProcessor is a {@link SpanProcessor} that reads entries stored in {@link Baggage} + * from the parent context and adds the baggage entries' keys and + * values to the span as attributes on span start. + * + * Add this span processor to a tracer provider. + * + * Keys and values added to Baggage will appear on subsequent child + * spans for a trace within this service *and* be propagated to external + * services in accordance with any configured propagation formats + * configured. If the external services also have a Baggage span + * processor, the keys and values will appear in those child spans as + * well. + * + * ⚠ Warning ⚠️ + * + * Do not put sensitive information in Baggage. + * + * To repeat: a consequence of adding data to Baggage is that the keys and + * values will appear in all outgoing HTTP headers from the application. + */ +export class BaggageSpanProcessor implements SpanProcessor { + /** + * Forces to export all finished spans + */ + forceFlush(): Promise { + // no-op + return Promise.resolve(); + } + + /** + * Called when a {@link Span} is started, if the `span.isRecording()` + * returns true. + * @param span the Span that just started. + */ + onStart(span: Span, parentContext: Context): void { + (propagation.getBaggage(parentContext)?.getAllEntries() ?? []).forEach( + entry => { + span.setAttribute(entry[0], entry[1].value); + } + ); + } + + /** + * Called when a {@link ReadableSpan} is ended, if the `span.isRecording()` + * returns true. + * @param span the Span that just ended. + */ + onEnd(_: ReadableSpan): void { + // no-op + } + + /** + * Shuts down the processor. Called when SDK is shut down. This is an + * opportunity for processor to do any cleanup required. + */ + shutdown(): Promise { + // no-op + return Promise.resolve(); + } +} diff --git a/packages/baggage-span-processor/src/index.ts b/packages/baggage-span-processor/src/index.ts new file mode 100644 index 0000000000..39e175e9b3 --- /dev/null +++ b/packages/baggage-span-processor/src/index.ts @@ -0,0 +1,17 @@ +/* + * 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. + */ + +export { BaggageSpanProcessor } from './baggage-span-processor'; diff --git a/packages/baggage-span-processor/test/baggage-span-processor.test.ts b/packages/baggage-span-processor/test/baggage-span-processor.test.ts new file mode 100644 index 0000000000..2829858ab1 --- /dev/null +++ b/packages/baggage-span-processor/test/baggage-span-processor.test.ts @@ -0,0 +1,74 @@ +/* + * 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 { BaggageSpanProcessor } from '../src/baggage-span-processor'; +import { + propagation, + ROOT_CONTEXT, + SpanKind, + TraceFlags, +} from '@opentelemetry/api'; +import { BasicTracerProvider, Span } from '@opentelemetry/sdk-trace-base'; +import { expect } from 'expect'; + +describe('BaggageSpanProcessor', () => { + const baggageProcessor = new BaggageSpanProcessor(); + + const bag = propagation.createBaggage({ + brand: { value: 'samsonite' }, + }); + + const expectedAttrs = { + brand: 'samsonite', + }; + + let span: Span; + + beforeEach(() => { + span = new Span( + new BasicTracerProvider().getTracer('baggage-testing'), + ROOT_CONTEXT, + 'Edward W. Span', + { + traceId: 'e4cda95b652f4a1592b449d5929fda1b', + spanId: '7e0c63257de34c92', + traceFlags: TraceFlags.SAMPLED, + }, + SpanKind.SERVER + ); + }); + + it('onStart adds current Baggage entries to a span as attributes', () => { + expect(span.attributes).toEqual({}); + const ctx = propagation.setBaggage(ROOT_CONTEXT, bag); + + baggageProcessor.onStart(span, ctx); + + expect(span.attributes).toEqual(expectedAttrs); + }); + + it('forceFlush is a no-op and does not throw error', async () => { + await expect(baggageProcessor.forceFlush()).resolves.not.toThrow(); + }); + + it('onEnd is a no-op and does not throw error', async () => { + expect(() => baggageProcessor.onEnd(span)).not.toThrow(); + }); + + it('shutdown is a no-op and does not throw error', async () => { + await expect(baggageProcessor.shutdown()).resolves.not.toThrow(); + }); +}); diff --git a/packages/baggage-span-processor/tsconfig.json b/packages/baggage-span-processor/tsconfig.json new file mode 100644 index 0000000000..4078877ce6 --- /dev/null +++ b/packages/baggage-span-processor/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.base", + "compilerOptions": { + "rootDir": ".", + "outDir": "build" + }, + "include": [ + "src/**/*.ts", + "test/**/*.ts" + ] +} diff --git a/release-please-config.json b/release-please-config.json index 63294044ec..8142b3b582 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -15,6 +15,7 @@ "detectors/node/opentelemetry-resource-detector-instana": {}, "metapackages/auto-instrumentations-node": {}, "metapackages/auto-instrumentations-web": {}, + "packages/baggage-span-processor": {}, "packages/opentelemetry-host-metrics": {}, "packages/opentelemetry-id-generator-aws-xray": {}, "packages/opentelemetry-propagation-utils": {}, @@ -67,4 +68,4 @@ "propagators/opentelemetry-propagator-instana": {}, "propagators/opentelemetry-propagator-ot-trace": {} } -} \ No newline at end of file +} From 16f920ae7c8c60a1acfcdc8fbbd4e836154a14fb Mon Sep 17 00:00:00 2001 From: David Luna Date: Thu, 2 May 2024 16:32:28 +0200 Subject: [PATCH 092/121] refactor(instr-connect): use exported strings for attributes (#2154) Co-authored-by: Amir Blum --- package-lock.json | 4 ++-- .../opentelemetry-instrumentation-connect/README.md | 10 ++++++++++ .../opentelemetry-instrumentation-connect/package.json | 2 +- .../src/instrumentation.ts | 4 ++-- .../test/instrumentation.test.ts | 8 ++++---- 5 files changed, 19 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 17021fa231..a948005334 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38263,7 +38263,7 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/connect": "3.4.36" }, "devDependencies": { @@ -47214,7 +47214,7 @@ "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/connect": "3.4.36", "@types/mocha": "7.0.2", "@types/node": "18.6.5", diff --git a/plugins/node/opentelemetry-instrumentation-connect/README.md b/plugins/node/opentelemetry-instrumentation-connect/README.md index 5f6cd30f7b..d16302b84a 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/README.md +++ b/plugins/node/opentelemetry-instrumentation-connect/README.md @@ -51,6 +51,16 @@ registerInstrumentations({ See [examples/connect](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/examples/connect) for a short example. +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | +| ------------ | ---------------------------------- | +| `http.route` | The matched route (path template). | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/opentelemetry-instrumentation-connect/package.json b/plugins/node/opentelemetry-instrumentation-connect/package.json index f0a6053c9d..dda633198c 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/package.json +++ b/plugins/node/opentelemetry-instrumentation-connect/package.json @@ -57,7 +57,7 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/connect": "3.4.36" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-connect#readme" diff --git a/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts index 63264490bc..5b57f5f7bb 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-connect/src/instrumentation.ts @@ -31,7 +31,7 @@ import { InstrumentationNodeModuleDefinition, isWrapped, } from '@opentelemetry/instrumentation'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMATTRS_HTTP_ROUTE } from '@opentelemetry/semantic-conventions'; import { replaceCurrentStackRoute, addNewStackLayer, @@ -100,7 +100,7 @@ export class ConnectInstrumentation extends InstrumentationBase { const spanName = `${connectTypeName} - ${connectName}`; const options: SpanOptions = { attributes: { - [SemanticAttributes.HTTP_ROUTE]: routeName.length > 0 ? routeName : '/', + [SEMATTRS_HTTP_ROUTE]: routeName.length > 0 ? routeName : '/', [AttributeNames.CONNECT_TYPE]: connectType, [AttributeNames.CONNECT_NAME]: connectName, }, diff --git a/plugins/node/opentelemetry-instrumentation-connect/test/instrumentation.test.ts b/plugins/node/opentelemetry-instrumentation-connect/test/instrumentation.test.ts index c6ab9456d2..cc2ef79fb5 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/test/instrumentation.test.ts +++ b/plugins/node/opentelemetry-instrumentation-connect/test/instrumentation.test.ts @@ -17,7 +17,7 @@ import * as assert from 'assert'; import { context, trace } from '@opentelemetry/api'; import { RPCType, setRPCMetadata, RPCMetadata } from '@opentelemetry/core'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMATTRS_HTTP_ROUTE } from '@opentelemetry/semantic-conventions'; import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks'; import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import { @@ -144,7 +144,7 @@ describe('connect', () => { assert.deepStrictEqual(span.attributes, { 'connect.type': 'middleware', 'connect.name': ANONYMOUS_NAME, - [SemanticAttributes.HTTP_ROUTE]: '/', + [SEMATTRS_HTTP_ROUTE]: '/', }); assert.strictEqual(span.name, 'middleware - anonymous'); }); @@ -163,7 +163,7 @@ describe('connect', () => { assert.deepStrictEqual(span.attributes, { 'connect.type': 'middleware', 'connect.name': 'middleware1', - [SemanticAttributes.HTTP_ROUTE]: '/', + [SEMATTRS_HTTP_ROUTE]: '/', }); assert.strictEqual(span.name, 'middleware - middleware1'); }); @@ -181,7 +181,7 @@ describe('connect', () => { assert.deepStrictEqual(span.attributes, { 'connect.type': 'request_handler', 'connect.name': '/foo', - [SemanticAttributes.HTTP_ROUTE]: '/foo', + [SEMATTRS_HTTP_ROUTE]: '/foo', }); assert.strictEqual(span.name, 'request handler - /foo'); }); From cc714922b931ce39595ef0b257114b4e797ba6a9 Mon Sep 17 00:00:00 2001 From: Michele Mancioppi Date: Fri, 3 May 2024 16:55:21 +0200 Subject: [PATCH 093/121] feat: add support for cloud.resource_id to AWS ECS detector (#1936) Co-authored-by: Trent Mick --- .../README.md | 3 ++- .../src/detectors/AwsEcsDetector.ts | 3 +++ .../detectors/SemanticResourceAttributes.ts | 23 +++++++++++++++++++ .../test/detectors/AwsEcsDetector.test.ts | 6 +++++ 4 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 detectors/node/opentelemetry-resource-detector-aws/src/detectors/SemanticResourceAttributes.ts diff --git a/detectors/node/opentelemetry-resource-detector-aws/README.md b/detectors/node/opentelemetry-resource-detector-aws/README.md index aeb075c237..e903be6fef 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/README.md +++ b/detectors/node/opentelemetry-resource-detector-aws/README.md @@ -84,7 +84,8 @@ Populates `container` for containers running on [Amazon ECS](https://aws.amazon. | cloud.platform | The cloud platform. In this context, it's always "aws_ecs" | | cloud.provider | The cloud provider. In this context, it's always "aws" | | cloud.region | Parsed value from the `TaskARN` | -| container.id | Value of from file `/proc/self/cgroup` | +| cloud.resource_id | Value of `ContainerARN` from `ECS_CONTAINER_METADATA_URI_V4/task` request | +| container.id | Value from file `/proc/self/cgroup` | | container.name | The hostname of the operating system | ### AWS EKS Detector 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 e2e35af236..0c5a9f0624 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEcsDetector.ts +++ b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/AwsEcsDetector.ts @@ -41,6 +41,8 @@ import { CLOUDPROVIDERVALUES_AWS, CLOUDPLATFORMVALUES_AWS_ECS, } from '@opentelemetry/semantic-conventions'; +// Patch until the OpenTelemetry SDK is updated to ship this attribute +import { SemanticResourceAttributes as AdditionalSemanticResourceAttributes } from './SemanticResourceAttributes'; import * as http from 'http'; import * as util from 'util'; import * as fs from 'fs'; @@ -170,6 +172,7 @@ export class AwsEcsDetector implements Detector { [SEMRESATTRS_CLOUD_ACCOUNT_ID]: accountId, [SEMRESATTRS_CLOUD_REGION]: region, + [AdditionalSemanticResourceAttributes.CLOUD_RESOURCE_ID]: containerArn, }; // The availability zone is not available in all Fargate runtimes diff --git a/detectors/node/opentelemetry-resource-detector-aws/src/detectors/SemanticResourceAttributes.ts b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/SemanticResourceAttributes.ts new file mode 100644 index 0000000000..24efaebd07 --- /dev/null +++ b/detectors/node/opentelemetry-resource-detector-aws/src/detectors/SemanticResourceAttributes.ts @@ -0,0 +1,23 @@ +/* + * 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. + */ +export const SemanticResourceAttributes = { + /** + * Cloud provider-specific native identifier of the monitored cloud resource + * (e.g. an ARN on AWS, a fully qualified resource ID on Azure, a full resource + * name on GCP) + */ + CLOUD_RESOURCE_ID: 'cloud.resource_id', +}; 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 6c9200b9cd..659b3afaab 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 @@ -42,6 +42,8 @@ import { CLOUDPROVIDERVALUES_AWS, CLOUDPLATFORMVALUES_AWS_ECS, } from '@opentelemetry/semantic-conventions'; +// Patch until the OpenTelemetry SDK is updated to ship this attribute +import { SemanticResourceAttributes as AdditionalSemanticResourceAttributes } from '../../src/detectors/SemanticResourceAttributes'; import { readFileSync } from 'fs'; import * as os from 'os'; import { join } from 'path'; @@ -81,6 +83,10 @@ const assertEcsResource = ( resource.attributes[SEMRESATTRS_AWS_ECS_CONTAINER_ARN], validations.containerArn ); + assert.strictEqual( + resource.attributes[AdditionalSemanticResourceAttributes.CLOUD_RESOURCE_ID], + validations.containerArn + ); if (validations.clusterArn) assert.strictEqual( resource.attributes[SEMRESATTRS_AWS_ECS_CLUSTER_ARN], From ba0de3074fa14c20d35a354107f86852c3c2dc7c Mon Sep 17 00:00:00 2001 From: Vincent Ricard Date: Sun, 5 May 2024 15:19:48 +0200 Subject: [PATCH 094/121] docs(auto-instrumentations-node): fix typo in code example (#2173) Co-authored-by: Amir Blum --- metapackages/auto-instrumentations-node/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metapackages/auto-instrumentations-node/README.md b/metapackages/auto-instrumentations-node/README.md index 181d920386..6d74119d8d 100644 --- a/metapackages/auto-instrumentations-node/README.md +++ b/metapackages/auto-instrumentations-node/README.md @@ -50,7 +50,7 @@ export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="https://your-endpoint" export OTEL_EXPORTER_OTLP_HEADERS="x-api-key=your-api-key" export OTEL_EXPORTER_OTLP_TRACES_HEADERS="x-api-key=your-api-key" export OTEL_RESOURCE_ATTRIBUTES="service.namespace=my-namespace" -export OTEL_NODE_RESOURCE_DETECTORS="env,host,os,serviceinstace" +export OTEL_NODE_RESOURCE_DETECTORS="env,host,os,serviceinstance" export OTEL_SERVICE_NAME="client" export NODE_OPTIONS="--require @opentelemetry/auto-instrumentations-node/register" node app.js From 66e6ce41055d0009f168b40822d82762ff7dc40f Mon Sep 17 00:00:00 2001 From: Jamie Danielson Date: Tue, 7 May 2024 16:29:50 -0400 Subject: [PATCH 095/121] test(instrumentation-pino): add test for ESM (#2176) --- .../test/pino-enabled.test.ts | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/plugins/node/opentelemetry-instrumentation-pino/test/pino-enabled.test.ts b/plugins/node/opentelemetry-instrumentation-pino/test/pino-enabled.test.ts index 10bce070dc..63d42c462e 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/test/pino-enabled.test.ts +++ b/plugins/node/opentelemetry-instrumentation-pino/test/pino-enabled.test.ts @@ -33,6 +33,10 @@ import { testInjection, testNoInjection, } from './common'; +import { + runTestFixture, + TestCollector, +} from '@opentelemetry/contrib-test-utils'; import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks'; import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; @@ -235,4 +239,74 @@ describe('PinoInstrumentation', () => { }); }); }); + describe('ESM usage', () => { + beforeEach(() => { + testContext = setupInstrumentationAndInitTestContext(); + }); + it('should work with ESM default import', async function () { + testContext = setupInstrumentationAndInitTestContext(); + let logRecords: any[]; + await runTestFixture({ + cwd: __dirname, + argv: ['fixtures/use-pino-default-import.mjs'], + env: { + NODE_OPTIONS: + '--experimental-loader=@opentelemetry/instrumentation/hook.mjs', + NODE_NO_WARNINGS: '1', + }, + checkResult: (err, stdout, _stderr) => { + assert.ifError(err); + logRecords = stdout + .trim() + .split('\n') + .map(ln => JSON.parse(ln)); + assert.strictEqual(logRecords.length, 1); + }, + checkCollector: (collector: TestCollector) => { + // Check that both log records had the trace-context of the span injected. + const spans = collector.sortedSpans; + assert.strictEqual(spans.length, 1); + logRecords.forEach(rec => { + assert.strictEqual(rec.trace_id, spans[0].traceId); + assert.strictEqual(rec.span_id, spans[0].spanId); + }); + }, + }); + }); + + it('should work with ESM named import', async function () { + if (semver.lt(testContext.pino.version, '6.8.0')) { + // Pino 6.8.0 added named ESM exports (https://github.com/pinojs/pino/pull/936). + this.skip(); + } else { + let logRecords: any[]; + await runTestFixture({ + cwd: __dirname, + argv: ['fixtures/use-pino-named-import.mjs'], + env: { + NODE_OPTIONS: + '--experimental-loader=@opentelemetry/instrumentation/hook.mjs', + NODE_NO_WARNINGS: '1', + }, + checkResult: (err, stdout, _stderr) => { + assert.ifError(err); + logRecords = stdout + .trim() + .split('\n') + .map(ln => JSON.parse(ln)); + assert.strictEqual(logRecords.length, 1); + }, + checkCollector: (collector: TestCollector) => { + // Check that both log records had the trace-context of the span injected. + const spans = collector.sortedSpans; + assert.strictEqual(spans.length, 1); + logRecords.forEach(rec => { + assert.strictEqual(rec.trace_id, spans[0].traceId); + assert.strictEqual(rec.span_id, spans[0].spanId); + }); + }, + }); + } + }); + }); }); From c1c3650be0c506407b5820d13db9dea1de50e1bc Mon Sep 17 00:00:00 2001 From: Mike Goldsmith Date: Wed, 8 May 2024 19:46:18 +0100 Subject: [PATCH 096/121] Fix baggage span processor NPM links (#2185) --- packages/baggage-span-processor/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/baggage-span-processor/README.md b/packages/baggage-span-processor/README.md index 913abdba9d..4bdb38f9dd 100644 --- a/packages/baggage-span-processor/README.md +++ b/packages/baggage-span-processor/README.md @@ -59,5 +59,5 @@ APACHE 2.0 - See [LICENSE][license-url] for more information. [discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions [license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE [license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat -[npm-url]: https://www.npmjs.com/package/@opentelemetry/host-metrics -[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fhost-metrics.svg +[npm-url]: https://www.npmjs.com/package/@opentelemetry/baggage-span-processor +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fbaggage-span-processor.svg From 5767ab030417a964c0e02ab70914361425a711f0 Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Mon, 13 May 2024 11:35:56 +0200 Subject: [PATCH 097/121] chore: update otel and unpin node 18 in tests (#2180) * chore: sync package-lock.json to use latest otel core/experimental packages * ci: remove test workaround --- .github/workflows/test-all-versions.yml | 2 +- .github/workflows/unit-test.yml | 4 +- package-lock.json | 1313 +++++++---------------- 3 files changed, 379 insertions(+), 940 deletions(-) diff --git a/.github/workflows/test-all-versions.yml b/.github/workflows/test-all-versions.yml index cc231a5174..4fefdf2717 100644 --- a/.github/workflows/test-all-versions.yml +++ b/.github/workflows/test-all-versions.yml @@ -18,7 +18,7 @@ jobs: strategy: fail-fast: false matrix: - node: ["14", "16", "18.18.2"] + node: ["14", "16", "18"] runs-on: ubuntu-latest services: mongo: diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index a03af4c942..83451e56de 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -9,9 +9,9 @@ jobs: strategy: fail-fast: false matrix: - node: ["14", "16", "18.18.2"] + node: ["14", "16", "18"] include: - - node: 18.18.2 + - node: 18 code-coverage: true runs-on: ubuntu-latest services: diff --git a/package-lock.json b/package-lock.json index a948005334..a9316e10ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -350,344 +350,6 @@ "@opentelemetry/api": "^1.4.1" } }, - "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/api-logs": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.51.0.tgz", - "integrity": "sha512-m/jtfBPEIXS1asltl8fPQtO3Sb1qMpuL61unQajUmM8zIxeMF1AlqzWXM3QedcYgTTFiJCew5uJjyhpmqhc0+g==", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/context-async-hooks": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.24.0.tgz", - "integrity": "sha512-s7xaQ9ifDpJvwbWRLkZD/J5hY35w+MECm4TQUkg6szRcny9lf6oVhWij4w3JJFQgvHQMXU7oXOpX8Z05HxV/8g==", - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" - } - }, - "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/core": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.0.tgz", - "integrity": "sha512-FP2oN7mVPqcdxJDTTnKExj4mi91EH+DNuArKfHTjPuJWe2K1JfMIVXNfahw1h3onJxQnxS8K0stKkogX05s+Aw==", - "dependencies": { - "@opentelemetry/semantic-conventions": "1.24.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" - } - }, - "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/exporter-trace-otlp-grpc": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.51.0.tgz", - "integrity": "sha512-xQpxKzS8ZnxYCa1v+3EKWhwMrSK3+RezpJ+AEKaP2pf2QbLfHt7kKfSn7niR2u3A1Tbe2aC7Ptt9+MafhThOOQ==", - "dependencies": { - "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.24.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.51.0", - "@opentelemetry/otlp-transformer": "0.51.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0" - } - }, - "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/exporter-trace-otlp-http": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.51.0.tgz", - "integrity": "sha512-zODqnLZmPOxj9CarFv0TrVlx9mgj0TfCMCiUiTdNi9iA2rgdKVo+bjJjpYF6LCTJOQCR5TScAUCKyzwkgDI+iA==", - "dependencies": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/otlp-exporter-base": "0.51.0", - "@opentelemetry/otlp-transformer": "0.51.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0" - } - }, - "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/exporter-trace-otlp-proto": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.51.0.tgz", - "integrity": "sha512-Fi7r0iMqGoFCQQ+WY0pYOWp395vdinZJIkYKnNbnreHxAN/kVDBl2FxbV3DeOKuRxEY08Gyb9ggPf+Zrqp7l/w==", - "dependencies": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/otlp-exporter-base": "0.51.0", - "@opentelemetry/otlp-proto-exporter-base": "0.51.0", - "@opentelemetry/otlp-transformer": "0.51.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0" - } - }, - "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/exporter-zipkin": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.24.0.tgz", - "integrity": "sha512-QeGv0PHONswmu567pf9QliJ6s6DgCu5+ziF+soNS1LTcr1VRRVLViYLmGxmzDFUC48sjNTu7sumcKT0nJXsGBw==", - "dependencies": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0", - "@opentelemetry/semantic-conventions": "1.24.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0" - } - }, - "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/otlp-exporter-base": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.51.0.tgz", - "integrity": "sha512-hR4c9vWVz1QgzCBSyy9zSDkvfTgaK96E6/tfVP6O4dzdZW9HqWimA3lXV/KXadEGqShvM4GToz9EHp2A5RU5bQ==", - "dependencies": { - "@opentelemetry/core": "1.24.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0" - } - }, - "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/otlp-grpc-exporter-base": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.51.0.tgz", - "integrity": "sha512-oTRtDvvB0bTRTBVrvKA/oM1gIAqQ6DVQS07pvqiL1cZS8wBrGgpw+2iTd0nV661Y/MhDn/kNWp8lRhMEIKN9bw==", - "dependencies": { - "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.24.0", - "@opentelemetry/otlp-exporter-base": "0.51.0", - "protobufjs": "^7.2.3" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0" - } - }, - "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/otlp-proto-exporter-base": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.51.0.tgz", - "integrity": "sha512-WDANDLSUh11Gu5o6iCzmjZraIv5bK8z1L/t6lxQ2NeEKiKUPo5pVOBBQQC/yAQU2yeqkiO1GRCieH+XahZf60A==", - "dependencies": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/otlp-exporter-base": "0.51.0", - "protobufjs": "^7.2.3" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0" - } - }, - "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/otlp-transformer": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.51.0.tgz", - "integrity": "sha512-ylLgx2xumVoSefDHP9GMAU/LG+TU3+8eacVDXV5o1RqWxsdVOaQmCTY0XyDgeRTn6hIOVAq/HHQbRq3iWOrt2A==", - "dependencies": { - "@opentelemetry/api-logs": "0.51.0", - "@opentelemetry/core": "1.24.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/sdk-logs": "0.51.0", - "@opentelemetry/sdk-metrics": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.9.0" - } - }, - "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/propagator-b3": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.24.0.tgz", - "integrity": "sha512-7TMIDE4+NO5vnkor+zned42wqca+hmhW5gWKhmYjUHC5B5uojo1PvtmBrd7kigFu96XvL4ZUWVzibWRWIQ/++Q==", - "dependencies": { - "@opentelemetry/core": "1.24.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" - } - }, - "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/propagator-jaeger": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.24.0.tgz", - "integrity": "sha512-r3MX3AmJiUeiWTXSDOdwBeaO+ahvWcFCpuKxmhhsH8Q8LqDnjhNd3krqBh4Qsq9wa0WhWtiQaDs/NOCWoMOlOw==", - "dependencies": { - "@opentelemetry/core": "1.24.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" - } - }, - "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/resources": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.24.0.tgz", - "integrity": "sha512-mxC7E7ocUS1tLzepnA7O9/G8G6ZTdjCH2pXme1DDDuCuk6n2/53GADX+GWBuyX0dfIxeMInIbJAdjlfN9GNr6A==", - "dependencies": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/semantic-conventions": "1.24.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" - } - }, - "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/sdk-logs": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.51.0.tgz", - "integrity": "sha512-K4fMBRFD8hQ6khk0rvYFuo6L9ymeGgByir6BcuFIgQuQ00OhYwBi9AruZz5V733Ejq7P8ObR3YyubkOUIbeVAw==", - "dependencies": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/resources": "1.24.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.4.0 <1.9.0", - "@opentelemetry/api-logs": ">=0.39.1" - } - }, - "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/sdk-metrics": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.24.0.tgz", - "integrity": "sha512-4tJ+E6N019OZVB/nUW/LoK9xHxfeh88TCoaTqHeLBE9wLYfi6irWW6J9cphMav7J8Qk0D5b7/RM4VEY4dArWOA==", - "dependencies": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/resources": "1.24.0", - "lodash.merge": "^4.6.2" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.9.0" - } - }, - "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/sdk-node": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.51.0.tgz", - "integrity": "sha512-MrPXDQsTAj3lcY8YUCjb7dvSXVZ5jG6wmjD2LB68V1rsLBdP8j70jsI9GaKijY7QB6psbLq6apO1vYeim5U7aw==", - "dependencies": { - "@opentelemetry/api-logs": "0.51.0", - "@opentelemetry/core": "1.24.0", - "@opentelemetry/exporter-trace-otlp-grpc": "0.51.0", - "@opentelemetry/exporter-trace-otlp-http": "0.51.0", - "@opentelemetry/exporter-trace-otlp-proto": "0.51.0", - "@opentelemetry/exporter-zipkin": "1.24.0", - "@opentelemetry/instrumentation": "0.51.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/sdk-logs": "0.51.0", - "@opentelemetry/sdk-metrics": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0", - "@opentelemetry/sdk-trace-node": "1.24.0", - "@opentelemetry/semantic-conventions": "1.24.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.9.0" - } - }, - "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/instrumentation": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.51.0.tgz", - "integrity": "sha512-Eg/+Od5bEvzpvZQGhvMyKIkrzB9S7jW+6z9LHEI2VXhl/GrqQ3oBqlzJt4tA6pGtxRmqQWKWGM1wAbwDdW/gUA==", - "dependencies": { - "@opentelemetry/api-logs": "0.51.0", - "@types/shimmer": "^1.0.2", - "import-in-the-middle": "1.7.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.24.0.tgz", - "integrity": "sha512-H9sLETZ4jw9UJ3totV8oM5R0m4CW0ZIOLfp4NV3g0CM8HD5zGZcaW88xqzWDgiYRpctFxd+WmHtGX/Upoa2vRg==", - "dependencies": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/semantic-conventions": "1.24.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" - } - }, - "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/sdk-trace-node": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.24.0.tgz", - "integrity": "sha512-QgByHmM9uloTpcYEEyW9YJEIMKHFSIM677RH9pJPWWwtM2NQFbEp/8HIJw80Ymtaz6cAxg1Kay1ByqIVzq3t5g==", - "dependencies": { - "@opentelemetry/context-async-hooks": "1.24.0", - "@opentelemetry/core": "1.24.0", - "@opentelemetry/propagator-b3": "1.24.0", - "@opentelemetry/propagator-jaeger": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0", - "semver": "^7.5.2" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" - } - }, - "metapackages/auto-instrumentations-node/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.0.tgz", - "integrity": "sha512-yL0jI6Ltuz8R+Opj7jClGrul6pOoYrdfVmzQS4SITXRPH7I5IRZbrwe/6/v8v4WYMa6MYZG480S1+uc/IGfqsA==", - "engines": { - "node": ">=14" - } - }, "metapackages/auto-instrumentations-web": { "name": "@opentelemetry/auto-instrumentations-web", "version": "0.39.0", @@ -8880,9 +8542,9 @@ } }, "node_modules/@opentelemetry/api-logs": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.51.0.tgz", - "integrity": "sha512-m/jtfBPEIXS1asltl8fPQtO3Sb1qMpuL61unQajUmM8zIxeMF1AlqzWXM3QedcYgTTFiJCew5uJjyhpmqhc0+g==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.51.1.tgz", + "integrity": "sha512-E3skn949Pk1z2XtXu/lxf6QAZpawuTM/IUEXcAzpiUkTd73Hmvw26FiN3cJuTmkpM5hZzHwkomVdtrh/n/zzwA==", "dependencies": { "@opentelemetry/api": "^1.0.0" }, @@ -8903,9 +8565,9 @@ "link": true }, "node_modules/@opentelemetry/context-async-hooks": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.24.0.tgz", - "integrity": "sha512-s7xaQ9ifDpJvwbWRLkZD/J5hY35w+MECm4TQUkg6szRcny9lf6oVhWij4w3JJFQgvHQMXU7oXOpX8Z05HxV/8g==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.24.1.tgz", + "integrity": "sha512-R5r6DO4kgEOVBxFXhXjwospLQkv+sYxwCfjvoZBe7Zm6KKXAV9kDSJhi/D1BweowdZmO+sdbENLs374gER8hpQ==", "engines": { "node": ">=14" }, @@ -8914,11 +8576,11 @@ } }, "node_modules/@opentelemetry/context-zone": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone/-/context-zone-1.24.0.tgz", - "integrity": "sha512-Znb6fvmqZy+4ZC63vvf9qktXakTlLOLeBsMizR5E1G/1cM8LKUVR/JJUws+A4QSAY95Rzldi05aqxoc+YUVVKw==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone/-/context-zone-1.24.1.tgz", + "integrity": "sha512-pt5KLJws1m+rHTeEA6uootoyiuZlCt7j90dmdjXnqx4JZH6sFWqWB5IW1gOukDY7Ym3cNKjtoh3/uK0KuSRBfg==", "dependencies": { - "@opentelemetry/context-zone-peer-dep": "1.24.0", + "@opentelemetry/context-zone-peer-dep": "1.24.1", "zone.js": "^0.11.0 || ^0.13.0 || ^0.14.0" }, "engines": { @@ -8926,9 +8588,9 @@ } }, "node_modules/@opentelemetry/context-zone-peer-dep": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-1.24.0.tgz", - "integrity": "sha512-znNlicjfxRqepQdOZGUN3RYSs+QGoEiGI+cjILBYM4KdEXpoXgxt87l72b0UYhH7YI/uK0TVHse99D0ER9ODAw==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-1.24.1.tgz", + "integrity": "sha512-s67becvBZFFjSLKSiy8ia2m7htsC4gsk8J/X0368FzBYseb/26daYr4ewx6tKcAsmZqJA7402cTQirv175x5BA==", "engines": { "node": ">=14" }, @@ -8942,11 +8604,11 @@ "link": true }, "node_modules/@opentelemetry/core": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.0.tgz", - "integrity": "sha512-FP2oN7mVPqcdxJDTTnKExj4mi91EH+DNuArKfHTjPuJWe2K1JfMIVXNfahw1h3onJxQnxS8K0stKkogX05s+Aw==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.1.tgz", + "integrity": "sha512-wMSGfsdmibI88K9wB498zXY04yThPexo8jvwNNlm542HZB7XrrMRBbAyKJqG8qDRJwIBdBrPMi4V9ZPW/sqrcg==", "dependencies": { - "@opentelemetry/semantic-conventions": "1.24.0" + "@opentelemetry/semantic-conventions": "1.24.1" }, "engines": { "node": ">=14" @@ -8956,13 +8618,13 @@ } }, "node_modules/@opentelemetry/exporter-jaeger": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.24.0.tgz", - "integrity": "sha512-mD28eBrdth937QGU6zgn+6fYBywUaYxLJwANREnE7XS8pHP/Hjxpiy4nb9yIzQ2DqC8Uq7yEnc8ah2pH45B9ZQ==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.24.1.tgz", + "integrity": "sha512-zrcY76PVR4itZD2oxQdFgnvS/Lst1CxmMofOhngvTDIXVqSTEf00QfmdIQUljwmycYwxZIvbJ445k3AGRBbZKQ==", "dependencies": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0", - "@opentelemetry/semantic-conventions": "1.24.0", + "@opentelemetry/core": "1.24.1", + "@opentelemetry/sdk-trace-base": "1.24.1", + "@opentelemetry/semantic-conventions": "1.24.1", "jaeger-client": "^3.15.0" }, "engines": { @@ -8973,16 +8635,16 @@ } }, "node_modules/@opentelemetry/exporter-trace-otlp-grpc": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.51.0.tgz", - "integrity": "sha512-xQpxKzS8ZnxYCa1v+3EKWhwMrSK3+RezpJ+AEKaP2pf2QbLfHt7kKfSn7niR2u3A1Tbe2aC7Ptt9+MafhThOOQ==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.51.1.tgz", + "integrity": "sha512-P9+Hkszih95ITvldGZ+kXvj9HpD1QfS+PwooyHK72GYA+Bgm+yUSAsDkUkDms8+s9HW6poxURv3LcjaMuBBpVQ==", "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.24.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.51.0", - "@opentelemetry/otlp-transformer": "0.51.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0" + "@opentelemetry/core": "1.24.1", + "@opentelemetry/otlp-grpc-exporter-base": "0.51.1", + "@opentelemetry/otlp-transformer": "0.51.1", + "@opentelemetry/resources": "1.24.1", + "@opentelemetry/sdk-trace-base": "1.24.1" }, "engines": { "node": ">=14" @@ -8992,15 +8654,15 @@ } }, "node_modules/@opentelemetry/exporter-trace-otlp-http": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.51.0.tgz", - "integrity": "sha512-zODqnLZmPOxj9CarFv0TrVlx9mgj0TfCMCiUiTdNi9iA2rgdKVo+bjJjpYF6LCTJOQCR5TScAUCKyzwkgDI+iA==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.51.1.tgz", + "integrity": "sha512-n+LhLPsX07URh+HhV2SHVSvz1t4G/l/CE5BjpmhAPqeTceFac1VpyQkavWEJbvnK5bUEXijWt4LxAxFpt2fXyw==", "dependencies": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/otlp-exporter-base": "0.51.0", - "@opentelemetry/otlp-transformer": "0.51.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0" + "@opentelemetry/core": "1.24.1", + "@opentelemetry/otlp-exporter-base": "0.51.1", + "@opentelemetry/otlp-transformer": "0.51.1", + "@opentelemetry/resources": "1.24.1", + "@opentelemetry/sdk-trace-base": "1.24.1" }, "engines": { "node": ">=14" @@ -9010,16 +8672,16 @@ } }, "node_modules/@opentelemetry/exporter-trace-otlp-proto": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.51.0.tgz", - "integrity": "sha512-Fi7r0iMqGoFCQQ+WY0pYOWp395vdinZJIkYKnNbnreHxAN/kVDBl2FxbV3DeOKuRxEY08Gyb9ggPf+Zrqp7l/w==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.51.1.tgz", + "integrity": "sha512-SE9f0/6V6EeXC9i+WA4WFjS1EYgaBCpAnI5+lxWvZ7iO7EU1IvHvZhP6Kojr0nLldo83gqg6G7OWFqsID3uF+w==", "dependencies": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/otlp-exporter-base": "0.51.0", - "@opentelemetry/otlp-proto-exporter-base": "0.51.0", - "@opentelemetry/otlp-transformer": "0.51.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0" + "@opentelemetry/core": "1.24.1", + "@opentelemetry/otlp-exporter-base": "0.51.1", + "@opentelemetry/otlp-proto-exporter-base": "0.51.1", + "@opentelemetry/otlp-transformer": "0.51.1", + "@opentelemetry/resources": "1.24.1", + "@opentelemetry/sdk-trace-base": "1.24.1" }, "engines": { "node": ">=14" @@ -9029,14 +8691,14 @@ } }, "node_modules/@opentelemetry/exporter-zipkin": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.24.0.tgz", - "integrity": "sha512-QeGv0PHONswmu567pf9QliJ6s6DgCu5+ziF+soNS1LTcr1VRRVLViYLmGxmzDFUC48sjNTu7sumcKT0nJXsGBw==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.24.1.tgz", + "integrity": "sha512-+Rl/VFmu2n6eaRMnVbyfZx1DqR/1KNyWebYuHyQBZaEAVIn/ZLgmofRpXN1X2nhJ4BNaptQUNxAstCYYz6dKoQ==", "dependencies": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0", - "@opentelemetry/semantic-conventions": "1.24.0" + "@opentelemetry/core": "1.24.1", + "@opentelemetry/resources": "1.24.1", + "@opentelemetry/sdk-trace-base": "1.24.1", + "@opentelemetry/semantic-conventions": "1.24.1" }, "engines": { "node": ">=14" @@ -9054,13 +8716,13 @@ "link": true }, "node_modules/@opentelemetry/instrumentation": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.51.0.tgz", - "integrity": "sha512-Eg/+Od5bEvzpvZQGhvMyKIkrzB9S7jW+6z9LHEI2VXhl/GrqQ3oBqlzJt4tA6pGtxRmqQWKWGM1wAbwDdW/gUA==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.51.1.tgz", + "integrity": "sha512-JIrvhpgqY6437QIqToyozrUG1h5UhwHkaGK/WAX+fkrpyPtc+RO5FkRtUd9BH0MibabHHvqsnBGKfKVijbmp8w==", "dependencies": { - "@opentelemetry/api-logs": "0.51.0", + "@opentelemetry/api-logs": "0.51.1", "@types/shimmer": "^1.0.2", - "import-in-the-middle": "1.7.1", + "import-in-the-middle": "1.7.4", "require-in-the-middle": "^7.1.1", "semver": "^7.5.2", "shimmer": "^1.2.1" @@ -9121,14 +8783,14 @@ "link": true }, "node_modules/@opentelemetry/instrumentation-fetch": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.51.0.tgz", - "integrity": "sha512-dB9wisB2+wyh0wUB1RFNinCS4TqJ7QMVc4jNzy3JCMJudwFWI/stU10DgZ3vwFQNUEBUIz9QmEQSFud7lsvB2w==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.51.1.tgz", + "integrity": "sha512-LzciqAnJmmYaXWo2hlrN99NMbYbExo6n6lBKBeMHAi7X/ddhCSOsgSNVbF3kDB7P++PJhjYqLT3hy6SU4AFHcg==", "dependencies": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/instrumentation": "0.51.0", - "@opentelemetry/sdk-trace-web": "1.24.0", - "@opentelemetry/semantic-conventions": "1.24.0" + "@opentelemetry/core": "1.24.1", + "@opentelemetry/instrumentation": "0.51.1", + "@opentelemetry/sdk-trace-web": "1.24.1", + "@opentelemetry/semantic-conventions": "1.24.1" }, "engines": { "node": ">=14" @@ -9150,12 +8812,12 @@ "link": true }, "node_modules/@opentelemetry/instrumentation-grpc": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.51.0.tgz", - "integrity": "sha512-Wfhs9e1Hi4nnULLqzt9s2M6+Tz52EkKj6uZnj9ZL3coldlZiP+WmvuUNepds7jcBJg/qDBjnEe96fThPuO7ddA==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.51.1.tgz", + "integrity": "sha512-coRTugFL7De/VNH/1NqPlxnfik87jS+jBXsny+Y/lMhXIA3x8t71IyL9ihuewkD+lNtIxIz6Y7Sq6kPuOqz5dQ==", "dependencies": { - "@opentelemetry/instrumentation": "0.51.0", - "@opentelemetry/semantic-conventions": "1.24.0" + "@opentelemetry/instrumentation": "0.51.1", + "@opentelemetry/semantic-conventions": "1.24.1" }, "engines": { "node": ">=14" @@ -9169,13 +8831,13 @@ "link": true }, "node_modules/@opentelemetry/instrumentation-http": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.51.0.tgz", - "integrity": "sha512-6VsGPBnU6iVKWhVBnuRpwrmiHfxt8EYrqfnH2glfsMpsn4xy+O6U0yGlggPLhoYeOVafV3h70EEk5MU0tpsbiw==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.51.1.tgz", + "integrity": "sha512-6b3nZnFFEz/3xZ6w8bVxctPUWIPWiXuPQ725530JgxnN1cvYFd8CJ75PrHZNjynmzSSnqBkN3ef4R9N+RpMh8Q==", "dependencies": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/instrumentation": "0.51.0", - "@opentelemetry/semantic-conventions": "1.24.0", + "@opentelemetry/core": "1.24.1", + "@opentelemetry/instrumentation": "0.51.1", + "@opentelemetry/semantic-conventions": "1.24.1", "semver": "^7.5.2" }, "engines": { @@ -9282,14 +8944,14 @@ "link": true }, "node_modules/@opentelemetry/instrumentation-xml-http-request": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.51.0.tgz", - "integrity": "sha512-KgLO2qx1z1Wn9NeJgrgNukd10ssK1QqxODwdeBJFO1BaP9sVVargpupYowlDKUL5I3oWOEqi/Oxxdh/fbEsJtw==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.51.1.tgz", + "integrity": "sha512-CrQZxADNFr9M3aCgjM3/KXDz12lBrZA5LW+btfgNb78hsLNwqxThtFvXOHr86UsOzJt+h9m4yDeH6YLEvCTBbw==", "dependencies": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/instrumentation": "0.51.0", - "@opentelemetry/sdk-trace-web": "1.24.0", - "@opentelemetry/semantic-conventions": "1.24.0" + "@opentelemetry/core": "1.24.1", + "@opentelemetry/instrumentation": "0.51.1", + "@opentelemetry/sdk-trace-web": "1.24.1", + "@opentelemetry/semantic-conventions": "1.24.1" }, "engines": { "node": ">=14" @@ -9299,11 +8961,11 @@ } }, "node_modules/@opentelemetry/otlp-exporter-base": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.51.0.tgz", - "integrity": "sha512-hR4c9vWVz1QgzCBSyy9zSDkvfTgaK96E6/tfVP6O4dzdZW9HqWimA3lXV/KXadEGqShvM4GToz9EHp2A5RU5bQ==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.51.1.tgz", + "integrity": "sha512-UYlnOYyDdzo1Gw559EHCzru0RwhvuXCwoH8jGo9J4gO1TE58GjnEmIjomMsKBCym3qWNJfIQXw+9SZCV0DdQNg==", "dependencies": { - "@opentelemetry/core": "1.24.0" + "@opentelemetry/core": "1.24.1" }, "engines": { "node": ">=14" @@ -9313,13 +8975,13 @@ } }, "node_modules/@opentelemetry/otlp-grpc-exporter-base": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.51.0.tgz", - "integrity": "sha512-oTRtDvvB0bTRTBVrvKA/oM1gIAqQ6DVQS07pvqiL1cZS8wBrGgpw+2iTd0nV661Y/MhDn/kNWp8lRhMEIKN9bw==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.51.1.tgz", + "integrity": "sha512-ZAS+4pq8o7dsugGTwV9s6JMKSxi+guIHdn0acOv0bqj26e9pWDFx5Ky+bI0aY46uR9Y0JyXqY+KAEYM/SO3DFA==", "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.24.0", - "@opentelemetry/otlp-exporter-base": "0.51.0", + "@opentelemetry/core": "1.24.1", + "@opentelemetry/otlp-exporter-base": "0.51.1", "protobufjs": "^7.2.3" }, "engines": { @@ -9330,12 +8992,12 @@ } }, "node_modules/@opentelemetry/otlp-proto-exporter-base": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.51.0.tgz", - "integrity": "sha512-WDANDLSUh11Gu5o6iCzmjZraIv5bK8z1L/t6lxQ2NeEKiKUPo5pVOBBQQC/yAQU2yeqkiO1GRCieH+XahZf60A==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.51.1.tgz", + "integrity": "sha512-gxxxwfk0inDMb5DLeuxQ3L8TtptxSiTNHE4nnAJH34IQXAVRhXSXW1rK8PmDKDngRPIZ6J7ncUCjjIn8b+AgqQ==", "dependencies": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/otlp-exporter-base": "0.51.0", + "@opentelemetry/core": "1.24.1", + "@opentelemetry/otlp-exporter-base": "0.51.1", "protobufjs": "^7.2.3" }, "engines": { @@ -9346,16 +9008,16 @@ } }, "node_modules/@opentelemetry/otlp-transformer": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.51.0.tgz", - "integrity": "sha512-ylLgx2xumVoSefDHP9GMAU/LG+TU3+8eacVDXV5o1RqWxsdVOaQmCTY0XyDgeRTn6hIOVAq/HHQbRq3iWOrt2A==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.51.1.tgz", + "integrity": "sha512-OppYOXwV9LQqqtYUCywqoOqX/JT9LQ5/FMuPZ//eTkvuHdUC4ZMwz2c6uSoT2R90GWvvGnF1iEqTGyTT3xAt2Q==", "dependencies": { - "@opentelemetry/api-logs": "0.51.0", - "@opentelemetry/core": "1.24.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/sdk-logs": "0.51.0", - "@opentelemetry/sdk-metrics": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0" + "@opentelemetry/api-logs": "0.51.1", + "@opentelemetry/core": "1.24.1", + "@opentelemetry/resources": "1.24.1", + "@opentelemetry/sdk-logs": "0.51.1", + "@opentelemetry/sdk-metrics": "1.24.1", + "@opentelemetry/sdk-trace-base": "1.24.1" }, "engines": { "node": ">=14" @@ -9373,11 +9035,11 @@ "link": true }, "node_modules/@opentelemetry/propagator-aws-xray": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-aws-xray/-/propagator-aws-xray-1.24.0.tgz", - "integrity": "sha512-rcuMtEOTZC7TW84tws1QLUVRElrGSbBJwK0b+qa56zJULDiUIiUpS+dSzO+aUchg7MtTJBZSG5OPsfsKpGgNig==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-aws-xray/-/propagator-aws-xray-1.24.1.tgz", + "integrity": "sha512-RzwoLe6QzsYGcpmxxDbbbgSpe3ncxSM4dtFHXh/rCYGjyq0nZGXKvk26mJtWZ4kQ3nuiIoqSZueIuGmt/mvOTA==", "dependencies": { - "@opentelemetry/core": "1.24.0" + "@opentelemetry/core": "1.24.1" }, "engines": { "node": ">=14" @@ -9387,11 +9049,11 @@ } }, "node_modules/@opentelemetry/propagator-b3": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.24.0.tgz", - "integrity": "sha512-7TMIDE4+NO5vnkor+zned42wqca+hmhW5gWKhmYjUHC5B5uojo1PvtmBrd7kigFu96XvL4ZUWVzibWRWIQ/++Q==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.24.1.tgz", + "integrity": "sha512-nda97ZwhpZKyUJTXqQuKzNhPMUgMLunbbGWn8kroBwegn+nh6OhtyGkrVQsQLNdVKJl0KeB5z0ZgeWszrYhwFw==", "dependencies": { - "@opentelemetry/core": "1.24.0" + "@opentelemetry/core": "1.24.1" }, "engines": { "node": ">=14" @@ -9409,11 +9071,11 @@ "link": true }, "node_modules/@opentelemetry/propagator-jaeger": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.24.0.tgz", - "integrity": "sha512-r3MX3AmJiUeiWTXSDOdwBeaO+ahvWcFCpuKxmhhsH8Q8LqDnjhNd3krqBh4Qsq9wa0WhWtiQaDs/NOCWoMOlOw==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.24.1.tgz", + "integrity": "sha512-7bRBJn3FG1l195A1m+xXRHvgzAOBsfmRi9uZ5Da18oTh7BLmNDiA8+kpk51FpTsU1PCikPVpRDNPhKVB6lyzZg==", "dependencies": { - "@opentelemetry/core": "1.24.0" + "@opentelemetry/core": "1.24.1" }, "engines": { "node": ">=14" @@ -9459,12 +9121,12 @@ "link": true }, "node_modules/@opentelemetry/resources": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.24.0.tgz", - "integrity": "sha512-mxC7E7ocUS1tLzepnA7O9/G8G6ZTdjCH2pXme1DDDuCuk6n2/53GADX+GWBuyX0dfIxeMInIbJAdjlfN9GNr6A==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.24.1.tgz", + "integrity": "sha512-cyv0MwAaPF7O86x5hk3NNgenMObeejZFLJJDVuSeSMIsknlsj3oOZzRv3qSzlwYomXsICfBeFFlxwHQte5mGXQ==", "dependencies": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/semantic-conventions": "1.24.0" + "@opentelemetry/core": "1.24.1", + "@opentelemetry/semantic-conventions": "1.24.1" }, "engines": { "node": ">=14" @@ -9474,12 +9136,12 @@ } }, "node_modules/@opentelemetry/sdk-logs": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.51.0.tgz", - "integrity": "sha512-K4fMBRFD8hQ6khk0rvYFuo6L9ymeGgByir6BcuFIgQuQ00OhYwBi9AruZz5V733Ejq7P8ObR3YyubkOUIbeVAw==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.51.1.tgz", + "integrity": "sha512-ULQQtl82b673PpZc5/0EtH4V+BrwVOgKJZEB7tYZnGTG3I98tQVk89S9/JSixomDr++F4ih+LSJTCqIKBz+MQQ==", "dependencies": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/resources": "1.24.0" + "@opentelemetry/core": "1.24.1", + "@opentelemetry/resources": "1.24.1" }, "engines": { "node": ">=14" @@ -9490,12 +9152,12 @@ } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.24.0.tgz", - "integrity": "sha512-4tJ+E6N019OZVB/nUW/LoK9xHxfeh88TCoaTqHeLBE9wLYfi6irWW6J9cphMav7J8Qk0D5b7/RM4VEY4dArWOA==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.24.1.tgz", + "integrity": "sha512-FrAqCbbGao9iKI+Mgh+OsC9+U2YMoXnlDHe06yH7dvavCKzE3S892dGtX54+WhSFVxHR/TMRVJiK/CV93GR0TQ==", "dependencies": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/resources": "1.24.0", + "@opentelemetry/core": "1.24.1", + "@opentelemetry/resources": "1.24.1", "lodash.merge": "^4.6.2" }, "engines": { @@ -9506,23 +9168,23 @@ } }, "node_modules/@opentelemetry/sdk-node": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.51.0.tgz", - "integrity": "sha512-MrPXDQsTAj3lcY8YUCjb7dvSXVZ5jG6wmjD2LB68V1rsLBdP8j70jsI9GaKijY7QB6psbLq6apO1vYeim5U7aw==", - "dependencies": { - "@opentelemetry/api-logs": "0.51.0", - "@opentelemetry/core": "1.24.0", - "@opentelemetry/exporter-trace-otlp-grpc": "0.51.0", - "@opentelemetry/exporter-trace-otlp-http": "0.51.0", - "@opentelemetry/exporter-trace-otlp-proto": "0.51.0", - "@opentelemetry/exporter-zipkin": "1.24.0", - "@opentelemetry/instrumentation": "0.51.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/sdk-logs": "0.51.0", - "@opentelemetry/sdk-metrics": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0", - "@opentelemetry/sdk-trace-node": "1.24.0", - "@opentelemetry/semantic-conventions": "1.24.0" + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.51.1.tgz", + "integrity": "sha512-GgmNF9C+6esr8PIJxCqHw84rEOkYm6XdFWZ2+Wyc3qaUt92ACoN7uSw5iKNvaUq62W0xii1wsGxwHzyENtPP8w==", + "dependencies": { + "@opentelemetry/api-logs": "0.51.1", + "@opentelemetry/core": "1.24.1", + "@opentelemetry/exporter-trace-otlp-grpc": "0.51.1", + "@opentelemetry/exporter-trace-otlp-http": "0.51.1", + "@opentelemetry/exporter-trace-otlp-proto": "0.51.1", + "@opentelemetry/exporter-zipkin": "1.24.1", + "@opentelemetry/instrumentation": "0.51.1", + "@opentelemetry/resources": "1.24.1", + "@opentelemetry/sdk-logs": "0.51.1", + "@opentelemetry/sdk-metrics": "1.24.1", + "@opentelemetry/sdk-trace-base": "1.24.1", + "@opentelemetry/sdk-trace-node": "1.24.1", + "@opentelemetry/semantic-conventions": "1.24.1" }, "engines": { "node": ">=14" @@ -9532,13 +9194,13 @@ } }, "node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.24.0.tgz", - "integrity": "sha512-H9sLETZ4jw9UJ3totV8oM5R0m4CW0ZIOLfp4NV3g0CM8HD5zGZcaW88xqzWDgiYRpctFxd+WmHtGX/Upoa2vRg==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.24.1.tgz", + "integrity": "sha512-zz+N423IcySgjihl2NfjBf0qw1RWe11XIAWVrTNOSSI6dtSPJiVom2zipFB2AEEtJWpv0Iz6DY6+TjnyTV5pWg==", "dependencies": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/semantic-conventions": "1.24.0" + "@opentelemetry/core": "1.24.1", + "@opentelemetry/resources": "1.24.1", + "@opentelemetry/semantic-conventions": "1.24.1" }, "engines": { "node": ">=14" @@ -9548,15 +9210,15 @@ } }, "node_modules/@opentelemetry/sdk-trace-node": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.24.0.tgz", - "integrity": "sha512-QgByHmM9uloTpcYEEyW9YJEIMKHFSIM677RH9pJPWWwtM2NQFbEp/8HIJw80Ymtaz6cAxg1Kay1ByqIVzq3t5g==", - "dependencies": { - "@opentelemetry/context-async-hooks": "1.24.0", - "@opentelemetry/core": "1.24.0", - "@opentelemetry/propagator-b3": "1.24.0", - "@opentelemetry/propagator-jaeger": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.24.1.tgz", + "integrity": "sha512-/FZX8uWaGIAwsDhqI8VvQ+qWtfMNlXjaFYGc+vmxgdRFppCSSIRwrPyIhJO1qx61okyYhoyxVEZAfoiNxrfJCg==", + "dependencies": { + "@opentelemetry/context-async-hooks": "1.24.1", + "@opentelemetry/core": "1.24.1", + "@opentelemetry/propagator-b3": "1.24.1", + "@opentelemetry/propagator-jaeger": "1.24.1", + "@opentelemetry/sdk-trace-base": "1.24.1", "semver": "^7.5.2" }, "engines": { @@ -9567,13 +9229,13 @@ } }, "node_modules/@opentelemetry/sdk-trace-web": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-1.24.0.tgz", - "integrity": "sha512-G0q8aZPUhRtO/iw2BkjHeNqCMBf0JQX5VqqiPWXn9u5iRkpeQ6LZrGaiymKWOdEqtXCgM44yrCY/4WoJqR0bjQ==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-1.24.1.tgz", + "integrity": "sha512-0w+aKRai9VREeo3VrtW+hcbrE2Fl/uKL7G+oXgRNf6pI9QLaEGuEzUTX+oxXVPBadzjOd+5dqCHYdX7UeVjzwA==", "dependencies": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0", - "@opentelemetry/semantic-conventions": "1.24.0" + "@opentelemetry/core": "1.24.1", + "@opentelemetry/sdk-trace-base": "1.24.1", + "@opentelemetry/semantic-conventions": "1.24.1" }, "engines": { "node": ">=14" @@ -9583,9 +9245,9 @@ } }, "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.0.tgz", - "integrity": "sha512-yL0jI6Ltuz8R+Opj7jClGrul6pOoYrdfVmzQS4SITXRPH7I5IRZbrwe/6/v8v4WYMa6MYZG480S1+uc/IGfqsA==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.1.tgz", + "integrity": "sha512-VkliWlS4/+GHLLW7J/rVBA00uXus1SWvwFvcUDxDwmFxYfg/2VI6ekwdXS28cjI8Qz2ky2BzG8OUHo+WeYIWqw==", "engines": { "node": ">=14" } @@ -12566,10 +12228,10 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "peerDependencies": { "acorn": "^8" } @@ -14586,9 +14248,9 @@ } }, "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==" }, "node_modules/class-transformer": { "version": "0.5.1", @@ -20280,12 +19942,12 @@ } }, "node_modules/import-in-the-middle": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.7.1.tgz", - "integrity": "sha512-1LrZPDtW+atAxH42S6288qyDFNQ2YCty+2mxEPRtfazH6Z5QwkaBSTS2ods7hnVJioF6rkRfNoA6A/MstpFXLg==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.7.4.tgz", + "integrity": "sha512-Lk+qzWmiQuRPPulGQeK5qq0v32k2bHnWrRPFgqyvhw7Kkov5L6MOLOIU3pcWeujc9W4q54Cp3Q2WV16eQkc7Bg==", "dependencies": { "acorn": "^8.8.2", - "acorn-import-assertions": "^1.9.0", + "acorn-import-attributes": "^1.9.5", "cjs-module-lexer": "^1.2.2", "module-details-from-path": "^1.0.3" } @@ -37276,11 +36938,10 @@ "version": "0.1.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api": "^1.0.0", "@opentelemetry/sdk-trace-base": "^1.0.0" }, "devDependencies": { - "@opentelemetry/api": "^1.3.0", + "@opentelemetry/api": "^1.0.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "expect": "29.2.0", @@ -46521,9 +46182,9 @@ "integrity": "sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==" }, "@opentelemetry/api-logs": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.51.0.tgz", - "integrity": "sha512-m/jtfBPEIXS1asltl8fPQtO3Sb1qMpuL61unQajUmM8zIxeMF1AlqzWXM3QedcYgTTFiJCew5uJjyhpmqhc0+g==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.51.1.tgz", + "integrity": "sha512-E3skn949Pk1z2XtXu/lxf6QAZpawuTM/IUEXcAzpiUkTd73Hmvw26FiN3cJuTmkpM5hZzHwkomVdtrh/n/zzwA==", "requires": { "@opentelemetry/api": "^1.0.0" } @@ -46587,228 +46248,6 @@ "sinon": "15.2.0", "ts-mocha": "10.0.0", "typescript": "4.4.4" - }, - "dependencies": { - "@opentelemetry/api-logs": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.51.0.tgz", - "integrity": "sha512-m/jtfBPEIXS1asltl8fPQtO3Sb1qMpuL61unQajUmM8zIxeMF1AlqzWXM3QedcYgTTFiJCew5uJjyhpmqhc0+g==", - "requires": { - "@opentelemetry/api": "^1.0.0" - } - }, - "@opentelemetry/context-async-hooks": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.24.0.tgz", - "integrity": "sha512-s7xaQ9ifDpJvwbWRLkZD/J5hY35w+MECm4TQUkg6szRcny9lf6oVhWij4w3JJFQgvHQMXU7oXOpX8Z05HxV/8g==", - "requires": {} - }, - "@opentelemetry/core": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.0.tgz", - "integrity": "sha512-FP2oN7mVPqcdxJDTTnKExj4mi91EH+DNuArKfHTjPuJWe2K1JfMIVXNfahw1h3onJxQnxS8K0stKkogX05s+Aw==", - "requires": { - "@opentelemetry/semantic-conventions": "1.24.0" - } - }, - "@opentelemetry/exporter-trace-otlp-grpc": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.51.0.tgz", - "integrity": "sha512-xQpxKzS8ZnxYCa1v+3EKWhwMrSK3+RezpJ+AEKaP2pf2QbLfHt7kKfSn7niR2u3A1Tbe2aC7Ptt9+MafhThOOQ==", - "requires": { - "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.24.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.51.0", - "@opentelemetry/otlp-transformer": "0.51.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0" - } - }, - "@opentelemetry/exporter-trace-otlp-http": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.51.0.tgz", - "integrity": "sha512-zODqnLZmPOxj9CarFv0TrVlx9mgj0TfCMCiUiTdNi9iA2rgdKVo+bjJjpYF6LCTJOQCR5TScAUCKyzwkgDI+iA==", - "requires": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/otlp-exporter-base": "0.51.0", - "@opentelemetry/otlp-transformer": "0.51.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0" - } - }, - "@opentelemetry/exporter-trace-otlp-proto": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.51.0.tgz", - "integrity": "sha512-Fi7r0iMqGoFCQQ+WY0pYOWp395vdinZJIkYKnNbnreHxAN/kVDBl2FxbV3DeOKuRxEY08Gyb9ggPf+Zrqp7l/w==", - "requires": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/otlp-exporter-base": "0.51.0", - "@opentelemetry/otlp-proto-exporter-base": "0.51.0", - "@opentelemetry/otlp-transformer": "0.51.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0" - } - }, - "@opentelemetry/exporter-zipkin": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.24.0.tgz", - "integrity": "sha512-QeGv0PHONswmu567pf9QliJ6s6DgCu5+ziF+soNS1LTcr1VRRVLViYLmGxmzDFUC48sjNTu7sumcKT0nJXsGBw==", - "requires": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0", - "@opentelemetry/semantic-conventions": "1.24.0" - } - }, - "@opentelemetry/otlp-exporter-base": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.51.0.tgz", - "integrity": "sha512-hR4c9vWVz1QgzCBSyy9zSDkvfTgaK96E6/tfVP6O4dzdZW9HqWimA3lXV/KXadEGqShvM4GToz9EHp2A5RU5bQ==", - "requires": { - "@opentelemetry/core": "1.24.0" - } - }, - "@opentelemetry/otlp-grpc-exporter-base": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.51.0.tgz", - "integrity": "sha512-oTRtDvvB0bTRTBVrvKA/oM1gIAqQ6DVQS07pvqiL1cZS8wBrGgpw+2iTd0nV661Y/MhDn/kNWp8lRhMEIKN9bw==", - "requires": { - "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.24.0", - "@opentelemetry/otlp-exporter-base": "0.51.0", - "protobufjs": "^7.2.3" - } - }, - "@opentelemetry/otlp-proto-exporter-base": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.51.0.tgz", - "integrity": "sha512-WDANDLSUh11Gu5o6iCzmjZraIv5bK8z1L/t6lxQ2NeEKiKUPo5pVOBBQQC/yAQU2yeqkiO1GRCieH+XahZf60A==", - "requires": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/otlp-exporter-base": "0.51.0", - "protobufjs": "^7.2.3" - } - }, - "@opentelemetry/otlp-transformer": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.51.0.tgz", - "integrity": "sha512-ylLgx2xumVoSefDHP9GMAU/LG+TU3+8eacVDXV5o1RqWxsdVOaQmCTY0XyDgeRTn6hIOVAq/HHQbRq3iWOrt2A==", - "requires": { - "@opentelemetry/api-logs": "0.51.0", - "@opentelemetry/core": "1.24.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/sdk-logs": "0.51.0", - "@opentelemetry/sdk-metrics": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0" - } - }, - "@opentelemetry/propagator-b3": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.24.0.tgz", - "integrity": "sha512-7TMIDE4+NO5vnkor+zned42wqca+hmhW5gWKhmYjUHC5B5uojo1PvtmBrd7kigFu96XvL4ZUWVzibWRWIQ/++Q==", - "requires": { - "@opentelemetry/core": "1.24.0" - } - }, - "@opentelemetry/propagator-jaeger": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.24.0.tgz", - "integrity": "sha512-r3MX3AmJiUeiWTXSDOdwBeaO+ahvWcFCpuKxmhhsH8Q8LqDnjhNd3krqBh4Qsq9wa0WhWtiQaDs/NOCWoMOlOw==", - "requires": { - "@opentelemetry/core": "1.24.0" - } - }, - "@opentelemetry/resources": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.24.0.tgz", - "integrity": "sha512-mxC7E7ocUS1tLzepnA7O9/G8G6ZTdjCH2pXme1DDDuCuk6n2/53GADX+GWBuyX0dfIxeMInIbJAdjlfN9GNr6A==", - "requires": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/semantic-conventions": "1.24.0" - } - }, - "@opentelemetry/sdk-logs": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.51.0.tgz", - "integrity": "sha512-K4fMBRFD8hQ6khk0rvYFuo6L9ymeGgByir6BcuFIgQuQ00OhYwBi9AruZz5V733Ejq7P8ObR3YyubkOUIbeVAw==", - "requires": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/resources": "1.24.0" - } - }, - "@opentelemetry/sdk-metrics": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.24.0.tgz", - "integrity": "sha512-4tJ+E6N019OZVB/nUW/LoK9xHxfeh88TCoaTqHeLBE9wLYfi6irWW6J9cphMav7J8Qk0D5b7/RM4VEY4dArWOA==", - "requires": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/resources": "1.24.0", - "lodash.merge": "^4.6.2" - } - }, - "@opentelemetry/sdk-node": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.51.0.tgz", - "integrity": "sha512-MrPXDQsTAj3lcY8YUCjb7dvSXVZ5jG6wmjD2LB68V1rsLBdP8j70jsI9GaKijY7QB6psbLq6apO1vYeim5U7aw==", - "requires": { - "@opentelemetry/api-logs": "0.51.0", - "@opentelemetry/core": "1.24.0", - "@opentelemetry/exporter-trace-otlp-grpc": "0.51.0", - "@opentelemetry/exporter-trace-otlp-http": "0.51.0", - "@opentelemetry/exporter-trace-otlp-proto": "0.51.0", - "@opentelemetry/exporter-zipkin": "1.24.0", - "@opentelemetry/instrumentation": "0.51.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/sdk-logs": "0.51.0", - "@opentelemetry/sdk-metrics": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0", - "@opentelemetry/sdk-trace-node": "1.24.0", - "@opentelemetry/semantic-conventions": "1.24.0" - }, - "dependencies": { - "@opentelemetry/instrumentation": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.51.0.tgz", - "integrity": "sha512-Eg/+Od5bEvzpvZQGhvMyKIkrzB9S7jW+6z9LHEI2VXhl/GrqQ3oBqlzJt4tA6pGtxRmqQWKWGM1wAbwDdW/gUA==", - "requires": { - "@opentelemetry/api-logs": "0.51.0", - "@types/shimmer": "^1.0.2", - "import-in-the-middle": "1.7.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - } - } - } - }, - "@opentelemetry/sdk-trace-base": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.24.0.tgz", - "integrity": "sha512-H9sLETZ4jw9UJ3totV8oM5R0m4CW0ZIOLfp4NV3g0CM8HD5zGZcaW88xqzWDgiYRpctFxd+WmHtGX/Upoa2vRg==", - "requires": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/semantic-conventions": "1.24.0" - } - }, - "@opentelemetry/sdk-trace-node": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.24.0.tgz", - "integrity": "sha512-QgByHmM9uloTpcYEEyW9YJEIMKHFSIM677RH9pJPWWwtM2NQFbEp/8HIJw80Ymtaz6cAxg1Kay1ByqIVzq3t5g==", - "requires": { - "@opentelemetry/context-async-hooks": "1.24.0", - "@opentelemetry/core": "1.24.0", - "@opentelemetry/propagator-b3": "1.24.0", - "@opentelemetry/propagator-jaeger": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0", - "semver": "^7.5.2" - } - }, - "@opentelemetry/semantic-conventions": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.0.tgz", - "integrity": "sha512-yL0jI6Ltuz8R+Opj7jClGrul6pOoYrdfVmzQS4SITXRPH7I5IRZbrwe/6/v8v4WYMa6MYZG480S1+uc/IGfqsA==" - } } }, "@opentelemetry/auto-instrumentations-web": { @@ -46856,7 +46295,7 @@ "@opentelemetry/baggage-span-processor": { "version": "file:packages/baggage-span-processor", "requires": { - "@opentelemetry/api": "^1.3.0", + "@opentelemetry/api": "^1.0.0", "@opentelemetry/sdk-trace-base": "^1.0.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", @@ -46877,24 +46316,24 @@ } }, "@opentelemetry/context-async-hooks": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.24.0.tgz", - "integrity": "sha512-s7xaQ9ifDpJvwbWRLkZD/J5hY35w+MECm4TQUkg6szRcny9lf6oVhWij4w3JJFQgvHQMXU7oXOpX8Z05HxV/8g==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.24.1.tgz", + "integrity": "sha512-R5r6DO4kgEOVBxFXhXjwospLQkv+sYxwCfjvoZBe7Zm6KKXAV9kDSJhi/D1BweowdZmO+sdbENLs374gER8hpQ==", "requires": {} }, "@opentelemetry/context-zone": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone/-/context-zone-1.24.0.tgz", - "integrity": "sha512-Znb6fvmqZy+4ZC63vvf9qktXakTlLOLeBsMizR5E1G/1cM8LKUVR/JJUws+A4QSAY95Rzldi05aqxoc+YUVVKw==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone/-/context-zone-1.24.1.tgz", + "integrity": "sha512-pt5KLJws1m+rHTeEA6uootoyiuZlCt7j90dmdjXnqx4JZH6sFWqWB5IW1gOukDY7Ym3cNKjtoh3/uK0KuSRBfg==", "requires": { - "@opentelemetry/context-zone-peer-dep": "1.24.0", + "@opentelemetry/context-zone-peer-dep": "1.24.1", "zone.js": "^0.11.0 || ^0.13.0 || ^0.14.0" } }, "@opentelemetry/context-zone-peer-dep": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-1.24.0.tgz", - "integrity": "sha512-znNlicjfxRqepQdOZGUN3RYSs+QGoEiGI+cjILBYM4KdEXpoXgxt87l72b0UYhH7YI/uK0TVHse99D0ER9ODAw==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-1.24.1.tgz", + "integrity": "sha512-s67becvBZFFjSLKSiy8ia2m7htsC4gsk8J/X0368FzBYseb/26daYr4ewx6tKcAsmZqJA7402cTQirv175x5BA==", "requires": {} }, "@opentelemetry/contrib-test-utils": { @@ -46914,71 +46353,71 @@ } }, "@opentelemetry/core": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.0.tgz", - "integrity": "sha512-FP2oN7mVPqcdxJDTTnKExj4mi91EH+DNuArKfHTjPuJWe2K1JfMIVXNfahw1h3onJxQnxS8K0stKkogX05s+Aw==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.1.tgz", + "integrity": "sha512-wMSGfsdmibI88K9wB498zXY04yThPexo8jvwNNlm542HZB7XrrMRBbAyKJqG8qDRJwIBdBrPMi4V9ZPW/sqrcg==", "requires": { - "@opentelemetry/semantic-conventions": "1.24.0" + "@opentelemetry/semantic-conventions": "1.24.1" } }, "@opentelemetry/exporter-jaeger": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.24.0.tgz", - "integrity": "sha512-mD28eBrdth937QGU6zgn+6fYBywUaYxLJwANREnE7XS8pHP/Hjxpiy4nb9yIzQ2DqC8Uq7yEnc8ah2pH45B9ZQ==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-1.24.1.tgz", + "integrity": "sha512-zrcY76PVR4itZD2oxQdFgnvS/Lst1CxmMofOhngvTDIXVqSTEf00QfmdIQUljwmycYwxZIvbJ445k3AGRBbZKQ==", "requires": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0", - "@opentelemetry/semantic-conventions": "1.24.0", + "@opentelemetry/core": "1.24.1", + "@opentelemetry/sdk-trace-base": "1.24.1", + "@opentelemetry/semantic-conventions": "1.24.1", "jaeger-client": "^3.15.0" } }, "@opentelemetry/exporter-trace-otlp-grpc": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.51.0.tgz", - "integrity": "sha512-xQpxKzS8ZnxYCa1v+3EKWhwMrSK3+RezpJ+AEKaP2pf2QbLfHt7kKfSn7niR2u3A1Tbe2aC7Ptt9+MafhThOOQ==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.51.1.tgz", + "integrity": "sha512-P9+Hkszih95ITvldGZ+kXvj9HpD1QfS+PwooyHK72GYA+Bgm+yUSAsDkUkDms8+s9HW6poxURv3LcjaMuBBpVQ==", "requires": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.24.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.51.0", - "@opentelemetry/otlp-transformer": "0.51.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0" + "@opentelemetry/core": "1.24.1", + "@opentelemetry/otlp-grpc-exporter-base": "0.51.1", + "@opentelemetry/otlp-transformer": "0.51.1", + "@opentelemetry/resources": "1.24.1", + "@opentelemetry/sdk-trace-base": "1.24.1" } }, "@opentelemetry/exporter-trace-otlp-http": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.51.0.tgz", - "integrity": "sha512-zODqnLZmPOxj9CarFv0TrVlx9mgj0TfCMCiUiTdNi9iA2rgdKVo+bjJjpYF6LCTJOQCR5TScAUCKyzwkgDI+iA==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.51.1.tgz", + "integrity": "sha512-n+LhLPsX07URh+HhV2SHVSvz1t4G/l/CE5BjpmhAPqeTceFac1VpyQkavWEJbvnK5bUEXijWt4LxAxFpt2fXyw==", "requires": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/otlp-exporter-base": "0.51.0", - "@opentelemetry/otlp-transformer": "0.51.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0" + "@opentelemetry/core": "1.24.1", + "@opentelemetry/otlp-exporter-base": "0.51.1", + "@opentelemetry/otlp-transformer": "0.51.1", + "@opentelemetry/resources": "1.24.1", + "@opentelemetry/sdk-trace-base": "1.24.1" } }, "@opentelemetry/exporter-trace-otlp-proto": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.51.0.tgz", - "integrity": "sha512-Fi7r0iMqGoFCQQ+WY0pYOWp395vdinZJIkYKnNbnreHxAN/kVDBl2FxbV3DeOKuRxEY08Gyb9ggPf+Zrqp7l/w==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.51.1.tgz", + "integrity": "sha512-SE9f0/6V6EeXC9i+WA4WFjS1EYgaBCpAnI5+lxWvZ7iO7EU1IvHvZhP6Kojr0nLldo83gqg6G7OWFqsID3uF+w==", "requires": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/otlp-exporter-base": "0.51.0", - "@opentelemetry/otlp-proto-exporter-base": "0.51.0", - "@opentelemetry/otlp-transformer": "0.51.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0" + "@opentelemetry/core": "1.24.1", + "@opentelemetry/otlp-exporter-base": "0.51.1", + "@opentelemetry/otlp-proto-exporter-base": "0.51.1", + "@opentelemetry/otlp-transformer": "0.51.1", + "@opentelemetry/resources": "1.24.1", + "@opentelemetry/sdk-trace-base": "1.24.1" } }, "@opentelemetry/exporter-zipkin": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.24.0.tgz", - "integrity": "sha512-QeGv0PHONswmu567pf9QliJ6s6DgCu5+ziF+soNS1LTcr1VRRVLViYLmGxmzDFUC48sjNTu7sumcKT0nJXsGBw==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.24.1.tgz", + "integrity": "sha512-+Rl/VFmu2n6eaRMnVbyfZx1DqR/1KNyWebYuHyQBZaEAVIn/ZLgmofRpXN1X2nhJ4BNaptQUNxAstCYYz6dKoQ==", "requires": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0", - "@opentelemetry/semantic-conventions": "1.24.0" + "@opentelemetry/core": "1.24.1", + "@opentelemetry/resources": "1.24.1", + "@opentelemetry/sdk-trace-base": "1.24.1", + "@opentelemetry/semantic-conventions": "1.24.1" } }, "@opentelemetry/host-metrics": { @@ -47041,13 +46480,13 @@ } }, "@opentelemetry/instrumentation": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.51.0.tgz", - "integrity": "sha512-Eg/+Od5bEvzpvZQGhvMyKIkrzB9S7jW+6z9LHEI2VXhl/GrqQ3oBqlzJt4tA6pGtxRmqQWKWGM1wAbwDdW/gUA==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.51.1.tgz", + "integrity": "sha512-JIrvhpgqY6437QIqToyozrUG1h5UhwHkaGK/WAX+fkrpyPtc+RO5FkRtUd9BH0MibabHHvqsnBGKfKVijbmp8w==", "requires": { - "@opentelemetry/api-logs": "0.51.0", + "@opentelemetry/api-logs": "0.51.1", "@types/shimmer": "^1.0.2", - "import-in-the-middle": "1.7.1", + "import-in-the-middle": "1.7.4", "require-in-the-middle": "^7.1.1", "semver": "^7.5.2", "shimmer": "^1.2.1" @@ -47428,14 +46867,14 @@ } }, "@opentelemetry/instrumentation-fetch": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.51.0.tgz", - "integrity": "sha512-dB9wisB2+wyh0wUB1RFNinCS4TqJ7QMVc4jNzy3JCMJudwFWI/stU10DgZ3vwFQNUEBUIz9QmEQSFud7lsvB2w==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.51.1.tgz", + "integrity": "sha512-LzciqAnJmmYaXWo2hlrN99NMbYbExo6n6lBKBeMHAi7X/ddhCSOsgSNVbF3kDB7P++PJhjYqLT3hy6SU4AFHcg==", "requires": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/instrumentation": "0.51.0", - "@opentelemetry/sdk-trace-web": "1.24.0", - "@opentelemetry/semantic-conventions": "1.24.0" + "@opentelemetry/core": "1.24.1", + "@opentelemetry/instrumentation": "0.51.1", + "@opentelemetry/sdk-trace-web": "1.24.1", + "@opentelemetry/semantic-conventions": "1.24.1" } }, "@opentelemetry/instrumentation-fs": { @@ -47534,12 +46973,12 @@ } }, "@opentelemetry/instrumentation-grpc": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.51.0.tgz", - "integrity": "sha512-Wfhs9e1Hi4nnULLqzt9s2M6+Tz52EkKj6uZnj9ZL3coldlZiP+WmvuUNepds7jcBJg/qDBjnEe96fThPuO7ddA==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.51.1.tgz", + "integrity": "sha512-coRTugFL7De/VNH/1NqPlxnfik87jS+jBXsny+Y/lMhXIA3x8t71IyL9ihuewkD+lNtIxIz6Y7Sq6kPuOqz5dQ==", "requires": { - "@opentelemetry/instrumentation": "0.51.0", - "@opentelemetry/semantic-conventions": "1.24.0" + "@opentelemetry/instrumentation": "0.51.1", + "@opentelemetry/semantic-conventions": "1.24.1" } }, "@opentelemetry/instrumentation-hapi": { @@ -47565,13 +47004,13 @@ } }, "@opentelemetry/instrumentation-http": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.51.0.tgz", - "integrity": "sha512-6VsGPBnU6iVKWhVBnuRpwrmiHfxt8EYrqfnH2glfsMpsn4xy+O6U0yGlggPLhoYeOVafV3h70EEk5MU0tpsbiw==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.51.1.tgz", + "integrity": "sha512-6b3nZnFFEz/3xZ6w8bVxctPUWIPWiXuPQ725530JgxnN1cvYFd8CJ75PrHZNjynmzSSnqBkN3ef4R9N+RpMh8Q==", "requires": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/instrumentation": "0.51.0", - "@opentelemetry/semantic-conventions": "1.24.0", + "@opentelemetry/core": "1.24.1", + "@opentelemetry/instrumentation": "0.51.1", + "@opentelemetry/semantic-conventions": "1.24.1", "semver": "^7.5.2" } }, @@ -48584,56 +48023,56 @@ } }, "@opentelemetry/instrumentation-xml-http-request": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.51.0.tgz", - "integrity": "sha512-KgLO2qx1z1Wn9NeJgrgNukd10ssK1QqxODwdeBJFO1BaP9sVVargpupYowlDKUL5I3oWOEqi/Oxxdh/fbEsJtw==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.51.1.tgz", + "integrity": "sha512-CrQZxADNFr9M3aCgjM3/KXDz12lBrZA5LW+btfgNb78hsLNwqxThtFvXOHr86UsOzJt+h9m4yDeH6YLEvCTBbw==", "requires": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/instrumentation": "0.51.0", - "@opentelemetry/sdk-trace-web": "1.24.0", - "@opentelemetry/semantic-conventions": "1.24.0" + "@opentelemetry/core": "1.24.1", + "@opentelemetry/instrumentation": "0.51.1", + "@opentelemetry/sdk-trace-web": "1.24.1", + "@opentelemetry/semantic-conventions": "1.24.1" } }, "@opentelemetry/otlp-exporter-base": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.51.0.tgz", - "integrity": "sha512-hR4c9vWVz1QgzCBSyy9zSDkvfTgaK96E6/tfVP6O4dzdZW9HqWimA3lXV/KXadEGqShvM4GToz9EHp2A5RU5bQ==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.51.1.tgz", + "integrity": "sha512-UYlnOYyDdzo1Gw559EHCzru0RwhvuXCwoH8jGo9J4gO1TE58GjnEmIjomMsKBCym3qWNJfIQXw+9SZCV0DdQNg==", "requires": { - "@opentelemetry/core": "1.24.0" + "@opentelemetry/core": "1.24.1" } }, "@opentelemetry/otlp-grpc-exporter-base": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.51.0.tgz", - "integrity": "sha512-oTRtDvvB0bTRTBVrvKA/oM1gIAqQ6DVQS07pvqiL1cZS8wBrGgpw+2iTd0nV661Y/MhDn/kNWp8lRhMEIKN9bw==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.51.1.tgz", + "integrity": "sha512-ZAS+4pq8o7dsugGTwV9s6JMKSxi+guIHdn0acOv0bqj26e9pWDFx5Ky+bI0aY46uR9Y0JyXqY+KAEYM/SO3DFA==", "requires": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.24.0", - "@opentelemetry/otlp-exporter-base": "0.51.0", + "@opentelemetry/core": "1.24.1", + "@opentelemetry/otlp-exporter-base": "0.51.1", "protobufjs": "^7.2.3" } }, "@opentelemetry/otlp-proto-exporter-base": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.51.0.tgz", - "integrity": "sha512-WDANDLSUh11Gu5o6iCzmjZraIv5bK8z1L/t6lxQ2NeEKiKUPo5pVOBBQQC/yAQU2yeqkiO1GRCieH+XahZf60A==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.51.1.tgz", + "integrity": "sha512-gxxxwfk0inDMb5DLeuxQ3L8TtptxSiTNHE4nnAJH34IQXAVRhXSXW1rK8PmDKDngRPIZ6J7ncUCjjIn8b+AgqQ==", "requires": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/otlp-exporter-base": "0.51.0", + "@opentelemetry/core": "1.24.1", + "@opentelemetry/otlp-exporter-base": "0.51.1", "protobufjs": "^7.2.3" } }, "@opentelemetry/otlp-transformer": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.51.0.tgz", - "integrity": "sha512-ylLgx2xumVoSefDHP9GMAU/LG+TU3+8eacVDXV5o1RqWxsdVOaQmCTY0XyDgeRTn6hIOVAq/HHQbRq3iWOrt2A==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.51.1.tgz", + "integrity": "sha512-OppYOXwV9LQqqtYUCywqoOqX/JT9LQ5/FMuPZ//eTkvuHdUC4ZMwz2c6uSoT2R90GWvvGnF1iEqTGyTT3xAt2Q==", "requires": { - "@opentelemetry/api-logs": "0.51.0", - "@opentelemetry/core": "1.24.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/sdk-logs": "0.51.0", - "@opentelemetry/sdk-metrics": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0" + "@opentelemetry/api-logs": "0.51.1", + "@opentelemetry/core": "1.24.1", + "@opentelemetry/resources": "1.24.1", + "@opentelemetry/sdk-logs": "0.51.1", + "@opentelemetry/sdk-metrics": "1.24.1", + "@opentelemetry/sdk-trace-base": "1.24.1" } }, "@opentelemetry/plugin-react-load": { @@ -48703,19 +48142,19 @@ } }, "@opentelemetry/propagator-aws-xray": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-aws-xray/-/propagator-aws-xray-1.24.0.tgz", - "integrity": "sha512-rcuMtEOTZC7TW84tws1QLUVRElrGSbBJwK0b+qa56zJULDiUIiUpS+dSzO+aUchg7MtTJBZSG5OPsfsKpGgNig==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-aws-xray/-/propagator-aws-xray-1.24.1.tgz", + "integrity": "sha512-RzwoLe6QzsYGcpmxxDbbbgSpe3ncxSM4dtFHXh/rCYGjyq0nZGXKvk26mJtWZ4kQ3nuiIoqSZueIuGmt/mvOTA==", "requires": { - "@opentelemetry/core": "1.24.0" + "@opentelemetry/core": "1.24.1" } }, "@opentelemetry/propagator-b3": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.24.0.tgz", - "integrity": "sha512-7TMIDE4+NO5vnkor+zned42wqca+hmhW5gWKhmYjUHC5B5uojo1PvtmBrd7kigFu96XvL4ZUWVzibWRWIQ/++Q==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.24.1.tgz", + "integrity": "sha512-nda97ZwhpZKyUJTXqQuKzNhPMUgMLunbbGWn8kroBwegn+nh6OhtyGkrVQsQLNdVKJl0KeB5z0ZgeWszrYhwFw==", "requires": { - "@opentelemetry/core": "1.24.0" + "@opentelemetry/core": "1.24.1" } }, "@opentelemetry/propagator-grpc-census-binary": { @@ -48905,11 +48344,11 @@ } }, "@opentelemetry/propagator-jaeger": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.24.0.tgz", - "integrity": "sha512-r3MX3AmJiUeiWTXSDOdwBeaO+ahvWcFCpuKxmhhsH8Q8LqDnjhNd3krqBh4Qsq9wa0WhWtiQaDs/NOCWoMOlOw==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.24.1.tgz", + "integrity": "sha512-7bRBJn3FG1l195A1m+xXRHvgzAOBsfmRi9uZ5Da18oTh7BLmNDiA8+kpk51FpTsU1PCikPVpRDNPhKVB6lyzZg==", "requires": { - "@opentelemetry/core": "1.24.0" + "@opentelemetry/core": "1.24.1" } }, "@opentelemetry/propagator-ot-trace": { @@ -49150,90 +48589,90 @@ } }, "@opentelemetry/resources": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.24.0.tgz", - "integrity": "sha512-mxC7E7ocUS1tLzepnA7O9/G8G6ZTdjCH2pXme1DDDuCuk6n2/53GADX+GWBuyX0dfIxeMInIbJAdjlfN9GNr6A==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.24.1.tgz", + "integrity": "sha512-cyv0MwAaPF7O86x5hk3NNgenMObeejZFLJJDVuSeSMIsknlsj3oOZzRv3qSzlwYomXsICfBeFFlxwHQte5mGXQ==", "requires": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/semantic-conventions": "1.24.0" + "@opentelemetry/core": "1.24.1", + "@opentelemetry/semantic-conventions": "1.24.1" } }, "@opentelemetry/sdk-logs": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.51.0.tgz", - "integrity": "sha512-K4fMBRFD8hQ6khk0rvYFuo6L9ymeGgByir6BcuFIgQuQ00OhYwBi9AruZz5V733Ejq7P8ObR3YyubkOUIbeVAw==", + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.51.1.tgz", + "integrity": "sha512-ULQQtl82b673PpZc5/0EtH4V+BrwVOgKJZEB7tYZnGTG3I98tQVk89S9/JSixomDr++F4ih+LSJTCqIKBz+MQQ==", "requires": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/resources": "1.24.0" + "@opentelemetry/core": "1.24.1", + "@opentelemetry/resources": "1.24.1" } }, "@opentelemetry/sdk-metrics": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.24.0.tgz", - "integrity": "sha512-4tJ+E6N019OZVB/nUW/LoK9xHxfeh88TCoaTqHeLBE9wLYfi6irWW6J9cphMav7J8Qk0D5b7/RM4VEY4dArWOA==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.24.1.tgz", + "integrity": "sha512-FrAqCbbGao9iKI+Mgh+OsC9+U2YMoXnlDHe06yH7dvavCKzE3S892dGtX54+WhSFVxHR/TMRVJiK/CV93GR0TQ==", "requires": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/resources": "1.24.0", + "@opentelemetry/core": "1.24.1", + "@opentelemetry/resources": "1.24.1", "lodash.merge": "^4.6.2" } }, "@opentelemetry/sdk-node": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.51.0.tgz", - "integrity": "sha512-MrPXDQsTAj3lcY8YUCjb7dvSXVZ5jG6wmjD2LB68V1rsLBdP8j70jsI9GaKijY7QB6psbLq6apO1vYeim5U7aw==", - "requires": { - "@opentelemetry/api-logs": "0.51.0", - "@opentelemetry/core": "1.24.0", - "@opentelemetry/exporter-trace-otlp-grpc": "0.51.0", - "@opentelemetry/exporter-trace-otlp-http": "0.51.0", - "@opentelemetry/exporter-trace-otlp-proto": "0.51.0", - "@opentelemetry/exporter-zipkin": "1.24.0", - "@opentelemetry/instrumentation": "0.51.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/sdk-logs": "0.51.0", - "@opentelemetry/sdk-metrics": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0", - "@opentelemetry/sdk-trace-node": "1.24.0", - "@opentelemetry/semantic-conventions": "1.24.0" + "version": "0.51.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.51.1.tgz", + "integrity": "sha512-GgmNF9C+6esr8PIJxCqHw84rEOkYm6XdFWZ2+Wyc3qaUt92ACoN7uSw5iKNvaUq62W0xii1wsGxwHzyENtPP8w==", + "requires": { + "@opentelemetry/api-logs": "0.51.1", + "@opentelemetry/core": "1.24.1", + "@opentelemetry/exporter-trace-otlp-grpc": "0.51.1", + "@opentelemetry/exporter-trace-otlp-http": "0.51.1", + "@opentelemetry/exporter-trace-otlp-proto": "0.51.1", + "@opentelemetry/exporter-zipkin": "1.24.1", + "@opentelemetry/instrumentation": "0.51.1", + "@opentelemetry/resources": "1.24.1", + "@opentelemetry/sdk-logs": "0.51.1", + "@opentelemetry/sdk-metrics": "1.24.1", + "@opentelemetry/sdk-trace-base": "1.24.1", + "@opentelemetry/sdk-trace-node": "1.24.1", + "@opentelemetry/semantic-conventions": "1.24.1" } }, "@opentelemetry/sdk-trace-base": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.24.0.tgz", - "integrity": "sha512-H9sLETZ4jw9UJ3totV8oM5R0m4CW0ZIOLfp4NV3g0CM8HD5zGZcaW88xqzWDgiYRpctFxd+WmHtGX/Upoa2vRg==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.24.1.tgz", + "integrity": "sha512-zz+N423IcySgjihl2NfjBf0qw1RWe11XIAWVrTNOSSI6dtSPJiVom2zipFB2AEEtJWpv0Iz6DY6+TjnyTV5pWg==", "requires": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/resources": "1.24.0", - "@opentelemetry/semantic-conventions": "1.24.0" + "@opentelemetry/core": "1.24.1", + "@opentelemetry/resources": "1.24.1", + "@opentelemetry/semantic-conventions": "1.24.1" } }, "@opentelemetry/sdk-trace-node": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.24.0.tgz", - "integrity": "sha512-QgByHmM9uloTpcYEEyW9YJEIMKHFSIM677RH9pJPWWwtM2NQFbEp/8HIJw80Ymtaz6cAxg1Kay1ByqIVzq3t5g==", - "requires": { - "@opentelemetry/context-async-hooks": "1.24.0", - "@opentelemetry/core": "1.24.0", - "@opentelemetry/propagator-b3": "1.24.0", - "@opentelemetry/propagator-jaeger": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.24.1.tgz", + "integrity": "sha512-/FZX8uWaGIAwsDhqI8VvQ+qWtfMNlXjaFYGc+vmxgdRFppCSSIRwrPyIhJO1qx61okyYhoyxVEZAfoiNxrfJCg==", + "requires": { + "@opentelemetry/context-async-hooks": "1.24.1", + "@opentelemetry/core": "1.24.1", + "@opentelemetry/propagator-b3": "1.24.1", + "@opentelemetry/propagator-jaeger": "1.24.1", + "@opentelemetry/sdk-trace-base": "1.24.1", "semver": "^7.5.2" } }, "@opentelemetry/sdk-trace-web": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-1.24.0.tgz", - "integrity": "sha512-G0q8aZPUhRtO/iw2BkjHeNqCMBf0JQX5VqqiPWXn9u5iRkpeQ6LZrGaiymKWOdEqtXCgM44yrCY/4WoJqR0bjQ==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-1.24.1.tgz", + "integrity": "sha512-0w+aKRai9VREeo3VrtW+hcbrE2Fl/uKL7G+oXgRNf6pI9QLaEGuEzUTX+oxXVPBadzjOd+5dqCHYdX7UeVjzwA==", "requires": { - "@opentelemetry/core": "1.24.0", - "@opentelemetry/sdk-trace-base": "1.24.0", - "@opentelemetry/semantic-conventions": "1.24.0" + "@opentelemetry/core": "1.24.1", + "@opentelemetry/sdk-trace-base": "1.24.1", + "@opentelemetry/semantic-conventions": "1.24.1" } }, "@opentelemetry/semantic-conventions": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.0.tgz", - "integrity": "sha512-yL0jI6Ltuz8R+Opj7jClGrul6pOoYrdfVmzQS4SITXRPH7I5IRZbrwe/6/v8v4WYMa6MYZG480S1+uc/IGfqsA==" + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.1.tgz", + "integrity": "sha512-VkliWlS4/+GHLLW7J/rVBA00uXus1SWvwFvcUDxDwmFxYfg/2VI6ekwdXS28cjI8Qz2ky2BzG8OUHo+WeYIWqw==" }, "@opentelemetry/sql-common": { "version": "file:packages/opentelemetry-sql-common", @@ -51725,10 +51164,10 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==" }, - "acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "requires": {} }, "acorn-jsx": { @@ -53299,9 +52738,9 @@ } }, "cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==" }, "class-transformer": { "version": "0.5.1", @@ -57817,12 +57256,12 @@ } }, "import-in-the-middle": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.7.1.tgz", - "integrity": "sha512-1LrZPDtW+atAxH42S6288qyDFNQ2YCty+2mxEPRtfazH6Z5QwkaBSTS2ods7hnVJioF6rkRfNoA6A/MstpFXLg==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.7.4.tgz", + "integrity": "sha512-Lk+qzWmiQuRPPulGQeK5qq0v32k2bHnWrRPFgqyvhw7Kkov5L6MOLOIU3pcWeujc9W4q54Cp3Q2WV16eQkc7Bg==", "requires": { "acorn": "^8.8.2", - "acorn-import-assertions": "^1.9.0", + "acorn-import-attributes": "^1.9.5", "cjs-module-lexer": "^1.2.2", "module-details-from-path": "^1.0.3" } From 1ffc631a7fed330b1677ed17bad87b305edcbed7 Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Tue, 14 May 2024 11:05:05 +0200 Subject: [PATCH 098/121] fix(instrumentation-connect): add source maps to package (#2200) --- plugins/node/opentelemetry-instrumentation-connect/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/node/opentelemetry-instrumentation-connect/package.json b/plugins/node/opentelemetry-instrumentation-connect/package.json index dda633198c..22bc4d436f 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/package.json +++ b/plugins/node/opentelemetry-instrumentation-connect/package.json @@ -32,6 +32,7 @@ }, "files": [ "build/src/**/*.js", + "build/src/**/*.js.map", "build/src/**/*.d.ts" ], "publishConfig": { From fd51c1c219a4df0d4464166b4d56ca14e25da11b Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Tue, 14 May 2024 13:56:43 +0200 Subject: [PATCH 099/121] chore(propagator-grpc-cencus-binary): archive package (#2201) * chore(propagator-grpc-cencus-binary): archive package * fixup! chore(propagator-grpc-cencus-binary): archive package --- .release-please-manifest.json | 1 - .../.eslintignore | 0 .../.eslintrc.js | 0 .../CHANGELOG.md | 0 .../LICENSE | 0 .../README.md | 0 .../package.json | 0 .../src/BinaryTraceContext.ts | 0 .../src/GrpcCensusPropagator.ts | 0 .../src/index.ts | 0 .../test/BinaryTraceContext.test.ts | 0 .../test/GrpcCensusPropagator.test.ts | 0 .../tsconfig.json | 0 package-lock.json | 551 +----------------- release-please-config.json | 1 - 15 files changed, 5 insertions(+), 548 deletions(-) rename {propagators => archive}/opentelemetry-propagator-grpc-census-binary/.eslintignore (100%) rename {propagators => archive}/opentelemetry-propagator-grpc-census-binary/.eslintrc.js (100%) rename {propagators => archive}/opentelemetry-propagator-grpc-census-binary/CHANGELOG.md (100%) rename {propagators => archive}/opentelemetry-propagator-grpc-census-binary/LICENSE (100%) rename {propagators => archive}/opentelemetry-propagator-grpc-census-binary/README.md (100%) rename {propagators => archive}/opentelemetry-propagator-grpc-census-binary/package.json (100%) rename {propagators => archive}/opentelemetry-propagator-grpc-census-binary/src/BinaryTraceContext.ts (100%) rename {propagators => archive}/opentelemetry-propagator-grpc-census-binary/src/GrpcCensusPropagator.ts (100%) rename {propagators => archive}/opentelemetry-propagator-grpc-census-binary/src/index.ts (100%) rename {propagators => archive}/opentelemetry-propagator-grpc-census-binary/test/BinaryTraceContext.test.ts (100%) rename {propagators => archive}/opentelemetry-propagator-grpc-census-binary/test/GrpcCensusPropagator.test.ts (100%) rename {propagators => archive}/opentelemetry-propagator-grpc-census-binary/tsconfig.json (100%) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 43ec74b8a0..dc88464b43 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -57,7 +57,6 @@ "plugins/web/opentelemetry-instrumentation-long-task": "0.38.0", "plugins/web/opentelemetry-instrumentation-user-interaction": "0.38.0", "plugins/web/opentelemetry-plugin-react-load": "0.30.1", - "propagators/opentelemetry-propagator-grpc-census-binary": "0.27.2", "propagators/opentelemetry-propagator-instana": "0.3.2", "propagators/opentelemetry-propagator-ot-trace": "0.27.2" } diff --git a/propagators/opentelemetry-propagator-grpc-census-binary/.eslintignore b/archive/opentelemetry-propagator-grpc-census-binary/.eslintignore similarity index 100% rename from propagators/opentelemetry-propagator-grpc-census-binary/.eslintignore rename to archive/opentelemetry-propagator-grpc-census-binary/.eslintignore diff --git a/propagators/opentelemetry-propagator-grpc-census-binary/.eslintrc.js b/archive/opentelemetry-propagator-grpc-census-binary/.eslintrc.js similarity index 100% rename from propagators/opentelemetry-propagator-grpc-census-binary/.eslintrc.js rename to archive/opentelemetry-propagator-grpc-census-binary/.eslintrc.js diff --git a/propagators/opentelemetry-propagator-grpc-census-binary/CHANGELOG.md b/archive/opentelemetry-propagator-grpc-census-binary/CHANGELOG.md similarity index 100% rename from propagators/opentelemetry-propagator-grpc-census-binary/CHANGELOG.md rename to archive/opentelemetry-propagator-grpc-census-binary/CHANGELOG.md diff --git a/propagators/opentelemetry-propagator-grpc-census-binary/LICENSE b/archive/opentelemetry-propagator-grpc-census-binary/LICENSE similarity index 100% rename from propagators/opentelemetry-propagator-grpc-census-binary/LICENSE rename to archive/opentelemetry-propagator-grpc-census-binary/LICENSE diff --git a/propagators/opentelemetry-propagator-grpc-census-binary/README.md b/archive/opentelemetry-propagator-grpc-census-binary/README.md similarity index 100% rename from propagators/opentelemetry-propagator-grpc-census-binary/README.md rename to archive/opentelemetry-propagator-grpc-census-binary/README.md diff --git a/propagators/opentelemetry-propagator-grpc-census-binary/package.json b/archive/opentelemetry-propagator-grpc-census-binary/package.json similarity index 100% rename from propagators/opentelemetry-propagator-grpc-census-binary/package.json rename to archive/opentelemetry-propagator-grpc-census-binary/package.json diff --git a/propagators/opentelemetry-propagator-grpc-census-binary/src/BinaryTraceContext.ts b/archive/opentelemetry-propagator-grpc-census-binary/src/BinaryTraceContext.ts similarity index 100% rename from propagators/opentelemetry-propagator-grpc-census-binary/src/BinaryTraceContext.ts rename to archive/opentelemetry-propagator-grpc-census-binary/src/BinaryTraceContext.ts diff --git a/propagators/opentelemetry-propagator-grpc-census-binary/src/GrpcCensusPropagator.ts b/archive/opentelemetry-propagator-grpc-census-binary/src/GrpcCensusPropagator.ts similarity index 100% rename from propagators/opentelemetry-propagator-grpc-census-binary/src/GrpcCensusPropagator.ts rename to archive/opentelemetry-propagator-grpc-census-binary/src/GrpcCensusPropagator.ts diff --git a/propagators/opentelemetry-propagator-grpc-census-binary/src/index.ts b/archive/opentelemetry-propagator-grpc-census-binary/src/index.ts similarity index 100% rename from propagators/opentelemetry-propagator-grpc-census-binary/src/index.ts rename to archive/opentelemetry-propagator-grpc-census-binary/src/index.ts diff --git a/propagators/opentelemetry-propagator-grpc-census-binary/test/BinaryTraceContext.test.ts b/archive/opentelemetry-propagator-grpc-census-binary/test/BinaryTraceContext.test.ts similarity index 100% rename from propagators/opentelemetry-propagator-grpc-census-binary/test/BinaryTraceContext.test.ts rename to archive/opentelemetry-propagator-grpc-census-binary/test/BinaryTraceContext.test.ts diff --git a/propagators/opentelemetry-propagator-grpc-census-binary/test/GrpcCensusPropagator.test.ts b/archive/opentelemetry-propagator-grpc-census-binary/test/GrpcCensusPropagator.test.ts similarity index 100% rename from propagators/opentelemetry-propagator-grpc-census-binary/test/GrpcCensusPropagator.test.ts rename to archive/opentelemetry-propagator-grpc-census-binary/test/GrpcCensusPropagator.test.ts diff --git a/propagators/opentelemetry-propagator-grpc-census-binary/tsconfig.json b/archive/opentelemetry-propagator-grpc-census-binary/tsconfig.json similarity index 100% rename from propagators/opentelemetry-propagator-grpc-census-binary/tsconfig.json rename to archive/opentelemetry-propagator-grpc-census-binary/tsconfig.json diff --git a/package-lock.json b/package-lock.json index a9316e10ad..cf9f2be84e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9062,10 +9062,6 @@ "@opentelemetry/api": ">=1.0.0 <1.9.0" } }, - "node_modules/@opentelemetry/propagator-grpc-census-binary": { - "resolved": "propagators/opentelemetry-propagator-grpc-census-binary", - "link": true - }, "node_modules/@opentelemetry/propagator-instana": { "resolved": "propagators/opentelemetry-propagator-instana", "link": true @@ -10758,22 +10754,6 @@ "@types/node": "*" } }, - "node_modules/@types/bytebuffer": { - "version": "5.0.48", - "resolved": "https://registry.npmjs.org/@types/bytebuffer/-/bytebuffer-5.0.48.tgz", - "integrity": "sha512-ormKm68NtTOtR8C/4jyRJEYbwKABXRkHHR/1fmkiuFbCQkltgtXSUGfldCSmJzvuyJvmBzWjBbOi79Ry/oJQug==", - "dev": true, - "dependencies": { - "@types/long": "^3.0.0", - "@types/node": "*" - } - }, - "node_modules/@types/bytebuffer/node_modules/@types/long": { - "version": "3.0.32", - "resolved": "https://registry.npmjs.org/@types/long/-/long-3.0.32.tgz", - "integrity": "sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA==", - "dev": true - }, "node_modules/@types/chai": { "version": "4.3.12", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.12.tgz", @@ -12772,16 +12752,6 @@ "node": ">=0.10.0" } }, - "node_modules/ascli": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz", - "integrity": "sha512-JGQaNxpaCJz9Bd1JvVaFIHuWn9S+l3xhN17R0V/vmUDiGE0QngNMXhjlqpwqV+91plWz9Fg+Lt28Lj7p5vjs8A==", - "dev": true, - "dependencies": { - "colour": "~0.7.1", - "optjs": "~3.2.2" - } - }, "node_modules/asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", @@ -13735,27 +13705,6 @@ "node": ">=10" } }, - "node_modules/bytebuffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", - "integrity": "sha512-IuzSdmADppkZ6DlpycMkm8l9zeEq16fWtLvunEwFiYciR/BHo4E8/xs5piFquG+Za8OWmMqHF8zuRviz2LHvRQ==", - "dev": true, - "dependencies": { - "long": "~3" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/bytebuffer/node_modules/long": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha512-ZYvPPOMqUwPoDsbJaR10iQJYnMuZhRTvHYl62ErLIEX7RgFlziSBUUvrt3OVfc47QlHHpzPZYP17g3Fv7oeJkg==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -14557,15 +14506,6 @@ "type-is": "^1.6.16" } }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -14648,15 +14588,6 @@ "text-hex": "1.0.x" } }, - "node_modules/colour": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", - "integrity": "sha512-Rel466v0EnmKPcsxHo91L4kgPs/6XF7Pu2LJNszq9lXYwi5CFWEeIiRaTX5ym7PPMdj4udDHkLSVC1//JVkZQg==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, "node_modules/columnify": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", @@ -19127,176 +19058,6 @@ "node": ">=4.x" } }, - "node_modules/grpc": { - "version": "1.24.11", - "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.24.11.tgz", - "integrity": "sha512-8/AQdFCzCeCDWW3SoaMNp6ccbRvTQEH1O1u1uFtt29eWsg5gSZCJ3m6fbkduEIh3smY7WAPP+LgVJ5n3nZRxcA==", - "deprecated": "This library will not receive further updates other than security fixes. We recommend using @grpc/grpc-js instead.", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.4", - "@types/bytebuffer": "^5.0.40", - "lodash.camelcase": "^4.3.0", - "lodash.clone": "^4.5.0", - "nan": "^2.13.2", - "protobufjs": "^5.0.3" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/grpc/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/grpc/node_modules/camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/grpc/node_modules/cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", - "dev": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/grpc/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/grpc/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/grpc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/grpc/node_modules/protobufjs": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz", - "integrity": "sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==", - "dev": true, - "dependencies": { - "ascli": "~1", - "bytebuffer": "~5", - "glob": "^7.0.5", - "yargs": "^3.10.0" - }, - "bin": { - "pbjs": "bin/pbjs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/grpc/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/grpc/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/grpc/node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", - "dev": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/grpc/node_modules/y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true - }, - "node_modules/grpc/node_modules/yargs": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "integrity": "sha512-ONJZiimStfZzhKamYvR/xvmgW3uEkAUFSP91y2caTEPhzF6uP2JfPiVZcq66b/YR0C3uitxSV7+T1x8p5bkmMg==", - "dev": true, - "dependencies": { - "camelcase": "^2.0.1", - "cliui": "^3.0.3", - "decamelize": "^1.1.1", - "os-locale": "^1.4.0", - "string-width": "^1.0.1", - "window-size": "^0.1.4", - "y18n": "^3.2.0" - } - }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -20201,15 +19962,6 @@ "node": ">= 0.10" } }, - "node_modules/invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ioredis": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.2.2.tgz", @@ -22544,18 +22296,6 @@ "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", "dev": true }, - "node_modules/lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", - "dev": true, - "dependencies": { - "invert-kv": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/lerna": { "version": "6.6.2", "resolved": "https://registry.npmjs.org/lerna/-/lerna-6.6.2.tgz", @@ -23602,12 +23342,6 @@ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" }, - "node_modules/lodash.clone": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", - "integrity": "sha512-GhrVeweiTD6uTmmn5hV/lzgCQhccwReIVRLHp7LT4SopOjqEZ5BbX8b5WWEtAKasjmy8hR7ZPwsYlxRCku5odg==", - "dev": true - }, "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -25956,7 +25690,8 @@ "version": "2.18.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", - "dev": true + "dev": true, + "optional": true }, "node_modules/nanocolors": { "version": "0.2.13", @@ -28028,12 +27763,6 @@ "node": ">= 0.8.0" } }, - "node_modules/optjs": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz", - "integrity": "sha512-f8lTJm4LKirX+45xsFhuRNjA4f46QVLQKfGoNH7e2AEWS+24eM4XNH4pQ8Tw2LISCIvbST/wNcLdtgvgcqVaxA==", - "dev": true - }, "node_modules/ora": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", @@ -28140,18 +27869,6 @@ "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", "dev": true }, - "node_modules/os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", - "dev": true, - "dependencies": { - "lcid": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -36160,18 +35877,6 @@ "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, - "node_modules/window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha512-2thx4pB0cV3h+Bw7QmMXcEbdmOzv9t0HFplJH/Lz6yu60hXYy5RT8rUu+wlIreVxWsGN20mo+MHeCSfUpQBwPw==", - "dev": true, - "bin": { - "window-size": "cli.js" - }, - "engines": { - "node": ">= 0.10.0" - } - }, "node_modules/winston": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz", @@ -39247,6 +38952,7 @@ "propagators/opentelemetry-propagator-grpc-census-binary": { "name": "@opentelemetry/propagator-grpc-census-binary", "version": "0.27.2", + "extraneous": true, "license": "Apache-2.0", "devDependencies": { "@opentelemetry/api": "^1.0.0", @@ -48157,21 +47863,6 @@ "@opentelemetry/core": "1.24.1" } }, - "@opentelemetry/propagator-grpc-census-binary": { - "version": "file:propagators/opentelemetry-propagator-grpc-census-binary", - "requires": { - "@opentelemetry/api": "^1.0.0", - "@types/mocha": "7.0.2", - "@types/node": "18.6.5", - "grpc": "1.24.11", - "mocha": "7.2.0", - "nyc": "15.1.0", - "rimraf": "5.0.5", - "ts-loader": "8.3.0", - "ts-mocha": "10.0.0", - "typescript": "4.4.4" - } - }, "@opentelemetry/propagator-instana": { "version": "file:propagators/opentelemetry-propagator-instana", "requires": { @@ -49905,24 +49596,6 @@ "@types/node": "*" } }, - "@types/bytebuffer": { - "version": "5.0.48", - "resolved": "https://registry.npmjs.org/@types/bytebuffer/-/bytebuffer-5.0.48.tgz", - "integrity": "sha512-ormKm68NtTOtR8C/4jyRJEYbwKABXRkHHR/1fmkiuFbCQkltgtXSUGfldCSmJzvuyJvmBzWjBbOi79Ry/oJQug==", - "dev": true, - "requires": { - "@types/long": "^3.0.0", - "@types/node": "*" - }, - "dependencies": { - "@types/long": { - "version": "3.0.32", - "resolved": "https://registry.npmjs.org/@types/long/-/long-3.0.32.tgz", - "integrity": "sha512-ZXyOOm83p7X8p3s0IYM3VeueNmHpkk/yMlP8CLeOnEcu6hIwPH7YjZBvhQkR0ZFS2DqZAxKtJ/M5fcuv3OU5BA==", - "dev": true - } - } - }, "@types/chai": { "version": "4.3.12", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.12.tgz", @@ -51580,16 +51253,6 @@ "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true }, - "ascli": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz", - "integrity": "sha512-JGQaNxpaCJz9Bd1JvVaFIHuWn9S+l3xhN17R0V/vmUDiGE0QngNMXhjlqpwqV+91plWz9Fg+Lt28Lj7p5vjs8A==", - "dev": true, - "requires": { - "colour": "~0.7.1", - "optjs": "~3.2.2" - } - }, "asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", @@ -52354,23 +52017,6 @@ "integrity": "sha512-NNiBxKgxybMBtWdmvx7ZITJi4ZG+CYUgwOSZTfqB1qogkRHrhbQE/R2r5Fh94X+InN5MCYz6SvB/ejHMj/HbsQ==", "dev": true }, - "bytebuffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", - "integrity": "sha512-IuzSdmADppkZ6DlpycMkm8l9zeEq16fWtLvunEwFiYciR/BHo4E8/xs5piFquG+Za8OWmMqHF8zuRviz2LHvRQ==", - "dev": true, - "requires": { - "long": "~3" - }, - "dependencies": { - "long": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha512-ZYvPPOMqUwPoDsbJaR10iQJYnMuZhRTvHYl62ErLIEX7RgFlziSBUUvrt3OVfc47QlHHpzPZYP17g3Fv7oeJkg==", - "dev": true - } - } - }, "bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -52969,12 +52615,6 @@ "type-is": "^1.6.16" } }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "dev": true - }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -53048,12 +52688,6 @@ "text-hex": "1.0.x" } }, - "colour": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", - "integrity": "sha512-Rel466v0EnmKPcsxHo91L4kgPs/6XF7Pu2LJNszq9lXYwi5CFWEeIiRaTX5ym7PPMdj4udDHkLSVC1//JVkZQg==", - "dev": true - }, "columnify": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", @@ -56608,140 +56242,6 @@ "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", "dev": true }, - "grpc": { - "version": "1.24.11", - "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.24.11.tgz", - "integrity": "sha512-8/AQdFCzCeCDWW3SoaMNp6ccbRvTQEH1O1u1uFtt29eWsg5gSZCJ3m6fbkduEIh3smY7WAPP+LgVJ5n3nZRxcA==", - "dev": true, - "requires": { - "@mapbox/node-pre-gyp": "^1.0.4", - "@types/bytebuffer": "^5.0.40", - "lodash.camelcase": "^4.3.0", - "lodash.clone": "^4.5.0", - "nan": "^2.13.2", - "protobufjs": "^5.0.3" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "protobufjs": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz", - "integrity": "sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==", - "dev": true, - "requires": { - "ascli": "~1", - "bytebuffer": "~5", - "glob": "^7.0.5", - "yargs": "^3.10.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - } - }, - "y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true - }, - "yargs": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "integrity": "sha512-ONJZiimStfZzhKamYvR/xvmgW3uEkAUFSP91y2caTEPhzF6uP2JfPiVZcq66b/YR0C3uitxSV7+T1x8p5bkmMg==", - "dev": true, - "requires": { - "camelcase": "^2.0.1", - "cliui": "^3.0.3", - "decamelize": "^1.1.1", - "os-locale": "^1.4.0", - "string-width": "^1.0.1", - "window-size": "^0.1.4", - "y18n": "^3.2.0" - } - } - } - }, "handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -57456,12 +56956,6 @@ "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", "dev": true }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", - "dev": true - }, "ioredis": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.2.2.tgz", @@ -59245,15 +58739,6 @@ "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", "dev": true }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, "lerna": { "version": "6.6.2", "resolved": "https://registry.npmjs.org/lerna/-/lerna-6.6.2.tgz", @@ -60083,12 +59568,6 @@ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" }, - "lodash.clone": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", - "integrity": "sha512-GhrVeweiTD6uTmmn5hV/lzgCQhccwReIVRLHp7LT4SopOjqEZ5BbX8b5WWEtAKasjmy8hR7ZPwsYlxRCku5odg==", - "dev": true - }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -62032,7 +61511,8 @@ "version": "2.18.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", - "dev": true + "dev": true, + "optional": true }, "nanocolors": { "version": "0.2.13", @@ -63681,12 +63161,6 @@ "type-check": "^0.4.0" } }, - "optjs": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz", - "integrity": "sha512-f8lTJm4LKirX+45xsFhuRNjA4f46QVLQKfGoNH7e2AEWS+24eM4XNH4pQ8Tw2LISCIvbST/wNcLdtgvgcqVaxA==", - "dev": true - }, "ora": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", @@ -63765,15 +63239,6 @@ "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", "dev": true }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } - }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -70045,12 +69510,6 @@ "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, - "window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha512-2thx4pB0cV3h+Bw7QmMXcEbdmOzv9t0HFplJH/Lz6yu60hXYy5RT8rUu+wlIreVxWsGN20mo+MHeCSfUpQBwPw==", - "dev": true - }, "winston": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz", diff --git a/release-please-config.json b/release-please-config.json index 8142b3b582..3c3537298e 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -64,7 +64,6 @@ "plugins/web/opentelemetry-instrumentation-long-task": {}, "plugins/web/opentelemetry-instrumentation-user-interaction": {}, "plugins/web/opentelemetry-plugin-react-load": {}, - "propagators/opentelemetry-propagator-grpc-census-binary": {}, "propagators/opentelemetry-propagator-instana": {}, "propagators/opentelemetry-propagator-ot-trace": {} } From b98e431a236b8081b5a4a5e86dc0dfc813e4dc57 Mon Sep 17 00:00:00 2001 From: David Luna Date: Tue, 14 May 2024 20:32:18 +0200 Subject: [PATCH 100/121] refactor(instr-graphql): use exported strings for attributes (#2156) Refs: #2025 --- package-lock.json | 4 ++-- plugins/node/opentelemetry-instrumentation-graphql/README.md | 4 ++++ .../node/opentelemetry-instrumentation-graphql/package.json | 2 +- .../test/graphql.test.ts | 4 ++-- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index cf9f2be84e..e618cdc01b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37853,7 +37853,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.3.1", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "graphql": "^16.5.0", @@ -46658,7 +46658,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.3.1", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "graphql": "^16.5.0", diff --git a/plugins/node/opentelemetry-instrumentation-graphql/README.md b/plugins/node/opentelemetry-instrumentation-graphql/README.md index aa8877be23..9344e8ed19 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/README.md +++ b/plugins/node/opentelemetry-instrumentation-graphql/README.md @@ -116,6 +116,10 @@ Downstream spans in the context of all resolvers will be child of the first span Can be found [here](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/examples/graphql) +## Semantic Conventions + +This package does not currently generate any attributes from semantic conventions. + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/opentelemetry-instrumentation-graphql/package.json b/plugins/node/opentelemetry-instrumentation-graphql/package.json index 1ae2a4bdf9..bdcb66cc6e 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/package.json +++ b/plugins/node/opentelemetry-instrumentation-graphql/package.json @@ -46,7 +46,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.3.1", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "8.2.3", "@types/node": "18.6.5", "graphql": "^16.5.0", diff --git a/plugins/node/opentelemetry-instrumentation-graphql/test/graphql.test.ts b/plugins/node/opentelemetry-instrumentation-graphql/test/graphql.test.ts index 3522290110..661304a212 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/test/graphql.test.ts +++ b/plugins/node/opentelemetry-instrumentation-graphql/test/graphql.test.ts @@ -21,7 +21,7 @@ import { SimpleSpanProcessor, } from '@opentelemetry/sdk-trace-base'; import { Span, SpanStatusCode } from '@opentelemetry/api'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMATTRS_EXCEPTION_MESSAGE } from '@opentelemetry/semantic-conventions'; import * as assert from 'assert'; import type * as graphqlTypes from 'graphql'; import { GraphQLInstrumentation } from '../src'; @@ -1399,7 +1399,7 @@ describe('graphql', () => { const resolveEvent = resolveSpan.events[0]; assert.deepStrictEqual(resolveEvent.name, 'exception'); assert.deepStrictEqual( - resolveEvent.attributes?.[SemanticAttributes.EXCEPTION_MESSAGE], + resolveEvent.attributes?.[SEMATTRS_EXCEPTION_MESSAGE], 'sync resolver error from tests' ); From fbbd32c629bbb5a777584ecb92a315eb231466b9 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Tue, 14 May 2024 14:34:23 -0400 Subject: [PATCH 101/121] chore(instrumentation-ioredis): use exported strings for attributes (#2191) Refs: #2025 --- package-lock.json | 4 +- .../README.md | 14 ++++ .../package.json | 2 +- .../src/instrumentation.ts | 31 ++++----- .../test/ioredis.test.ts | 67 ++++++++++--------- 5 files changed, 68 insertions(+), 50 deletions(-) diff --git a/package-lock.json b/package-lock.json index e618cdc01b..ed93a0f2cf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37916,7 +37916,7 @@ "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/redis-common": "^0.36.2", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.23.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -46730,7 +46730,7 @@ "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "@types/ioredis4": "npm:@types/ioredis@4.28.10", "@types/mocha": "7.0.2", "@types/node": "18.6.5", diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/README.md b/plugins/node/opentelemetry-instrumentation-ioredis/README.md index 61444f28e7..907eba1995 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/README.md +++ b/plugins/node/opentelemetry-instrumentation-ioredis/README.md @@ -98,6 +98,20 @@ requestHook: function ( ``` +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | +|------------------------|-----------------------------------------------------------------------------| +| `db.connection_string` | The connection string used to connect to the database. | +| `db.statement` | The database statement being executed. | +| `db.system` | An identifier for the database management system (DBMS) product being used. | +| `net.peer.name` | Remote hostname or similar. | +| `net.peer.port` | Remote port number. | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/package.json b/plugins/node/opentelemetry-instrumentation-ioredis/package.json index 84895bca4d..a8a4e57d5e 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/package.json +++ b/plugins/node/opentelemetry-instrumentation-ioredis/package.json @@ -69,7 +69,7 @@ "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/redis-common": "^0.36.2", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.23.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-ioredis#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts index 00e3257ed4..34930c354b 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-ioredis/src/instrumentation.ts @@ -23,8 +23,12 @@ import { import { IORedisInstrumentationConfig } from './types'; import { IORedisCommand, RedisInterface } from './internal-types'; import { - DbSystemValues, - SemanticAttributes, + DBSYSTEMVALUES_REDIS, + SEMATTRS_DB_CONNECTION_STRING, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, } from '@opentelemetry/semantic-conventions'; import { safeExecuteInTheMiddle } from '@opentelemetry/instrumentation'; import { endSpan } from './utils'; @@ -121,11 +125,8 @@ export class IORedisInstrumentation extends InstrumentationBase { const span = instrumentation.tracer.startSpan(cmd.name, { kind: SpanKind.CLIENT, attributes: { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.REDIS, - [SemanticAttributes.DB_STATEMENT]: dbStatementSerializer( - cmd.name, - cmd.args - ), + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_REDIS, + [SEMATTRS_DB_STATEMENT]: dbStatementSerializer(cmd.name, cmd.args), }, }); @@ -149,9 +150,9 @@ export class IORedisInstrumentation extends InstrumentationBase { const { host, port } = this.options; span.setAttributes({ - [SemanticAttributes.NET_PEER_NAME]: host, - [SemanticAttributes.NET_PEER_PORT]: port, - [SemanticAttributes.DB_CONNECTION_STRING]: `redis://${host}:${port}`, + [SEMATTRS_NET_PEER_NAME]: host, + [SEMATTRS_NET_PEER_PORT]: port, + [SEMATTRS_DB_CONNECTION_STRING]: `redis://${host}:${port}`, }); try { @@ -201,16 +202,16 @@ export class IORedisInstrumentation extends InstrumentationBase { const span = instrumentation.tracer.startSpan('connect', { kind: SpanKind.CLIENT, attributes: { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.REDIS, - [SemanticAttributes.DB_STATEMENT]: 'connect', + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_REDIS, + [SEMATTRS_DB_STATEMENT]: 'connect', }, }); const { host, port } = this.options; span.setAttributes({ - [SemanticAttributes.NET_PEER_NAME]: host, - [SemanticAttributes.NET_PEER_PORT]: port, - [SemanticAttributes.DB_CONNECTION_STRING]: `redis://${host}:${port}`, + [SEMATTRS_NET_PEER_NAME]: host, + [SEMATTRS_NET_PEER_PORT]: port, + [SEMATTRS_DB_CONNECTION_STRING]: `redis://${host}:${port}`, }); try { const client = original.apply(this, arguments); diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/test/ioredis.test.ts b/plugins/node/opentelemetry-instrumentation-ioredis/test/ioredis.test.ts index a4ba97d185..6dad19a9e4 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/test/ioredis.test.ts +++ b/plugins/node/opentelemetry-instrumentation-ioredis/test/ioredis.test.ts @@ -40,8 +40,15 @@ import { IORedisRequestHookInformation, } from '../src/types'; import { - DbSystemValues, - SemanticAttributes, + DBSYSTEMVALUES_REDIS, + SEMATTRS_DB_CONNECTION_STRING, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, + SEMATTRS_EXCEPTION_MESSAGE, + SEMATTRS_EXCEPTION_STACKTRACE, + SEMATTRS_EXCEPTION_TYPE, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, } from '@opentelemetry/semantic-conventions'; const memoryExporter = new InMemorySpanExporter(); @@ -54,10 +61,10 @@ const CONFIG = { const REDIS_URL = `redis://${CONFIG.host}:${CONFIG.port}`; const DEFAULT_ATTRIBUTES = { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.REDIS, - [SemanticAttributes.NET_PEER_NAME]: CONFIG.host, - [SemanticAttributes.NET_PEER_PORT]: CONFIG.port, - [SemanticAttributes.DB_CONNECTION_STRING]: REDIS_URL, + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_REDIS, + [SEMATTRS_NET_PEER_NAME]: CONFIG.host, + [SEMATTRS_NET_PEER_PORT]: CONFIG.port, + [SEMATTRS_DB_CONNECTION_STRING]: REDIS_URL, }; const unsetStatus: SpanStatus = { @@ -69,9 +76,8 @@ const predictableStackTrace = const sanitizeEventForAssertion = (span: ReadableSpan) => { span.events.forEach(e => { // stack trace includes data such as /user/{userName}/repos/{projectName} - if (e.attributes?.[SemanticAttributes.EXCEPTION_STACKTRACE]) { - e.attributes[SemanticAttributes.EXCEPTION_STACKTRACE] = - predictableStackTrace; + if (e.attributes?.[SEMATTRS_EXCEPTION_STACKTRACE]) { + e.attributes[SEMATTRS_EXCEPTION_STACKTRACE] = predictableStackTrace; } // since time will change on each test invocation, it is being replaced to predicable value @@ -134,7 +140,7 @@ describe('ioredis', () => { let client: ioredisTypes.Redis; const attributes = { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: 'connect', + [SEMATTRS_DB_STATEMENT]: 'connect', }; const readyHandler = () => { const endedSpans = memoryExporter.getFinishedSpans(); @@ -244,7 +250,7 @@ describe('ioredis', () => { it(`should create a child span for cb style ${command.description}`, done => { const attributes = { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: `${command.name} ${command.expectedDbStatement}`, + [SEMATTRS_DB_STATEMENT]: `${command.name} ${command.expectedDbStatement}`, }; const span = provider .getTracer('ioredis-test') @@ -274,7 +280,7 @@ describe('ioredis', () => { it('should create a child span for hset promise', async () => { const attributes = { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: `hset ${hashKeyName} random [1 other arguments]`, + [SEMATTRS_DB_STATEMENT]: `hset ${hashKeyName} random [1 other arguments]`, }; const span = provider.getTracer('ioredis-test').startSpan('test span'); await context.with(trace.setSpan(context.active(), span), async () => { @@ -316,17 +322,15 @@ describe('ioredis', () => { const exceptionEvent = ioredisSpan.events[0]; assert.strictEqual(exceptionEvent.name, 'exception'); assert.strictEqual( - exceptionEvent.attributes?.[SemanticAttributes.EXCEPTION_MESSAGE], + exceptionEvent.attributes?.[SEMATTRS_EXCEPTION_MESSAGE], ex.message ); assert.strictEqual( - exceptionEvent.attributes?.[ - SemanticAttributes.EXCEPTION_STACKTRACE - ], + exceptionEvent.attributes?.[SEMATTRS_EXCEPTION_STACKTRACE], ex.stack ); assert.strictEqual( - exceptionEvent.attributes?.[SemanticAttributes.EXCEPTION_TYPE], + exceptionEvent.attributes?.[SEMATTRS_EXCEPTION_TYPE], ex.name ); } @@ -336,7 +340,7 @@ describe('ioredis', () => { it('should create a child span for streamify scanning', done => { const attributes = { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: 'scan 0 MATCH test-* COUNT 1000', + [SEMATTRS_DB_STATEMENT]: 'scan 0 MATCH test-* COUNT 1000', }; const span = provider.getTracer('ioredis-test').startSpan('test span'); context.with(trace.setSpan(context.active(), span), () => { @@ -412,7 +416,7 @@ describe('ioredis', () => { const attributes = { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: 'subscribe news music', + [SEMATTRS_DB_STATEMENT]: 'subscribe news music', }; testUtils.assertSpan( endedSpans[4], @@ -431,7 +435,7 @@ describe('ioredis', () => { it('should create a child span for multi/transaction', done => { const attributes = { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: 'multi', + [SEMATTRS_DB_STATEMENT]: 'multi', }; const span = provider.getTracer('ioredis-test').startSpan('test span'); @@ -467,7 +471,7 @@ describe('ioredis', () => { it('should create a child span for pipeline', done => { const attributes = { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: 'set foo [1 other arguments]', + [SEMATTRS_DB_STATEMENT]: 'set foo [1 other arguments]', }; const span = provider.getTracer('ioredis-test').startSpan('test span'); @@ -501,7 +505,7 @@ describe('ioredis', () => { it('should create a child span for get promise', async () => { const attributes = { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: `get ${testKeyName}`, + [SEMATTRS_DB_STATEMENT]: `get ${testKeyName}`, }; const span = provider.getTracer('ioredis-test').startSpan('test span'); await context.with(trace.setSpan(context.active(), span), async () => { @@ -530,7 +534,7 @@ describe('ioredis', () => { it('should create a child span for del', async () => { const attributes = { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: `del ${testKeyName}`, + [SEMATTRS_DB_STATEMENT]: `del ${testKeyName}`, }; const span = provider.getTracer('ioredis-test').startSpan('test span'); await context.with(trace.setSpan(context.active(), span), async () => { @@ -564,7 +568,7 @@ describe('ioredis', () => { const attributes = { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: `evalsha bfbf458525d6a0b19200bfd6db3af481156b367b 1 ${testKeyName}`, + [SEMATTRS_DB_STATEMENT]: `evalsha bfbf458525d6a0b19200bfd6db3af481156b367b 1 ${testKeyName}`, }; const span = provider.getTracer('ioredis-test').startSpan('test span'); @@ -597,11 +601,10 @@ describe('ioredis', () => { [ { attributes: { - [SemanticAttributes.EXCEPTION_MESSAGE]: + [SEMATTRS_EXCEPTION_MESSAGE]: 'NOSCRIPT No matching script. Please use EVAL.', - [SemanticAttributes.EXCEPTION_STACKTRACE]: - predictableStackTrace, - [SemanticAttributes.EXCEPTION_TYPE]: 'ReplyError', + [SEMATTRS_EXCEPTION_STACKTRACE]: predictableStackTrace, + [SEMATTRS_EXCEPTION_TYPE]: 'ReplyError', }, name: 'exception', time: [0, 0], @@ -672,7 +675,7 @@ describe('ioredis', () => { SpanKind.CLIENT, { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: `set ${testKeyName} [1 other arguments]`, + [SEMATTRS_DB_STATEMENT]: `set ${testKeyName} [1 other arguments]`, }, [], unsetStatus @@ -698,7 +701,7 @@ describe('ioredis', () => { SpanKind.CLIENT, { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: 'connect', + [SEMATTRS_DB_STATEMENT]: 'connect', }, [], unsetStatus @@ -747,7 +750,7 @@ describe('ioredis', () => { it(`should tag the span with a custom db.statement for cb style ${command.description}`, done => { const attributes = { ...DEFAULT_ATTRIBUTES, - [SemanticAttributes.DB_STATEMENT]: dbStatementSerializer( + [SEMATTRS_DB_STATEMENT]: dbStatementSerializer( command.name, command.args ), @@ -990,7 +993,7 @@ describe('ioredis', () => { operation.args ); assert.strictEqual( - endedSpans[0].attributes[SemanticAttributes.DB_STATEMENT], + endedSpans[0].attributes[SEMATTRS_DB_STATEMENT], expectedStatement ); done(); From 025abda107c2b4b12ed1f4211266d53423e66be5 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Tue, 14 May 2024 14:36:16 -0400 Subject: [PATCH 102/121] chore(instrumentation-memcached): use exported strings for attributes (#2192) Refs: #2025 Signed-off-by: maryliag --- package-lock.json | 4 ++-- .../README.md | 14 ++++++++++++++ .../package.json | 2 +- .../src/instrumentation.ts | 12 +++++++----- .../src/utils.ts | 11 +++++++---- .../test/index.test.ts | 15 +++++++++------ 6 files changed, 40 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index ed93a0f2cf..a178c73cf0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38019,7 +38019,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "@types/memcached": "^2.2.6" }, "devDependencies": { @@ -46866,7 +46866,7 @@ "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "@types/memcached": "^2.2.6", "@types/mocha": "7.0.2", "@types/node": "18.6.5", diff --git a/plugins/node/opentelemetry-instrumentation-memcached/README.md b/plugins/node/opentelemetry-instrumentation-memcached/README.md index 6913253d98..24e6477889 100644 --- a/plugins/node/opentelemetry-instrumentation-memcached/README.md +++ b/plugins/node/opentelemetry-instrumentation-memcached/README.md @@ -48,6 +48,20 @@ registerInstrumentations({ | ------- | ---- | ------- | ----------- | | `enhancedDatabaseReporting` | `boolean` | `false` | Include full command statement in the span - **leaks potentially sensitive information to your spans**. Defaults to `false`. | +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | +|-----------------|-----------------------------------------------------------------------------| +| `db.operation` | The name of the operation being executed. | +| `db.statement` | The database statement being executed. | +| `db.system` | An identifier for the database management system (DBMS) product being used. | +| `net.peer.name` | Remote hostname or similar. | +| `net.peer.port` | Remote port number. | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/opentelemetry-instrumentation-memcached/package.json b/plugins/node/opentelemetry-instrumentation-memcached/package.json index d34a39820c..bf47bf5d4a 100644 --- a/plugins/node/opentelemetry-instrumentation-memcached/package.json +++ b/plugins/node/opentelemetry-instrumentation-memcached/package.json @@ -61,7 +61,7 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "@types/memcached": "^2.2.6" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-memcached#readme" diff --git a/plugins/node/opentelemetry-instrumentation-memcached/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-memcached/src/instrumentation.ts index fba48b5434..b72ab76896 100644 --- a/plugins/node/opentelemetry-instrumentation-memcached/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-memcached/src/instrumentation.ts @@ -22,8 +22,10 @@ import { } from '@opentelemetry/instrumentation'; import type * as Memcached from 'memcached'; import { - DbSystemValues, - SemanticAttributes, + DBSYSTEMVALUES_MEMCACHED, + SEMATTRS_DB_OPERATION, + SEMATTRS_DB_STATEMENT, + SEMATTRS_DB_SYSTEM, } from '@opentelemetry/semantic-conventions'; import * as utils from './utils'; import { InstrumentationConfig } from './types'; @@ -32,7 +34,7 @@ import { VERSION } from './version'; export class Instrumentation extends InstrumentationBase { static readonly COMPONENT = 'memcached'; static readonly COMMON_ATTRIBUTES = { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.MEMCACHED, + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_MEMCACHED, }; static readonly DEFAULT_CONFIG: InstrumentationConfig = { enhancedDatabaseReporting: false, @@ -135,8 +137,8 @@ export class Instrumentation extends InstrumentationBase { span.setAttributes({ 'db.memcached.key': query.key, 'db.memcached.lifetime': query.lifetime, - [SemanticAttributes.DB_OPERATION]: query.type, - [SemanticAttributes.DB_STATEMENT]: ( + [SEMATTRS_DB_OPERATION]: query.type, + [SEMATTRS_DB_STATEMENT]: ( instrumentation._config as InstrumentationConfig ).enhancedDatabaseReporting ? query.command diff --git a/plugins/node/opentelemetry-instrumentation-memcached/src/utils.ts b/plugins/node/opentelemetry-instrumentation-memcached/src/utils.ts index 4cebd4112e..f8f517071d 100644 --- a/plugins/node/opentelemetry-instrumentation-memcached/src/utils.ts +++ b/plugins/node/opentelemetry-instrumentation-memcached/src/utils.ts @@ -15,7 +15,10 @@ */ import type * as Memcached from 'memcached'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, +} from '@opentelemetry/semantic-conventions'; export const getPeerAttributes = ( client: any /* Memcached, but the type definitions are lacking */, @@ -49,12 +52,12 @@ export const getPeerAttributes = ( const portNumber = parseInt(port, 10); if (!isNaN(portNumber)) { return { - [SemanticAttributes.NET_PEER_NAME]: host, - [SemanticAttributes.NET_PEER_PORT]: portNumber, + [SEMATTRS_NET_PEER_NAME]: host, + [SEMATTRS_NET_PEER_PORT]: portNumber, }; } return { - [SemanticAttributes.NET_PEER_NAME]: host, + [SEMATTRS_NET_PEER_NAME]: host, }; } } diff --git a/plugins/node/opentelemetry-instrumentation-memcached/test/index.test.ts b/plugins/node/opentelemetry-instrumentation-memcached/test/index.test.ts index 87b96b537e..4e32af5fa6 100644 --- a/plugins/node/opentelemetry-instrumentation-memcached/test/index.test.ts +++ b/plugins/node/opentelemetry-instrumentation-memcached/test/index.test.ts @@ -32,8 +32,11 @@ import type * as Memcached from 'memcached'; import * as assert from 'assert'; import Instrumentation from '../src'; import { - DbSystemValues, - SemanticAttributes, + DBSYSTEMVALUES_MEMCACHED, + SEMATTRS_DB_SYSTEM, + SEMATTRS_EXCEPTION_MESSAGE, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, } from '@opentelemetry/semantic-conventions'; import * as util from 'util'; @@ -48,9 +51,9 @@ const CONFIG = { }; const DEFAULT_ATTRIBUTES: Attributes = { - [SemanticAttributes.DB_SYSTEM]: DbSystemValues.MEMCACHED, - [SemanticAttributes.NET_PEER_NAME]: CONFIG.host, - [SemanticAttributes.NET_PEER_PORT]: CONFIG.port, + [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_MEMCACHED, + [SEMATTRS_NET_PEER_NAME]: CONFIG.host, + [SEMATTRS_NET_PEER_PORT]: CONFIG.port, }; interface ExtendedMemcached extends Memcached { @@ -178,7 +181,7 @@ describe('memcached@2.x', () => { assertMatch( instrumentationSpans?.[0]?.events[0]?.attributes?.[ - SemanticAttributes.EXCEPTION_MESSAGE + SEMATTRS_EXCEPTION_MESSAGE ] as 'string', /not stored/ ); From 7795ff6301b9f950ae5e7c5d9d875ed9e66086d1 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Tue, 14 May 2024 14:37:22 -0400 Subject: [PATCH 103/121] chore(instrumentation-nestjs-core): use strings exported for attributes (#2193) Refs: #2025 Signed-off-by: maryliag --- package-lock.json | 4 +-- .../README.md | 30 +++++++++++-------- .../package.json | 2 +- .../src/instrumentation.ts | 12 +++++--- 4 files changed, 28 insertions(+), 20 deletions(-) diff --git a/package-lock.json b/package-lock.json index a178c73cf0..e7be22b429 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38344,7 +38344,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.23.0" }, "devDependencies": { "@nestjs/common": "9.4.3", @@ -47123,7 +47123,7 @@ "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/semver": "7.5.3", diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/README.md b/plugins/node/opentelemetry-instrumentation-nestjs-core/README.md index 1b24dc360d..ac24133fa3 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/README.md +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/README.md @@ -48,19 +48,23 @@ registerInstrumentations({ `.` | `request_context` | Traces the whole request context. | `http.*`, `nestjs.callback` `` | `handler` | Traces the work of a specific controller member function. | `nestjs.callback` -### Attributes - -| Name | Description -| ---- | ---- -| `component`* | "@nestjs/core" -| `nestjs.version`* | Version of instrumented `@nestjs/core` package -| `nestjs.type`* | See [NestType](./src/enums/NestType.ts) -| `nestjs.module` | Nest module class name -| `nestjs.controller` | Nest controller class name -| `nestjs.callback` | The function name of the member in the controller -| `http.method` | HTTP method -| `http.url` | Full request URL -| `http.route` | Route assigned to handler. Ex: `/users/:id` +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | +|---------------------|----------------------------------------------------| +| `component`* | "@nestjs/core" | +| `nestjs.version`* | Version of instrumented `@nestjs/core` package | +| `nestjs.type`* | See [NestType](./src/enums/NestType.ts) | +| `nestjs.module` | Nest module class name | +| `nestjs.controller` | Nest controller class name | +| `nestjs.callback` | The function name of the member in the controller | +| `http.method` | HTTP method | +| `http.url` | Full request URL | +| `http.route` | Route assigned to handler. Ex: `/users/:id` | \* included in all of the spans. diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json index d6b7964932..cf31974c6b 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json @@ -71,7 +71,7 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.23.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-nestjs-core#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts index 29b86aadba..9f90a7c1b8 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/src/instrumentation.ts @@ -25,7 +25,11 @@ import { import type { NestFactory } from '@nestjs/core/nest-factory.js'; import type { RouterExecutionContext } from '@nestjs/core/router/router-execution-context.js'; import type { Controller } from '@nestjs/common/interfaces'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_HTTP_METHOD, + SEMATTRS_HTTP_ROUTE, + SEMATTRS_HTTP_URL, +} from '@opentelemetry/semantic-conventions'; import { VERSION } from './version'; import { AttributeNames, NestType } from './enums'; @@ -168,9 +172,9 @@ function createWrapCreateHandler(tracer: api.Tracer, moduleVersion?: string) { ...Instrumentation.COMMON_ATTRIBUTES, [AttributeNames.VERSION]: moduleVersion, [AttributeNames.TYPE]: NestType.REQUEST_CONTEXT, - [SemanticAttributes.HTTP_METHOD]: req.method, - [SemanticAttributes.HTTP_URL]: req.originalUrl || req.url, - [SemanticAttributes.HTTP_ROUTE]: + [SEMATTRS_HTTP_METHOD]: req.method, + [SEMATTRS_HTTP_URL]: req.originalUrl || req.url, + [SEMATTRS_HTTP_ROUTE]: req.route?.path || req.routeOptions?.url || req.routerPath, [AttributeNames.CONTROLLER]: instanceName, [AttributeNames.CALLBACK]: callbackName, From 416337ef3cc7592d0d50ff6a86aa20c47ac41e6f Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Tue, 14 May 2024 14:38:24 -0400 Subject: [PATCH 104/121] chore(instrumentation-net): use strings exported for attributes (#2194) Refs: #2025 Signed-off-by: maryliag --- package-lock.json | 4 +- .../README.md | 19 +++++---- .../package.json | 2 +- .../src/instrumentation.ts | 25 +++++++----- .../src/utils.ts | 7 +++- .../test/connect.test.ts | 4 +- .../test/utils.ts | 40 +++++++++---------- 7 files changed, 54 insertions(+), 47 deletions(-) diff --git a/package-lock.json b/package-lock.json index e7be22b429..1ec8f3fbe4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38417,7 +38417,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.23.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -47174,7 +47174,7 @@ "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", diff --git a/plugins/node/opentelemetry-instrumentation-net/README.md b/plugins/node/opentelemetry-instrumentation-net/README.md index d63211a389..2b6d7b841a 100644 --- a/plugins/node/opentelemetry-instrumentation-net/README.md +++ b/plugins/node/opentelemetry-instrumentation-net/README.md @@ -35,17 +35,20 @@ registerInstrumentations({ }); ``` -### Attributes added to `connect` spans +## Semantic Conventions -* `net.transport`: `IP.TCP`, `pipe` or `Unix` -* `net.peer.name`: host name or the IPC file path +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) -For TCP: +Attributes added to `connect` spans: -* `net.peer.ip` -* `net.peer.port` -* `net.host.ip` -* `net.host.port` +| Attribute | Short Description | +|---------------------------|--------------------------------------------------------------------------| +| `net.transport` | `IP.TCP`, `pipe` or `Unix` | +| `net.peer.name` | Host name or the IPC file path | +| `net.peer.ip` (for TCP) | Remote address of the peer (dotted decimal for IPv4 or RFC5952 for IPv6) | +| `net.peer.port` (for TCP) | Remote port number | +| `net.host.ip` (for TCP) | Like net.peer.ip but for the host IP. Useful in case of a multi-IP host | +| `net.host.port` (for TCP) | Like net.peer.port but for the host port | ## Useful links diff --git a/plugins/node/opentelemetry-instrumentation-net/package.json b/plugins/node/opentelemetry-instrumentation-net/package.json index 41eb0902b7..b109a1c7c9 100644 --- a/plugins/node/opentelemetry-instrumentation-net/package.json +++ b/plugins/node/opentelemetry-instrumentation-net/package.json @@ -59,7 +59,7 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.23.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-net#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts index b832473ef4..1cac375019 100644 --- a/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-net/src/instrumentation.ts @@ -23,8 +23,13 @@ import { safeExecuteInTheMiddle, } from '@opentelemetry/instrumentation'; import { - SemanticAttributes, - NetTransportValues, + SEMATTRS_NET_HOST_IP, + SEMATTRS_NET_HOST_PORT, + SEMATTRS_NET_PEER_IP, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, + SEMATTRS_NET_TRANSPORT, + NETTRANSPORTVALUES_IP_TCP, } from '@opentelemetry/semantic-conventions'; import { TLSAttributes } from './types'; import { NormalizedOptions, SocketEvent } from './internal-types'; @@ -184,8 +189,8 @@ export class NetInstrumentation extends InstrumentationBase { private _startIpcSpan(options: NormalizedOptions, socket: Socket) { const span = this.tracer.startSpan('ipc.connect', { attributes: { - [SemanticAttributes.NET_TRANSPORT]: IPC_TRANSPORT, - [SemanticAttributes.NET_PEER_NAME]: options.path, + [SEMATTRS_NET_TRANSPORT]: IPC_TRANSPORT, + [SEMATTRS_NET_PEER_NAME]: options.path, }, }); @@ -197,9 +202,9 @@ export class NetInstrumentation extends InstrumentationBase { private _startTcpSpan(options: NormalizedOptions, socket: Socket) { const span = this.tracer.startSpan('tcp.connect', { attributes: { - [SemanticAttributes.NET_TRANSPORT]: NetTransportValues.IP_TCP, - [SemanticAttributes.NET_PEER_NAME]: options.host, - [SemanticAttributes.NET_PEER_PORT]: options.port, + [SEMATTRS_NET_TRANSPORT]: NETTRANSPORTVALUES_IP_TCP, + [SEMATTRS_NET_PEER_NAME]: options.host, + [SEMATTRS_NET_PEER_PORT]: options.port, }, }); @@ -240,9 +245,9 @@ function registerListeners( const setHostAttributes = () => { span.setAttributes({ - [SemanticAttributes.NET_PEER_IP]: socket.remoteAddress, - [SemanticAttributes.NET_HOST_IP]: socket.localAddress, - [SemanticAttributes.NET_HOST_PORT]: socket.localPort, + [SEMATTRS_NET_PEER_IP]: socket.remoteAddress, + [SEMATTRS_NET_HOST_IP]: socket.localAddress, + [SEMATTRS_NET_HOST_PORT]: socket.localPort, }); }; diff --git a/plugins/node/opentelemetry-instrumentation-net/src/utils.ts b/plugins/node/opentelemetry-instrumentation-net/src/utils.ts index 8b013deead..8e1b67187b 100644 --- a/plugins/node/opentelemetry-instrumentation-net/src/utils.ts +++ b/plugins/node/opentelemetry-instrumentation-net/src/utils.ts @@ -15,11 +15,14 @@ */ import { NormalizedOptions } from './internal-types'; -import { NetTransportValues } from '@opentelemetry/semantic-conventions'; +import { + NETTRANSPORTVALUES_PIPE, + NETTRANSPORTVALUES_UNIX, +} from '@opentelemetry/semantic-conventions'; import { platform } from 'os'; export const IPC_TRANSPORT = - platform() === 'win32' ? NetTransportValues.PIPE : NetTransportValues.UNIX; + platform() === 'win32' ? NETTRANSPORTVALUES_PIPE : NETTRANSPORTVALUES_UNIX; function getHost(args: unknown[]) { return typeof args[1] === 'string' ? args[1] : 'localhost'; diff --git a/plugins/node/opentelemetry-instrumentation-net/test/connect.test.ts b/plugins/node/opentelemetry-instrumentation-net/test/connect.test.ts index 1aefd0e466..55849289ee 100644 --- a/plugins/node/opentelemetry-instrumentation-net/test/connect.test.ts +++ b/plugins/node/opentelemetry-instrumentation-net/test/connect.test.ts @@ -19,7 +19,7 @@ import { InMemorySpanExporter, SimpleSpanProcessor, } from '@opentelemetry/sdk-trace-base'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMATTRS_NET_TRANSPORT } from '@opentelemetry/semantic-conventions'; import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import * as net from 'net'; import * as assert from 'assert'; @@ -186,7 +186,7 @@ describe('NetInstrumentation', () => { try { const span = getSpan(); assert.strictEqual( - span.attributes[SemanticAttributes.NET_TRANSPORT], + span.attributes[SEMATTRS_NET_TRANSPORT], undefined ); assert.strictEqual(span.status.code, SpanStatusCode.ERROR); diff --git a/plugins/node/opentelemetry-instrumentation-net/test/utils.ts b/plugins/node/opentelemetry-instrumentation-net/test/utils.ts index 23bc6db72b..7d3651d2df 100644 --- a/plugins/node/opentelemetry-instrumentation-net/test/utils.ts +++ b/plugins/node/opentelemetry-instrumentation-net/test/utils.ts @@ -17,8 +17,12 @@ import { SpanKind } from '@opentelemetry/api'; import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; import { - NetTransportValues, - SemanticAttributes, + NETTRANSPORTVALUES_IP_TCP, + SEMATTRS_NET_HOST_IP, + SEMATTRS_NET_HOST_PORT, + SEMATTRS_NET_PEER_NAME, + SEMATTRS_NET_PEER_PORT, + SEMATTRS_NET_TRANSPORT, } from '@opentelemetry/semantic-conventions'; import * as assert from 'assert'; import * as path from 'path'; @@ -37,21 +41,17 @@ export const IPC_PATH = export function assertTcpSpan(span: ReadableSpan, socket: Socket) { assertSpanKind(span); - assertAttrib( - span, - SemanticAttributes.NET_TRANSPORT, - NetTransportValues.IP_TCP - ); - assertAttrib(span, SemanticAttributes.NET_PEER_NAME, HOST); - assertAttrib(span, SemanticAttributes.NET_PEER_PORT, PORT); - assertAttrib(span, SemanticAttributes.NET_HOST_IP, socket.localAddress); - assertAttrib(span, SemanticAttributes.NET_HOST_PORT, socket.localPort); + assertAttrib(span, SEMATTRS_NET_TRANSPORT, NETTRANSPORTVALUES_IP_TCP); + assertAttrib(span, SEMATTRS_NET_PEER_NAME, HOST); + assertAttrib(span, SEMATTRS_NET_PEER_PORT, PORT); + assertAttrib(span, SEMATTRS_NET_HOST_IP, socket.localAddress); + assertAttrib(span, SEMATTRS_NET_HOST_PORT, socket.localPort); } export function assertIpcSpan(span: ReadableSpan) { assertSpanKind(span); - assertAttrib(span, SemanticAttributes.NET_TRANSPORT, IPC_TRANSPORT); - assertAttrib(span, SemanticAttributes.NET_PEER_NAME, IPC_PATH); + assertAttrib(span, SEMATTRS_NET_TRANSPORT, IPC_TRANSPORT); + assertAttrib(span, SEMATTRS_NET_PEER_NAME, IPC_PATH); } export function assertTLSSpan( @@ -60,17 +60,13 @@ export function assertTLSSpan( ) { assertParentChild(tlsSpan, netSpan); assertSpanKind(netSpan); - assertAttrib( - netSpan, - SemanticAttributes.NET_TRANSPORT, - NetTransportValues.IP_TCP - ); - assertAttrib(netSpan, SemanticAttributes.NET_PEER_NAME, HOST); - assertAttrib(netSpan, SemanticAttributes.NET_PEER_PORT, PORT); + assertAttrib(netSpan, SEMATTRS_NET_TRANSPORT, NETTRANSPORTVALUES_IP_TCP); + assertAttrib(netSpan, SEMATTRS_NET_PEER_NAME, HOST); + assertAttrib(netSpan, SEMATTRS_NET_PEER_PORT, PORT); // Node.JS 10 sets socket.localAddress & socket.localPort to "undefined" when a connection is // ended, so one of the tests fails, so we skip them for TLS - // assertAttrib(span, SemanticAttributes.NET_HOST_IP, socket.localAddress); - //assertAttrib(netSpan, SemanticAttributes.NET_HOST_PORT, socket.localPort); + // assertAttrib(span, SEMATTRS_NET_HOST_IP, socket.localAddress); + //assertAttrib(netSpan, SEMATTRS_NET_HOST_PORT, socket.localPort); assertAttrib(tlsSpan, TLSAttributes.PROTOCOL, 'TLSv1.2'); assertAttrib(tlsSpan, TLSAttributes.AUTHORIZED, 'true'); From bb5d3bb60abb3e85b51ee35e6430c0fde26a5ec2 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Tue, 14 May 2024 14:39:34 -0400 Subject: [PATCH 105/121] chore(instrumentation-bunyan): use strings exported for attributes (#2195) Refs: #2025 Signed-off-by: maryliag --- package-lock.json | 4 ++-- .../node/opentelemetry-instrumentation-bunyan/package.json | 2 +- .../opentelemetry-instrumentation-bunyan/test/bunyan.test.ts | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1ec8f3fbe4..f6d420fd7d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37561,7 +37561,7 @@ "@opentelemetry/sdk-logs": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", @@ -46302,7 +46302,7 @@ "@opentelemetry/sdk-logs": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "@types/bunyan": "1.8.9", "@types/mocha": "7.0.2", "@types/node": "18.6.5", diff --git a/plugins/node/opentelemetry-instrumentation-bunyan/package.json b/plugins/node/opentelemetry-instrumentation-bunyan/package.json index 2392146e10..e9721696df 100644 --- a/plugins/node/opentelemetry-instrumentation-bunyan/package.json +++ b/plugins/node/opentelemetry-instrumentation-bunyan/package.json @@ -49,7 +49,7 @@ "@opentelemetry/sdk-logs": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.23.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/sinon": "10.0.18", diff --git a/plugins/node/opentelemetry-instrumentation-bunyan/test/bunyan.test.ts b/plugins/node/opentelemetry-instrumentation-bunyan/test/bunyan.test.ts index 13f2cf3356..deaf2fb1e7 100644 --- a/plugins/node/opentelemetry-instrumentation-bunyan/test/bunyan.test.ts +++ b/plugins/node/opentelemetry-instrumentation-bunyan/test/bunyan.test.ts @@ -28,7 +28,7 @@ import { import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import { isWrapped } from '@opentelemetry/instrumentation'; import { Resource } from '@opentelemetry/resources'; -import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; +import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; import * as assert from 'assert'; import * as sinon from 'sinon'; import { Writable } from 'stream'; @@ -48,7 +48,7 @@ tracerProvider.addSpanProcessor( const tracer = tracerProvider.getTracer('default'); const resource = new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: 'test-instrumentation-bunyan', + [SEMRESATTRS_SERVICE_NAME]: 'test-instrumentation-bunyan', }); const loggerProvider = new LoggerProvider({ resource }); const memExporter = new InMemoryLogRecordExporter(); From feb2720a593f7d32a600332f701b68f8dc21a188 Mon Sep 17 00:00:00 2001 From: Jamie Danielson Date: Tue, 14 May 2024 15:32:16 -0400 Subject: [PATCH 106/121] docs: remove unused semconv packages and document (#2182) * docs(instrumentation-lru-memoizer): document semconv * docs(instrumentation-dns): remove unused semconv, document * docs(instrumentation-generic-pool): remove unused semconv, document * docs(instrumentation-pino): document semconv * docs(instrumentation-winston): document semconv * docs(plugin-react-load): remove unused semconv, document * docs(sampler-aws-xray): remove unused semconv, document * docs(instrumentation-bunyan): document semconv --- incubator/opentelemetry-sampler-aws-xray/README.md | 4 ++++ incubator/opentelemetry-sampler-aws-xray/package.json | 9 ++++----- package-lock.json | 8 +------- plugins/node/instrumentation-lru-memoizer/README.md | 8 ++++++-- .../node/opentelemetry-instrumentation-bunyan/README.md | 4 ++++ plugins/node/opentelemetry-instrumentation-dns/README.md | 4 ++++ .../node/opentelemetry-instrumentation-dns/package.json | 1 - .../opentelemetry-instrumentation-generic-pool/README.md | 4 ++++ .../package.json | 3 +-- .../node/opentelemetry-instrumentation-pino/README.md | 4 ++++ .../node/opentelemetry-instrumentation-winston/README.md | 6 +++++- plugins/web/opentelemetry-plugin-react-load/README.md | 4 ++++ plugins/web/opentelemetry-plugin-react-load/package.json | 3 +-- 13 files changed, 42 insertions(+), 20 deletions(-) diff --git a/incubator/opentelemetry-sampler-aws-xray/README.md b/incubator/opentelemetry-sampler-aws-xray/README.md index 5454b1e970..96852f6ab0 100644 --- a/incubator/opentelemetry-sampler-aws-xray/README.md +++ b/incubator/opentelemetry-sampler-aws-xray/README.md @@ -52,6 +52,10 @@ For more details on setting up the global tracer provider to send traces to AWS Please note that AWS Lambda does not support X-Ray remote sampling. +## Semantic Conventions + +This package does not currently generate any attributes from semantic conventions. + ## Useful links - [More information on OpenTelemetry](https://opentelemetry.io/) diff --git a/incubator/opentelemetry-sampler-aws-xray/package.json b/incubator/opentelemetry-sampler-aws-xray/package.json index 6ae26444a3..6b137eef6b 100644 --- a/incubator/opentelemetry-sampler-aws-xray/package.json +++ b/incubator/opentelemetry-sampler-aws-xray/package.json @@ -46,7 +46,6 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", "axios": "^1.3.5" }, "devDependencies": { @@ -55,16 +54,16 @@ "@types/mocha": "8.2.3", "@types/node": "18.6.5", "@types/sinon": "10.0.18", + "@typescript-eslint/eslint-plugin": "5.8.1", + "@typescript-eslint/parser": "5.8.1", "eslint": "8.7.0", "expect": "29.2.0", "mocha": "7.2.0", "nock": "13.3.3", + "nyc": "15.1.0", "sinon": "15.2.0", "ts-mocha": "10.0.0", - "nyc": "15.1.0", - "typescript": "4.4.4", - "@typescript-eslint/eslint-plugin": "5.8.1", - "@typescript-eslint/parser": "5.8.1" + "typescript": "4.4.4" }, "engines": { "node": ">=14" diff --git a/package-lock.json b/package-lock.json index f6d420fd7d..ae274779d6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37667,7 +37667,6 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0", "semver": "^7.5.4" }, "devDependencies": { @@ -37783,8 +37782,7 @@ "version": "0.36.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/instrumentation": "^0.51.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -38905,7 +38903,6 @@ "@opentelemetry/core": "^1.0.0", "@opentelemetry/sdk-trace-base": "^1.0.0", "@opentelemetry/sdk-trace-web": "^1.0.0", - "@opentelemetry/semantic-conventions": "^1.0.0", "shimmer": "^1.2.1" }, "devDependencies": { @@ -46458,7 +46455,6 @@ "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/semver": "7.5.3", @@ -46612,7 +46608,6 @@ "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", "@types/generic-pool": "^3.1.9", "@types/mocha": "7.0.2", "@types/node": "18.6.5", @@ -47792,7 +47787,6 @@ "@opentelemetry/propagator-b3": "^1.3.1", "@opentelemetry/sdk-trace-base": "^1.0.0", "@opentelemetry/sdk-trace-web": "^1.0.0", - "@opentelemetry/semantic-conventions": "^1.0.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "@types/react": "17.0.67", diff --git a/plugins/node/instrumentation-lru-memoizer/README.md b/plugins/node/instrumentation-lru-memoizer/README.md index b76f1f5abf..d59881a792 100644 --- a/plugins/node/instrumentation-lru-memoizer/README.md +++ b/plugins/node/instrumentation-lru-memoizer/README.md @@ -1,9 +1,9 @@ -# OpenTelemetry lru-memorizer Instrumentation for Node.js +# OpenTelemetry lru-memoizer Instrumentation for Node.js [![NPM Published Version][npm-img]][npm-url] [![Apache License][license-image]][license-image] -This module provides automatic instrumentation for the [`lru-memorizer`](https://github.com/jfromaniello/lru-memoizer) module, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle. +This module provides automatic instrumentation for the [`lru-memoizer`](https://github.com/jfromaniello/lru-memoizer) module, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle. If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle with [@opentelemetry/sdk-node](`https://www.npmjs.com/package/@opentelemetry/sdk-node`) for the most seamless instrumentation experience. @@ -40,6 +40,10 @@ registerInstrumentations({ }) ``` +## Semantic Conventions + +This package does not currently generate any attributes from semantic conventions. + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/opentelemetry-instrumentation-bunyan/README.md b/plugins/node/opentelemetry-instrumentation-bunyan/README.md index 3b13bd7667..84bf360858 100644 --- a/plugins/node/opentelemetry-instrumentation-bunyan/README.md +++ b/plugins/node/opentelemetry-instrumentation-bunyan/README.md @@ -118,6 +118,10 @@ const logger = bunyan.createLogger({ }); ``` +## Semantic Conventions + +This package does not currently generate any attributes from semantic conventions. + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/opentelemetry-instrumentation-dns/README.md b/plugins/node/opentelemetry-instrumentation-dns/README.md index 70265054a6..74d7e2a7bd 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/README.md +++ b/plugins/node/opentelemetry-instrumentation-dns/README.md @@ -46,6 +46,10 @@ DNS instrumentation has currently one option. You can set the following: | ------- | ---- | ----------- | | [`ignoreHostnames`](https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/plugins/node/opentelemetry-instrumentation-dns/src/types.ts#L99) | `IgnoreMatcher | IgnoreMatcher[]` | DNS instrumentation will not trace all requests that match hostnames | +## Semantic Conventions + +This package does not currently generate any attributes from semantic conventions. + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/opentelemetry-instrumentation-dns/package.json b/plugins/node/opentelemetry-instrumentation-dns/package.json index f22e99e808..e43d0f8a44 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/package.json +++ b/plugins/node/opentelemetry-instrumentation-dns/package.json @@ -60,7 +60,6 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0", "semver": "^7.5.4" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-dns#readme" diff --git a/plugins/node/opentelemetry-instrumentation-generic-pool/README.md b/plugins/node/opentelemetry-instrumentation-generic-pool/README.md index c839c0345c..ea9dee4228 100644 --- a/plugins/node/opentelemetry-instrumentation-generic-pool/README.md +++ b/plugins/node/opentelemetry-instrumentation-generic-pool/README.md @@ -38,6 +38,10 @@ registerInstrumentations({ }); ``` +## Semantic Conventions + +This package does not currently generate any attributes from semantic conventions. + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/opentelemetry-instrumentation-generic-pool/package.json b/plugins/node/opentelemetry-instrumentation-generic-pool/package.json index 62f2ac2af7..637560de0b 100644 --- a/plugins/node/opentelemetry-instrumentation-generic-pool/package.json +++ b/plugins/node/opentelemetry-instrumentation-generic-pool/package.json @@ -59,8 +59,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/instrumentation": "^0.51.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-pino/README.md b/plugins/node/opentelemetry-instrumentation-pino/README.md index 377ce7aa6e..f5a33a1d77 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/README.md +++ b/plugins/node/opentelemetry-instrumentation-pino/README.md @@ -65,6 +65,10 @@ When no span context is active or the span context is invalid, injection is skip `>=5.14.0 <10` +## Semantic Conventions + +This package does not currently generate any attributes from semantic conventions. + ## Useful links * For more information on OpenTelemetry, visit: diff --git a/plugins/node/opentelemetry-instrumentation-winston/README.md b/plugins/node/opentelemetry-instrumentation-winston/README.md index 90d80acc66..8c42c5de3d 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/README.md +++ b/plugins/node/opentelemetry-instrumentation-winston/README.md @@ -79,7 +79,7 @@ npm install --save @opentelemetry/winston-transport ### Log correlation Winston logger calls in the context of a tracing span will have fields -indentifying the span added to the log record. This allows +identifying the span added to the log record. This allows [correlating](https://opentelemetry.io/docs/specs/otel/logs/#log-correlation) log records with tracing data. The added fields are ([spec](https://opentelemetry.io/docs/specs/otel/compatibility/logging_trace_context/)): @@ -106,6 +106,10 @@ Log sending `3.x` +## Semantic Conventions + +This package does not currently generate any attributes from semantic conventions. + ## Useful links * For more information on OpenTelemetry, visit: diff --git a/plugins/web/opentelemetry-plugin-react-load/README.md b/plugins/web/opentelemetry-plugin-react-load/README.md index 63b1c0b976..76155f67b4 100644 --- a/plugins/web/opentelemetry-plugin-react-load/README.md +++ b/plugins/web/opentelemetry-plugin-react-load/README.md @@ -39,6 +39,10 @@ export class Component1 extends BaseOpenTelemetryComponent { ... } See [/examples/react-load](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/examples/react-load) for a short example. +## Semantic Conventions + +This package does not currently generate any attributes from semantic conventions. + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/web/opentelemetry-plugin-react-load/package.json b/plugins/web/opentelemetry-plugin-react-load/package.json index 686bdcc371..17da70c813 100644 --- a/plugins/web/opentelemetry-plugin-react-load/package.json +++ b/plugins/web/opentelemetry-plugin-react-load/package.json @@ -49,6 +49,7 @@ }, "devDependencies": { "@babel/core": "7.22.17", + "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.0.0", "@opentelemetry/propagator-b3": "^1.3.1", "@types/mocha": "7.0.2", @@ -60,7 +61,6 @@ "@types/sinon": "10.0.18", "@types/webpack-env": "1.16.2", "babel-loader": "8.2.2", - "@jsdevtools/coverage-istanbul-loader": "3.0.5", "karma": "6.3.16", "karma-chrome-launcher": "^3.1.1", "karma-coverage-istanbul-reporter": "3.0.3", @@ -89,7 +89,6 @@ "@opentelemetry/core": "^1.0.0", "@opentelemetry/sdk-trace-base": "^1.0.0", "@opentelemetry/sdk-trace-web": "^1.0.0", - "@opentelemetry/semantic-conventions": "^1.0.0", "shimmer": "^1.2.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/web/opentelemetry-plugin-react-load#readme" From b432929f4b5682e7879c50682547cea25790c588 Mon Sep 17 00:00:00 2001 From: Jamie Danielson Date: Tue, 14 May 2024 16:15:16 -0400 Subject: [PATCH 107/121] fix(aws-lambda): update semconv package and readme (#2181) --- package-lock.json | 19 +++++++++++++++++-- .../README.md | 12 ++++++++++++ .../package.json | 2 +- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index ae274779d6..368cd33f93 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37474,7 +37474,7 @@ "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/propagator-aws-xray": "^1.3.1", "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/aws-lambda": "8.10.122" }, "devDependencies": { @@ -37498,6 +37498,14 @@ "@opentelemetry/api": "^1.3.0" } }, + "plugins/node/opentelemetry-instrumentation-aws-lambda/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.1.tgz", + "integrity": "sha512-VkliWlS4/+GHLLW7J/rVBA00uXus1SWvwFvcUDxDwmFxYfg/2VI6ekwdXS28cjI8Qz2ky2BzG8OUHo+WeYIWqw==", + "engines": { + "node": ">=14" + } + }, "plugins/node/opentelemetry-instrumentation-aws-sdk": { "name": "@opentelemetry/instrumentation-aws-sdk", "version": "0.41.0", @@ -46238,7 +46246,7 @@ "@opentelemetry/sdk-metrics": "^1.8.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/aws-lambda": "8.10.122", "@types/mocha": "7.0.2", "@types/node": "18.6.5", @@ -46247,6 +46255,13 @@ "rimraf": "5.0.5", "ts-mocha": "10.0.0", "typescript": "4.4.4" + }, + "dependencies": { + "@opentelemetry/semantic-conventions": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.1.tgz", + "integrity": "sha512-VkliWlS4/+GHLLW7J/rVBA00uXus1SWvwFvcUDxDwmFxYfg/2VI6ekwdXS28cjI8Qz2ky2BzG8OUHo+WeYIWqw==" + } } }, "@opentelemetry/instrumentation-aws-sdk": { diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/README.md b/plugins/node/opentelemetry-instrumentation-aws-lambda/README.md index 8a3c533c5c..59543ddb2d 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/README.md +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/README.md @@ -82,6 +82,18 @@ The `lambdaHandler` should be specified as a string in the format `. diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json b/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json index 368ffcd5ef..888d47d99d 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json @@ -59,7 +59,7 @@ "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/propagator-aws-xray": "^1.3.1", "@opentelemetry/resources": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/aws-lambda": "8.10.122" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-aws-lambda#readme" From 330fbaa94e77e35a178fa1484c591d9e4c12f4ce Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Wed, 15 May 2024 01:18:58 -0700 Subject: [PATCH 108/121] chore: update to new release-please-action (#2208) https://github.com/google-github-actions/release-please-action/ was recently archived and deprecated in favour of https://github.com/googleapis/release-please-action This also pins to a specific git SHA which is somewhat recommended for security hardening: https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-third-party-actions --- .github/workflows/release-please.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 18a14e5130..6e877b65fa 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -24,7 +24,7 @@ jobs: run: | npm ci - - uses: google-github-actions/release-please-action@v4 + - uses: googleapis/release-please-action@f3969c04a4ec81d7a9aa4010d84ae6a7602f86a7 # v4.1.1 id: release with: token: ${{secrets.RELEASE_PR_TOKEN}} From 54365a9aafaca6555e13f1276945d6f869d103da Mon Sep 17 00:00:00 2001 From: Daniel Dyla Date: Wed, 15 May 2024 09:27:22 -0400 Subject: [PATCH 109/121] chore: release main (#2172) * chore: release main * chore: sync package-lock.json --------- Co-authored-by: opentelemetrybot <107717825+opentelemetrybot@users.noreply.github.com> --- .release-please-manifest.json | 12 ++++---- .../CHANGELOG.md | 7 +++++ .../package.json | 2 +- .../auto-instrumentations-node/CHANGELOG.md | 12 ++++++++ .../auto-instrumentations-node/package.json | 10 +++---- package-lock.json | 28 +++++++++---------- packages/baggage-span-processor/CHANGELOG.md | 7 +++++ packages/baggage-span-processor/package.json | 2 +- .../CHANGELOG.md | 7 +++++ .../package.json | 2 +- .../CHANGELOG.md | 7 +++++ .../package.json | 2 +- .../CHANGELOG.md | 7 +++++ .../package.json | 2 +- 14 files changed, 77 insertions(+), 30 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index dc88464b43..68cedee9ce 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,14 +1,14 @@ { "detectors/node/opentelemetry-resource-detector-alibaba-cloud": "0.28.9", - "detectors/node/opentelemetry-resource-detector-aws": "1.4.2", + "detectors/node/opentelemetry-resource-detector-aws": "1.5.0", "detectors/node/opentelemetry-resource-detector-azure": "0.2.7", "detectors/node/opentelemetry-resource-detector-container": "0.3.9", "detectors/node/opentelemetry-resource-detector-gcp": "0.29.9", "detectors/node/opentelemetry-resource-detector-github": "0.28.2", "detectors/node/opentelemetry-resource-detector-instana": "0.9.0", - "metapackages/auto-instrumentations-node": "0.46.0", + "metapackages/auto-instrumentations-node": "0.46.1", "metapackages/auto-instrumentations-web": "0.39.0", - "packages/baggage-span-processor": "0.1.0", + "packages/baggage-span-processor": "0.2.0", "packages/opentelemetry-host-metrics": "0.35.1", "packages/opentelemetry-id-generator-aws-xray": "1.2.2", "packages/opentelemetry-propagation-utils": "0.30.9", @@ -26,13 +26,13 @@ "plugins/node/instrumentation-socket.io": "0.39.0", "plugins/node/instrumentation-tedious": "0.10.1", "plugins/node/instrumentation-undici": "0.2.0", - "plugins/node/opentelemetry-instrumentation-aws-lambda": "0.41.0", + "plugins/node/opentelemetry-instrumentation-aws-lambda": "0.41.1", "plugins/node/opentelemetry-instrumentation-aws-sdk": "0.41.0", "plugins/node/opentelemetry-instrumentation-bunyan": "0.38.0", "plugins/node/opentelemetry-instrumentation-cassandra": "0.38.0", - "plugins/node/opentelemetry-instrumentation-connect": "0.36.0", + "plugins/node/opentelemetry-instrumentation-connect": "0.36.1", "plugins/node/opentelemetry-instrumentation-dns": "0.36.1", - "plugins/node/opentelemetry-instrumentation-express": "0.38.0", + "plugins/node/opentelemetry-instrumentation-express": "0.39.0", "plugins/node/opentelemetry-instrumentation-fastify": "0.36.1", "plugins/node/opentelemetry-instrumentation-generic-pool": "0.36.0", "plugins/node/opentelemetry-instrumentation-graphql": "0.40.0", diff --git a/detectors/node/opentelemetry-resource-detector-aws/CHANGELOG.md b/detectors/node/opentelemetry-resource-detector-aws/CHANGELOG.md index f8199248af..d824077ae8 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/CHANGELOG.md +++ b/detectors/node/opentelemetry-resource-detector-aws/CHANGELOG.md @@ -66,6 +66,13 @@ * devDependencies * @opentelemetry/contrib-test-utils bumped from ^0.35.1 to ^0.36.0 +## [1.5.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-aws-v1.4.2...resource-detector-aws-v1.5.0) (2024-05-15) + + +### Features + +* add support for cloud.resource_id to AWS ECS detector ([#1936](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1936)) ([cc71492](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/cc714922b931ce39595ef0b257114b4e797ba6a9)) + ## [1.4.2](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-aws-v1.4.1...resource-detector-aws-v1.4.2) (2024-04-25) diff --git a/detectors/node/opentelemetry-resource-detector-aws/package.json b/detectors/node/opentelemetry-resource-detector-aws/package.json index 86a6aad28b..6874a1b73c 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/package.json +++ b/detectors/node/opentelemetry-resource-detector-aws/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-aws", - "version": "1.4.2", + "version": "1.5.0", "description": "OpenTelemetry SDK resource detector for AWS", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/metapackages/auto-instrumentations-node/CHANGELOG.md b/metapackages/auto-instrumentations-node/CHANGELOG.md index 31f144fd3d..c41024c926 100644 --- a/metapackages/auto-instrumentations-node/CHANGELOG.md +++ b/metapackages/auto-instrumentations-node/CHANGELOG.md @@ -152,6 +152,18 @@ * dependencies * @opentelemetry/instrumentation-aws-sdk bumped from ^0.38.0 to ^0.38.1 +## [0.46.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-node-v0.46.0...auto-instrumentations-node-v0.46.1) (2024-05-15) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/instrumentation-aws-lambda bumped from ^0.41.0 to ^0.41.1 + * @opentelemetry/instrumentation-connect bumped from ^0.36.0 to ^0.36.1 + * @opentelemetry/instrumentation-express bumped from ^0.38.0 to ^0.39.0 + * @opentelemetry/resource-detector-aws bumped from ^1.4.2 to ^1.5.0 + ## [0.46.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-node-v0.45.0...auto-instrumentations-node-v0.46.0) (2024-05-02) diff --git a/metapackages/auto-instrumentations-node/package.json b/metapackages/auto-instrumentations-node/package.json index 0a3ae85cc1..bfa0616529 100644 --- a/metapackages/auto-instrumentations-node/package.json +++ b/metapackages/auto-instrumentations-node/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/auto-instrumentations-node", - "version": "0.46.0", + "version": "0.46.1", "description": "Metapackage which bundles opentelemetry node core and contrib instrumentations", "author": "OpenTelemetry Authors", "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/metapackages/auto-instrumentations-node#readme", @@ -51,15 +51,15 @@ "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/instrumentation-amqplib": "^0.37.0", - "@opentelemetry/instrumentation-aws-lambda": "^0.41.0", + "@opentelemetry/instrumentation-aws-lambda": "^0.41.1", "@opentelemetry/instrumentation-aws-sdk": "^0.41.0", "@opentelemetry/instrumentation-bunyan": "^0.38.0", "@opentelemetry/instrumentation-cassandra-driver": "^0.38.0", - "@opentelemetry/instrumentation-connect": "^0.36.0", + "@opentelemetry/instrumentation-connect": "^0.36.1", "@opentelemetry/instrumentation-cucumber": "^0.6.0", "@opentelemetry/instrumentation-dataloader": "^0.9.0", "@opentelemetry/instrumentation-dns": "^0.36.1", - "@opentelemetry/instrumentation-express": "^0.38.0", + "@opentelemetry/instrumentation-express": "^0.39.0", "@opentelemetry/instrumentation-fastify": "^0.36.1", "@opentelemetry/instrumentation-fs": "^0.12.0", "@opentelemetry/instrumentation-generic-pool": "^0.36.0", @@ -89,7 +89,7 @@ "@opentelemetry/instrumentation-undici": "^0.2.0", "@opentelemetry/instrumentation-winston": "^0.37.0", "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", - "@opentelemetry/resource-detector-aws": "^1.4.2", + "@opentelemetry/resource-detector-aws": "^1.5.0", "@opentelemetry/resource-detector-azure": "^0.2.6", "@opentelemetry/resource-detector-container": "^0.3.9", "@opentelemetry/resource-detector-gcp": "^0.29.9", diff --git a/package-lock.json b/package-lock.json index 368cd33f93..2445aa541e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -72,7 +72,7 @@ }, "detectors/node/opentelemetry-resource-detector-aws": { "name": "@opentelemetry/resource-detector-aws", - "version": "1.4.2", + "version": "1.5.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.0.0", @@ -281,20 +281,20 @@ }, "metapackages/auto-instrumentations-node": { "name": "@opentelemetry/auto-instrumentations-node", - "version": "0.46.0", + "version": "0.46.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/instrumentation-amqplib": "^0.37.0", - "@opentelemetry/instrumentation-aws-lambda": "^0.41.0", + "@opentelemetry/instrumentation-aws-lambda": "^0.41.1", "@opentelemetry/instrumentation-aws-sdk": "^0.41.0", "@opentelemetry/instrumentation-bunyan": "^0.38.0", "@opentelemetry/instrumentation-cassandra-driver": "^0.38.0", - "@opentelemetry/instrumentation-connect": "^0.36.0", + "@opentelemetry/instrumentation-connect": "^0.36.1", "@opentelemetry/instrumentation-cucumber": "^0.6.0", "@opentelemetry/instrumentation-dataloader": "^0.9.0", "@opentelemetry/instrumentation-dns": "^0.36.1", - "@opentelemetry/instrumentation-express": "^0.38.0", + "@opentelemetry/instrumentation-express": "^0.39.0", "@opentelemetry/instrumentation-fastify": "^0.36.1", "@opentelemetry/instrumentation-fs": "^0.12.0", "@opentelemetry/instrumentation-generic-pool": "^0.36.0", @@ -324,7 +324,7 @@ "@opentelemetry/instrumentation-undici": "^0.2.0", "@opentelemetry/instrumentation-winston": "^0.37.0", "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", - "@opentelemetry/resource-detector-aws": "^1.4.2", + "@opentelemetry/resource-detector-aws": "^1.5.0", "@opentelemetry/resource-detector-azure": "^0.2.6", "@opentelemetry/resource-detector-container": "^0.3.9", "@opentelemetry/resource-detector-gcp": "^0.29.9", @@ -36640,7 +36640,7 @@ }, "packages/baggage-span-processor": { "name": "@opentelemetry/baggage-span-processor", - "version": "0.1.0", + "version": "0.2.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/sdk-trace-base": "^1.0.0" @@ -37468,7 +37468,7 @@ }, "plugins/node/opentelemetry-instrumentation-aws-lambda": { "name": "@opentelemetry/instrumentation-aws-lambda", - "version": "0.41.0", + "version": "0.41.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/instrumentation": "^0.51.0", @@ -37632,7 +37632,7 @@ }, "plugins/node/opentelemetry-instrumentation-connect": { "name": "@opentelemetry/instrumentation-connect", - "version": "0.36.0", + "version": "0.36.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -37703,7 +37703,7 @@ }, "plugins/node/opentelemetry-instrumentation-express": { "name": "@opentelemetry/instrumentation-express", - "version": "0.38.0", + "version": "0.39.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.8.0", @@ -45906,15 +45906,15 @@ "@opentelemetry/api": "^1.4.1", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/instrumentation-amqplib": "^0.37.0", - "@opentelemetry/instrumentation-aws-lambda": "^0.41.0", + "@opentelemetry/instrumentation-aws-lambda": "^0.41.1", "@opentelemetry/instrumentation-aws-sdk": "^0.41.0", "@opentelemetry/instrumentation-bunyan": "^0.38.0", "@opentelemetry/instrumentation-cassandra-driver": "^0.38.0", - "@opentelemetry/instrumentation-connect": "^0.36.0", + "@opentelemetry/instrumentation-connect": "^0.36.1", "@opentelemetry/instrumentation-cucumber": "^0.6.0", "@opentelemetry/instrumentation-dataloader": "^0.9.0", "@opentelemetry/instrumentation-dns": "^0.36.1", - "@opentelemetry/instrumentation-express": "^0.38.0", + "@opentelemetry/instrumentation-express": "^0.39.0", "@opentelemetry/instrumentation-fastify": "^0.36.1", "@opentelemetry/instrumentation-fs": "^0.12.0", "@opentelemetry/instrumentation-generic-pool": "^0.36.0", @@ -45944,7 +45944,7 @@ "@opentelemetry/instrumentation-undici": "^0.2.0", "@opentelemetry/instrumentation-winston": "^0.37.0", "@opentelemetry/resource-detector-alibaba-cloud": "^0.28.9", - "@opentelemetry/resource-detector-aws": "^1.4.2", + "@opentelemetry/resource-detector-aws": "^1.5.0", "@opentelemetry/resource-detector-azure": "^0.2.6", "@opentelemetry/resource-detector-container": "^0.3.9", "@opentelemetry/resource-detector-gcp": "^0.29.9", diff --git a/packages/baggage-span-processor/CHANGELOG.md b/packages/baggage-span-processor/CHANGELOG.md index bb2d503c69..9aa5d8b2bf 100644 --- a/packages/baggage-span-processor/CHANGELOG.md +++ b/packages/baggage-span-processor/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.2.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/baggage-span-processor-v0.1.0...baggage-span-processor-v0.2.0) (2024-05-15) + + +### Features + +* Add new baggage span processor package ([#2114](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2114)) ([695177b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/695177b69cfb51f70064dc1ee615383d560aa62a)) + ## 0.1.0 Initial version. diff --git a/packages/baggage-span-processor/package.json b/packages/baggage-span-processor/package.json index ca10dfb792..1c59e37c80 100644 --- a/packages/baggage-span-processor/package.json +++ b/packages/baggage-span-processor/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/baggage-span-processor", - "version": "0.1.0", + "version": "0.2.0", "description": "OpenTelemetry Baggage Span Processor for Node.js", "main": "build/src/index.ts", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-aws-lambda/CHANGELOG.md index 10744b46b7..6ba8902186 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.41.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-aws-lambda-v0.41.0...instrumentation-aws-lambda-v0.41.1) (2024-05-15) + + +### Bug Fixes + +* **aws-lambda:** update semconv package and readme ([#2181](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2181)) ([b432929](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/b432929f4b5682e7879c50682547cea25790c588)) + ## [0.41.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-aws-lambda-v0.40.0...instrumentation-aws-lambda-v0.41.0) (2024-04-25) diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json b/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json index 888d47d99d..425b3860b4 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-aws-lambda", - "version": "0.41.0", + "version": "0.41.1", "description": "OpenTelemetry AWS Lambda automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-connect/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-connect/CHANGELOG.md index 58957c90b7..4cb07d3b39 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-connect/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.36.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-connect-v0.36.0...instrumentation-connect-v0.36.1) (2024-05-15) + + +### Bug Fixes + +* **instrumentation-connect:** add source maps to package ([#2200](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2200)) ([1ffc631](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/1ffc631a7fed330b1677ed17bad87b305edcbed7)) + ## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-connect-v0.35.0...instrumentation-connect-v0.36.0) (2024-04-25) diff --git a/plugins/node/opentelemetry-instrumentation-connect/package.json b/plugins/node/opentelemetry-instrumentation-connect/package.json index 22bc4d436f..07e97d8ced 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/package.json +++ b/plugins/node/opentelemetry-instrumentation-connect/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-connect", - "version": "0.36.0", + "version": "0.36.1", "description": "OpenTelemetry connect automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/plugins/node/opentelemetry-instrumentation-express/CHANGELOG.md b/plugins/node/opentelemetry-instrumentation-express/CHANGELOG.md index f236522440..06caf59945 100644 --- a/plugins/node/opentelemetry-instrumentation-express/CHANGELOG.md +++ b/plugins/node/opentelemetry-instrumentation-express/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.39.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-express-v0.38.0...instrumentation-express-v0.39.0) (2024-05-15) + + +### Features + +* **instrumentation-express:** Support non-string routes ([#2008](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2008)) ([525bbba](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/525bbba67accc20eeb96899ab7dc9ccb125a4b2d)) + ## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-express-v0.37.0...instrumentation-express-v0.38.0) (2024-04-25) diff --git a/plugins/node/opentelemetry-instrumentation-express/package.json b/plugins/node/opentelemetry-instrumentation-express/package.json index ea404c3154..63ada7f239 100644 --- a/plugins/node/opentelemetry-instrumentation-express/package.json +++ b/plugins/node/opentelemetry-instrumentation-express/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-express", - "version": "0.38.0", + "version": "0.39.0", "description": "OpenTelemetry express automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", From b2b0d40c4d876c53ec6edbdb926c20bd6bab4034 Mon Sep 17 00:00:00 2001 From: Daniel Dyla Date: Wed, 15 May 2024 09:45:08 -0400 Subject: [PATCH 110/121] feat: support node 20 (#2169) * feat: test 20 and 22 * Remove 22 from test * Also test TAV --------- Co-authored-by: Marc Pichler --- .github/workflows/test-all-versions.yml | 2 +- .github/workflows/unit-test.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-all-versions.yml b/.github/workflows/test-all-versions.yml index 4fefdf2717..ecf86e37d3 100644 --- a/.github/workflows/test-all-versions.yml +++ b/.github/workflows/test-all-versions.yml @@ -18,7 +18,7 @@ jobs: strategy: fail-fast: false matrix: - node: ["14", "16", "18"] + node: ["14", "16", "18", "20"] runs-on: ubuntu-latest services: mongo: diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 83451e56de..e10f27b183 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -9,7 +9,7 @@ jobs: strategy: fail-fast: false matrix: - node: ["14", "16", "18"] + node: ["14", "16", "18", "20"] include: - node: 18 code-coverage: true From 5ddb75c2ba876170866f12011389e2bf1f34eeaf Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Wed, 15 May 2024 10:58:41 -0400 Subject: [PATCH 111/121] chore(instrumentation-hapi): use exported strings for attributes (#2190) Refs: #2025 Signed-off-by: maryliag --- package-lock.json | 19 ++----------------- .../README.md | 11 +++++++++++ .../package.json | 2 +- .../src/utils.ts | 13 ++++++++----- 4 files changed, 22 insertions(+), 23 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2445aa541e..a8c210eec2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37498,14 +37498,6 @@ "@opentelemetry/api": "^1.3.0" } }, - "plugins/node/opentelemetry-instrumentation-aws-lambda/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.1.tgz", - "integrity": "sha512-VkliWlS4/+GHLLW7J/rVBA00uXus1SWvwFvcUDxDwmFxYfg/2VI6ekwdXS28cjI8Qz2ky2BzG8OUHo+WeYIWqw==", - "engines": { - "node": ">=14" - } - }, "plugins/node/opentelemetry-instrumentation-aws-sdk": { "name": "@opentelemetry/instrumentation-aws-sdk", "version": "0.41.0", @@ -37890,7 +37882,7 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "devDependencies": { "@hapi/hapi": "21.3.3", @@ -46255,13 +46247,6 @@ "rimraf": "5.0.5", "ts-mocha": "10.0.0", "typescript": "4.4.4" - }, - "dependencies": { - "@opentelemetry/semantic-conventions": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.1.tgz", - "integrity": "sha512-VkliWlS4/+GHLLW7J/rVBA00uXus1SWvwFvcUDxDwmFxYfg/2VI6ekwdXS28cjI8Qz2ky2BzG8OUHo+WeYIWqw==" - } } }, "@opentelemetry/instrumentation-aws-sdk": { @@ -46707,7 +46692,7 @@ "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", - "@opentelemetry/semantic-conventions": "^1.0.0", + "@opentelemetry/semantic-conventions": "^1.22.0", "@types/mocha": "7.0.2", "@types/node": "18.6.5", "joi": "17.12.2", diff --git a/plugins/node/opentelemetry-instrumentation-hapi/README.md b/plugins/node/opentelemetry-instrumentation-hapi/README.md index d3cb9ec9ad..c9b4062ea5 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/README.md +++ b/plugins/node/opentelemetry-instrumentation-hapi/README.md @@ -66,6 +66,17 @@ The dev dependency of `@hapi/podium@4.1.1` is required to force the compatible t This package provides automatic tracing for hapi server routes and [request lifecycle](https://github.com/hapijs/hapi/blob/master/API.md#request-lifecycle) extensions defined either directly or via a Hapi plugin. +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | +|---------------------|----------------------------------------------------| +| `http.method` | HTTP method | +| `http.route` | Route assigned to handler. Ex: `/users/:id` | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/plugins/node/opentelemetry-instrumentation-hapi/package.json b/plugins/node/opentelemetry-instrumentation-hapi/package.json index 0f3bda5fb2..94c82f6f92 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/package.json +++ b/plugins/node/opentelemetry-instrumentation-hapi/package.json @@ -61,7 +61,7 @@ "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", - "@opentelemetry/semantic-conventions": "^1.0.0" + "@opentelemetry/semantic-conventions": "^1.22.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-hapi#readme" } diff --git a/plugins/node/opentelemetry-instrumentation-hapi/src/utils.ts b/plugins/node/opentelemetry-instrumentation-hapi/src/utils.ts index 41b794c59e..c8b829e25a 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/src/utils.ts +++ b/plugins/node/opentelemetry-instrumentation-hapi/src/utils.ts @@ -15,7 +15,10 @@ */ import { SpanAttributes } from '@opentelemetry/api'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_HTTP_METHOD, + SEMATTRS_HTTP_ROUTE, +} from '@opentelemetry/semantic-conventions'; import type * as Hapi from '@hapi/hapi'; import { HapiLayerType, @@ -77,8 +80,8 @@ export const getRouteMetadata = ( if (pluginName) { return { attributes: { - [SemanticAttributes.HTTP_ROUTE]: route.path, - [SemanticAttributes.HTTP_METHOD]: route.method, + [SEMATTRS_HTTP_ROUTE]: route.path, + [SEMATTRS_HTTP_METHOD]: route.method, [AttributeNames.HAPI_TYPE]: HapiLayerType.PLUGIN, [AttributeNames.PLUGIN_NAME]: pluginName, }, @@ -87,8 +90,8 @@ export const getRouteMetadata = ( } return { attributes: { - [SemanticAttributes.HTTP_ROUTE]: route.path, - [SemanticAttributes.HTTP_METHOD]: route.method, + [SEMATTRS_HTTP_ROUTE]: route.path, + [SEMATTRS_HTTP_METHOD]: route.method, [AttributeNames.HAPI_TYPE]: HapiLayerType.ROUTER, }, name: `route - ${route.path}`, From 265000ae755e13aee82ff5d97a52b307831840ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ketil=20=C3=98vreb=C3=B8?= Date: Thu, 16 May 2024 02:26:29 +0200 Subject: [PATCH 112/121] fix(instr-hapi): fix instrumentation of ESM-imported hapi (#2184) --- package-lock.json | 2 + .../package.json | 1 + .../src/instrumentation.ts | 8 ++- .../test/fixtures/use-hapi.mjs | 64 +++++++++++++++++++ .../test/hapi.test.ts | 35 ++++++++++ 5 files changed, 108 insertions(+), 2 deletions(-) create mode 100644 plugins/node/opentelemetry-instrumentation-hapi/test/fixtures/use-hapi.mjs diff --git a/package-lock.json b/package-lock.json index a8c210eec2..0763fb489f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37888,6 +37888,7 @@ "@hapi/hapi": "21.3.3", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", @@ -46688,6 +46689,7 @@ "@hapi/hapi": "21.3.3", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.51.0", "@opentelemetry/sdk-trace-base": "^1.8.0", diff --git a/plugins/node/opentelemetry-instrumentation-hapi/package.json b/plugins/node/opentelemetry-instrumentation-hapi/package.json index 94c82f6f92..f0f454b0dc 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/package.json +++ b/plugins/node/opentelemetry-instrumentation-hapi/package.json @@ -46,6 +46,7 @@ "@hapi/hapi": "21.3.3", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^1.8.0", + "@opentelemetry/contrib-test-utils": "^0.39.0", "@opentelemetry/sdk-trace-base": "^1.8.0", "@opentelemetry/sdk-trace-node": "^1.8.0", "@types/mocha": "7.0.2", diff --git a/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts b/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts index ac930ffa68..0b18fc5dfd 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts +++ b/plugins/node/opentelemetry-instrumentation-hapi/src/instrumentation.ts @@ -57,7 +57,9 @@ export class HapiInstrumentation extends InstrumentationBase { return new InstrumentationNodeModuleDefinition( HapiComponentName, ['>=17 <22'], - (moduleExports: typeof Hapi) => { + (module: any) => { + const moduleExports: typeof Hapi = + module[Symbol.toStringTag] === 'Module' ? module.default : module; if (!isWrapped(moduleExports.server)) { this._wrap( moduleExports, @@ -75,7 +77,9 @@ export class HapiInstrumentation extends InstrumentationBase { } return moduleExports; }, - (moduleExports: typeof Hapi) => { + (module: any) => { + const moduleExports: typeof Hapi = + module[Symbol.toStringTag] === 'Module' ? module.default : module; this._massUnwrap([moduleExports], ['server', 'Server']); } ); diff --git a/plugins/node/opentelemetry-instrumentation-hapi/test/fixtures/use-hapi.mjs b/plugins/node/opentelemetry-instrumentation-hapi/test/fixtures/use-hapi.mjs new file mode 100644 index 0000000000..f79b48f8e3 --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-hapi/test/fixtures/use-hapi.mjs @@ -0,0 +1,64 @@ +/* + * 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. + */ + +// Use hapi from an ES module: +// node --experimental-loader=@opentelemetry/instrumentation/hook.mjs use-hapi.mjs + +import { createTestNodeSdk } from '@opentelemetry/contrib-test-utils'; + +import { HttpInstrumentation } from '@opentelemetry/instrumentation-http'; +import { HapiInstrumentation } from '../../build/src/index.js'; + +const sdk = createTestNodeSdk({ + serviceName: 'use-hapi', + instrumentations: [ + new HttpInstrumentation(), + new HapiInstrumentation() + ] +}) +sdk.start(); + +import Hapi from '@hapi/hapi'; +import http from 'http'; + +// Start a Hapi server. +const server = new Hapi.Server({ + port: 0, + host: 'localhost' +}); + +server.route({ + method: 'GET', + path: '/route/{param}', + handler: function() { + return { hello: 'world' }; + } +}); + +await server.start(); + +// Make a single request to it. +await new Promise(resolve => { + http.get(`http://${server.info.host}:${server.info.port}/route/test`, (res) => { + res.resume(); + res.on('end', () => { + resolve(); + }); + }) +}); + +await server.stop(); +await sdk.shutdown(); diff --git a/plugins/node/opentelemetry-instrumentation-hapi/test/hapi.test.ts b/plugins/node/opentelemetry-instrumentation-hapi/test/hapi.test.ts index 7ecd84384f..af87e04901 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/test/hapi.test.ts +++ b/plugins/node/opentelemetry-instrumentation-hapi/test/hapi.test.ts @@ -22,6 +22,10 @@ import { InMemorySpanExporter, SimpleSpanProcessor, } from '@opentelemetry/sdk-trace-base'; +import { + runTestFixture, + TestCollector, +} from '@opentelemetry/contrib-test-utils'; import { getPlugin } from './plugin'; const plugin = getPlugin(); @@ -537,4 +541,35 @@ describe('Hapi Instrumentation - Core Tests', () => { ); }); }); + + describe('ESM', () => { + it('should work with ESM modules', async () => { + await runTestFixture({ + cwd: __dirname, + argv: ['fixtures/use-hapi.mjs'], + env: { + NODE_OPTIONS: + '--experimental-loader=@opentelemetry/instrumentation/hook.mjs', + NODE_NO_WARNINGS: '1', + }, + checkResult: (err, stdout, stderr) => { + assert.ifError(err); + }, + checkCollector: (collector: TestCollector) => { + const spans = collector.sortedSpans; + assert.strictEqual(spans.length, 2); + assert.strictEqual(spans[0].name, 'GET /route/{param}'); + assert.strictEqual( + spans[0].instrumentationScope.name, + '@opentelemetry/instrumentation-http' + ); + assert.strictEqual(spans[1].name, 'route - /route/{param}'); + assert.strictEqual( + spans[1].instrumentationScope.name, + '@opentelemetry/instrumentation-hapi' + ); + }, + }); + }); + }); }); From 0948b9f65329dcda453d06216adcaca0c92d2af9 Mon Sep 17 00:00:00 2001 From: Amir Blum Date: Thu, 16 May 2024 08:57:12 +0300 Subject: [PATCH 113/121] ci: add md linter rule to only use dash for unordered lists (#2205) * ci: add md linter rule to only use dash for unordered lists * style: use unordered list as dash in READMEs * chore: comment on markdown lint rule * fix: unintentional replace --- .github/markdown-lint.yml | 5 +++ .github/workflows/lint.yml | 1 + README.md | 20 +++++------ RELEASING.md | 36 +++++++++---------- .../README.md | 12 +++---- .../README.md | 10 +++--- packages/baggage-span-processor/README.md | 6 ++-- packages/opentelemetry-host-metrics/README.md | 12 +++---- packages/winston-transport/README.md | 6 ++-- .../README.md | 6 ++-- .../README.md | 6 ++-- .../README.md | 12 +++---- .../README.md | 12 +++---- propagators/README.md | 4 +-- .../README.md | 32 ++++++++--------- 15 files changed, 93 insertions(+), 87 deletions(-) create mode 100644 .github/markdown-lint.yml diff --git a/.github/markdown-lint.yml b/.github/markdown-lint.yml new file mode 100644 index 0000000000..f4885f1be4 --- /dev/null +++ b/.github/markdown-lint.yml @@ -0,0 +1,5 @@ +# MD004 - Unordered list style +# This rule is triggered when the symbols used in the document for unordered list items do not match the configured unordered list style +# * Item 1 // Error: Unordered list style [Expected: dash; Actual: asterisk] +MD004: + style: dash \ No newline at end of file diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 6e8697f563..0622459ce0 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -19,6 +19,7 @@ jobs: - name: Lint markdown files uses: avto-dev/markdown-lint@v1 with: + config: '.github/markdown-lint.yml' ignore: "./**/CHANGELOG.md" args: "./**/*.md" diff --git a/README.md b/README.md index 91e3b7e0f8..0a952b33a9 100644 --- a/README.md +++ b/README.md @@ -42,10 +42,10 @@ A repository for OpenTelemetry JavaScript contributions that are not part of the This project includes: -* [Instrumentations & other plugins](./plugins), -* [Metapackages](./metapackages), -* [Context Propagators](./propagators), -* [Resource Detectors](./detectors). +- [Instrumentations & other plugins](./plugins), +- [Metapackages](./metapackages), +- [Context Propagators](./propagators), +- [Resource Detectors](./detectors). **Instrumentations**: OpenTelemetry can collect tracing data automatically using instrumentations. Vendors/Users can also create and use their own. @@ -59,9 +59,9 @@ Stability level for components in this repository follow the definitions in [CON Packages in this repository have a variable range of support for Node.JS and browser versions which for each package depend on -* the activeness of the owners of those packages, -* used techniques or runtime features and -* in the case of the auto-instrumentations, the supported runtime versions for the underlying package. +- the activeness of the owners of those packages, +- used techniques or runtime features and +- in the case of the auto-instrumentations, the supported runtime versions for the underlying package. See the `README.md` files and the `engines` field in the `package.json` files for the respective packages for support information about that package. @@ -79,9 +79,9 @@ We'd love your help! Use tags [up-for-grabs][up-for-grabs-issues] and [good firs ## Useful links -* For more information on OpenTelemetry, visit [OpenTelemetry.io](https://opentelemetry.io/) -* For help or feedback on this project, join us in [GitHub Discussions][discussions-url] or in [Slack](https://cloud-native.slack.com/archives/C01NL1GRPQR) -* For more 3rd party components for JS as well as other languages, check [OpenTelemetry Registry](https://opentelemetry.io/registry/) +- For more information on OpenTelemetry, visit [OpenTelemetry.io](https://opentelemetry.io/) +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] or in [Slack](https://cloud-native.slack.com/archives/C01NL1GRPQR) +- For more 3rd party components for JS as well as other languages, check [OpenTelemetry Registry](https://opentelemetry.io/registry/) ## License diff --git a/RELEASING.md b/RELEASING.md index 80da03cbd0..6c65f0a119 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -9,15 +9,15 @@ For posterity, or in the event of any failures with release-please, the process Manual Release Process Steps: -* [Update to latest locally](#update-to-latest-locally) -* [Create a new branch](#create-a-new-branch) -* [Prepare each package for release](#prepare-each-package-for-release) -* [Use the Changelog to create a GitHub Release](#use-the-changelog-to-create-a-github-release) -* [Create a new PR](#create-a-new-pr) -* [Merge and pull](#merge-and-pull) -* [Publish all packages](#publish-all-packages) -* [Publish the GitHub Release](#publish-the-github-release) -* [Update CHANGELOG](#update-changelog) +- [Update to latest locally](#update-to-latest-locally) +- [Create a new branch](#create-a-new-branch) +- [Prepare each package for release](#prepare-each-package-for-release) +- [Use the Changelog to create a GitHub Release](#use-the-changelog-to-create-a-github-release) +- [Create a new PR](#create-a-new-pr) +- [Merge and pull](#merge-and-pull) +- [Publish all packages](#publish-all-packages) +- [Publish the GitHub Release](#publish-the-github-release) +- [Update CHANGELOG](#update-changelog) ## Update to latest locally @@ -31,9 +31,9 @@ Create a new branch called `x.y.z-proposal` from the current commit. Decide on the next `major.minor.patch` release number based on [semver](http://semver.org/) guidelines. -* Use `npm install` command to initialize all package directories -* Use `lerna publish --skip-npm --no-git-tag-version --no-push` to bump the version in all `package.json` -* Use `npm run bootstrap` to generate latest `version.ts` files +- Use `npm install` command to initialize all package directories +- Use `lerna publish --skip-npm --no-git-tag-version --no-push` to bump the version in all `package.json` +- Use `npm run bootstrap` to generate latest `version.ts` files ## Use the Changelog to create a GitHub Release @@ -58,10 +58,10 @@ It will print something like: ## Unreleased (2018-05-24) #### :bug: Bug Fix -* [#198](https://github.com/my-org/my-repo/pull/198) Avoid an infinite loop ([@helpful-hacker](https://github.com/helpful-hacker)) +- [#198](https://github.com/my-org/my-repo/pull/198) Avoid an infinite loop ([@helpful-hacker](https://github.com/helpful-hacker)) #### :house: Internal -* [#183](https://github.com/my-org/my-repo/pull/183) Standardize error messages ([@careful-coder](https://github.com/careful-coder)) +- [#183](https://github.com/my-org/my-repo/pull/183) Standardize error messages ([@careful-coder](https://github.com/careful-coder)) #### Commiters: 2 - Helpful Hacker ([@helpful-hacker](https://github.com/helpful-hacker)) @@ -112,10 +112,10 @@ Publish the GitHub release, ensuring that the tag points to the newly landed com ## Update CHANGELOG -* After releasing is done, update the [CHANGELOG.md](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md) and start new Unreleased label. -* Create a new commit with the exact title: `Post Release: update CHANGELOG.md`. -* Go through PR review and merge it to GitHub main branch. +- After releasing is done, update the [CHANGELOG.md](https://github.com/open-telemetry/opentelemetry-js/blob/main/CHANGELOG.md) and start new Unreleased label. +- Create a new commit with the exact title: `Post Release: update CHANGELOG.md`. +- Go through PR review and merge it to GitHub main branch. ## Known Issues -* The `examples/` and `getting-started/` folders are not part of lerna packages, we need to manually bump the version in `package.json`. +- The `examples/` and `getting-started/` folders are not part of lerna packages, we need to manually bump the version in `package.json`. diff --git a/archive/opentelemetry-browser-extension-autoinjection/README.md b/archive/opentelemetry-browser-extension-autoinjection/README.md index 5235741193..4d15bec1ce 100644 --- a/archive/opentelemetry-browser-extension-autoinjection/README.md +++ b/archive/opentelemetry-browser-extension-autoinjection/README.md @@ -13,9 +13,9 @@ Compatible with OpenTelemetry JS API and SDK `1.0+`. ## Supported Environments -* Google Chrome (with [Manifest Version 3](https://developer.chrome.com/docs/extensions/mv3/intro/) support) -* Chromium (with Manifest Version 2) -* Firefox (*unstable*, with Manifest Version 2) +- Google Chrome (with [Manifest Version 3](https://developer.chrome.com/docs/extensions/mv3/intro/) support) +- Chromium (with Manifest Version 2) +- Firefox (*unstable*, with Manifest Version 2) ## Installation @@ -32,9 +32,9 @@ npm run build This will create a so-called unpacked extension into the `build/` folder you now can load into your browser: -* Open a new browser window and go to chrome://extensions -* Turn on "Developer Mode" -* Click on "Load unpacked" and select the `build/mv3` (or `build/mv2`) folder, which contains the extension +- Open a new browser window and go to chrome://extensions +- Turn on "Developer Mode" +- Click on "Load unpacked" and select the `build/mv3` (or `build/mv2`) folder, which contains the extension If all goes well you should see the extension listed: diff --git a/archive/opentelemetry-propagator-grpc-census-binary/README.md b/archive/opentelemetry-propagator-grpc-census-binary/README.md index ca758ec9ce..0b9cc0caf9 100644 --- a/archive/opentelemetry-propagator-grpc-census-binary/README.md +++ b/archive/opentelemetry-propagator-grpc-census-binary/README.md @@ -5,8 +5,8 @@ OpenTelemetry gRPC Census propagator provides gRPC header propagation for systems that use the OpenCensus 'grpc-trace-bin' binary header format. This allows for context propagation when either: -* incoming gRPC calls come from services already instrumented using OpenCensus -* outgoing gRPC calls go to services already instrumented using OpenCensus +- incoming gRPC calls come from services already instrumented using OpenCensus +- outgoing gRPC calls go to services already instrumented using OpenCensus This propagator works in conjunction with the OpenTelemetry [gRPC plugin](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/exporter-trace-otlp-grpc). @@ -43,9 +43,9 @@ See [binary-format.ts](https://github.com/census-instrumentation/opencensus-node ## Useful links -* For more information on OpenTelemetry, visit: -* For more about OpenTelemetry JavaScript: -* For help or feedback on this project, join us in [GitHub Discussions][discussions-url] +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] ## License diff --git a/packages/baggage-span-processor/README.md b/packages/baggage-span-processor/README.md index 4bdb38f9dd..0b6af08d91 100644 --- a/packages/baggage-span-processor/README.md +++ b/packages/baggage-span-processor/README.md @@ -48,9 +48,9 @@ sdk.start(); ## Useful links -* For more information on OpenTelemetry, visit: -* For more about OpenTelemetry JavaScript: -* For help or feedback on this project, join us in [GitHub Discussions][discussions-url] +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] ## License diff --git a/packages/opentelemetry-host-metrics/README.md b/packages/opentelemetry-host-metrics/README.md index d9635f1acf..f613fba2a6 100644 --- a/packages/opentelemetry-host-metrics/README.md +++ b/packages/opentelemetry-host-metrics/README.md @@ -5,9 +5,9 @@ This module provides automatic collection of Host Metrics which includes metrics for: -* CPU -* Memory -* Network +- CPU +- Memory +- Network Compatible with OpenTelemetry JS API and SDK `1.0+`. @@ -41,9 +41,9 @@ hostMetrics.start(); ## Useful links -* For more information on OpenTelemetry, visit: -* For more about OpenTelemetry JavaScript: -* For help or feedback on this project, join us in [GitHub Discussions][discussions-url] +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] ## License diff --git a/packages/winston-transport/README.md b/packages/winston-transport/README.md index 6bfa2079c0..977d2da610 100644 --- a/packages/winston-transport/README.md +++ b/packages/winston-transport/README.md @@ -55,9 +55,9 @@ Winston `3.x` ## Useful links -* For more information on OpenTelemetry, visit: -* For more about OpenTelemetry JavaScript: -* For help or feedback on this project, join us in [GitHub Discussions][discussions-url] +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] ## License diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/README.md b/plugins/node/opentelemetry-instrumentation-cassandra/README.md index 8743ebffaf..ce80ed50ee 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/README.md +++ b/plugins/node/opentelemetry-instrumentation-cassandra/README.md @@ -66,9 +66,9 @@ Attributes collected: ## Useful links -* For more information on OpenTelemetry, visit: -* For more about OpenTelemetry JavaScript: -* For help or feedback on this project, join us in [GitHub Discussions][discussions-url] +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] ## License diff --git a/plugins/node/opentelemetry-instrumentation-net/README.md b/plugins/node/opentelemetry-instrumentation-net/README.md index 2b6d7b841a..60fc7ca98a 100644 --- a/plugins/node/opentelemetry-instrumentation-net/README.md +++ b/plugins/node/opentelemetry-instrumentation-net/README.md @@ -52,9 +52,9 @@ Attributes added to `connect` spans: ## Useful links -* For more information on OpenTelemetry, visit: -* For more about OpenTelemetry JavaScript: -* For help or feedback on this project, join us in [GitHub Discussions][discussions-url] +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] ## License diff --git a/plugins/node/opentelemetry-instrumentation-pino/README.md b/plugins/node/opentelemetry-instrumentation-pino/README.md index f5a33a1d77..a4038c5f57 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/README.md +++ b/plugins/node/opentelemetry-instrumentation-pino/README.md @@ -55,9 +55,9 @@ logger.info('foobar'); For the current active span, the following fields are injected. These field names can be optionally configured via `logKeys` in the PinoInstrumentation config: -* `trace_id` -* `span_id` -* `trace_flags` +- `trace_id` +- `span_id` +- `trace_flags` When no span context is active or the span context is invalid, injection is skipped. @@ -71,9 +71,9 @@ This package does not currently generate any attributes from semantic convention ## Useful links -* For more information on OpenTelemetry, visit: -* For more about OpenTelemetry JavaScript: -* For help or feedback on this project, join us in [GitHub Discussions][discussions-url] +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] ## License diff --git a/plugins/node/opentelemetry-instrumentation-winston/README.md b/plugins/node/opentelemetry-instrumentation-winston/README.md index 8c42c5de3d..9dfa9365b7 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/README.md +++ b/plugins/node/opentelemetry-instrumentation-winston/README.md @@ -84,9 +84,9 @@ identifying the span added to the log record. This allows log records with tracing data. The added fields are ([spec](https://opentelemetry.io/docs/specs/otel/compatibility/logging_trace_context/)): -* `trace_id` -* `span_id` -* `trace_flags` +- `trace_id` +- `span_id` +- `trace_flags` After adding these fields, the optional `logHook` is called to allow injecting additional fields. For example: @@ -112,9 +112,9 @@ This package does not currently generate any attributes from semantic convention ## Useful links -* For more information on OpenTelemetry, visit: -* For more about OpenTelemetry JavaScript: -* For help or feedback on this project, join us in [GitHub Discussions][discussions-url] +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] ## License diff --git a/propagators/README.md b/propagators/README.md index 07165b4c5f..fde754618f 100644 --- a/propagators/README.md +++ b/propagators/README.md @@ -22,8 +22,8 @@ api.propagation.setGlobalPropagator(new GrpcCensusPropagator()); ## Useful links -* For more information on OpenTelemetry, visit: -* For more about OpenTelemetry JavaScript: +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: ## License diff --git a/propagators/opentelemetry-propagator-instana/README.md b/propagators/opentelemetry-propagator-instana/README.md index 15b0aa6815..13b1635335 100644 --- a/propagators/opentelemetry-propagator-instana/README.md +++ b/propagators/opentelemetry-propagator-instana/README.md @@ -40,36 +40,36 @@ There are three headers that the propagator handles: `X-INSTANA-T` (the trace ID Example header triplet: -* `X-INSTANA-T: 80f198ee56343ba864fe8b2a57d3eff7`, -* `X-INSTANA-S: e457b5a2e4d86bd1`, -* `X-INSTANA-L: 1`. +- `X-INSTANA-T: 80f198ee56343ba864fe8b2a57d3eff7`, +- `X-INSTANA-S: e457b5a2e4d86bd1`, +- `X-INSTANA-L: 1`. A short summary for each of the headers is provided below. More details are available at . ### X-INSTANA-T -- trace ID -* A string of either 16 or 32 characters from the alphabet `0-9a-f`, representing either a 64 bit or 128 bit ID. -* This header corresponds to the [OpenTelemetry TraceId](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/overview.md#spancontext). -* If the propagator receives an X-INSTANA-T header value that is shorter than 32 characters when _extracting_ headers into the OpenTelemetry span context, it will left-pad the string with the character "0" to length 32. -* No length transformation is applied when _injecting_ the span context into headers. +- A string of either 16 or 32 characters from the alphabet `0-9a-f`, representing either a 64 bit or 128 bit ID. +- This header corresponds to the [OpenTelemetry TraceId](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/overview.md#spancontext). +- If the propagator receives an X-INSTANA-T header value that is shorter than 32 characters when _extracting_ headers into the OpenTelemetry span context, it will left-pad the string with the character "0" to length 32. +- No length transformation is applied when _injecting_ the span context into headers. ### X-INSTANA-S -- parent span ID -* Format: A string of 16 characters from the alphabet `0-9a-f`, representing a 64 bit ID. -* This header corresponds to the [OpenTelemetry SpanId](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/overview.md#spancontext). +- Format: A string of 16 characters from the alphabet `0-9a-f`, representing a 64 bit ID. +- This header corresponds to the [OpenTelemetry SpanId](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/overview.md#spancontext). ### X-INSTANA-L - sampling level -* The only two valid values are `1` and `0`. -* A level of `1` means that this request is to be sampled, a level of `0` means that the request should not be sampled. -* This header corresponds to the sampling bit of the [OpenTelemetry TraceFlags](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/overview.md#spancontext). +- The only two valid values are `1` and `0`. +- A level of `1` means that this request is to be sampled, a level of `0` means that the request should not be sampled. +- This header corresponds to the sampling bit of the [OpenTelemetry TraceFlags](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/overview.md#spancontext). ## Useful links -* For more information on Instana, visit and [Instana' documentation](https://www.ibm.com/docs/en/obi/current). -* For more information on OpenTelemetry, visit: -* For more about OpenTelemetry JavaScript: -* For help or feedback on this project, join us in [GitHub Discussions][discussions-url] +- For more information on Instana, visit and [Instana' documentation](https://www.ibm.com/docs/en/obi/current). +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] ## License From 0bec64e2e9a73735c7cbecd7212f5be6ef575308 Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Thu, 16 May 2024 10:03:52 +0200 Subject: [PATCH 114/121] chore(renovate): enable package-lock maintainance (#2209) --- renovate.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/renovate.json b/renovate.json index ada65050bf..b06f0c93d0 100644 --- a/renovate.json +++ b/renovate.json @@ -51,6 +51,10 @@ "schedule": ["before 3am every weekday"] } ], + "lockFileMaintenance": { + "enabled": true, + "schedule": ["before 3am on Monday"] + }, "ignoreDeps": ["lerna", "lerna-changelog", "@types/node"], "ignorePaths": ["archive/**", "examples/**"], "assignees": ["@blumamir", "@dyladan", "@legendecas", "@pichlermarc" ], From b41797b2b8a11a7db4d3ec13c2452d824f45f82d Mon Sep 17 00:00:00 2001 From: Siim Kallas Date: Fri, 17 May 2024 11:02:19 +0300 Subject: [PATCH 115/121] feat: kafkajs instrumentation (#2089) * feat: kafkajs instrumentation * doc: update readme * update package-lock * update release-please * update release please config * prefer this._diag * remove moduleVersionAttributeName config option * use internal kafka message type * use generic messageinfo type * skip version update from compile step * remove kafkajs type from exports * add aspecto to copyright * upgrade to latest otel * add docs about semconv * NOTICE updates * specify supported version and remove unnecessary diag logs * allow for exact and case insensitive compare for propagation fields * update component owners * remove messaging.destination_kind attribute --------- Co-authored-by: Amir Blum --- .github/component_owners.yml | 2 + .release-please-manifest.json | 1 + eslint.config.js | 2 +- package-lock.json | 701 ++++++++++++++ .../instrumentation-kafkajs/.eslintignore | 1 + .../node/instrumentation-kafkajs/.eslintrc.js | 7 + plugins/node/instrumentation-kafkajs/LICENSE | 201 ++++ plugins/node/instrumentation-kafkajs/NOTICE | 8 + .../node/instrumentation-kafkajs/README.md | 76 ++ .../node/instrumentation-kafkajs/package.json | 64 ++ .../node/instrumentation-kafkajs/src/index.ts | 18 + .../src/instrumentation.ts | 407 ++++++++ .../instrumentation-kafkajs/src/propagator.ts | 43 + .../node/instrumentation-kafkajs/src/types.ts | 46 + .../test/DummyPropagation.ts | 64 ++ .../test/kafkajs.test.ts | 885 ++++++++++++++++++ .../instrumentation-kafkajs/tsconfig.json | 11 + release-please-config.json | 1 + 18 files changed, 2537 insertions(+), 1 deletion(-) create mode 100644 plugins/node/instrumentation-kafkajs/.eslintignore create mode 100644 plugins/node/instrumentation-kafkajs/.eslintrc.js create mode 100644 plugins/node/instrumentation-kafkajs/LICENSE create mode 100644 plugins/node/instrumentation-kafkajs/NOTICE create mode 100644 plugins/node/instrumentation-kafkajs/README.md create mode 100644 plugins/node/instrumentation-kafkajs/package.json create mode 100644 plugins/node/instrumentation-kafkajs/src/index.ts create mode 100644 plugins/node/instrumentation-kafkajs/src/instrumentation.ts create mode 100644 plugins/node/instrumentation-kafkajs/src/propagator.ts create mode 100644 plugins/node/instrumentation-kafkajs/src/types.ts create mode 100644 plugins/node/instrumentation-kafkajs/test/DummyPropagation.ts create mode 100644 plugins/node/instrumentation-kafkajs/test/kafkajs.test.ts create mode 100644 plugins/node/instrumentation-kafkajs/tsconfig.json diff --git a/.github/component_owners.yml b/.github/component_owners.yml index 210413659d..0565ca3edf 100644 --- a/.github/component_owners.yml +++ b/.github/component_owners.yml @@ -58,6 +58,8 @@ components: - henrinormak plugins/node/instrumentation-fs: - rauno56 + plugins/node/instrumentation-kafkajs: + - seemk plugins/node/instrumentation-lru-memoizer: - blumamir plugins/node/instrumentation-mongoose: diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 68cedee9ce..5225c39db0 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -20,6 +20,7 @@ "plugins/node/instrumentation-cucumber": "0.6.0", "plugins/node/instrumentation-dataloader": "0.9.0", "plugins/node/instrumentation-fs": "0.12.0", + "plugins/node/instrumentation-kafkajs": "0.0.1", "plugins/node/instrumentation-lru-memoizer": "0.37.0", "plugins/node/instrumentation-mongoose": "0.38.1", "plugins/node/instrumentation-runtime-node": "0.4.0", diff --git a/eslint.config.js b/eslint.config.js index e342425670..71488af0c9 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -20,7 +20,7 @@ module.exports = { "no-shadow": "off", "node/no-deprecated-api": ["warn"], "header/header": ["error", "block", [{ - pattern: / \* Copyright The OpenTelemetry Authors[\r\n]+ \*[\r\n]+ \* Licensed under the Apache License, Version 2\.0 \(the \"License\"\);[\r\n]+ \* you may not use this file except in compliance with the License\.[\r\n]+ \* You may obtain a copy of the License at[\r\n]+ \*[\r\n]+ \* https:\/\/www\.apache\.org\/licenses\/LICENSE-2\.0[\r\n]+ \*[\r\n]+ \* Unless required by applicable law or agreed to in writing, software[\r\n]+ \* distributed under the License is distributed on an \"AS IS\" BASIS,[\r\n]+ \* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied\.[\r\n]+ \* See the License for the specific language governing permissions and[\r\n]+ \* limitations under the License\./gm, + pattern: / \* Copyright The OpenTelemetry Authors(, .+)*[\r\n]+ \*[\r\n]+ \* Licensed under the Apache License, Version 2\.0 \(the \"License\"\);[\r\n]+ \* you may not use this file except in compliance with the License\.[\r\n]+ \* You may obtain a copy of the License at[\r\n]+ \*[\r\n]+ \* https:\/\/www\.apache\.org\/licenses\/LICENSE-2\.0[\r\n]+ \*[\r\n]+ \* Unless required by applicable law or agreed to in writing, software[\r\n]+ \* distributed under the License is distributed on an \"AS IS\" BASIS,[\r\n]+ \* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied\.[\r\n]+ \* See the License for the specific language governing permissions and[\r\n]+ \* limitations under the License\./gm, template: `\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ` }]] diff --git a/package-lock.json b/package-lock.json index 0763fb489f..30b61cfd9a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8851,6 +8851,10 @@ "resolved": "plugins/node/opentelemetry-instrumentation-ioredis", "link": true }, + "node_modules/@opentelemetry/instrumentation-kafkajs": { + "resolved": "plugins/node/instrumentation-kafkajs", + "link": true + }, "node_modules/@opentelemetry/instrumentation-knex": { "resolved": "plugins/node/opentelemetry-instrumentation-knex", "link": true @@ -21692,6 +21696,15 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/kafkajs": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/kafkajs/-/kafkajs-2.2.4.tgz", + "integrity": "sha512-j/YeapB1vfPT2iOIUn/vxdyKEuhuY2PxMBvf5JWux6iSaukAccrMtXEY/Lb7OvavDhOWME589bpLrEdnVHjfjA==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/kareem": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", @@ -37042,6 +37055,414 @@ "@opentelemetry/api": "^1.3.0" } }, + "plugins/node/instrumentation-kafkajs": { + "name": "@opentelemetry/instrumentation-kafkajs", + "version": "0.0.1", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.51.0", + "@opentelemetry/semantic-conventions": "^1.24.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/sdk-trace-base": "^1.24.0", + "@types/mocha": "7.0.2", + "@types/node": "18.6.5", + "@types/sinon": "^10.0.11", + "kafkajs": "^2.2.4", + "mocha": "7.2.0", + "nyc": "15.1.0", + "rimraf": "5.0.5", + "sinon": "15.2.0", + "ts-mocha": "10.0.0", + "typescript": "4.4.4" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "plugins/node/instrumentation-kafkajs/node_modules/@opentelemetry/api-logs": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.50.0.tgz", + "integrity": "sha512-JdZuKrhOYggqOpUljAq4WWNi5nB10PmgoF0y2CvedLGXd0kSawb/UBnWT8gg1ND3bHCNHStAIVT0ELlxJJRqrA==", + "dependencies": { + "@opentelemetry/api": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "plugins/node/instrumentation-kafkajs/node_modules/@opentelemetry/context-async-hooks": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.23.0.tgz", + "integrity": "sha512-wazGJZDRevibOJ+VgyrT+9+8sybZAxpZx2G7vy30OAtk92OpZCg7HgNxT11NUx0VBDWcRx1dOatMYGOVplQ7QA==", + "dev": true, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "plugins/node/instrumentation-kafkajs/node_modules/@opentelemetry/contrib-test-utils": { + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/contrib-test-utils/-/contrib-test-utils-0.38.0.tgz", + "integrity": "sha512-wdFiZfkCIuQ93Z3JXs1lIjEIabIGxfpEqwdLVYXLhASd8JBRlqLQ4bg0/FRa8Nnd+0BZr3U6Rihg/y8WC3z1ig==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "^1.0.0", + "@opentelemetry/exporter-jaeger": "^1.3.1", + "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/resources": "^1.8.0", + "@opentelemetry/sdk-node": "^0.50.0", + "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/semantic-conventions": "^1.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "plugins/node/instrumentation-kafkajs/node_modules/@opentelemetry/core": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.23.0.tgz", + "integrity": "sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ==", + "dev": true, + "dependencies": { + "@opentelemetry/semantic-conventions": "1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "plugins/node/instrumentation-kafkajs/node_modules/@opentelemetry/exporter-trace-otlp-grpc": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.50.0.tgz", + "integrity": "sha512-w/NF4TrwHxx+Uz1M0rCOSVr6KgcoQPv3zF9JRqcebY2euD7ddWnLP0hE8JavyA1uq4UchnMp9faAk9n7hTCePw==", + "dev": true, + "dependencies": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.50.0", + "@opentelemetry/otlp-transformer": "0.50.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "plugins/node/instrumentation-kafkajs/node_modules/@opentelemetry/exporter-trace-otlp-http": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.50.0.tgz", + "integrity": "sha512-L7OtIMT7MsFqkmhbQlPBGRXt7152VN5esHpQEJYIBFedOEo3Da+yHpu5ojMZtPzpIvSpB5Xr5lnJUjJCbkttCA==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.23.0", + "@opentelemetry/otlp-exporter-base": "0.50.0", + "@opentelemetry/otlp-transformer": "0.50.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "plugins/node/instrumentation-kafkajs/node_modules/@opentelemetry/exporter-trace-otlp-proto": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.50.0.tgz", + "integrity": "sha512-vavD9Ow6yOLiD+ocuS/oeciCsXNdsN41aYUrEljNaLXogvnkfMhJ+JLAhOnRSpzlVtRp7Ciw2BYGdYSebR0OsA==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.23.0", + "@opentelemetry/otlp-exporter-base": "0.50.0", + "@opentelemetry/otlp-proto-exporter-base": "0.50.0", + "@opentelemetry/otlp-transformer": "0.50.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "plugins/node/instrumentation-kafkajs/node_modules/@opentelemetry/exporter-zipkin": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.23.0.tgz", + "integrity": "sha512-2LOGvNUGONuIcWhynFaJorVyqv03uZkURScciLmOxvBf2lWTNPEj77br1dCpShIWBM+YlrH7Tc+JXAs+GC7DqA==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "plugins/node/instrumentation-kafkajs/node_modules/@opentelemetry/instrumentation": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.50.0.tgz", + "integrity": "sha512-bhGhbJiZKpuu7wTaSak4hyZcFPlnDeuSF/2vglze8B4w2LubcSbbOnkVTzTs5SXtzh4Xz8eRjaNnAm+u2GYufQ==", + "dependencies": { + "@opentelemetry/api-logs": "0.50.0", + "@types/shimmer": "^1.0.2", + "import-in-the-middle": "1.7.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "plugins/node/instrumentation-kafkajs/node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.50.0.tgz", + "integrity": "sha512-JUmjmrCmE1/fc4LjCQMqLfudgSl5OpUkzx7iA94b4jgeODM7zWxUoVXL7/CT7fWf47Cn+pmKjMvTCSESqZZ3mA==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "plugins/node/instrumentation-kafkajs/node_modules/@opentelemetry/otlp-grpc-exporter-base": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.50.0.tgz", + "integrity": "sha512-J500AczSD7xEsjXpwNzSh5HQqxW73PT3CCNsi1VEWCE+8UPgVfkHYIGRHGoch35DV+CMe1svbi7gAk3e5eCSVA==", + "dev": true, + "dependencies": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/otlp-exporter-base": "0.50.0", + "protobufjs": "^7.2.3" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "plugins/node/instrumentation-kafkajs/node_modules/@opentelemetry/otlp-proto-exporter-base": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.50.0.tgz", + "integrity": "sha512-hlbn3eZbhxoK79Sq1ddj1f7qcx+PzsPQC/SFpJvaWgTaqacCbqJmpzWDKfRRCAC7iGX2Hj/sgpf8vysazqyMOw==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.23.0", + "@opentelemetry/otlp-exporter-base": "0.50.0", + "protobufjs": "^7.2.3" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "plugins/node/instrumentation-kafkajs/node_modules/@opentelemetry/otlp-transformer": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.50.0.tgz", + "integrity": "sha512-s0sl1Yfqd5q1Kjrf6DqXPWzErL+XHhrXOfejh4Vc/SMTNqC902xDsC8JQxbjuramWt/+hibfguIvi7Ns8VLolA==", + "dev": true, + "dependencies": { + "@opentelemetry/api-logs": "0.50.0", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-logs": "0.50.0", + "@opentelemetry/sdk-metrics": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.9.0" + } + }, + "plugins/node/instrumentation-kafkajs/node_modules/@opentelemetry/propagator-b3": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.23.0.tgz", + "integrity": "sha512-cZ6rl8y2bdxYQ4e+zP2CQ+QmuPebaLBLO1skjFpj3eEu7zar+6hBzUP3llMOUupkQeQSwXz+4c8dZ26OhYfG/g==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "plugins/node/instrumentation-kafkajs/node_modules/@opentelemetry/propagator-jaeger": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.23.0.tgz", + "integrity": "sha512-6iArixfgIl3ZgzeltQ5jyiKbjZygM+MbM84pXi1HL0Qs4x4Ck5rM6wEtjhZffFnlDMWEkEqrnM0xF6bTfbiMAQ==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "plugins/node/instrumentation-kafkajs/node_modules/@opentelemetry/resources": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.23.0.tgz", + "integrity": "sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "plugins/node/instrumentation-kafkajs/node_modules/@opentelemetry/sdk-logs": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.50.0.tgz", + "integrity": "sha512-PeUEupBB29p9nlPNqXoa1PUWNLsZnxG0DCDj3sHqzae+8y76B/A5hvZjg03ulWdnvBLYpnJslqzylG9E0IL87g==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.9.0", + "@opentelemetry/api-logs": ">=0.39.1" + } + }, + "plugins/node/instrumentation-kafkajs/node_modules/@opentelemetry/sdk-metrics": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.23.0.tgz", + "integrity": "sha512-4OkvW6+wST4h6LFG23rXSTf6nmTf201h9dzq7bE0z5R9ESEVLERZz6WXwE7PSgg1gdjlaznm1jLJf8GttypFDg==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0", + "lodash.merge": "^4.6.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.9.0" + } + }, + "plugins/node/instrumentation-kafkajs/node_modules/@opentelemetry/sdk-node": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.50.0.tgz", + "integrity": "sha512-LhIXHnvcnhRYcPwG9VG4G6lJ7x4ElYF6UYHHmXA7e4ZWzSUEFmAPfR1IBWv358aD1KwffcEBu7J6zeAR7lPZag==", + "dev": true, + "dependencies": { + "@opentelemetry/api-logs": "0.50.0", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.50.0", + "@opentelemetry/exporter-trace-otlp-http": "0.50.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.50.0", + "@opentelemetry/exporter-zipkin": "1.23.0", + "@opentelemetry/instrumentation": "0.50.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-logs": "0.50.0", + "@opentelemetry/sdk-metrics": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0", + "@opentelemetry/sdk-trace-node": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.9.0" + } + }, + "plugins/node/instrumentation-kafkajs/node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.23.0.tgz", + "integrity": "sha512-PzBmZM8hBomUqvCddF/5Olyyviayka44O5nDWq673np3ctnvwMOvNrsUORZjKja1zJbwEuD9niAGbnVrz3jwRQ==", + "dev": true, + "dependencies": { + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "plugins/node/instrumentation-kafkajs/node_modules/@opentelemetry/sdk-trace-node": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.23.0.tgz", + "integrity": "sha512-dwnin5Go2r6VzJZkVc9JBPupssWp7j2EFto+S7qRkwQ00WDykWeq3x2Skk7I1Jr448FeBSvGCQVPgV5e6s6O3w==", + "dev": true, + "dependencies": { + "@opentelemetry/context-async-hooks": "1.23.0", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/propagator-b3": "1.23.0", + "@opentelemetry/propagator-jaeger": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0", + "semver": "^7.5.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "plugins/node/instrumentation-kafkajs/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.23.0.tgz", + "integrity": "sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg==", + "engines": { + "node": ">=14" + } + }, "plugins/node/instrumentation-lru-memoizer": { "name": "@opentelemetry/instrumentation-lru-memoizer", "version": "0.37.0", @@ -46743,6 +47164,280 @@ "typescript": "4.4.4" } }, + "@opentelemetry/instrumentation-kafkajs": { + "version": "file:plugins/node/instrumentation-kafkajs", + "requires": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/instrumentation": "^0.51.0", + "@opentelemetry/sdk-trace-base": "^1.24.0", + "@opentelemetry/semantic-conventions": "^1.24.0", + "@types/mocha": "7.0.2", + "@types/node": "18.6.5", + "@types/sinon": "^10.0.11", + "kafkajs": "^2.2.4", + "mocha": "7.2.0", + "nyc": "15.1.0", + "rimraf": "5.0.5", + "sinon": "15.2.0", + "ts-mocha": "10.0.0", + "typescript": "4.4.4" + }, + "dependencies": { + "@opentelemetry/api-logs": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.50.0.tgz", + "integrity": "sha512-JdZuKrhOYggqOpUljAq4WWNi5nB10PmgoF0y2CvedLGXd0kSawb/UBnWT8gg1ND3bHCNHStAIVT0ELlxJJRqrA==", + "requires": { + "@opentelemetry/api": "^1.0.0" + } + }, + "@opentelemetry/context-async-hooks": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.23.0.tgz", + "integrity": "sha512-wazGJZDRevibOJ+VgyrT+9+8sybZAxpZx2G7vy30OAtk92OpZCg7HgNxT11NUx0VBDWcRx1dOatMYGOVplQ7QA==", + "dev": true, + "requires": {} + }, + "@opentelemetry/contrib-test-utils": { + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/contrib-test-utils/-/contrib-test-utils-0.38.0.tgz", + "integrity": "sha512-wdFiZfkCIuQ93Z3JXs1lIjEIabIGxfpEqwdLVYXLhASd8JBRlqLQ4bg0/FRa8Nnd+0BZr3U6Rihg/y8WC3z1ig==", + "dev": true, + "requires": { + "@opentelemetry/core": "^1.0.0", + "@opentelemetry/exporter-jaeger": "^1.3.1", + "@opentelemetry/instrumentation": "^0.50.0", + "@opentelemetry/resources": "^1.8.0", + "@opentelemetry/sdk-node": "^0.50.0", + "@opentelemetry/sdk-trace-base": "^1.8.0", + "@opentelemetry/sdk-trace-node": "^1.8.0", + "@opentelemetry/semantic-conventions": "^1.0.0" + } + }, + "@opentelemetry/core": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.23.0.tgz", + "integrity": "sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ==", + "dev": true, + "requires": { + "@opentelemetry/semantic-conventions": "1.23.0" + } + }, + "@opentelemetry/exporter-trace-otlp-grpc": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.50.0.tgz", + "integrity": "sha512-w/NF4TrwHxx+Uz1M0rCOSVr6KgcoQPv3zF9JRqcebY2euD7ddWnLP0hE8JavyA1uq4UchnMp9faAk9n7hTCePw==", + "dev": true, + "requires": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.50.0", + "@opentelemetry/otlp-transformer": "0.50.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0" + } + }, + "@opentelemetry/exporter-trace-otlp-http": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.50.0.tgz", + "integrity": "sha512-L7OtIMT7MsFqkmhbQlPBGRXt7152VN5esHpQEJYIBFedOEo3Da+yHpu5ojMZtPzpIvSpB5Xr5lnJUjJCbkttCA==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.23.0", + "@opentelemetry/otlp-exporter-base": "0.50.0", + "@opentelemetry/otlp-transformer": "0.50.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0" + } + }, + "@opentelemetry/exporter-trace-otlp-proto": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.50.0.tgz", + "integrity": "sha512-vavD9Ow6yOLiD+ocuS/oeciCsXNdsN41aYUrEljNaLXogvnkfMhJ+JLAhOnRSpzlVtRp7Ciw2BYGdYSebR0OsA==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.23.0", + "@opentelemetry/otlp-exporter-base": "0.50.0", + "@opentelemetry/otlp-proto-exporter-base": "0.50.0", + "@opentelemetry/otlp-transformer": "0.50.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0" + } + }, + "@opentelemetry/exporter-zipkin": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.23.0.tgz", + "integrity": "sha512-2LOGvNUGONuIcWhynFaJorVyqv03uZkURScciLmOxvBf2lWTNPEj77br1dCpShIWBM+YlrH7Tc+JXAs+GC7DqA==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" + } + }, + "@opentelemetry/instrumentation": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.50.0.tgz", + "integrity": "sha512-bhGhbJiZKpuu7wTaSak4hyZcFPlnDeuSF/2vglze8B4w2LubcSbbOnkVTzTs5SXtzh4Xz8eRjaNnAm+u2GYufQ==", + "requires": { + "@opentelemetry/api-logs": "0.50.0", + "@types/shimmer": "^1.0.2", + "import-in-the-middle": "1.7.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + } + }, + "@opentelemetry/otlp-exporter-base": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.50.0.tgz", + "integrity": "sha512-JUmjmrCmE1/fc4LjCQMqLfudgSl5OpUkzx7iA94b4jgeODM7zWxUoVXL7/CT7fWf47Cn+pmKjMvTCSESqZZ3mA==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.23.0" + } + }, + "@opentelemetry/otlp-grpc-exporter-base": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.50.0.tgz", + "integrity": "sha512-J500AczSD7xEsjXpwNzSh5HQqxW73PT3CCNsi1VEWCE+8UPgVfkHYIGRHGoch35DV+CMe1svbi7gAk3e5eCSVA==", + "dev": true, + "requires": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/otlp-exporter-base": "0.50.0", + "protobufjs": "^7.2.3" + } + }, + "@opentelemetry/otlp-proto-exporter-base": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-proto-exporter-base/-/otlp-proto-exporter-base-0.50.0.tgz", + "integrity": "sha512-hlbn3eZbhxoK79Sq1ddj1f7qcx+PzsPQC/SFpJvaWgTaqacCbqJmpzWDKfRRCAC7iGX2Hj/sgpf8vysazqyMOw==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.23.0", + "@opentelemetry/otlp-exporter-base": "0.50.0", + "protobufjs": "^7.2.3" + } + }, + "@opentelemetry/otlp-transformer": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.50.0.tgz", + "integrity": "sha512-s0sl1Yfqd5q1Kjrf6DqXPWzErL+XHhrXOfejh4Vc/SMTNqC902xDsC8JQxbjuramWt/+hibfguIvi7Ns8VLolA==", + "dev": true, + "requires": { + "@opentelemetry/api-logs": "0.50.0", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-logs": "0.50.0", + "@opentelemetry/sdk-metrics": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0" + } + }, + "@opentelemetry/propagator-b3": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.23.0.tgz", + "integrity": "sha512-cZ6rl8y2bdxYQ4e+zP2CQ+QmuPebaLBLO1skjFpj3eEu7zar+6hBzUP3llMOUupkQeQSwXz+4c8dZ26OhYfG/g==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.23.0" + } + }, + "@opentelemetry/propagator-jaeger": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.23.0.tgz", + "integrity": "sha512-6iArixfgIl3ZgzeltQ5jyiKbjZygM+MbM84pXi1HL0Qs4x4Ck5rM6wEtjhZffFnlDMWEkEqrnM0xF6bTfbiMAQ==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.23.0" + } + }, + "@opentelemetry/resources": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.23.0.tgz", + "integrity": "sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" + } + }, + "@opentelemetry/sdk-logs": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.50.0.tgz", + "integrity": "sha512-PeUEupBB29p9nlPNqXoa1PUWNLsZnxG0DCDj3sHqzae+8y76B/A5hvZjg03ulWdnvBLYpnJslqzylG9E0IL87g==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0" + } + }, + "@opentelemetry/sdk-metrics": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.23.0.tgz", + "integrity": "sha512-4OkvW6+wST4h6LFG23rXSTf6nmTf201h9dzq7bE0z5R9ESEVLERZz6WXwE7PSgg1gdjlaznm1jLJf8GttypFDg==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0", + "lodash.merge": "^4.6.2" + } + }, + "@opentelemetry/sdk-node": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.50.0.tgz", + "integrity": "sha512-LhIXHnvcnhRYcPwG9VG4G6lJ7x4ElYF6UYHHmXA7e4ZWzSUEFmAPfR1IBWv358aD1KwffcEBu7J6zeAR7lPZag==", + "dev": true, + "requires": { + "@opentelemetry/api-logs": "0.50.0", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.50.0", + "@opentelemetry/exporter-trace-otlp-http": "0.50.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.50.0", + "@opentelemetry/exporter-zipkin": "1.23.0", + "@opentelemetry/instrumentation": "0.50.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-logs": "0.50.0", + "@opentelemetry/sdk-metrics": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0", + "@opentelemetry/sdk-trace-node": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" + } + }, + "@opentelemetry/sdk-trace-base": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.23.0.tgz", + "integrity": "sha512-PzBmZM8hBomUqvCddF/5Olyyviayka44O5nDWq673np3ctnvwMOvNrsUORZjKja1zJbwEuD9niAGbnVrz3jwRQ==", + "dev": true, + "requires": { + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" + } + }, + "@opentelemetry/sdk-trace-node": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.23.0.tgz", + "integrity": "sha512-dwnin5Go2r6VzJZkVc9JBPupssWp7j2EFto+S7qRkwQ00WDykWeq3x2Skk7I1Jr448FeBSvGCQVPgV5e6s6O3w==", + "dev": true, + "requires": { + "@opentelemetry/context-async-hooks": "1.23.0", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/propagator-b3": "1.23.0", + "@opentelemetry/propagator-jaeger": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0", + "semver": "^7.5.2" + } + }, + "@opentelemetry/semantic-conventions": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.23.0.tgz", + "integrity": "sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg==" + } + } + }, "@opentelemetry/instrumentation-knex": { "version": "file:plugins/node/opentelemetry-instrumentation-knex", "requires": { @@ -58249,6 +58944,12 @@ "safe-buffer": "^5.0.1" } }, + "kafkajs": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/kafkajs/-/kafkajs-2.2.4.tgz", + "integrity": "sha512-j/YeapB1vfPT2iOIUn/vxdyKEuhuY2PxMBvf5JWux6iSaukAccrMtXEY/Lb7OvavDhOWME589bpLrEdnVHjfjA==", + "dev": true + }, "kareem": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", diff --git a/plugins/node/instrumentation-kafkajs/.eslintignore b/plugins/node/instrumentation-kafkajs/.eslintignore new file mode 100644 index 0000000000..378eac25d3 --- /dev/null +++ b/plugins/node/instrumentation-kafkajs/.eslintignore @@ -0,0 +1 @@ +build diff --git a/plugins/node/instrumentation-kafkajs/.eslintrc.js b/plugins/node/instrumentation-kafkajs/.eslintrc.js new file mode 100644 index 0000000000..f756f4488b --- /dev/null +++ b/plugins/node/instrumentation-kafkajs/.eslintrc.js @@ -0,0 +1,7 @@ +module.exports = { + "env": { + "mocha": true, + "node": true + }, + ...require('../../../eslint.config.js') +} diff --git a/plugins/node/instrumentation-kafkajs/LICENSE b/plugins/node/instrumentation-kafkajs/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/plugins/node/instrumentation-kafkajs/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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 + + http://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. diff --git a/plugins/node/instrumentation-kafkajs/NOTICE b/plugins/node/instrumentation-kafkajs/NOTICE new file mode 100644 index 0000000000..5c83fd9609 --- /dev/null +++ b/plugins/node/instrumentation-kafkajs/NOTICE @@ -0,0 +1,8 @@ +[Based on the instrumentation written by Aspecto](https://github.com/aspecto-io/opentelemetry-ext-js/tree/master/packages/instrumentation-kafkajs). + +The library contains the following changes compared to the original: +* The codebase was converted to TypeScript. +* bufferTextMapGetter compares propagation headers in a case insensitive manner. +* Removed `moduleVersionAttributeName` configuration option. +* Changed the function signature of `producerHook` and `consumerHook`. +* Removed `messaging.destination_kind` attribute. diff --git a/plugins/node/instrumentation-kafkajs/README.md b/plugins/node/instrumentation-kafkajs/README.md new file mode 100644 index 0000000000..9f00d430e2 --- /dev/null +++ b/plugins/node/instrumentation-kafkajs/README.md @@ -0,0 +1,76 @@ +# OpenTelemetry `kafkajs` Instrumentation for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +This module provides automatic instrumentation for the [`kafkajs`](https://www.npmjs.com/package/kafkajs) package, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle. + +If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle with [@opentelemetry/sdk-node](`https://www.npmjs.com/package/@opentelemetry/sdk-node`) for the most seamless instrumentation experience. + +Compatible with OpenTelemetry JS API and SDK `1.0+`. + +## Installation + +```bash +npm install --save @opentelemetry/instrumentation-kafkajs +``` + +### Supported versions + +- `<3.0.0` + +## Usage + +```js +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); +const { KafkaJsInstrumentation } = require('@opentelemetry/instrumentation-kafkajs'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); + +const provider = new NodeTracerProvider(); +provider.register(); + +registerInstrumentations({ + instrumentations: [ + new KafkaJsInstrumentation({ + // see below for available configuration + }), + ], +}); +``` + +### Instrumentation Options + +You can set the following: + +| Options | Type | Description | +| ---------------------------- | -------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `producerHook` | `KafkaProducerCustomAttributeFunction` | Function called before a producer message is sent. Allows for adding custom attributes to the span. | +| `consumerHook` | `KafkaConsumerCustomAttributeFunction` | Function called before a consumer message is processed. Allows for adding custom attributes to the span. | + +## Semantic Conventions + +This package uses `@opentelemetry/semantic-conventions` version `1.24+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +Attributes collected: + +| Attribute | Short Description | +| -----------------------------| ----------------------------------------------------- | +| `messaging.system` | An identifier for the messaging system being used. | +| `messaging.destination` | The message destination name. | +| `messaging.operation` | A string identifying the kind of messaging operation. | + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-kafkajs +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-kafkajs.svg diff --git a/plugins/node/instrumentation-kafkajs/package.json b/plugins/node/instrumentation-kafkajs/package.json new file mode 100644 index 0000000000..7e6ff384e1 --- /dev/null +++ b/plugins/node/instrumentation-kafkajs/package.json @@ -0,0 +1,64 @@ +{ + "name": "@opentelemetry/instrumentation-kafkajs", + "version": "0.0.1", + "description": "OpenTelemetry automatic instrumentation package for kafkajs", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": "open-telemetry/opentelemetry-js-contrib", + "scripts": { + "test": "ts-mocha --require @opentelemetry/contrib-test-utils -p tsconfig.json 'test/**/*.test.ts'", + "tdd": "npm run test -- --watch-extensions ts --watch", + "clean": "rimraf build/*", + "lint": "eslint . --ext .ts", + "lint:fix": "eslint . --ext .ts --fix", + "precompile": "tsc --version && lerna run version:update --scope @opentelemetry/instrumentation-kafkajs --include-dependencies", + "prewatch": "npm run precompile", + "prepublishOnly": "npm run compile", + "version:update": "node ../../../scripts/version-update.js", + "compile": "tsc -p ." + }, + "keywords": [ + "kafkajs", + "instrumentation", + "nodejs", + "opentelemetry", + "profiling", + "tracing" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/contrib-test-utils": "^0.38.0", + "@opentelemetry/sdk-trace-base": "^1.24.0", + "@types/mocha": "7.0.2", + "@types/node": "18.6.5", + "@types/sinon": "^10.0.11", + "kafkajs": "^2.2.4", + "mocha": "7.2.0", + "nyc": "15.1.0", + "rimraf": "5.0.5", + "sinon": "15.2.0", + "ts-mocha": "10.0.0", + "typescript": "4.4.4" + }, + "dependencies": { + "@opentelemetry/instrumentation": "^0.51.0", + "@opentelemetry/semantic-conventions": "^1.24.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-kafkajs#readme" +} diff --git a/plugins/node/instrumentation-kafkajs/src/index.ts b/plugins/node/instrumentation-kafkajs/src/index.ts new file mode 100644 index 0000000000..91c7641c95 --- /dev/null +++ b/plugins/node/instrumentation-kafkajs/src/index.ts @@ -0,0 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors, Aspecto + * + * 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. + */ + +export * from './instrumentation'; +export * from './types'; diff --git a/plugins/node/instrumentation-kafkajs/src/instrumentation.ts b/plugins/node/instrumentation-kafkajs/src/instrumentation.ts new file mode 100644 index 0000000000..09762e8e6f --- /dev/null +++ b/plugins/node/instrumentation-kafkajs/src/instrumentation.ts @@ -0,0 +1,407 @@ +/* + * Copyright The OpenTelemetry Authors, Aspecto + * + * 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 { + SpanKind, + Span, + SpanStatusCode, + Context, + propagation, + Link, + trace, + context, + ROOT_CONTEXT, +} from '@opentelemetry/api'; +import { + MESSAGINGOPERATIONVALUES_PROCESS, + MESSAGINGOPERATIONVALUES_RECEIVE, + SEMATTRS_MESSAGING_SYSTEM, + SEMATTRS_MESSAGING_DESTINATION, + SEMATTRS_MESSAGING_OPERATION, +} from '@opentelemetry/semantic-conventions'; +import type * as kafkaJs from 'kafkajs'; +import type { + EachBatchHandler, + EachMessageHandler, + Producer, + RecordMetadata, + Message, + ConsumerRunConfig, + KafkaMessage, + Consumer, +} from 'kafkajs'; +import { KafkaJsInstrumentationConfig } from './types'; +import { VERSION } from './version'; +import { bufferTextMapGetter } from './propagator'; +import { + InstrumentationBase, + InstrumentationNodeModuleDefinition, + safeExecuteInTheMiddle, + isWrapped, +} from '@opentelemetry/instrumentation'; + +export class KafkaJsInstrumentation extends InstrumentationBase { + protected override _config!: KafkaJsInstrumentationConfig; + + constructor(config: KafkaJsInstrumentationConfig = {}) { + super('@opentelemetry/instrumentation-kafkajs', VERSION, config); + } + + protected init() { + const unpatch = (moduleExports: typeof kafkaJs) => { + if (isWrapped(moduleExports?.Kafka?.prototype.producer)) { + this._unwrap(moduleExports.Kafka.prototype, 'producer'); + } + if (isWrapped(moduleExports?.Kafka?.prototype.consumer)) { + this._unwrap(moduleExports.Kafka.prototype, 'consumer'); + } + }; + + const module = new InstrumentationNodeModuleDefinition( + 'kafkajs', + ['< 3'], + (moduleExports: typeof kafkaJs) => { + unpatch(moduleExports); + this._wrap( + moduleExports?.Kafka?.prototype, + 'producer', + this._getProducerPatch() + ); + this._wrap( + moduleExports?.Kafka?.prototype, + 'consumer', + this._getConsumerPatch() + ); + + return moduleExports; + }, + unpatch + ); + return module; + } + + private _getConsumerPatch() { + const instrumentation = this; + return (original: kafkaJs.Kafka['consumer']) => { + return function consumer( + this: kafkaJs.Kafka, + ...args: Parameters + ) { + const newConsumer: Consumer = original.apply(this, args); + + if (isWrapped(newConsumer.run)) { + instrumentation._unwrap(newConsumer, 'run'); + } + + instrumentation._wrap( + newConsumer, + 'run', + instrumentation._getConsumerRunPatch() + ); + + return newConsumer; + }; + }; + } + + private _getProducerPatch() { + const instrumentation = this; + return (original: kafkaJs.Kafka['producer']) => { + return function consumer( + this: kafkaJs.Kafka, + ...args: Parameters + ) { + const newProducer: Producer = original.apply(this, args); + + if (isWrapped(newProducer.sendBatch)) { + instrumentation._unwrap(newProducer, 'sendBatch'); + } + instrumentation._wrap( + newProducer, + 'sendBatch', + instrumentation._getProducerSendBatchPatch() + ); + + if (isWrapped(newProducer.send)) { + instrumentation._unwrap(newProducer, 'send'); + } + instrumentation._wrap( + newProducer, + 'send', + instrumentation._getProducerSendPatch() + ); + + return newProducer; + }; + }; + } + + private _getConsumerRunPatch() { + const instrumentation = this; + return (original: Consumer['run']) => { + return function run( + this: Consumer, + ...args: Parameters + ): ReturnType { + const config = args[0]; + if (config?.eachMessage) { + if (isWrapped(config.eachMessage)) { + instrumentation._unwrap(config, 'eachMessage'); + } + instrumentation._wrap( + config, + 'eachMessage', + instrumentation._getConsumerEachMessagePatch() + ); + } + if (config?.eachBatch) { + if (isWrapped(config.eachBatch)) { + instrumentation._unwrap(config, 'eachBatch'); + } + instrumentation._wrap( + config, + 'eachBatch', + instrumentation._getConsumerEachBatchPatch() + ); + } + return original.call(this, config); + }; + }; + } + + private _getConsumerEachMessagePatch() { + const instrumentation = this; + return (original: ConsumerRunConfig['eachMessage']) => { + return function eachMessage( + this: unknown, + ...args: Parameters + ): Promise { + const payload = args[0]; + const propagatedContext: Context = propagation.extract( + ROOT_CONTEXT, + payload.message.headers, + bufferTextMapGetter + ); + const span = instrumentation._startConsumerSpan( + payload.topic, + payload.message, + MESSAGINGOPERATIONVALUES_PROCESS, + propagatedContext + ); + + const eachMessagePromise = context.with( + trace.setSpan(propagatedContext, span), + () => { + return original!.apply(this, args); + } + ); + return instrumentation._endSpansOnPromise([span], eachMessagePromise); + }; + }; + } + + private _getConsumerEachBatchPatch() { + return (original: ConsumerRunConfig['eachBatch']) => { + const instrumentation = this; + return function eachBatch( + this: unknown, + ...args: Parameters + ): Promise { + const payload = args[0]; + // https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/messaging.md#topic-with-multiple-consumers + const receivingSpan = instrumentation._startConsumerSpan( + payload.batch.topic, + undefined, + MESSAGINGOPERATIONVALUES_RECEIVE, + ROOT_CONTEXT + ); + return context.with( + trace.setSpan(context.active(), receivingSpan), + () => { + const spans = payload.batch.messages.map( + (message: KafkaMessage) => { + const propagatedContext: Context = propagation.extract( + ROOT_CONTEXT, + message.headers, + bufferTextMapGetter + ); + const spanContext = trace + .getSpan(propagatedContext) + ?.spanContext(); + let origSpanLink: Link | undefined; + if (spanContext) { + origSpanLink = { + context: spanContext, + }; + } + return instrumentation._startConsumerSpan( + payload.batch.topic, + message, + MESSAGINGOPERATIONVALUES_PROCESS, + undefined, + origSpanLink + ); + } + ); + const batchMessagePromise: Promise = original!.apply( + this, + args + ); + spans.unshift(receivingSpan); + return instrumentation._endSpansOnPromise( + spans, + batchMessagePromise + ); + } + ); + }; + }; + } + + private _getProducerSendBatchPatch() { + const instrumentation = this; + return (original: Producer['sendBatch']) => { + return function sendBatch( + this: Producer, + ...args: Parameters + ): ReturnType { + const batch = args[0]; + const messages = batch.topicMessages || []; + const spans: Span[] = messages + .map(topicMessage => + topicMessage.messages.map(message => + instrumentation._startProducerSpan(topicMessage.topic, message) + ) + ) + .reduce((acc, val) => acc.concat(val), []); + + const origSendResult: Promise = original.apply( + this, + args + ); + return instrumentation._endSpansOnPromise(spans, origSendResult); + }; + }; + } + + private _getProducerSendPatch() { + const instrumentation = this; + return (original: Producer['send']) => { + return function send( + this: Producer, + ...args: Parameters + ): ReturnType { + const record = args[0]; + const spans: Span[] = record.messages.map(message => { + return instrumentation._startProducerSpan(record.topic, message); + }); + + const origSendResult: Promise = original.apply( + this, + args + ); + return instrumentation._endSpansOnPromise(spans, origSendResult); + }; + }; + } + + private _endSpansOnPromise( + spans: Span[], + sendPromise: Promise + ): Promise { + return Promise.resolve(sendPromise) + .catch(reason => { + let errorMessage: string; + if (typeof reason === 'string') errorMessage = reason; + else if ( + typeof reason === 'object' && + Object.prototype.hasOwnProperty.call(reason, 'message') + ) + errorMessage = reason.message; + + spans.forEach(span => + span.setStatus({ + code: SpanStatusCode.ERROR, + message: errorMessage, + }) + ); + + throw reason; + }) + .finally(() => { + spans.forEach(span => span.end()); + }); + } + + private _startConsumerSpan( + topic: string, + message: KafkaMessage | undefined, + operation: string, + context: Context | undefined, + link?: Link + ) { + const span = this.tracer.startSpan( + topic, + { + kind: SpanKind.CONSUMER, + attributes: { + [SEMATTRS_MESSAGING_SYSTEM]: 'kafka', + [SEMATTRS_MESSAGING_DESTINATION]: topic, + [SEMATTRS_MESSAGING_OPERATION]: operation, + }, + links: link ? [link] : [], + }, + context + ); + + if (this._config?.consumerHook && message) { + safeExecuteInTheMiddle( + () => this._config.consumerHook!(span, { topic, message }), + e => { + if (e) this._diag.error('consumerHook error', e); + }, + true + ); + } + + return span; + } + + private _startProducerSpan(topic: string, message: Message) { + const span = this.tracer.startSpan(topic, { + kind: SpanKind.PRODUCER, + attributes: { + [SEMATTRS_MESSAGING_SYSTEM]: 'kafka', + [SEMATTRS_MESSAGING_DESTINATION]: topic, + }, + }); + + message.headers = message.headers ?? {}; + propagation.inject(trace.setSpan(context.active(), span), message.headers); + + if (this._config?.producerHook) { + safeExecuteInTheMiddle( + () => this._config.producerHook!(span, { topic, message }), + e => { + if (e) this._diag.error('producerHook error', e); + }, + true + ); + } + + return span; + } +} diff --git a/plugins/node/instrumentation-kafkajs/src/propagator.ts b/plugins/node/instrumentation-kafkajs/src/propagator.ts new file mode 100644 index 0000000000..abe2b1ee8b --- /dev/null +++ b/plugins/node/instrumentation-kafkajs/src/propagator.ts @@ -0,0 +1,43 @@ +/* + * Copyright The OpenTelemetry Authors, Aspecto + * + * 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 { TextMapGetter } from '@opentelemetry/api'; + +/* +same as open telemetry's `defaultTextMapGetter`, +but also handle case where header is buffer, +adding toString() to make sure string is returned +*/ +export const bufferTextMapGetter: TextMapGetter = { + get(carrier, key) { + if (!carrier) { + return undefined; + } + + const keys = Object.keys(carrier); + + for (const carrierKey of keys) { + if (carrierKey === key || carrierKey.toLowerCase() === key) { + return carrier[carrierKey]?.toString(); + } + } + + return undefined; + }, + + keys(carrier) { + return carrier ? Object.keys(carrier) : []; + }, +}; diff --git a/plugins/node/instrumentation-kafkajs/src/types.ts b/plugins/node/instrumentation-kafkajs/src/types.ts new file mode 100644 index 0000000000..3c660ffdc8 --- /dev/null +++ b/plugins/node/instrumentation-kafkajs/src/types.ts @@ -0,0 +1,46 @@ +/* + * Copyright The OpenTelemetry Authors, Aspecto + * + * 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 { Span } from '@opentelemetry/api'; +import { InstrumentationConfig } from '@opentelemetry/instrumentation'; + +export interface KafkajsMessage { + key?: Buffer | string | null; + value: Buffer | string | null; + partition?: number; + headers?: Record; + timestamp?: string; +} + +export interface MessageInfo { + topic: string; + message: T; +} + +export interface KafkaProducerCustomAttributeFunction { + (span: Span, info: MessageInfo): void; +} + +export interface KafkaConsumerCustomAttributeFunction { + (span: Span, info: MessageInfo): void; +} + +export interface KafkaJsInstrumentationConfig extends InstrumentationConfig { + /** hook for adding custom attributes before producer message is sent */ + producerHook?: KafkaProducerCustomAttributeFunction; + + /** hook for adding custom attributes before consumer message is processed */ + consumerHook?: KafkaConsumerCustomAttributeFunction; +} diff --git a/plugins/node/instrumentation-kafkajs/test/DummyPropagation.ts b/plugins/node/instrumentation-kafkajs/test/DummyPropagation.ts new file mode 100644 index 0000000000..5daa6d65a7 --- /dev/null +++ b/plugins/node/instrumentation-kafkajs/test/DummyPropagation.ts @@ -0,0 +1,64 @@ +/* + * Copyright The OpenTelemetry Authors, Aspecto + * + * 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, + TraceFlags, + TextMapPropagator, + TextMapSetter, + TextMapGetter, + trace, +} from '@opentelemetry/api'; + +export class DummyPropagation implements TextMapPropagator { + static TRACE_CONTEXT_KEY = 'x-dummy-trace-id'; + static SPAN_CONTEXT_KEY = 'x-dummy-span-id'; + + extract(context: Context, carrier: unknown, getter: TextMapGetter) { + const extractedSpanContext = { + traceId: getter.get( + carrier, + DummyPropagation.TRACE_CONTEXT_KEY + ) as string, + spanId: getter.get(carrier, DummyPropagation.SPAN_CONTEXT_KEY) as string, + traceFlags: TraceFlags.SAMPLED, + }; + + if (!extractedSpanContext.traceId || !extractedSpanContext.spanId) + return context; + + return trace.setSpanContext(context, extractedSpanContext); + } + + inject(context: Context, carrier: unknown, setter: TextMapSetter): void { + const spanContext = trace.getSpanContext(context); + if (!spanContext) return; + + setter.set( + carrier, + DummyPropagation.TRACE_CONTEXT_KEY, + spanContext.traceId + ); + setter.set(carrier, DummyPropagation.SPAN_CONTEXT_KEY, spanContext.spanId); + } + + fields(): string[] { + return [ + DummyPropagation.TRACE_CONTEXT_KEY, + DummyPropagation.SPAN_CONTEXT_KEY, + ]; + } +} diff --git a/plugins/node/instrumentation-kafkajs/test/kafkajs.test.ts b/plugins/node/instrumentation-kafkajs/test/kafkajs.test.ts new file mode 100644 index 0000000000..258dddd7d0 --- /dev/null +++ b/plugins/node/instrumentation-kafkajs/test/kafkajs.test.ts @@ -0,0 +1,885 @@ +/* + * Copyright The OpenTelemetry Authors, Aspecto + * + * 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 { KafkaJsInstrumentation, KafkaJsInstrumentationConfig } from '../src'; +import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; +import { + propagation, + context, + SpanKind, + SpanStatusCode, + Baggage, +} from '@opentelemetry/api'; +import { + SEMATTRS_MESSAGING_SYSTEM, + SEMATTRS_MESSAGING_DESTINATION, + SEMATTRS_MESSAGING_OPERATION, +} from '@opentelemetry/semantic-conventions'; +import { + getTestSpans, + registerInstrumentationTesting, +} from '@opentelemetry/contrib-test-utils'; +import { W3CBaggagePropagator, CompositePropagator } from '@opentelemetry/core'; + +const instrumentation = registerInstrumentationTesting( + new KafkaJsInstrumentation() +); + +import * as kafkajs from 'kafkajs'; +import { + Kafka, + ProducerRecord, + RecordMetadata, + Producer, + ProducerBatch, + Message, + Consumer, + ConsumerRunConfig, + EachBatchPayload, + EachMessagePayload, + KafkaMessage, +} from 'kafkajs'; +import { DummyPropagation } from './DummyPropagation'; +import { bufferTextMapGetter } from '../src/propagator'; + +describe('instrumentation-kafkajs', () => { + propagation.setGlobalPropagator( + new CompositePropagator({ + propagators: [new DummyPropagation(), new W3CBaggagePropagator()], + }) + ); + + const kafka = new Kafka({ + clientId: 'unit-tests', + brokers: ['testing_mock_host:1234'], + }); + + let producer: Producer; + let messagesSent: Message[] = []; + + const patchProducerSend = (cb: () => Promise) => { + const origProducerFactory = kafkajs.Kafka.prototype.producer; + kafkajs.Kafka.prototype.producer = function (...args): Producer { + const producer = origProducerFactory.apply(this, args); + + producer.send = function (record: ProducerRecord) { + messagesSent.push(...record.messages); + return cb(); + }; + + producer.sendBatch = function (batch: ProducerBatch) { + batch.topicMessages?.forEach(topicMessages => + messagesSent.push(...topicMessages.messages) + ); + return cb(); + }; + + return producer; + }; + }; + + let consumer: Consumer; + let runConfig: ConsumerRunConfig | undefined; + + const storeRunConfig = () => { + const origConsumerFactory = kafkajs.Kafka.prototype.consumer; + kafkajs.Kafka.prototype.consumer = function (...args): Consumer { + const consumer: Consumer = origConsumerFactory.apply(this, args); + consumer.run = function (config?: ConsumerRunConfig): Promise { + runConfig = config; + return Promise.resolve(); + }; + return consumer; + }; + }; + + beforeEach(() => { + messagesSent = []; + }); + + describe('producer', () => { + const expectKafkaHeadersToMatchSpanContext = ( + kafkaMessage: Message, + span: ReadableSpan + ) => { + assert.strictEqual( + kafkaMessage.headers?.[DummyPropagation.TRACE_CONTEXT_KEY], + span.spanContext().traceId + ); + assert.strictEqual( + kafkaMessage.headers?.[DummyPropagation.SPAN_CONTEXT_KEY], + span.spanContext().spanId + ); + }; + + describe('successful send', () => { + beforeEach(async () => { + patchProducerSend(async (): Promise => { + return [ + { + topicName: 'topic-name-1', + partition: 0, + errorCode: 123, + offset: '18', + timestamp: '123456', + }, + ]; + }); + instrumentation.disable(); + instrumentation.enable(); + producer = kafka.producer(); + }); + + it('simple send create span with right attributes, pass return value correctly and propagate context', async () => { + const res: RecordMetadata[] = await producer.send({ + topic: 'topic-name-1', + messages: [ + { + value: 'testing message content', + }, + ], + }); + + assert.strictEqual(res.length, 1); + assert.strictEqual(res[0].topicName, 'topic-name-1'); + + const spans = getTestSpans(); + assert.strictEqual(spans.length, 1); + const span = spans[0]; + assert.strictEqual(span.kind, SpanKind.PRODUCER); + assert.strictEqual(span.name, 'topic-name-1'); + assert.strictEqual(span.status.code, SpanStatusCode.UNSET); + assert.strictEqual(span.attributes[SEMATTRS_MESSAGING_SYSTEM], 'kafka'); + assert.strictEqual( + span.attributes[SEMATTRS_MESSAGING_DESTINATION], + 'topic-name-1' + ); + + assert.strictEqual(messagesSent.length, 1); + expectKafkaHeadersToMatchSpanContext( + messagesSent[0], + span as ReadableSpan + ); + }); + + it('send two messages', async () => { + await producer.send({ + topic: 'topic-name-1', + messages: [ + { + value: 'message1', + }, + { + value: 'message2', + }, + ], + }); + + const spans = getTestSpans(); + assert.strictEqual(spans.length, 2); + assert.strictEqual(spans[0].name, 'topic-name-1'); + assert.strictEqual(spans[1].name, 'topic-name-1'); + + assert.strictEqual(messagesSent.length, 2); + expectKafkaHeadersToMatchSpanContext( + messagesSent[0], + spans[0] as ReadableSpan + ); + expectKafkaHeadersToMatchSpanContext( + messagesSent[1], + spans[1] as ReadableSpan + ); + }); + + it('send batch', async () => { + await producer.sendBatch({ + topicMessages: [ + { + topic: 'topic-name-1', + messages: [ + { + value: 'message1-1', + }, + { + value: 'message1-2', + }, + ], + }, + { + topic: 'topic-name-2', + messages: [ + { + value: 'message2-1', + }, + ], + }, + ], + }); + + const spans = getTestSpans(); + assert.strictEqual(spans.length, 3); + assert.strictEqual(spans[0].name, 'topic-name-1'); + assert.strictEqual(spans[1].name, 'topic-name-1'); + assert.strictEqual(spans[2].name, 'topic-name-2'); + + assert.strictEqual(messagesSent.length, 3); + for (let i = 0; i < 3; i++) { + expectKafkaHeadersToMatchSpanContext( + messagesSent[i], + spans[i] as ReadableSpan + ); + } + }); + }); + + describe('failed send', () => { + beforeEach(async () => { + patchProducerSend((): Promise => { + return Promise.reject( + new Error('error thrown from kafka client send') + ); + }); + instrumentation.disable(); + instrumentation.enable(); + producer = kafka.producer(); + }); + + it('error in send create failed span', async () => { + try { + await producer.send({ + topic: 'topic-name-1', + messages: [ + { + value: 'testing message content', + }, + ], + }); + } catch (err) {} + + const spans = getTestSpans(); + assert.strictEqual(spans.length, 1); + const span = spans[0]; + assert.strictEqual(span.status.code, SpanStatusCode.ERROR); + assert.strictEqual( + span.status.message, + 'error thrown from kafka client send' + ); + }); + + it('error in send with multiple messages create failed spans', async () => { + try { + await producer.send({ + topic: 'topic-name-1', + messages: [ + { + value: 'testing message content 1', + }, + { + value: 'testing message content 2', + }, + ], + }); + } catch (err) {} + + const spans = getTestSpans(); + assert.strictEqual(spans.length, 2); + spans.forEach(span => { + assert.strictEqual(span.status.code, SpanStatusCode.ERROR); + assert.strictEqual( + span.status.message, + 'error thrown from kafka client send' + ); + }); + }); + + it('error in sendBatch should set error to all spans', async () => { + try { + await producer.sendBatch({ + topicMessages: [ + { + topic: 'topic-name-1', + messages: [ + { + value: 'message1-1', + }, + { + value: 'message1-2', + }, + ], + }, + { + topic: 'topic-name-2', + messages: [ + { + value: 'message2-1', + }, + ], + }, + ], + }); + } catch (err) {} + + const spans = getTestSpans(); + assert.strictEqual(spans.length, 3); + spans.forEach(span => { + assert.strictEqual(span.status.code, SpanStatusCode.ERROR); + assert.strictEqual( + span.status.message, + 'error thrown from kafka client send' + ); + }); + }); + }); + + describe('producer hook successful', () => { + beforeEach(async () => { + patchProducerSend(async (): Promise => []); + + const config: KafkaJsInstrumentationConfig = { + producerHook: (span, info) => { + span.setAttribute( + 'attribute-from-hook', + info.message.value as string + ); + }, + }; + instrumentation.disable(); + instrumentation.setConfig(config); + instrumentation.enable(); + producer = kafka.producer(); + }); + + it('producer hook add span attribute with value from message', async () => { + await producer.send({ + topic: 'topic-name-1', + messages: [ + { + value: 'testing message content', + }, + ], + }); + + const spans = getTestSpans(); + assert.strictEqual(spans.length, 1); + const span = spans[0]; + assert.strictEqual( + span.attributes['attribute-from-hook'], + 'testing message content' + ); + }); + }); + + describe('producer hook throw, should still create span', () => { + beforeEach(async () => { + patchProducerSend(async (): Promise => []); + + const config: KafkaJsInstrumentationConfig = { + producerHook: (_span, _info) => { + throw new Error('error thrown from producer hook'); + }, + }; + instrumentation.disable(); + instrumentation.setConfig(config); + instrumentation.enable(); + producer = kafka.producer(); + }); + + it('producer hook add span attribute with value from message', async () => { + await producer.send({ + topic: 'topic-name-1', + messages: [ + { + value: 'testing message content', + }, + ], + }); + + const spans = getTestSpans(); + assert.strictEqual(spans.length, 1); + const span = spans[0]; + assert.strictEqual(span.status.code, SpanStatusCode.UNSET); + }); + }); + }); + + describe('consumer', () => { + const createKafkaMessage = (offset: string): KafkaMessage => { + return { + key: Buffer.from('message-key', 'utf8'), + value: Buffer.from('message content', 'utf8'), + timestamp: '1234', + size: 10, + attributes: 1, + offset: offset, + }; + }; + + const createEachMessagePayload = (): EachMessagePayload => { + return { + topic: 'topic-name-1', + partition: 0, + message: createKafkaMessage('123'), + heartbeat: async () => {}, + pause: () => () => {}, + }; + }; + + const createEachBatchPayload = (): EachBatchPayload => { + return { + batch: { + topic: 'topic-name-1', + partition: 1234, + highWatermark: '4567', + messages: [createKafkaMessage('124'), createKafkaMessage('125')], + }, + } as EachBatchPayload; + }; + + beforeEach(() => { + storeRunConfig(); + }); + + describe('successful eachMessage', () => { + beforeEach(async () => { + instrumentation.disable(); + instrumentation.enable(); + consumer = kafka.consumer({ + groupId: 'testing-group-id', + }); + }); + + it('consume eachMessage create span with expected attributes', async () => { + consumer.run({ + eachMessage: async ( + _payload: EachMessagePayload + ): Promise => {}, + }); + const payload: EachMessagePayload = createEachMessagePayload(); + await runConfig?.eachMessage!(payload); + + const spans = getTestSpans(); + assert.strictEqual(spans.length, 1); + const span = spans[0]; + assert.strictEqual(span.name, 'topic-name-1'); + assert.strictEqual(span.parentSpanId, undefined); + assert.strictEqual(span.kind, SpanKind.CONSUMER); + assert.strictEqual(span.status.code, SpanStatusCode.UNSET); + assert.strictEqual(span.attributes[SEMATTRS_MESSAGING_SYSTEM], 'kafka'); + assert.strictEqual( + span.attributes[SEMATTRS_MESSAGING_DESTINATION], + 'topic-name-1' + ); + assert.strictEqual( + span.attributes[SEMATTRS_MESSAGING_OPERATION], + 'process' + ); + }); + + it('consumer eachMessage with non promise return value', async () => { + consumer.run({ + // the usecase of kafkajs callback not returning promise + // is not typescript valid, but it might (and is) implemented in real life (nestjs) + // and does not break the library. + eachMessage: async (_payload: EachMessagePayload) => {}, + }); + const payload: EachMessagePayload = createEachMessagePayload(); + await runConfig?.eachMessage!(payload); + + const spans = getTestSpans(); + assert.strictEqual(spans.length, 1); + }); + }); + + describe('successful consumer hook', () => { + beforeEach(async () => { + const config: KafkaJsInstrumentationConfig = { + consumerHook: (span, info) => { + span.setAttribute( + 'attribute key from hook', + info.message.value!.toString() + ); + }, + }; + instrumentation.disable(); + instrumentation.setConfig(config); + instrumentation.enable(); + consumer = kafka.consumer({ + groupId: 'testing-group-id', + }); + consumer.run({ + eachMessage: async ( + _payload: EachMessagePayload + ): Promise => {}, + }); + }); + + it('consume hook adds attribute to span', async () => { + const payload: EachMessagePayload = createEachMessagePayload(); + await runConfig?.eachMessage!(payload); + + const spans = getTestSpans(); + assert.strictEqual(spans.length, 1); + const span = spans[0]; + assert.strictEqual( + span.attributes['attribute key from hook'], + payload.message.value?.toString() + ); + }); + }); + + describe('throwing consumer hook', () => { + beforeEach(async () => { + const config: KafkaJsInstrumentationConfig = { + consumerHook: (_span, _info) => { + throw new Error('error thrown from consumer hook'); + }, + }; + instrumentation.disable(); + instrumentation.setConfig(config); + instrumentation.enable(); + consumer = kafka.consumer({ + groupId: 'testing-group-id', + }); + consumer.run({ + eachMessage: async ( + _payload: EachMessagePayload + ): Promise => {}, + }); + }); + + it('consume hook adds attribute to span', async () => { + const payload: EachMessagePayload = createEachMessagePayload(); + await runConfig?.eachMessage!(payload); + + const spans = getTestSpans(); + // span should still be created + assert.strictEqual(spans.length, 1); + }); + }); + + describe('eachMessage throws', () => { + beforeEach(async () => { + instrumentation.disable(); + instrumentation.enable(); + consumer = kafka.consumer({ + groupId: 'testing-group-id', + }); + }); + + it('Error message written in the span status', async () => { + const errorToThrow = new Error( + 'error thrown from eachMessage callback' + ); + consumer.run({ + eachMessage: async (_payload: EachMessagePayload): Promise => { + throw errorToThrow; + }, + }); + + const payload: EachMessagePayload = createEachMessagePayload(); + let exception; + try { + await runConfig?.eachMessage!(payload); + } catch (e) { + exception = e; + } + assert.deepStrictEqual(exception, errorToThrow); + + const spans = getTestSpans(); + assert.strictEqual(spans.length, 1); + const span = spans[0]; + assert.strictEqual(span.status.code, SpanStatusCode.ERROR); + assert.strictEqual( + span.status.message, + 'error thrown from eachMessage callback' + ); + }); + + it('throwing object with no message', async () => { + const objectToThrow = { + nonMessageProperty: 'the thrown object has no `message` property', + }; + consumer.run({ + eachMessage: async (_payload: EachMessagePayload): Promise => { + throw objectToThrow; + }, + }); + + const payload: EachMessagePayload = createEachMessagePayload(); + let exception; + try { + await runConfig?.eachMessage!(payload); + } catch (e) { + exception = e; + } + assert.deepStrictEqual(exception, objectToThrow); + + const spans = getTestSpans(); + assert.strictEqual(spans.length, 1); + const span = spans[0]; + assert.strictEqual(span.status.code, SpanStatusCode.ERROR); + assert.strictEqual(span.status.message, undefined); + }); + + it('throwing non object', async () => { + consumer.run({ + eachMessage: async (_payload: EachMessagePayload): Promise => { + throw undefined; + }, + }); + + const payload: EachMessagePayload = createEachMessagePayload(); + let exception = null; + try { + await runConfig?.eachMessage!(payload); + } catch (e) { + exception = e; + } + assert.strictEqual(exception, undefined); + + const spans = getTestSpans(); + assert.strictEqual(spans.length, 1); + const span = spans[0]; + assert.strictEqual(span.status.code, SpanStatusCode.ERROR); + assert.strictEqual(span.status.message, undefined); + }); + }); + + describe('successful eachBatch', () => { + beforeEach(async () => { + instrumentation.disable(); + instrumentation.enable(); + consumer = kafka.consumer({ + groupId: 'testing-group-id', + }); + }); + + it('consume eachBatch create span with expected attributes', async () => { + consumer.run({ + eachBatch: async (_payload: EachBatchPayload): Promise => {}, + }); + const payload: EachBatchPayload = createEachBatchPayload(); + await runConfig?.eachBatch!(payload); + + const spans = getTestSpans(); + assert.strictEqual(spans.length, 3); + spans.forEach(span => { + assert.strictEqual(span.name, 'topic-name-1'); + assert.strictEqual(span.status.code, SpanStatusCode.UNSET); + assert.strictEqual( + span.attributes[SEMATTRS_MESSAGING_SYSTEM], + 'kafka' + ); + assert.strictEqual( + span.attributes[SEMATTRS_MESSAGING_DESTINATION], + 'topic-name-1' + ); + }); + + const [recvSpan, msg1Span, msg2Span] = spans; + + assert.strictEqual(recvSpan.parentSpanId, undefined); + assert.strictEqual( + recvSpan.attributes[SEMATTRS_MESSAGING_OPERATION], + 'receive' + ); + + assert.strictEqual( + msg1Span.parentSpanId, + recvSpan.spanContext().spanId + ); + assert.strictEqual( + msg1Span.attributes[SEMATTRS_MESSAGING_OPERATION], + 'process' + ); + + assert.strictEqual( + msg2Span.parentSpanId, + recvSpan.spanContext().spanId + ); + assert.strictEqual( + msg2Span.attributes[SEMATTRS_MESSAGING_OPERATION], + 'process' + ); + }); + + it('consumer eachBatch with non promise return value', async () => { + consumer.run({ + // the usecase of kafkajs callback not returning promise + // is not typescript valid, but it might (and is) implemented in real life (nestjs) + // and does not break the library. + eachBatch: async (_payload: EachBatchPayload) => { + return; + }, + }); + const payload: EachBatchPayload = createEachBatchPayload(); + await runConfig?.eachBatch!(payload); + + const spans = getTestSpans(); + assert.strictEqual(spans.length, 3); + }); + }); + }); + + describe('context propagation', () => { + beforeEach(() => { + patchProducerSend(async (): Promise => []); + storeRunConfig(); + instrumentation.disable(); + instrumentation.enable(); + producer = kafka.producer(); + consumer = kafka.consumer({ groupId: 'testing-group-id' }); + }); + + it('context injected in producer is extracted in consumer', async () => { + let callbackBaggage: Baggage | undefined; + consumer.run({ + eachMessage: async (_payload: EachMessagePayload): Promise => { + callbackBaggage = propagation.getBaggage(context.active()); + }, + }); + + await context.with( + propagation.setBaggage( + context.active(), + propagation.createBaggage({ foo: { value: 'bar' } }) + ), + async () => { + await producer.send({ + topic: 'topic-name-1', + messages: [ + { + value: 'testing message content', + }, + ], + }); + } + ); + + assert.strictEqual(messagesSent.length, 1); + const consumerPayload: EachMessagePayload = { + topic: 'topic-name-1', + partition: 0, + message: { + key: Buffer.alloc(0), + value: Buffer.alloc(0), + timestamp: '1234', + attributes: 0, + offset: '0', + headers: messagesSent[0].headers ?? {}, + }, + heartbeat: async () => {}, + pause: () => () => {}, + }; + await runConfig?.eachMessage!(consumerPayload); + + const spans = getTestSpans(); + assert.strictEqual(spans.length, 2); + const [producerSpan, consumerSpan] = spans; + assert.strictEqual( + consumerSpan.spanContext().traceId, + producerSpan.spanContext().traceId + ); + assert.strictEqual( + consumerSpan.parentSpanId, + producerSpan.spanContext().spanId + ); + assert.strictEqual(callbackBaggage!.getAllEntries().length, 1); + assert.strictEqual(callbackBaggage!.getEntry('foo')?.value, 'bar'); + }); + + it('context injected in producer is extracted as links in batch consumer', async () => { + consumer.run({ + eachBatch: async (_payload: EachBatchPayload): Promise => {}, + }); + + await producer.send({ + topic: 'topic-name-1', + messages: [ + { + value: 'testing message content', + }, + ], + }); + + assert.strictEqual(messagesSent.length, 1); + const consumerPayload: EachBatchPayload = { + batch: { + topic: 'topic-name-1', + partition: 0, + highWatermark: '1234', + messages: [ + { + key: Buffer.alloc(0), + value: Buffer.alloc(0), + timestamp: '1234', + size: 0, + attributes: 0, + offset: '0', + headers: messagesSent[0].headers, + }, + ], + }, + } as EachBatchPayload; + await runConfig?.eachBatch!(consumerPayload); + + const spans = getTestSpans(); + assert.strictEqual(spans.length, 3); + const [producerSpan, receivingSpan, processingSpan] = spans; + + // processing span should be the child of receiving span and link to relevant producer + assert.strictEqual( + processingSpan.spanContext().traceId, + receivingSpan.spanContext().traceId + ); + assert.strictEqual( + processingSpan.parentSpanId, + receivingSpan.spanContext().spanId + ); + assert.strictEqual(processingSpan.links.length, 1); + assert.strictEqual( + processingSpan.links[0].context.traceId, + producerSpan.spanContext().traceId + ); + assert.strictEqual( + processingSpan.links[0].context.spanId, + producerSpan.spanContext().spanId + ); + + // receiving span should start a new trace + assert.strictEqual(receivingSpan.parentSpanId, undefined); + assert.notStrictEqual( + receivingSpan.spanContext().traceId, + producerSpan.spanContext().traceId + ); + }); + }); + + describe('bufferTextMapGetter', () => { + it('is possible to retrieve keys case insensitively', () => { + assert.strictEqual( + bufferTextMapGetter.get( + { + 'X-B3-Trace-Id': '123', + }, + 'x-b3-trace-id' + ), + '123' + ); + }); + }); +}); diff --git a/plugins/node/instrumentation-kafkajs/tsconfig.json b/plugins/node/instrumentation-kafkajs/tsconfig.json new file mode 100644 index 0000000000..28be80d266 --- /dev/null +++ b/plugins/node/instrumentation-kafkajs/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../../tsconfig.base", + "compilerOptions": { + "rootDir": ".", + "outDir": "build" + }, + "include": [ + "src/**/*.ts", + "test/**/*.ts" + ] +} diff --git a/release-please-config.json b/release-please-config.json index 3c3537298e..bb6cacc61c 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -27,6 +27,7 @@ "plugins/node/instrumentation-cucumber": {}, "plugins/node/instrumentation-dataloader": {}, "plugins/node/instrumentation-fs": {}, + "plugins/node/instrumentation-kafkajs": {}, "plugins/node/instrumentation-lru-memoizer": {}, "plugins/node/instrumentation-mongoose": {}, "plugins/node/instrumentation-runtime-node": {}, From aaf47484cea6a002c222ee95c8ed4e9f63b92de6 Mon Sep 17 00:00:00 2001 From: Amir Blum Date: Sat, 18 May 2024 06:58:59 +0300 Subject: [PATCH 116/121] docs: enhanced description for instrumentations in package.json (#2202) * docs: enhanced description for instrumentations in package.json * docs: also apply to new instrumentation kafkajs --- GUIDELINES.md | 24 +++++++++++++++++++ .../node/instrumentation-amqplib/package.json | 2 +- .../instrumentation-cucumber/package.json | 2 +- .../instrumentation-dataloader/package.json | 2 +- plugins/node/instrumentation-fs/package.json | 2 +- .../node/instrumentation-kafkajs/package.json | 2 +- .../instrumentation-lru-memoizer/package.json | 2 +- .../instrumentation-mongoose/package.json | 2 +- .../instrumentation-runtime-node/package.json | 2 +- .../instrumentation-socket.io/package.json | 2 +- .../node/instrumentation-tedious/package.json | 2 +- .../node/instrumentation-undici/package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- 43 files changed, 66 insertions(+), 42 deletions(-) diff --git a/GUIDELINES.md b/GUIDELINES.md index 04bc219b14..69c3fe283a 100644 --- a/GUIDELINES.md +++ b/GUIDELINES.md @@ -197,3 +197,27 @@ Instrumentation may add additional patch/unpatch messages for specific functions - In situations where the patch logic is not trivial and it helps to specify patch events in the right context and nuances. `aws-lambda` logs additional properties extracted from the lambda framework and exposes them for troubleshooting. The cases above are not covered by the base class and offer additional context to the user troubleshooting an issue with the instrumentation. + +## package.json + +### Description + +Instrumentation should include a `description` field in the `package.json` file. The description targets human readers and is an opportunity to communicate the use case for the instrumented package and its semconv namespace. It should help users know whether the package fits their application, which is especially helpful if the package has a shortened or obscure name. + +The description should be written with this format when applicable: + +```text +"OpenTelemetry instrumentation for `` " +``` + +For example: + +```text +"OpenTelemetry instrumentation for `express` http framework" +"OpenTelemetry instrumentation for `winston` logger" +"OpenTelemetry instrumentation for `redis` database client for Redis" +``` + +If the package is consumed directly, the description should state the package name in ``. Tools like `nestjs` and `aws-lambda` are examples of packages that are consumed indirectly. + +A short description should follow the package name, like "http framework", "logger", "database client for X", "messaging client", etc as appropriate in each case. It is preferable to use the semconv namespace semantics that are emitted by this instrumentation (`http`, `database`, `messaging`, `rpc`, `net`) to give quick context for the scope of the instrumentation. diff --git a/plugins/node/instrumentation-amqplib/package.json b/plugins/node/instrumentation-amqplib/package.json index 6634aad6bd..9910feedae 100644 --- a/plugins/node/instrumentation-amqplib/package.json +++ b/plugins/node/instrumentation-amqplib/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-amqplib", "version": "0.37.0", - "description": "OpenTelemetry automatic instrumentation for the `amqplib` package", + "description": "OpenTelemetry instrumentation for the `amqplib` messaging client for RabbitMQ", "keywords": [ "amqplib", "opentelemetry", diff --git a/plugins/node/instrumentation-cucumber/package.json b/plugins/node/instrumentation-cucumber/package.json index ee4b117fd0..2c0c17df13 100644 --- a/plugins/node/instrumentation-cucumber/package.json +++ b/plugins/node/instrumentation-cucumber/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-cucumber", "version": "0.6.0", - "description": "OpenTelemetry cucumber automatic instrumentation package.", + "description": "OpenTelemetry instrumentation for `@cucumber/cucumber` automated tests runner", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/instrumentation-dataloader/package.json b/plugins/node/instrumentation-dataloader/package.json index 5a4ef1ea76..08bdd706a7 100644 --- a/plugins/node/instrumentation-dataloader/package.json +++ b/plugins/node/instrumentation-dataloader/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-dataloader", "version": "0.9.0", - "description": "OpenTelemetry instrumentation for dataloader", + "description": "OpenTelemetry instrumentation for `dataloader` data fetching layer", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/instrumentation-fs/package.json b/plugins/node/instrumentation-fs/package.json index 3d41437cbb..9585a038d6 100644 --- a/plugins/node/instrumentation-fs/package.json +++ b/plugins/node/instrumentation-fs/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-fs", "version": "0.12.0", - "description": "OpenTelemetry automatic instrumentation package for fs", + "description": "OpenTelemetry instrumentation for `node:fs` file system interactions module", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/instrumentation-kafkajs/package.json b/plugins/node/instrumentation-kafkajs/package.json index 7e6ff384e1..52dffe870a 100644 --- a/plugins/node/instrumentation-kafkajs/package.json +++ b/plugins/node/instrumentation-kafkajs/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-kafkajs", "version": "0.0.1", - "description": "OpenTelemetry automatic instrumentation package for kafkajs", + "description": "OpenTelemetry instrumentation for `kafkajs` messaging client for Apache Kafka", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/instrumentation-lru-memoizer/package.json b/plugins/node/instrumentation-lru-memoizer/package.json index da739ec93e..6040807233 100644 --- a/plugins/node/instrumentation-lru-memoizer/package.json +++ b/plugins/node/instrumentation-lru-memoizer/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-lru-memoizer", "version": "0.37.0", - "description": "OpenTelemetry automatic instrumentation package for lru-memoizer", + "description": "OpenTelemetry instrumentation for `lru-memoizer` function memoization using lru-cache", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/instrumentation-mongoose/package.json b/plugins/node/instrumentation-mongoose/package.json index e67c4b4aa5..dc130c0c01 100644 --- a/plugins/node/instrumentation-mongoose/package.json +++ b/plugins/node/instrumentation-mongoose/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-mongoose", "version": "0.38.1", - "description": "OpenTelemetry automatic instrumentation package for mongoose", + "description": "OpenTelemetry instrumentation for `mongoose` database object data modeling (ODM) library for MongoDB", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/instrumentation-runtime-node/package.json b/plugins/node/instrumentation-runtime-node/package.json index 1d0759a869..dab1da13a3 100644 --- a/plugins/node/instrumentation-runtime-node/package.json +++ b/plugins/node/instrumentation-runtime-node/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-runtime-node", "version": "0.4.0", - "description": "OpenTelemetry Node.js Performance measurement API automatic instrumentation package", + "description": "OpenTelemetry instrumentation for Node.js Performance measurement API", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/instrumentation-socket.io/package.json b/plugins/node/instrumentation-socket.io/package.json index 7ec6a4e6b2..78c0d886f3 100644 --- a/plugins/node/instrumentation-socket.io/package.json +++ b/plugins/node/instrumentation-socket.io/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-socket.io", "version": "0.39.0", - "description": "OpenTelemetry automatic instrumentation package for socket.io", + "description": "OpenTelemetry instrumentation for `socket.io` messaging server implementation for Socket.IO communication", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/instrumentation-tedious/package.json b/plugins/node/instrumentation-tedious/package.json index 4474df3657..82ca565cc3 100644 --- a/plugins/node/instrumentation-tedious/package.json +++ b/plugins/node/instrumentation-tedious/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-tedious", "version": "0.10.1", - "description": "OpenTelemetry instrumentation for `tedious`", + "description": "OpenTelemetry instrumentation for `tedious` database client for Microsoft SQL Server", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/instrumentation-undici/package.json b/plugins/node/instrumentation-undici/package.json index d644222a56..90503fd16a 100644 --- a/plugins/node/instrumentation-undici/package.json +++ b/plugins/node/instrumentation-undici/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-undici", "version": "0.2.0", - "description": "OpenTelemetry instrumentation for undici and Node.js fetch().", + "description": "OpenTelemetry instrumentation for `undici` http client and Node.js fetch()", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json b/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json index 425b3860b4..dd36bec2fc 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json +++ b/plugins/node/opentelemetry-instrumentation-aws-lambda/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-aws-lambda", "version": "0.41.1", - "description": "OpenTelemetry AWS Lambda automatic instrumentation package.", + "description": "OpenTelemetry instrumentation for AWS Lambda function invocations", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json b/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json index 0500a453ef..b0f973354c 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-aws-sdk", "version": "0.41.0", - "description": "OpenTelemetry automatic instrumentation for the `aws-sdk` package", + "description": "OpenTelemetry instrumentation for `aws-sdk` and `@aws-sdk/client-*` clients for various AWS services", "keywords": [ "aws", "aws-sdk", diff --git a/plugins/node/opentelemetry-instrumentation-bunyan/package.json b/plugins/node/opentelemetry-instrumentation-bunyan/package.json index e9721696df..a1f07c2fdd 100644 --- a/plugins/node/opentelemetry-instrumentation-bunyan/package.json +++ b/plugins/node/opentelemetry-instrumentation-bunyan/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-bunyan", "version": "0.38.0", - "description": "OpenTelemetry instrumentation for bunyan", + "description": "OpenTelemetry instrumentation for `bunyan` logger", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-cassandra/package.json b/plugins/node/opentelemetry-instrumentation-cassandra/package.json index 73ffc747d6..f8fd12f1b4 100644 --- a/plugins/node/opentelemetry-instrumentation-cassandra/package.json +++ b/plugins/node/opentelemetry-instrumentation-cassandra/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-cassandra-driver", "version": "0.38.0", - "description": "OpenTelemetry instrumentation for cassandra-driver", + "description": "OpenTelemetry instrumentation for `cassandra-driver` database client library for Apache Cassandra", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-connect/package.json b/plugins/node/opentelemetry-instrumentation-connect/package.json index 07e97d8ced..096c7c2717 100644 --- a/plugins/node/opentelemetry-instrumentation-connect/package.json +++ b/plugins/node/opentelemetry-instrumentation-connect/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-connect", "version": "0.36.1", - "description": "OpenTelemetry connect automatic instrumentation package.", + "description": "OpenTelemetry instrumentation for `connect` http middleware framework", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-dns/package.json b/plugins/node/opentelemetry-instrumentation-dns/package.json index e43d0f8a44..5549781d25 100644 --- a/plugins/node/opentelemetry-instrumentation-dns/package.json +++ b/plugins/node/opentelemetry-instrumentation-dns/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-dns", "version": "0.36.1", - "description": "OpenTelemetry dns automatic instrumentation package.", + "description": "OpenTelemetry instrumentation for `node:dns` name resolution module", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-express/package.json b/plugins/node/opentelemetry-instrumentation-express/package.json index 63ada7f239..489873a6d3 100644 --- a/plugins/node/opentelemetry-instrumentation-express/package.json +++ b/plugins/node/opentelemetry-instrumentation-express/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-express", "version": "0.39.0", - "description": "OpenTelemetry express automatic instrumentation package.", + "description": "OpenTelemetry instrumentation for `express` http web application framework", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-fastify/package.json b/plugins/node/opentelemetry-instrumentation-fastify/package.json index f8ab73c62d..056185aab4 100644 --- a/plugins/node/opentelemetry-instrumentation-fastify/package.json +++ b/plugins/node/opentelemetry-instrumentation-fastify/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-fastify", "version": "0.36.1", - "description": "OpenTelemetry fastify automatic instrumentation package.", + "description": "OpenTelemetry instrumentation for `fastify` http web application framework", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-generic-pool/package.json b/plugins/node/opentelemetry-instrumentation-generic-pool/package.json index 637560de0b..47178ec699 100644 --- a/plugins/node/opentelemetry-instrumentation-generic-pool/package.json +++ b/plugins/node/opentelemetry-instrumentation-generic-pool/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-generic-pool", "version": "0.36.0", - "description": "OpenTelemetry Generic Pool automatic instrumentation package", + "description": "OpenTelemetry instrumentation for `generic-pool` resource pool for managing expensive resources", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-graphql/package.json b/plugins/node/opentelemetry-instrumentation-graphql/package.json index bdcb66cc6e..30bcec5c80 100644 --- a/plugins/node/opentelemetry-instrumentation-graphql/package.json +++ b/plugins/node/opentelemetry-instrumentation-graphql/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-graphql", "version": "0.40.0", - "description": "OpenTelemetry @opentelemetry/instrumentation-graphql automatic instrumentation package.", + "description": "OpenTelemetry instrumentation for `graphql` gql query language and runtime for GraphQL", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-hapi/package.json b/plugins/node/opentelemetry-instrumentation-hapi/package.json index f0f454b0dc..497cedd37d 100644 --- a/plugins/node/opentelemetry-instrumentation-hapi/package.json +++ b/plugins/node/opentelemetry-instrumentation-hapi/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-hapi", "version": "0.38.0", - "description": "OpenTelemetry Hapi automatic instrumentation package.", + "description": "OpenTelemetry instrumentation for `@hapi/hapi` http web application framework", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/package.json b/plugins/node/opentelemetry-instrumentation-ioredis/package.json index a8a4e57d5e..cf3760eeb6 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/package.json +++ b/plugins/node/opentelemetry-instrumentation-ioredis/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-ioredis", "version": "0.40.0", - "description": "OpenTelemetry ioredis automatic instrumentation package.", + "description": "OpenTelemetry instrumentation for `ioredis` database redis client for Redis", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-knex/package.json b/plugins/node/opentelemetry-instrumentation-knex/package.json index b88ab6dc6e..7705439ef1 100644 --- a/plugins/node/opentelemetry-instrumentation-knex/package.json +++ b/plugins/node/opentelemetry-instrumentation-knex/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-knex", "version": "0.36.1", - "description": "OpenTelemetry Knex automatic instrumentation package", + "description": "OpenTelemetry instrumentation for `knex` database SQL query builder", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-koa/package.json b/plugins/node/opentelemetry-instrumentation-koa/package.json index e9bf3f472e..bd5f6c13f1 100644 --- a/plugins/node/opentelemetry-instrumentation-koa/package.json +++ b/plugins/node/opentelemetry-instrumentation-koa/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-koa", "version": "0.40.0", - "description": "OpenTelemetry Koa automatic instrumentation package.", + "description": "OpenTelemetry instrumentation for `koa` http web application framework", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-memcached/package.json b/plugins/node/opentelemetry-instrumentation-memcached/package.json index bf47bf5d4a..7f07d8249e 100644 --- a/plugins/node/opentelemetry-instrumentation-memcached/package.json +++ b/plugins/node/opentelemetry-instrumentation-memcached/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-memcached", "version": "0.36.0", - "description": "OpenTelemetry memcached automatic instrumentation package.", + "description": "OpenTelemetry instrumentation for `memcached` database client for memcached", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-mongodb/package.json b/plugins/node/opentelemetry-instrumentation-mongodb/package.json index a0e9f36e85..6c78e98aa8 100644 --- a/plugins/node/opentelemetry-instrumentation-mongodb/package.json +++ b/plugins/node/opentelemetry-instrumentation-mongodb/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-mongodb", "version": "0.43.0", - "description": "OpenTelemetry mongodb automatic instrumentation package.", + "description": "OpenTelemetry instrumentation for `mongodb` database client for MongoDB", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-mysql/package.json b/plugins/node/opentelemetry-instrumentation-mysql/package.json index 7c8a6bec9e..f15ee457c2 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-mysql", "version": "0.38.1", - "description": "OpenTelemetry mysql automatic instrumentation package.", + "description": "OpenTelemetry instrumentation for `mysql` database client for MySQL", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/package.json b/plugins/node/opentelemetry-instrumentation-mysql2/package.json index 7ae9310af3..4c046988bd 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql2/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-mysql2", "version": "0.38.1", - "description": "OpenTelemetry mysql2 automatic instrumentation package.", + "description": "OpenTelemetry instrumentation for `mysql2` database client for MySQL", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json index cf31974c6b..444581907f 100644 --- a/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json +++ b/plugins/node/opentelemetry-instrumentation-nestjs-core/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-nestjs-core", "version": "0.37.1", - "description": "OpenTelemetry NestJS automatic instrumentation package.", + "description": "OpenTelemetry instrumentation for NestJS server side applications framework", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-net/package.json b/plugins/node/opentelemetry-instrumentation-net/package.json index b109a1c7c9..aa8a79ae53 100644 --- a/plugins/node/opentelemetry-instrumentation-net/package.json +++ b/plugins/node/opentelemetry-instrumentation-net/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-net", "version": "0.36.0", - "description": "OpenTelemetry net module automatic instrumentation package.", + "description": "OpenTelemetry instrumentation for `node:net` network API module", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-pg/package.json b/plugins/node/opentelemetry-instrumentation-pg/package.json index d12a2348e5..18c0de2ca1 100644 --- a/plugins/node/opentelemetry-instrumentation-pg/package.json +++ b/plugins/node/opentelemetry-instrumentation-pg/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-pg", "version": "0.41.0", - "description": "OpenTelemetry postgres automatic instrumentation package.", + "description": "OpenTelemetry instrumentation for `pg` and `pg-pool` database client for PostgreSQL", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-pino/package.json b/plugins/node/opentelemetry-instrumentation-pino/package.json index 7cf0afeec6..49b263b9ca 100644 --- a/plugins/node/opentelemetry-instrumentation-pino/package.json +++ b/plugins/node/opentelemetry-instrumentation-pino/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-pino", "version": "0.39.0", - "description": "OpenTelemetry instrumentation for pino", + "description": "OpenTelemetry instrumentation for `pino` logger", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-redis-4/package.json b/plugins/node/opentelemetry-instrumentation-redis-4/package.json index 23d061c895..8aa653b1af 100644 --- a/plugins/node/opentelemetry-instrumentation-redis-4/package.json +++ b/plugins/node/opentelemetry-instrumentation-redis-4/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-redis-4", "version": "0.39.0", - "description": "Automatic OpenTelemetry instrumentation for redis package version 4", + "description": "OpenTelemetry instrumentation for `redis` v4 database client for Redis", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-redis/package.json b/plugins/node/opentelemetry-instrumentation-redis/package.json index 4515a23f3d..89560460e9 100644 --- a/plugins/node/opentelemetry-instrumentation-redis/package.json +++ b/plugins/node/opentelemetry-instrumentation-redis/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-redis", "version": "0.39.1", - "description": "Automatic OpenTelemetry instrumentation for redis package version 2 and 3", + "description": "OpenTelemetry instrumentation for `redis` v2 and v3 database client for Redis", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-restify/package.json b/plugins/node/opentelemetry-instrumentation-restify/package.json index 1113783ecc..54b5f1ec7a 100644 --- a/plugins/node/opentelemetry-instrumentation-restify/package.json +++ b/plugins/node/opentelemetry-instrumentation-restify/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-restify", "version": "0.38.0", - "description": "OpenTelemetry restify automatic instrumentation package", + "description": "OpenTelemetry instrumentation for `restify` http web application framework", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-router/package.json b/plugins/node/opentelemetry-instrumentation-router/package.json index 7ea1a851e9..d9b5c2e621 100644 --- a/plugins/node/opentelemetry-instrumentation-router/package.json +++ b/plugins/node/opentelemetry-instrumentation-router/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-router", "version": "0.37.0", - "description": "OpenTelemetry Router automatic instrumentation package", + "description": "OpenTelemetry instrumentation for `router` http middleware router", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/node/opentelemetry-instrumentation-winston/package.json b/plugins/node/opentelemetry-instrumentation-winston/package.json index ecfd90546c..54d31f1d8c 100644 --- a/plugins/node/opentelemetry-instrumentation-winston/package.json +++ b/plugins/node/opentelemetry-instrumentation-winston/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-winston", "version": "0.37.0", - "description": "OpenTelemetry instrumentation for winston", + "description": "OpenTelemetry instrumentation for `winston` logger", "main": "build/src/index.js", "types": "build/src/index.d.ts", "repository": "open-telemetry/opentelemetry-js-contrib", diff --git a/plugins/web/opentelemetry-instrumentation-document-load/package.json b/plugins/web/opentelemetry-instrumentation-document-load/package.json index f849a1de3d..18c9a8cdda 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/package.json +++ b/plugins/web/opentelemetry-instrumentation-document-load/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-document-load", "version": "0.38.0", - "description": "OpenTelemetry document-load automatic instrumentation package.", + "description": "OpenTelemetry instrumentation for document load operations in browser applications", "main": "build/src/index.js", "module": "build/esm/index.js", "esnext": "build/esnext/index.js", diff --git a/plugins/web/opentelemetry-instrumentation-long-task/package.json b/plugins/web/opentelemetry-instrumentation-long-task/package.json index 8e74d81397..1ec090c37c 100644 --- a/plugins/web/opentelemetry-instrumentation-long-task/package.json +++ b/plugins/web/opentelemetry-instrumentation-long-task/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-long-task", "version": "0.38.0", - "description": "OpenTelemetry long task API automatic instrumentation package.", + "description": "OpenTelemetry instrumentation for long task Web API", "main": "build/src/index.js", "module": "build/esm/index.js", "esnext": "build/esnext/index.js", diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/package.json b/plugins/web/opentelemetry-instrumentation-user-interaction/package.json index d51c3877ea..46268e890c 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/package.json +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/instrumentation-user-interaction", "version": "0.38.0", - "description": "OpenTelemetry UserInteraction automatic instrumentation package.", + "description": "OpenTelemetry instrumentation for user interactions as click events in a web application", "main": "build/src/index.js", "module": "build/esm/index.js", "esnext": "build/esnext/index.js", diff --git a/plugins/web/opentelemetry-plugin-react-load/package.json b/plugins/web/opentelemetry-plugin-react-load/package.json index 17da70c813..c1a8de2382 100644 --- a/plugins/web/opentelemetry-plugin-react-load/package.json +++ b/plugins/web/opentelemetry-plugin-react-load/package.json @@ -1,7 +1,7 @@ { "name": "@opentelemetry/plugin-react-load", "version": "0.30.1", - "description": "OpenTelemetry React loading automatic instrumentation package.", + "description": "OpenTelemetry instrumentation for React class component lifecycle methods", "main": "build/src/index.js", "module": "build/esm/index.js", "esnext": "build/esnext/index.js", From 4a6403979417e5c6bddef98b77b7647c56e63876 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Fri, 17 May 2024 21:19:31 -0700 Subject: [PATCH 117/121] docs: fix a typo (#2222) --- .../node/opentelemetry-resource-detector-github/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/detectors/node/opentelemetry-resource-detector-github/README.md b/detectors/node/opentelemetry-resource-detector-github/README.md index 31cdf85839..5bab37dacb 100644 --- a/detectors/node/opentelemetry-resource-detector-github/README.md +++ b/detectors/node/opentelemetry-resource-detector-github/README.md @@ -22,8 +22,7 @@ npm install --save @opentelemetry/resource-detector-github ## Usage ```js - -const { gitHubDetector } = require('@opentelemetry/opentelemetry-resource-detector-github') +const { gitHubDetector } = require('@opentelemetry/resource-detector-github') async function run() { // Initialize GitHub Resource Detector From aabd6aae5015ba61f6bb9578b67c5ea8c4b50f66 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Fri, 17 May 2024 21:20:44 -0700 Subject: [PATCH 118/121] chore: fix some package dirs in component_owners metadata (#2221) --- .github/component_owners.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/component_owners.yml b/.github/component_owners.yml index 0565ca3edf..065b03703b 100644 --- a/.github/component_owners.yml +++ b/.github/component_owners.yml @@ -17,6 +17,8 @@ components: detectors/node/opentelemetry-resource-detector-instana: - basti1302 - kirrg001 + incubator/opentelemetry-sampler-aws-xray: + - carolabadeer metapackages/auto-instrumentations-node: - dyladan - pichlermarc @@ -34,8 +36,6 @@ components: - legendecas packages/opentelemetry-id-generator-aws-xray: - carolabadeer - packages/opentelemetry-sampler-aws-xray: - - carolabadeer packages/opentelemetry-propagation-utils: - dyladan - pichlermarc @@ -113,7 +113,7 @@ components: - rauno56 plugins/node/opentelemetry-instrumentation-net: - seemk - plugins/node/opentelemetry-instrumentation-runtime-node: + plugins/node/instrumentation-runtime-node: - d4nyll plugins/node/opentelemetry-instrumentation-pg: - maryliag @@ -128,7 +128,7 @@ components: - rauno56 plugins/node/opentelemetry-instrumentation-router: - rauno56 - plugins/node/opentelemetry-instrumentation-undici: + plugins/node/instrumentation-undici: - david-luna - trentm plugins/node/opentelemetry-instrumentation-winston: @@ -143,8 +143,6 @@ components: - obecny plugins/web/opentelemetry-plugin-react-load: - martinkuba - propagators/opentelemetry-propagator-grpc-census-binary: [] - # Unmaintained? propagators/opentelemetry-propagator-instana: - basti1302 - kirrg001 From 5ecab2cf903fe56ab83ee7f43bd5b0d4bbaa4ba1 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Sat, 18 May 2024 02:15:38 -0400 Subject: [PATCH 119/121] docs(detector-alibaba): add details about semantic conventions (#2130) * docs(detector-alibaba): add details about semantic conventions Add details about semantic conventions verion used. * remove sem conv from title --------- Co-authored-by: Amir Blum --- .../opentelemetry-resource-detector-alibaba-cloud/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/README.md b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/README.md index a8e8c40882..687558b444 100644 --- a/detectors/node/opentelemetry-resource-detector-alibaba-cloud/README.md +++ b/detectors/node/opentelemetry-resource-detector-alibaba-cloud/README.md @@ -28,6 +28,8 @@ const tracerProvider = new NodeTracerProvider({ resource }); ## Available detectors +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) + ### Alibaba Cloud Ecs Detector Populates `cloud` and `host` for processes running on [Alibaba Cloud ECS](https://www.alibabacloud.com/product/ecs). More info about Alibaba Instance Identities can be found [here](https://www.alibabacloud.com/help/en/ecs/user-guide/use-instance-identities). From 02c945837e6980e9eb54e647b809c9a25b5b76e8 Mon Sep 17 00:00:00 2001 From: Emil Sivervik Date: Wed, 22 May 2024 02:21:27 +0200 Subject: [PATCH 120/121] docs(instr-ioredis): update ioredis instrumentation link to instrumentation options (#2227) --- plugins/node/opentelemetry-instrumentation-ioredis/src/types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/node/opentelemetry-instrumentation-ioredis/src/types.ts b/plugins/node/opentelemetry-instrumentation-ioredis/src/types.ts index 5d32116a67..f43849ec52 100644 --- a/plugins/node/opentelemetry-instrumentation-ioredis/src/types.ts +++ b/plugins/node/opentelemetry-instrumentation-ioredis/src/types.ts @@ -55,7 +55,7 @@ export interface RedisResponseCustomAttributeFunction { } /** - * Options available for the IORedis Instrumentation (see [documentation](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-instrumentation-ioredis#ioredis-instrumentation-options)) + * Options available for the IORedis Instrumentation (see [documentation](https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/plugins/node/opentelemetry-instrumentation-ioredis/README.md#ioredis-instrumentation-options)) */ export interface IORedisInstrumentationConfig extends InstrumentationConfig { /** Custom serializer function for the db.statement tag */ From ec618920b9642b17df118c45cd0f0ab0d71507b7 Mon Sep 17 00:00:00 2001 From: Amir Blum Date: Wed, 22 May 2024 19:16:00 +0300 Subject: [PATCH 121/121] chore: remove duplicate version update in compile (#2224) --- .../node/opentelemetry-resource-detector-container/package.json | 2 +- plugins/node/instrumentation-amqplib/package.json | 2 +- plugins/node/instrumentation-fs/package.json | 2 +- plugins/node/instrumentation-lru-memoizer/package.json | 2 +- plugins/node/instrumentation-mongoose/package.json | 2 +- plugins/node/instrumentation-socket.io/package.json | 2 +- .../opentelemetry-instrumentation-document-load/package.json | 2 +- .../web/opentelemetry-instrumentation-long-task/package.json | 2 +- .../opentelemetry-instrumentation-user-interaction/package.json | 2 +- plugins/web/opentelemetry-plugin-react-load/package.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/detectors/node/opentelemetry-resource-detector-container/package.json b/detectors/node/opentelemetry-resource-detector-container/package.json index 61b3e45616..5b31956c7b 100644 --- a/detectors/node/opentelemetry-resource-detector-container/package.json +++ b/detectors/node/opentelemetry-resource-detector-container/package.json @@ -8,7 +8,7 @@ "scripts": { "clean": "rimraf build/*", "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../", - "compile": "npm run version:update && tsc -p .", + "compile": "tsc -p .", "lint": "eslint . --ext .ts", "lint:fix": "eslint . --ext .ts --fix", "precompile": "tsc --version && lerna run version:update --scope @opentelemetry/resource-detector-container --include-dependencies", diff --git a/plugins/node/instrumentation-amqplib/package.json b/plugins/node/instrumentation-amqplib/package.json index 9910feedae..c26cc76170 100644 --- a/plugins/node/instrumentation-amqplib/package.json +++ b/plugins/node/instrumentation-amqplib/package.json @@ -27,7 +27,7 @@ "repository": "open-telemetry/opentelemetry-js-contrib", "scripts": { "clean": "rimraf build/*", - "compile": "npm run version:update && tsc -p .", + "compile": "tsc -p .", "lint": "eslint . --ext .ts", "lint:fix": "eslint . --ext .ts --fix", "precompile": "tsc --version && lerna run version:update --scope @opentelemetry/instrumentation-amqplib --include-dependencies", diff --git a/plugins/node/instrumentation-fs/package.json b/plugins/node/instrumentation-fs/package.json index 9585a038d6..824dfaac4b 100644 --- a/plugins/node/instrumentation-fs/package.json +++ b/plugins/node/instrumentation-fs/package.json @@ -15,7 +15,7 @@ "prewatch": "npm run precompile", "prepublishOnly": "npm run compile", "version:update": "node ../../../scripts/version-update.js", - "compile": "npm run version:update && tsc -p ." + "compile": "tsc -p ." }, "keywords": [ "fs", diff --git a/plugins/node/instrumentation-lru-memoizer/package.json b/plugins/node/instrumentation-lru-memoizer/package.json index 6040807233..dd3b46a81c 100644 --- a/plugins/node/instrumentation-lru-memoizer/package.json +++ b/plugins/node/instrumentation-lru-memoizer/package.json @@ -16,7 +16,7 @@ "prewatch": "npm run precompile", "prepublishOnly": "npm run compile", "version:update": "node ../../../scripts/version-update.js", - "compile": "npm run version:update && tsc -p ." + "compile": "tsc -p ." }, "keywords": [ "lru-memoizer", diff --git a/plugins/node/instrumentation-mongoose/package.json b/plugins/node/instrumentation-mongoose/package.json index dc130c0c01..ab2b70d5b5 100644 --- a/plugins/node/instrumentation-mongoose/package.json +++ b/plugins/node/instrumentation-mongoose/package.json @@ -17,7 +17,7 @@ "prewatch": "npm run precompile", "prepublishOnly": "npm run compile", "version:update": "node ../../../scripts/version-update.js", - "compile": "npm run version:update && tsc -p ." + "compile": "tsc -p ." }, "keywords": [ "mongodb", diff --git a/plugins/node/instrumentation-socket.io/package.json b/plugins/node/instrumentation-socket.io/package.json index 78c0d886f3..58459c97b6 100644 --- a/plugins/node/instrumentation-socket.io/package.json +++ b/plugins/node/instrumentation-socket.io/package.json @@ -16,7 +16,7 @@ "prewatch": "npm run precompile", "prepublishOnly": "npm run compile", "version:update": "node ../../../scripts/version-update.js", - "compile": "npm run version:update && tsc -p ." + "compile": "tsc -p ." }, "keywords": [ "socket.io", diff --git a/plugins/web/opentelemetry-instrumentation-document-load/package.json b/plugins/web/opentelemetry-instrumentation-document-load/package.json index 18c9a8cdda..75ecc372e0 100644 --- a/plugins/web/opentelemetry-instrumentation-document-load/package.json +++ b/plugins/web/opentelemetry-instrumentation-document-load/package.json @@ -14,7 +14,7 @@ "precompile": "tsc --version && lerna run version:update --scope @opentelemetry/instrumentation-document-load --include-dependencies", "prewatch": "npm run precompile", "version:update": "node ../../../scripts/version-update.js", - "compile": "npm run version:update && tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "prepublishOnly": "npm run compile", "tdd": "wtr --watch", "test:browser": "wtr --coverage", diff --git a/plugins/web/opentelemetry-instrumentation-long-task/package.json b/plugins/web/opentelemetry-instrumentation-long-task/package.json index 1ec090c37c..3b1ff6e500 100644 --- a/plugins/web/opentelemetry-instrumentation-long-task/package.json +++ b/plugins/web/opentelemetry-instrumentation-long-task/package.json @@ -14,7 +14,7 @@ "precompile": "tsc --version && lerna run version:update --scope @opentelemetry/instrumentation-user-interaction --include-dependencies", "prewatch": "npm run precompile", "version:update": "node ../../../scripts/version-update.js", - "compile": "npm run version:update && tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "prepublishOnly": "npm run compile", "tdd": "karma start", "test:browser": "nyc karma start --single-run", diff --git a/plugins/web/opentelemetry-instrumentation-user-interaction/package.json b/plugins/web/opentelemetry-instrumentation-user-interaction/package.json index 46268e890c..f7236de922 100644 --- a/plugins/web/opentelemetry-instrumentation-user-interaction/package.json +++ b/plugins/web/opentelemetry-instrumentation-user-interaction/package.json @@ -14,7 +14,7 @@ "precompile": "tsc --version && lerna run version:update --scope @opentelemetry/instrumentation-user-interaction --include-dependencies", "prewatch": "npm run precompile", "version:update": "node ../../../scripts/version-update.js", - "compile": "npm run version:update && tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "prepublishOnly": "npm run compile", "tdd": "karma start", "test:browser": "nyc karma start --single-run", diff --git a/plugins/web/opentelemetry-plugin-react-load/package.json b/plugins/web/opentelemetry-plugin-react-load/package.json index c1a8de2382..3994d17b54 100644 --- a/plugins/web/opentelemetry-plugin-react-load/package.json +++ b/plugins/web/opentelemetry-plugin-react-load/package.json @@ -14,7 +14,7 @@ "precompile": "tsc --version && lerna run version:update --scope @opentelemetry/plugin-react-load --include-dependencies", "prewatch": "npm run precompile", "version:update": "node ../../../scripts/version-update.js", - "compile": "npm run version:update && tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "prepublishOnly": "npm run compile", "tdd": "karma start", "test:browser": "nyc karma start --single-run",