From 8eb9bf30a3e4b1fbe410a5d3e1176297cb4a60a5 Mon Sep 17 00:00:00 2001 From: Abinet18 <35442169+Abinet18@users.noreply.github.com> Date: Thu, 1 Jun 2023 22:23:06 -0700 Subject: [PATCH 01/71] feat/logattributes support map type (#3821) Co-authored-by: Marc Pichler --- experimental/CHANGELOG.md | 1 + .../packages/api-logs/src/types/LogRecord.ts | 9 +++++++-- .../packages/api-logs/src/types/LoggerOptions.ts | 2 -- .../packages/otlp-transformer/package.json | 1 + .../otlp-transformer/src/common/internal.ts | 2 +- .../packages/otlp-transformer/src/logs/index.ts | 10 ++++++++-- experimental/packages/sdk-logs/package.json | 2 +- experimental/packages/sdk-logs/src/LogRecord.ts | 16 ++++++++++++---- .../sdk-logs/src/export/ReadableLogRecord.ts | 6 +++--- .../packages/sdk-logs/test/common/utils.ts | 5 +++-- 10 files changed, 37 insertions(+), 17 deletions(-) diff --git a/experimental/CHANGELOG.md b/experimental/CHANGELOG.md index 60a3bb2664..f5dbfd2a8f 100644 --- a/experimental/CHANGELOG.md +++ b/experimental/CHANGELOG.md @@ -13,6 +13,7 @@ All notable changes to experimental packages in this project will be documented ### :rocket: (Enhancement) +* feat(api-logs): support map in log attributes. [#3821](https://github.com/open-telemetry/opentelemetry-js/pull/3821) @Abinet18 * feat(instrumentation): add ESM support for instrumentation. [#3698](https://github.com/open-telemetry/opentelemetry-js/pull/3698) @JamieDanielson, @pkanal, @vmarchaud, @lizthegrey, @bengl * feat(exporter-logs-otlp-http): otlp-http exporter for logs. [#3764](https://github.com/open-telemetry/opentelemetry-js/pull/3764/) @fuaiyi * feat(otlp-trace-exporters): Add User-Agent header to OTLP trace exporters. [#3790](https://github.com/open-telemetry/opentelemetry-js/pull/3790) @JamieDanielson diff --git a/experimental/packages/api-logs/src/types/LogRecord.ts b/experimental/packages/api-logs/src/types/LogRecord.ts index e1c1100c5f..59718aa30b 100644 --- a/experimental/packages/api-logs/src/types/LogRecord.ts +++ b/experimental/packages/api-logs/src/types/LogRecord.ts @@ -14,7 +14,12 @@ * limitations under the License. */ -import { Attributes, Context } from '@opentelemetry/api'; +import { AttributeValue, Context } from '@opentelemetry/api'; + +export type LogAttributeValue = AttributeValue | LogAttributes; +export interface LogAttributes { + [attributeKey: string]: LogAttributeValue | undefined; +} export enum SeverityNumber { UNSPECIFIED = 0, @@ -73,7 +78,7 @@ export interface LogRecord { /** * Attributes that define the log record. */ - attributes?: Attributes; + attributes?: LogAttributes; /** * The Context associated with the LogRecord. diff --git a/experimental/packages/api-logs/src/types/LoggerOptions.ts b/experimental/packages/api-logs/src/types/LoggerOptions.ts index a57d44a739..fdcedcb464 100644 --- a/experimental/packages/api-logs/src/types/LoggerOptions.ts +++ b/experimental/packages/api-logs/src/types/LoggerOptions.ts @@ -13,9 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - import { Attributes } from '@opentelemetry/api'; - export interface LoggerOptions { /** * The schemaUrl of the tracer or instrumentation library diff --git a/experimental/packages/otlp-transformer/package.json b/experimental/packages/otlp-transformer/package.json index 0935e42559..cc1e43642e 100644 --- a/experimental/packages/otlp-transformer/package.json +++ b/experimental/packages/otlp-transformer/package.json @@ -57,6 +57,7 @@ "devDependencies": { "@opentelemetry/api": "1.4.1", "@opentelemetry/api-logs": "0.39.1", + "@opentelemetry/sdk-logs": "0.39.1", "@types/mocha": "10.0.0", "@types/webpack-env": "1.16.3", "codecov": "3.8.3", diff --git a/experimental/packages/otlp-transformer/src/common/internal.ts b/experimental/packages/otlp-transformer/src/common/internal.ts index 5612b87ce9..0fe649f525 100644 --- a/experimental/packages/otlp-transformer/src/common/internal.ts +++ b/experimental/packages/otlp-transformer/src/common/internal.ts @@ -13,8 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import type { Attributes } from '@opentelemetry/api'; import type { IAnyValue, IKeyValue } from './types'; +import { Attributes } from '@opentelemetry/api'; export function toAttributes(attributes: Attributes): IKeyValue[] { return Object.keys(attributes).map(key => toKeyValue(key, attributes[key])); diff --git a/experimental/packages/otlp-transformer/src/logs/index.ts b/experimental/packages/otlp-transformer/src/logs/index.ts index 6fa4d11e86..c499476498 100644 --- a/experimental/packages/otlp-transformer/src/logs/index.ts +++ b/experimental/packages/otlp-transformer/src/logs/index.ts @@ -22,9 +22,11 @@ import { IResourceLogs, } from './types'; import { IResource } from '@opentelemetry/resources'; -import { toAnyValue, toAttributes } from '../common/internal'; +import { toAnyValue, toAttributes, toKeyValue } from '../common/internal'; import { hexToBase64, hrTimeToNanoseconds } from '@opentelemetry/core'; import { SeverityNumber } from '@opentelemetry/api-logs'; +import { IKeyValue } from '../common/types'; +import { LogAttributes } from '@opentelemetry/api-logs'; export function createExportLogsServiceRequest( logRecords: ReadableLogRecord[], @@ -97,7 +99,7 @@ function toLogRecord(log: ReadableLogRecord, useHex?: boolean): ILogRecord { severityNumber: toSeverityNumber(log.severityNumber), severityText: log.severityText, body: toAnyValue(log.body), - attributes: toAttributes(log.attributes), + attributes: toLogAttributes(log.attributes), droppedAttributesCount: 0, flags: log.spanContext?.traceFlags, traceId: useHex @@ -119,3 +121,7 @@ function optionalHexToBase64(str: string | undefined): string | undefined { if (str === undefined) return undefined; return hexToBase64(str); } + +export function toLogAttributes(attributes: LogAttributes): IKeyValue[] { + return Object.keys(attributes).map(key => toKeyValue(key, attributes[key])); +} diff --git a/experimental/packages/sdk-logs/package.json b/experimental/packages/sdk-logs/package.json index be9010f5a7..f4222cb545 100644 --- a/experimental/packages/sdk-logs/package.json +++ b/experimental/packages/sdk-logs/package.json @@ -69,7 +69,7 @@ "sideEffects": false, "peerDependencies": { "@opentelemetry/api": ">=1.4.0 <1.5.0", - "@opentelemetry/api-logs": ">=0.38.0" + "@opentelemetry/api-logs": ">=0.39.1" }, "devDependencies": { "@opentelemetry/api": ">=1.4.0 <1.5.0", diff --git a/experimental/packages/sdk-logs/src/LogRecord.ts b/experimental/packages/sdk-logs/src/LogRecord.ts index 9d3e909feb..d184004e6b 100644 --- a/experimental/packages/sdk-logs/src/LogRecord.ts +++ b/experimental/packages/sdk-logs/src/LogRecord.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { Attributes, AttributeValue, diag } from '@opentelemetry/api'; +import { AttributeValue, diag } from '@opentelemetry/api'; import type * as logsAPI from '@opentelemetry/api-logs'; import * as api from '@opentelemetry/api'; import { @@ -27,6 +27,7 @@ import type { IResource } from '@opentelemetry/resources'; import type { ReadableLogRecord } from './export/ReadableLogRecord'; import type { LogRecordLimits } from './types'; import { Logger } from './Logger'; +import { LogAttributes } from '@opentelemetry/api-logs'; export class LogRecord implements ReadableLogRecord { readonly hrTime: api.HrTime; @@ -34,7 +35,7 @@ export class LogRecord implements ReadableLogRecord { readonly spanContext?: api.SpanContext; readonly resource: IResource; readonly instrumentationScope: InstrumentationScope; - readonly attributes: Attributes = {}; + readonly attributes: logsAPI.LogAttributes = {}; private _severityText?: string; private _severityNumber?: logsAPI.SeverityNumber; private _body?: string; @@ -102,13 +103,20 @@ export class LogRecord implements ReadableLogRecord { this.setAttributes(attributes); } - public setAttribute(key: string, value?: AttributeValue) { + public setAttribute(key: string, value?: LogAttributes | AttributeValue) { if (this._isLogRecordReadonly()) { return this; } if (value === null) { return this; } + if ( + typeof value === 'object' && + !Array.isArray(value) && + Object.keys(value).length > 0 + ) { + this.attributes[key] = value; + } if (key.length === 0) { api.diag.warn(`Invalid attribute key: ${key}`); return this; @@ -128,7 +136,7 @@ export class LogRecord implements ReadableLogRecord { return this; } - public setAttributes(attributes: Attributes) { + public setAttributes(attributes: LogAttributes) { for (const [k, v] of Object.entries(attributes)) { this.setAttribute(k, v); } diff --git a/experimental/packages/sdk-logs/src/export/ReadableLogRecord.ts b/experimental/packages/sdk-logs/src/export/ReadableLogRecord.ts index 72fe7d1d35..a7eff21e2d 100644 --- a/experimental/packages/sdk-logs/src/export/ReadableLogRecord.ts +++ b/experimental/packages/sdk-logs/src/export/ReadableLogRecord.ts @@ -15,9 +15,9 @@ */ import type { IResource } from '@opentelemetry/resources'; -import type { Attributes, HrTime, SpanContext } from '@opentelemetry/api'; +import type { HrTime, SpanContext } from '@opentelemetry/api'; import type { InstrumentationScope } from '@opentelemetry/core'; -import type { SeverityNumber } from '@opentelemetry/api-logs'; +import type { LogAttributes, SeverityNumber } from '@opentelemetry/api-logs'; export interface ReadableLogRecord { readonly hrTime: HrTime; @@ -28,5 +28,5 @@ export interface ReadableLogRecord { readonly body?: string; readonly resource: IResource; readonly instrumentationScope: InstrumentationScope; - readonly attributes: Attributes; + readonly attributes: LogAttributes; } diff --git a/experimental/packages/sdk-logs/test/common/utils.ts b/experimental/packages/sdk-logs/test/common/utils.ts index fd801fc30d..80dc84e0c7 100644 --- a/experimental/packages/sdk-logs/test/common/utils.ts +++ b/experimental/packages/sdk-logs/test/common/utils.ts @@ -21,11 +21,12 @@ export const validAttributes = { 'array': ['str1', 'str2'], 'array': [1, 2], 'array': [true, false], + object: { bar: 'foo' }, }; export const invalidAttributes = { - // invalid attribute type object - object: { foo: 'bar' }, + // invalid attribute empty object + object: {}, // invalid attribute inhomogeneous array 'non-homogeneous-array': [0, ''], // This empty length attribute should not be set From 05bcd822a920fb1ccf2e4a27686196d54077f60a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=B2=92=E7=B2=92=E6=A9=99?= Date: Fri, 2 Jun 2023 14:18:27 +0800 Subject: [PATCH 02/71] fix: missing `entryPoints` in tsconfig.json (#3846) Co-authored-by: Marc Pichler --- tsconfig.json | 1 + 1 file changed, 1 insertion(+) diff --git a/tsconfig.json b/tsconfig.json index ce2c0e6a2a..7e90e75d2d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -28,6 +28,7 @@ "experimental/packages/otlp-proto-exporter-base", "experimental/packages/otlp-transformer", "experimental/packages/sdk-logs", + "experimental/packages/shim-opencensus", "packages/opentelemetry-context-async-hooks", "packages/opentelemetry-context-zone", "packages/opentelemetry-context-zone-peer-dep", From 1fc4ac652fcfedc67d1e6dbb1a22d345325baeee Mon Sep 17 00:00:00 2001 From: Abinet18 <35442169+Abinet18@users.noreply.github.com> Date: Fri, 2 Jun 2023 00:58:44 -0700 Subject: [PATCH 03/71] feat(exporter-logs-otlp-proto): implements protobuf exporter for logs (#3779) Co-authored-by: Marc Pichler --- experimental/CHANGELOG.md | 1 + .../exporter-logs-otlp-proto/.eslintignore | 1 + .../exporter-logs-otlp-proto/.eslintrc.js | 8 + .../exporter-logs-otlp-proto/.npmignore | 4 + .../packages/exporter-logs-otlp-proto/LICENSE | 201 +++++++++ .../exporter-logs-otlp-proto/README.md | 110 +++++ .../exporter-logs-otlp-proto/karma.conf.js | 26 ++ .../exporter-logs-otlp-proto/package.json | 95 ++++ .../exporter-logs-otlp-proto/src/index.ts | 16 + .../src/platform/browser/OTLPLogsExporter.ts | 76 ++++ .../src/platform/browser/index.ts | 16 + .../src/platform/index.ts | 16 + .../src/platform/node/OTLPLogsExporter.ts | 76 ++++ .../src/platform/node/index.ts | 17 + .../test/browser/OTLPLogsExporter.test.ts | 50 +++ .../test/browser/index-webpack.ts | 20 + .../test/logHelper.ts | 186 ++++++++ .../test/node/OTLPLogsExporter.test.ts | 416 ++++++++++++++++++ .../tsconfig.esm.json | 40 ++ .../tsconfig.esnext.json | 40 ++ .../exporter-logs-otlp-proto/tsconfig.json | 40 ++ .../browser/OTLPProtoExporterBrowserBase.ts | 21 +- .../src/platform/index.ts | 8 +- .../src/platform/node/index.ts | 2 +- .../src/platform/node/util.ts | 21 +- .../src/platform/types.ts | 1 + .../src/platform/util.ts | 39 ++ tsconfig.esm.json | 3 + tsconfig.esnext.json | 3 + tsconfig.json | 4 + 30 files changed, 1511 insertions(+), 46 deletions(-) create mode 100644 experimental/packages/exporter-logs-otlp-proto/.eslintignore create mode 100644 experimental/packages/exporter-logs-otlp-proto/.eslintrc.js create mode 100644 experimental/packages/exporter-logs-otlp-proto/.npmignore create mode 100644 experimental/packages/exporter-logs-otlp-proto/LICENSE create mode 100644 experimental/packages/exporter-logs-otlp-proto/README.md create mode 100644 experimental/packages/exporter-logs-otlp-proto/karma.conf.js create mode 100644 experimental/packages/exporter-logs-otlp-proto/package.json create mode 100644 experimental/packages/exporter-logs-otlp-proto/src/index.ts create mode 100644 experimental/packages/exporter-logs-otlp-proto/src/platform/browser/OTLPLogsExporter.ts create mode 100644 experimental/packages/exporter-logs-otlp-proto/src/platform/browser/index.ts create mode 100644 experimental/packages/exporter-logs-otlp-proto/src/platform/index.ts create mode 100644 experimental/packages/exporter-logs-otlp-proto/src/platform/node/OTLPLogsExporter.ts create mode 100644 experimental/packages/exporter-logs-otlp-proto/src/platform/node/index.ts create mode 100644 experimental/packages/exporter-logs-otlp-proto/test/browser/OTLPLogsExporter.test.ts create mode 100644 experimental/packages/exporter-logs-otlp-proto/test/browser/index-webpack.ts create mode 100644 experimental/packages/exporter-logs-otlp-proto/test/logHelper.ts create mode 100644 experimental/packages/exporter-logs-otlp-proto/test/node/OTLPLogsExporter.test.ts create mode 100644 experimental/packages/exporter-logs-otlp-proto/tsconfig.esm.json create mode 100644 experimental/packages/exporter-logs-otlp-proto/tsconfig.esnext.json create mode 100644 experimental/packages/exporter-logs-otlp-proto/tsconfig.json create mode 100644 experimental/packages/otlp-proto-exporter-base/src/platform/util.ts diff --git a/experimental/CHANGELOG.md b/experimental/CHANGELOG.md index f5dbfd2a8f..4935d9b83b 100644 --- a/experimental/CHANGELOG.md +++ b/experimental/CHANGELOG.md @@ -19,6 +19,7 @@ All notable changes to experimental packages in this project will be documented * feat(otlp-trace-exporters): Add User-Agent header to OTLP trace exporters. [#3790](https://github.com/open-telemetry/opentelemetry-js/pull/3790) @JamieDanielson * feat(otlp-metric-exporters): Add User-Agent header to OTLP metric exporters. [#3806](https://github.com/open-telemetry/opentelemetry-js/pull/3806) @JamieDanielson * feat(opencensus-shim): add OpenCensus trace shim [#3809](https://github.com/open-telemetry/opentelemetry-js/pull/3809) @aabmass +* feat(exporter-logs-otlp-proto): protobuf exporter for logs. [#3779](https://github.com/open-telemetry/opentelemetry-js/pull/3779) @Abinet18 ### :bug: (Bug Fix) diff --git a/experimental/packages/exporter-logs-otlp-proto/.eslintignore b/experimental/packages/exporter-logs-otlp-proto/.eslintignore new file mode 100644 index 0000000000..378eac25d3 --- /dev/null +++ b/experimental/packages/exporter-logs-otlp-proto/.eslintignore @@ -0,0 +1 @@ +build diff --git a/experimental/packages/exporter-logs-otlp-proto/.eslintrc.js b/experimental/packages/exporter-logs-otlp-proto/.eslintrc.js new file mode 100644 index 0000000000..3ed0fbeba3 --- /dev/null +++ b/experimental/packages/exporter-logs-otlp-proto/.eslintrc.js @@ -0,0 +1,8 @@ +module.exports = { + "env": { + "mocha": true, + "commonjs": true, + "node": true, + }, + ...require('../../../eslint.config.js') +} diff --git a/experimental/packages/exporter-logs-otlp-proto/.npmignore b/experimental/packages/exporter-logs-otlp-proto/.npmignore new file mode 100644 index 0000000000..9505ba9450 --- /dev/null +++ b/experimental/packages/exporter-logs-otlp-proto/.npmignore @@ -0,0 +1,4 @@ +/bin +/coverage +/doc +/test diff --git a/experimental/packages/exporter-logs-otlp-proto/LICENSE b/experimental/packages/exporter-logs-otlp-proto/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/experimental/packages/exporter-logs-otlp-proto/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/experimental/packages/exporter-logs-otlp-proto/README.md b/experimental/packages/exporter-logs-otlp-proto/README.md new file mode 100644 index 0000000000..3019f50d3f --- /dev/null +++ b/experimental/packages/exporter-logs-otlp-proto/README.md @@ -0,0 +1,110 @@ +# An OTLP exporter to send logs using protobuf over HTTP + +[![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 an exporter for OTLP (http/protobuf) logs using protocol version `v0.18`. + +## Installation + +```bash +npm install --save @opentelemetry/exporter-logs-otlp-proto +``` + +## Further Documentation + +To see documentation and sample code for the traces exporter, as well as instructions for using TLS, see the [exporter-trace-otlp-proto package][trace-exporter-url]. +To see documentation and sample code for the metric exporter, see the [exporter-trace-otlp-proto package][metrics-exporter-url]. + +## Example Setup + +```js +const { LoggerProvider, SimpleLogRecordProcessor } = require('@opentelemetry/sdk-logs'); +const { OTLPLogsExporter } = require('@opentelemetry/exporter-logs-otlp-proto'); + +const collectorOptions = { + url: '', // url is optional and can be omitted - default is http://localhost:4318/v1/logs + headers: { + foo: 'bar' + }, //an optional object containing custom headers to be sent with each request will only work with http +}; + +const logProvider = new LoggerProvider({resource: new Resource({'service.name': 'testApp'})}); +const logExporter = new OTLPLogsExporter(collectorOptions); +logProvider.addLogRecordProcessor(new SimpleLogRecordProcessor(exporter)); + +const logger = logProvider.getLogger('test_log_instrumentation'); + +logger.emit({ + //log data to emit +}) +``` + +## Exporter Timeout Configuration + +The OTLPLogsExporter has a timeout configuration option which is the maximum time, in milliseconds, the OTLP exporter will wait for each batch export. The default value is 10000ms. + +To override the default timeout duration, use the following options: + ++ Set with environment variables: + + | Environment variable | Description | +------------------------------|----------------------|-------------| + | OTEL_EXPORTER_OTLP_LOGS_TIMEOUT | The maximum waiting time, in milliseconds, allowed to send each OTLP trace batch. Default is 10000. | + | OTEL_EXPORTER_OTLP_TIMEOUT | The maximum waiting time, in milliseconds, allowed to send each OTLP trace and metric batch. Default is 10000. | + + > `OTEL_EXPORTER_OTLP_LOGS_TIMEOUT` takes precedence and overrides `OTEL_EXPORTER_OTLP_TIMEOUT`. + ++ Provide `timeoutMillis` to OTLPLogsExporter with `collectorOptions`: + + ```js + const collectorOptions = { + timeoutMillis: 15000, + url: '', // url is optional and can be omitted - default is http://localhost:4318/v1/logs + headers: { + foo: 'bar' + }, //an optional object containing custom headers to be sent with each request will only work with http + }; + + const exporter = new OTLPLogsExporter(collectorOptions); + ``` + + > Providing `timeoutMillis` with `collectorOptions` takes precedence and overrides timeout set with environment variables. + +## OTLP Exporter Retry + +OTLP requires that transient errors be handled with a [retry strategy](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md#retry). + +This retry policy has the following configuration, which there is currently no way to customize. + ++ `DEFAULT_EXPORT_MAX_ATTEMPTS`: The maximum number of attempts, including the original request. Defaults to 5. ++ `DEFAULT_EXPORT_INITIAL_BACKOFF`: The initial backoff duration. Defaults to 1 second. ++ `DEFAULT_EXPORT_MAX_BACKOFF`: The maximum backoff duration. Defaults to 5 seconds. ++ `DEFAULT_EXPORT_BACKOFF_MULTIPLIER`: The backoff multiplier. Defaults to 1.5. + +This retry policy first checks if the response has a `'Retry-After'` header. If there is a `'Retry-After'` header, the exporter will wait the amount specified in the `'Retry-After'` header before retrying. If there is no `'Retry-After'` header, the exporter will use an exponential backoff with jitter retry strategy. + + > The exporter will retry exporting within the [exporter timeout configuration](#Exporter-Timeout-Configuration) time. + +## 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/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/exporter-logs-otlp-proto +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fexporter-logs-otlp-proto.svg +[opentelemetry-collector-url]: https://github.com/open-telemetry/opentelemetry-collector +[semconv-resource-service-name]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#service +[logs-exporter-url]: https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-logs-otlp-proto +[trace-exporter-url]: https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/exporter-trace-otlp-proto +[metrics-exporter-url]: https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-proto diff --git a/experimental/packages/exporter-logs-otlp-proto/karma.conf.js b/experimental/packages/exporter-logs-otlp-proto/karma.conf.js new file mode 100644 index 0000000000..4c60b54edb --- /dev/null +++ b/experimental/packages/exporter-logs-otlp-proto/karma.conf.js @@ -0,0 +1,26 @@ +/*! + * 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 + * + * 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, + files: ['test/browser/index-webpack.ts'], + preprocessors: { 'test/browser/index-webpack.ts': ['webpack'] } + })) +}; diff --git a/experimental/packages/exporter-logs-otlp-proto/package.json b/experimental/packages/exporter-logs-otlp-proto/package.json new file mode 100644 index 0000000000..016ec13486 --- /dev/null +++ b/experimental/packages/exporter-logs-otlp-proto/package.json @@ -0,0 +1,95 @@ +{ + "name": "@opentelemetry/exporter-logs-otlp-proto", + "version": "0.39.1", + "description": "An OTLP exporter to send logs using protobuf over HTTP", + "main": "build/src/index.js", + "module": "build/esm/index.js", + "esnext": "build/esnext/index.js", + "types": "build/src/index.d.ts", + "repository": "open-telemetry/opentelemetry-js", + "browser": { + "./src/platform/index.ts": "./src/platform/browser/index.ts", + "./build/esm/platform/index.js": "./build/esm/platform/browser/index.js", + "./build/esnext/platform/index.js": "./build/esnext/platform/browser/index.js", + "./build/src/platform/index.js": "./build/src/platform/browser/index.js" + }, + "scripts": { + "prepublishOnly": "npm run compile", + "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "lint": "eslint . --ext .ts", + "lint:fix": "eslint . --ext .ts --fix", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts' --exclude 'test/browser/**/*.ts'", + "test:browser": "nyc karma start --single-run", + "version": "node ../../../scripts/version-update.js", + "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "prewatch": "npm run precompile", + "peer-api-check": "node ../../../scripts/peer-api-check.js", + "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../" + }, + "keywords": [ + "opentelemetry", + "nodejs", + "protobuf", + "tracing", + "profiling", + "metrics", + "stats", + "logs" + ], + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + }, + "files": [ + "build/esm/**/*.js", + "build/esm/**/*.js.map", + "build/esm/**/*.d.ts", + "build/esnext/**/*.js", + "build/esnext/**/*.js.map", + "build/esnext/**/*.d.ts", + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts", + "build/protos/**/*.proto", + "doc", + "LICENSE", + "README.md" + ], + "publishConfig": { + "access": "public" + }, + "devDependencies": { + "@babel/core": "7.16.0", + "@opentelemetry/api": "1.4.1", + "@types/mocha": "10.0.0", + "@types/node": "18.6.5", + "@types/sinon": "10.0.13", + "codecov": "3.8.3", + "cpx": "1.5.0", + "mocha": "10.0.0", + "nyc": "15.1.0", + "sinon": "15.0.0", + "ts-loader": "8.4.0", + "ts-mocha": "10.0.0", + "typescript": "4.4.4" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + }, + "dependencies": { + "@opentelemetry/core": "1.13.0", + "@opentelemetry/otlp-transformer": "0.39.1", + "@opentelemetry/resources": "1.13.0", + "@opentelemetry/sdk-trace-base": "1.13.0", + "@opentelemetry/api-logs": "^0.39.1", + "@opentelemetry/otlp-exporter-base": "0.39.1", + "@opentelemetry/otlp-proto-exporter-base": "0.39.1", + "@opentelemetry/sdk-logs": "^0.39.1" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-logs-otlp-proto", + "sideEffects": false +} diff --git a/experimental/packages/exporter-logs-otlp-proto/src/index.ts b/experimental/packages/exporter-logs-otlp-proto/src/index.ts new file mode 100644 index 0000000000..9fde4be45b --- /dev/null +++ b/experimental/packages/exporter-logs-otlp-proto/src/index.ts @@ -0,0 +1,16 @@ +/* + * 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 { OTLPLogsExporter } from './platform'; diff --git a/experimental/packages/exporter-logs-otlp-proto/src/platform/browser/OTLPLogsExporter.ts b/experimental/packages/exporter-logs-otlp-proto/src/platform/browser/OTLPLogsExporter.ts new file mode 100644 index 0000000000..185d5094f1 --- /dev/null +++ b/experimental/packages/exporter-logs-otlp-proto/src/platform/browser/OTLPLogsExporter.ts @@ -0,0 +1,76 @@ +/* + * 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 { getEnv, baggageUtils } from '@opentelemetry/core'; +import { + OTLPExporterConfigBase, + appendResourcePathToUrl, + appendRootPathToUrlIfNeeded, +} from '@opentelemetry/otlp-exporter-base'; +import { + OTLPProtoExporterBrowserBase, + ServiceClientType, +} from '@opentelemetry/otlp-proto-exporter-base'; +import { + createExportLogsServiceRequest, + IExportLogsServiceRequest, +} from '@opentelemetry/otlp-transformer'; + +import { ReadableLogRecord, LogRecordExporter } from '@opentelemetry/sdk-logs'; + +const DEFAULT_COLLECTOR_RESOURCE_PATH = 'v1/logs'; +const DEFAULT_COLLECTOR_URL = `http://localhost:4318/${DEFAULT_COLLECTOR_RESOURCE_PATH}`; + +/** + * Collector Trace Exporter for Web + */ +export class OTLPLogsExporter + extends OTLPProtoExporterBrowserBase< + ReadableLogRecord, + IExportLogsServiceRequest + > + implements LogRecordExporter +{ + constructor(config: OTLPExporterConfigBase = {}) { + super(config); + this._headers = Object.assign( + this._headers, + baggageUtils.parseKeyPairsIntoRecord( + getEnv().OTEL_EXPORTER_OTLP_LOGS_HEADERS + ) + ); + } + convert(logs: ReadableLogRecord[]): IExportLogsServiceRequest { + return createExportLogsServiceRequest(logs); + } + + getDefaultUrl(config: OTLPExporterConfigBase): string { + return typeof config.url === 'string' + ? config.url + : getEnv().OTEL_EXPORTER_OTLP_LOGS_ENDPOINT.length > 0 + ? appendRootPathToUrlIfNeeded(getEnv().OTEL_EXPORTER_OTLP_LOGS_ENDPOINT) + : getEnv().OTEL_EXPORTER_OTLP_ENDPOINT.length > 0 + ? appendResourcePathToUrl( + getEnv().OTEL_EXPORTER_OTLP_ENDPOINT, + DEFAULT_COLLECTOR_RESOURCE_PATH + ) + : DEFAULT_COLLECTOR_URL; + } + + getServiceClientType() { + return ServiceClientType.LOGS; + } +} diff --git a/experimental/packages/exporter-logs-otlp-proto/src/platform/browser/index.ts b/experimental/packages/exporter-logs-otlp-proto/src/platform/browser/index.ts new file mode 100644 index 0000000000..e6968b3466 --- /dev/null +++ b/experimental/packages/exporter-logs-otlp-proto/src/platform/browser/index.ts @@ -0,0 +1,16 @@ +/* + * 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 { OTLPLogsExporter } from './OTLPLogsExporter'; diff --git a/experimental/packages/exporter-logs-otlp-proto/src/platform/index.ts b/experimental/packages/exporter-logs-otlp-proto/src/platform/index.ts new file mode 100644 index 0000000000..851ff9a015 --- /dev/null +++ b/experimental/packages/exporter-logs-otlp-proto/src/platform/index.ts @@ -0,0 +1,16 @@ +/* + * 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 { OTLPLogsExporter } from './node'; diff --git a/experimental/packages/exporter-logs-otlp-proto/src/platform/node/OTLPLogsExporter.ts b/experimental/packages/exporter-logs-otlp-proto/src/platform/node/OTLPLogsExporter.ts new file mode 100644 index 0000000000..88d97e21d3 --- /dev/null +++ b/experimental/packages/exporter-logs-otlp-proto/src/platform/node/OTLPLogsExporter.ts @@ -0,0 +1,76 @@ +/* + * 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 { getEnv, baggageUtils } from '@opentelemetry/core'; +import { + OTLPExporterConfigBase, + appendResourcePathToUrl, + appendRootPathToUrlIfNeeded, +} from '@opentelemetry/otlp-exporter-base'; +import { + OTLPProtoExporterNodeBase, + ServiceClientType, +} from '@opentelemetry/otlp-proto-exporter-base'; +import { + createExportLogsServiceRequest, + IExportLogsServiceRequest, +} from '@opentelemetry/otlp-transformer'; + +import { ReadableLogRecord, LogRecordExporter } from '@opentelemetry/sdk-logs'; + +const DEFAULT_COLLECTOR_RESOURCE_PATH = 'v1/logs'; +const DEFAULT_COLLECTOR_URL = `http://localhost:4318/${DEFAULT_COLLECTOR_RESOURCE_PATH}`; + +/** + * Collector Trace Exporter for Node + */ +export class OTLPLogsExporter + extends OTLPProtoExporterNodeBase< + ReadableLogRecord, + IExportLogsServiceRequest + > + implements LogRecordExporter +{ + constructor(config: OTLPExporterConfigBase = {}) { + super(config); + this.headers = Object.assign( + this.headers, + baggageUtils.parseKeyPairsIntoRecord( + getEnv().OTEL_EXPORTER_OTLP_LOGS_HEADERS + ) + ); + } + convert(logs: ReadableLogRecord[]): IExportLogsServiceRequest { + return createExportLogsServiceRequest(logs); + } + + getDefaultUrl(config: OTLPExporterConfigBase): string { + return typeof config.url === 'string' + ? config.url + : getEnv().OTEL_EXPORTER_OTLP_LOGS_ENDPOINT.length > 0 + ? appendRootPathToUrlIfNeeded(getEnv().OTEL_EXPORTER_OTLP_LOGS_ENDPOINT) + : getEnv().OTEL_EXPORTER_OTLP_ENDPOINT.length > 0 + ? appendResourcePathToUrl( + getEnv().OTEL_EXPORTER_OTLP_ENDPOINT, + DEFAULT_COLLECTOR_RESOURCE_PATH + ) + : DEFAULT_COLLECTOR_URL; + } + + getServiceClientType() { + return ServiceClientType.LOGS; + } +} diff --git a/experimental/packages/exporter-logs-otlp-proto/src/platform/node/index.ts b/experimental/packages/exporter-logs-otlp-proto/src/platform/node/index.ts new file mode 100644 index 0000000000..4797b30651 --- /dev/null +++ b/experimental/packages/exporter-logs-otlp-proto/src/platform/node/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 { OTLPLogsExporter } from './OTLPLogsExporter'; diff --git a/experimental/packages/exporter-logs-otlp-proto/test/browser/OTLPLogsExporter.test.ts b/experimental/packages/exporter-logs-otlp-proto/test/browser/OTLPLogsExporter.test.ts new file mode 100644 index 0000000000..382a132c3e --- /dev/null +++ b/experimental/packages/exporter-logs-otlp-proto/test/browser/OTLPLogsExporter.test.ts @@ -0,0 +1,50 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import * as assert from 'assert'; +import * as sinon from 'sinon'; +import { OTLPLogsExporter } from '../../src/platform/browser/index'; + +describe('OTLPLogsExporter - web', () => { + let collectorLogsExporter: OTLPLogsExporter; + describe('constructor', () => { + let onInitSpy: any; + beforeEach(() => { + onInitSpy = sinon.stub(OTLPLogsExporter.prototype, 'onInit'); + const collectorExporterConfig = { + hostname: 'foo', + url: 'http://foo.bar.com', + }; + collectorLogsExporter = new OTLPLogsExporter(collectorExporterConfig); + }); + afterEach(() => { + sinon.restore(); + }); + it('should create an instance', () => { + assert.ok(typeof collectorLogsExporter !== 'undefined'); + }); + it('should call onInit', () => { + assert.strictEqual(onInitSpy.callCount, 1); + }); + it('should set hostname', () => { + assert.strictEqual(collectorLogsExporter.hostname, 'foo'); + }); + + it('should set url', () => { + assert.strictEqual(collectorLogsExporter.url, 'http://foo.bar.com'); + }); + }); +}); diff --git a/experimental/packages/exporter-logs-otlp-proto/test/browser/index-webpack.ts b/experimental/packages/exporter-logs-otlp-proto/test/browser/index-webpack.ts new file mode 100644 index 0000000000..ae7d4b5a9d --- /dev/null +++ b/experimental/packages/exporter-logs-otlp-proto/test/browser/index-webpack.ts @@ -0,0 +1,20 @@ +/* + * 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('../browser', true, /test$/); +testsContext.keys().forEach(testsContext); + +const srcContext = require.context('.', true, /src$/); +srcContext.keys().forEach(srcContext); diff --git a/experimental/packages/exporter-logs-otlp-proto/test/logHelper.ts b/experimental/packages/exporter-logs-otlp-proto/test/logHelper.ts new file mode 100644 index 0000000000..7b8c8e8b9a --- /dev/null +++ b/experimental/packages/exporter-logs-otlp-proto/test/logHelper.ts @@ -0,0 +1,186 @@ +/* + * 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 { HrTime, TraceFlags } from '@opentelemetry/api'; +import { SeverityNumber } from '@opentelemetry/api-logs'; +import { Resource } from '@opentelemetry/resources'; +import * as assert from 'assert'; +import { VERSION } from '@opentelemetry/core'; +import { + IAnyValue, + IExportLogsServiceRequest, + IKeyValue, + ILogRecord, + IResource, +} from '@opentelemetry/otlp-transformer'; +import { ReadableLogRecord } from '@opentelemetry/sdk-logs'; +import { Stream } from 'stream'; + +export const mockedReadableLogRecord: ReadableLogRecord = { + resource: Resource.default().merge( + new Resource({ + 'resource-attribute': 'some resource-attr value', + }) + ), + instrumentationScope: { + name: 'scope_name_1', + version: '0.1.0', + schemaUrl: 'http://url.to.schema', + }, + hrTime: [1680253513, 123241635] as HrTime, + hrTimeObserved: [1680253513, 123241635] as HrTime, + attributes: { + 'some-attribute': 'some attribute value', + }, + severityNumber: SeverityNumber.ERROR, + severityText: 'error', + body: 'some_log_body', + spanContext: { + traceFlags: TraceFlags.SAMPLED, + traceId: '1f1008dc8e270e85c40a0d7c3939b278', + spanId: '5e107261f64fa53e', + }, +}; +export function ensureExportedAttributesAreCorrect(attributes: IKeyValue[]) { + assert.deepStrictEqual( + attributes, + [ + { + key: 'some-attribute', + value: { + stringValue: 'some attribute value', + }, + }, + ], + 'exported attributes are incorrect' + ); +} + +export function ensureExportedBodyIsCorrect(body?: IAnyValue) { + assert.deepStrictEqual( + body, + { stringValue: 'some_log_body' }, + 'exported attributes are incorrect' + ); +} + +export function ensureExportedLogRecordIsCorrect(logRecord: ILogRecord) { + ensureExportedBodyIsCorrect(logRecord.body); + ensureExportedAttributesAreCorrect(logRecord.attributes); + assert.strictEqual( + logRecord.timeUnixNano, + '1680253513123241728', + 'timeUnixNano is wrong' + ); + assert.strictEqual( + logRecord.observedTimeUnixNano, + '1680253513123241728', + 'observedTimeUnixNano is wrong' + ); + assert.strictEqual( + logRecord.severityNumber, + 'SEVERITY_NUMBER_ERROR', + 'severityNumber is wrong' + ); + assert.strictEqual(logRecord.severityText, 'error', 'severityText is wrong'); + assert.strictEqual( + logRecord.droppedAttributesCount, + 0, + 'droppedAttributesCount is wrong' + ); + assert.strictEqual(logRecord.flags, TraceFlags.SAMPLED, 'flags is wrong'); +} + +export function ensureResourceIsCorrect(resource: IResource) { + assert.deepStrictEqual(resource, { + attributes: [ + { + key: 'service.name', + value: { + stringValue: `unknown_service:${process.argv0}`, + value: 'stringValue', + }, + }, + { + key: 'telemetry.sdk.language', + value: { + stringValue: 'nodejs', + value: 'stringValue', + }, + }, + { + key: 'telemetry.sdk.name', + value: { + stringValue: 'opentelemetry', + value: 'stringValue', + }, + }, + { + key: 'telemetry.sdk.version', + value: { + stringValue: VERSION, + value: 'stringValue', + }, + }, + { + key: 'resource-attribute', + value: { + stringValue: 'some resource-attr value', + value: 'stringValue', + }, + }, + ], + droppedAttributesCount: 0, + }); +} + +export function ensureExportLogsServiceRequestIsSet( + json: IExportLogsServiceRequest +) { + const resourceLogs = json.resourceLogs; + assert.strictEqual(resourceLogs?.length, 1, 'resourceLogs is missing'); + + const resource = resourceLogs?.[0].resource; + assert.ok(resource, 'resource is missing'); + + const scopeLogs = resourceLogs?.[0].scopeLogs; + assert.strictEqual(scopeLogs?.length, 1, 'scopeLogs is missing'); + + const scope = scopeLogs?.[0].scope; + assert.ok(scope, 'scope is missing'); + + const logRecords = scopeLogs?.[0].logRecords; + assert.strictEqual(logRecords?.length, 1, 'logs are missing'); +} + +export class MockedResponse extends Stream { + constructor(private _code: number, private _msg?: string) { + super(); + } + + send(data: string) { + this.emit('data', data); + this.emit('end'); + } + + get statusCode() { + return this._code; + } + + get statusMessage() { + return this._msg; + } +} diff --git a/experimental/packages/exporter-logs-otlp-proto/test/node/OTLPLogsExporter.test.ts b/experimental/packages/exporter-logs-otlp-proto/test/node/OTLPLogsExporter.test.ts new file mode 100644 index 0000000000..994a2f0ea4 --- /dev/null +++ b/experimental/packages/exporter-logs-otlp-proto/test/node/OTLPLogsExporter.test.ts @@ -0,0 +1,416 @@ +/* + * 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 { diag } from '@opentelemetry/api'; +import { ExportResultCode } from '@opentelemetry/core'; +import * as assert from 'assert'; +import * as http from 'http'; +import * as sinon from 'sinon'; +import { Stream, PassThrough } from 'stream'; +import * as zlib from 'zlib'; +import { OTLPLogsExporter } from '../../src'; +import { + ensureExportLogsServiceRequestIsSet, + ensureExportedLogRecordIsCorrect, + mockedReadableLogRecord, + MockedResponse, +} from '../logHelper'; +import { + CompressionAlgorithm, + OTLPExporterNodeConfigBase, + OTLPExporterError, +} from '@opentelemetry/otlp-exporter-base'; +import { + getExportRequestProto, + ServiceClientType, +} from '@opentelemetry/otlp-proto-exporter-base'; +import { IExportLogsServiceRequest } from '@opentelemetry/otlp-transformer'; +import { ReadableLogRecord } from '@opentelemetry/sdk-logs'; + +let fakeRequest: PassThrough; + +describe('OTLPLogsExporter - node with proto over http', () => { + let collectorExporter: OTLPLogsExporter; + let collectorExporterConfig: OTLPExporterNodeConfigBase; + let logs: ReadableLogRecord[]; + + afterEach(() => { + fakeRequest = new Stream.PassThrough(); + sinon.restore(); + }); + + describe('when configuring via environment', () => { + const envSource = process.env; + it('should use url defined in env that ends with root path and append version and signal path', () => { + envSource.OTEL_EXPORTER_OTLP_ENDPOINT = 'http://foo.bar/'; + const collectorExporter = new OTLPLogsExporter(); + assert.strictEqual( + collectorExporter.url, + `${envSource.OTEL_EXPORTER_OTLP_ENDPOINT}v1/logs` + ); + envSource.OTEL_EXPORTER_OTLP_ENDPOINT = ''; + }); + it('should use url defined in env without checking if path is already present', () => { + envSource.OTEL_EXPORTER_OTLP_ENDPOINT = 'http://foo.bar/v1/logs'; + const collectorExporter = new OTLPLogsExporter(); + assert.strictEqual( + collectorExporter.url, + `${envSource.OTEL_EXPORTER_OTLP_ENDPOINT}/v1/logs` + ); + envSource.OTEL_EXPORTER_OTLP_ENDPOINT = ''; + }); + it('should use url defined in env and append version and signal', () => { + envSource.OTEL_EXPORTER_OTLP_ENDPOINT = 'http://foo.bar'; + const collectorExporter = new OTLPLogsExporter(); + assert.strictEqual( + collectorExporter.url, + `${envSource.OTEL_EXPORTER_OTLP_ENDPOINT}/v1/logs` + ); + envSource.OTEL_EXPORTER_OTLP_ENDPOINT = ''; + }); + it('should override global exporter url with signal url defined in env', () => { + envSource.OTEL_EXPORTER_OTLP_ENDPOINT = 'http://foo.bar/'; + envSource.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT = 'http://foo.logs/'; + const collectorExporter = new OTLPLogsExporter(); + assert.strictEqual( + collectorExporter.url, + envSource.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT + ); + envSource.OTEL_EXPORTER_OTLP_ENDPOINT = ''; + envSource.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT = ''; + }); + it('should add root path when signal url defined in env contains no path and no root path', () => { + envSource.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT = 'http://foo.bar'; + const collectorExporter = new OTLPLogsExporter(); + assert.strictEqual( + collectorExporter.url, + `${envSource.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT}/` + ); + envSource.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT = ''; + }); + it('should not add root path when signal url defined in env contains root path but no path', () => { + envSource.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT = 'http://foo.bar/'; + const collectorExporter = new OTLPLogsExporter(); + assert.strictEqual( + collectorExporter.url, + `${envSource.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT}` + ); + envSource.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT = ''; + }); + it('should not add root path when signal url defined in env contains path', () => { + envSource.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT = 'http://foo.bar/v1/logs'; + const collectorExporter = new OTLPLogsExporter(); + assert.strictEqual( + collectorExporter.url, + `${envSource.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT}` + ); + envSource.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT = ''; + }); + it('should not add root path when signal url defined in env contains path and ends in /', () => { + envSource.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT = 'http://foo.bar/v1/logs/'; + const collectorExporter = new OTLPLogsExporter(); + assert.strictEqual( + collectorExporter.url, + `${envSource.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT}` + ); + envSource.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT = ''; + }); + it('should use headers defined via env', () => { + envSource.OTEL_EXPORTER_OTLP_LOGS_HEADERS = 'foo=bar'; + const collectorExporter = new OTLPLogsExporter(); + assert.strictEqual(collectorExporter.headers.foo, 'bar'); + envSource.OTEL_EXPORTER_OTLP_HEADERS = ''; + }); + it('should override global headers config with signal headers defined via env', () => { + envSource.OTEL_EXPORTER_OTLP_HEADERS = 'foo=bar,bar=foo'; + envSource.OTEL_EXPORTER_OTLP_LOGS_HEADERS = 'foo=boo'; + const collectorExporter = new OTLPLogsExporter(); + assert.strictEqual(collectorExporter.headers.foo, 'boo'); + assert.strictEqual(collectorExporter.headers.bar, 'foo'); + envSource.OTEL_EXPORTER_OTLP_LOGS_HEADERS = ''; + envSource.OTEL_EXPORTER_OTLP_HEADERS = ''; + }); + }); + + describe('export', () => { + beforeEach(() => { + collectorExporterConfig = { + headers: { + foo: 'bar', + }, + hostname: 'foo', + url: 'http://foo.bar.com', + keepAlive: true, + httpAgentOptions: { keepAliveMsecs: 2000 }, + }; + collectorExporter = new OTLPLogsExporter(collectorExporterConfig); + logs = []; + logs.push(Object.assign({}, mockedReadableLogRecord)); + }); + afterEach(() => { + sinon.restore(); + }); + + it('should open the connection', done => { + collectorExporter.export(logs, () => {}); + + sinon.stub(http, 'request').callsFake((options: any, cb: any) => { + assert.strictEqual(options.hostname, 'foo.bar.com'); + assert.strictEqual(options.method, 'POST'); + assert.strictEqual(options.path, '/'); + + const mockRes = new MockedResponse(200); + cb(mockRes); + mockRes.send('success'); + done(); + return fakeRequest as any; + }); + }); + + it('should set custom headers', done => { + collectorExporter.export(logs, () => {}); + + sinon.stub(http, 'request').callsFake((options: any, cb: any) => { + assert.strictEqual(options.headers['foo'], 'bar'); + + const mockRes = new MockedResponse(200); + cb(mockRes); + mockRes.send('success'); + done(); + return fakeRequest as any; + }); + }); + + it('should have keep alive and keepAliveMsecs option set', done => { + collectorExporter.export(logs, () => {}); + + sinon.stub(http, 'request').callsFake((options: any, cb: any) => { + assert.strictEqual(options.agent.keepAlive, true); + assert.strictEqual(options.agent.options.keepAliveMsecs, 2000); + + const mockRes = new MockedResponse(200); + cb(mockRes); + mockRes.send('success'); + done(); + return fakeRequest as any; + }); + }); + + it('should successfully send the logs', done => { + const fakeRequest = new Stream.PassThrough(); + sinon.stub(http, 'request').returns(fakeRequest as any); + + let buff = Buffer.from(''); + fakeRequest.on('end', () => { + const ExportLogsServiceRequestProto = getExportRequestProto( + ServiceClientType.LOGS + ); + const data = ExportLogsServiceRequestProto.decode(buff); + const json = data?.toJSON() as IExportLogsServiceRequest; + const log1 = json.resourceLogs?.[0].scopeLogs?.[0].logRecords?.[0]; + assert.ok(typeof log1 !== 'undefined', "log doesn't exist"); + ensureExportedLogRecordIsCorrect(log1); + + ensureExportLogsServiceRequestIsSet(json); + + done(); + }); + + fakeRequest.on('data', chunk => { + buff = Buffer.concat([buff, chunk]); + }); + + const clock = sinon.useFakeTimers(); + collectorExporter.export(logs, () => {}); + clock.tick(200); + clock.restore(); + }); + + it('should log the successful message', done => { + // Need to stub/spy on the underlying logger as the "diag" instance is global + const spyLoggerError = sinon.stub(diag, 'error'); + + collectorExporter.export(logs, result => { + assert.strictEqual(result.code, ExportResultCode.SUCCESS); + assert.strictEqual(spyLoggerError.args.length, 0); + done(); + }); + + sinon.stub(http, 'request').callsFake((options: any, cb: any) => { + const mockRes = new MockedResponse(200); + cb(mockRes); + mockRes.send('success'); + return fakeRequest as any; + }); + }); + + it('should log the error message', done => { + collectorExporter.export(logs, result => { + assert.strictEqual(result.code, ExportResultCode.FAILED); + // @ts-expect-error verify error code + assert.strictEqual(result.error.code, 400); + done(); + }); + + sinon.stub(http, 'request').callsFake((options: any, cb: any) => { + const mockResError = new MockedResponse(400); + cb(mockResError); + mockResError.send('failed'); + + return fakeRequest as any; + }); + }); + }); + describe('export - with compression', () => { + beforeEach(() => { + collectorExporterConfig = { + headers: { + foo: 'bar', + }, + hostname: 'foo', + url: 'http://foo.bar.com', + keepAlive: true, + compression: CompressionAlgorithm.GZIP, + httpAgentOptions: { keepAliveMsecs: 2000 }, + }; + collectorExporter = new OTLPLogsExporter(collectorExporterConfig); + logs = []; + logs.push(Object.assign({}, mockedReadableLogRecord)); + }); + afterEach(() => { + sinon.restore(); + }); + + it('should successfully send the logs', done => { + const fakeRequest = new Stream.PassThrough(); + sinon.stub(http, 'request').returns(fakeRequest as any); + const spySetHeader = sinon.spy(); + (fakeRequest as any).setHeader = spySetHeader; + + let buff = Buffer.from(''); + fakeRequest.on('end', () => { + const unzippedBuff = zlib.gunzipSync(buff); + const ExportLogsServiceRequestProto = getExportRequestProto( + ServiceClientType.LOGS + ); + const data = ExportLogsServiceRequestProto.decode(unzippedBuff); + const json = data?.toJSON() as IExportLogsServiceRequest; + const log1 = json.resourceLogs?.[0].scopeLogs?.[0].logRecords?.[0]; + assert.ok(typeof log1 !== 'undefined', "log doesn't exist"); + ensureExportedLogRecordIsCorrect(log1); + + ensureExportLogsServiceRequestIsSet(json); + assert.ok(spySetHeader.calledWith('Content-Encoding', 'gzip')); + + done(); + }); + + fakeRequest.on('data', chunk => { + buff = Buffer.concat([buff, chunk]); + }); + + const clock = sinon.useFakeTimers(); + collectorExporter.export(logs, () => {}); + clock.tick(200); + clock.restore(); + }); + }); +}); + +describe('export - real http request destroyed before response received', () => { + let collectorExporter: OTLPLogsExporter; + let collectorExporterConfig: OTLPExporterNodeConfigBase; + let logs: ReadableLogRecord[]; + const server = http.createServer((_, res) => { + setTimeout(() => { + res.statusCode = 200; + res.end(); + }, 200); + }); + before(done => { + server.listen(8082, done); + }); + after(done => { + server.close(done); + }); + it('should log the timeout request error message when timeout is 1', done => { + collectorExporterConfig = { + url: 'http://localhost:8082', + timeoutMillis: 1, + }; + collectorExporter = new OTLPLogsExporter(collectorExporterConfig); + logs = []; + logs.push(Object.assign({}, mockedReadableLogRecord)); + + collectorExporter.export(logs, result => { + assert.strictEqual(result.code, ExportResultCode.FAILED); + const error = result.error as OTLPExporterError; + assert.ok(error !== undefined); + assert.strictEqual(error.message, 'Request Timeout'); + done(); + }); + }); + it('should log the timeout request error message when timeout is 100', done => { + collectorExporterConfig = { + url: 'http://localhost:8082', + timeoutMillis: 100, + }; + collectorExporter = new OTLPLogsExporter(collectorExporterConfig); + logs = []; + logs.push(Object.assign({}, mockedReadableLogRecord)); + + collectorExporter.export(logs, result => { + assert.strictEqual(result.code, ExportResultCode.FAILED); + const error = result.error as OTLPExporterError; + assert.ok(error !== undefined); + assert.strictEqual(error.message, 'Request Timeout'); + done(); + }); + }); +}); + +describe('export - real http request destroyed after response received', () => { + let collectorExporter: OTLPLogsExporter; + let collectorExporterConfig: OTLPExporterNodeConfigBase; + let logs: ReadableLogRecord[]; + + const server = http.createServer((_, res) => { + res.write('writing something'); + }); + before(done => { + server.listen(8082, done); + }); + after(done => { + server.close(done); + }); + it('should log the timeout request error message', done => { + collectorExporterConfig = { + url: 'http://localhost:8082', + timeoutMillis: 300, + }; + collectorExporter = new OTLPLogsExporter(collectorExporterConfig); + logs = []; + logs.push(Object.assign({}, mockedReadableLogRecord)); + + collectorExporter.export(logs, result => { + assert.strictEqual(result.code, ExportResultCode.FAILED); + const error = result.error as OTLPExporterError; + assert.ok(error !== undefined); + assert.strictEqual(error.message, 'Request Timeout'); + done(); + }); + }); +}); diff --git a/experimental/packages/exporter-logs-otlp-proto/tsconfig.esm.json b/experimental/packages/exporter-logs-otlp-proto/tsconfig.esm.json new file mode 100644 index 0000000000..5eba4694be --- /dev/null +++ b/experimental/packages/exporter-logs-otlp-proto/tsconfig.esm.json @@ -0,0 +1,40 @@ +{ + "extends": "../../../tsconfig.base.esm.json", + "compilerOptions": { + "outDir": "build/esm", + "rootDir": "src", + "tsBuildInfoFile": "build/esm/tsconfig.esm.tsbuildinfo" + }, + "include": [ + "src/**/*.ts" + ], + "references": [ + { + "path": "../../../api" + }, + { + "path": "../../../packages/opentelemetry-core" + }, + { + "path": "../../../packages/opentelemetry-resources" + }, + { + "path": "../../../packages/opentelemetry-sdk-trace-base" + }, + { + "path": "../api-logs" + }, + { + "path": "../otlp-exporter-base" + }, + { + "path": "../otlp-proto-exporter-base" + }, + { + "path": "../otlp-transformer" + }, + { + "path": "../sdk-logs" + } + ] +} diff --git a/experimental/packages/exporter-logs-otlp-proto/tsconfig.esnext.json b/experimental/packages/exporter-logs-otlp-proto/tsconfig.esnext.json new file mode 100644 index 0000000000..b37520a70f --- /dev/null +++ b/experimental/packages/exporter-logs-otlp-proto/tsconfig.esnext.json @@ -0,0 +1,40 @@ +{ + "extends": "../../../tsconfig.base.esnext.json", + "compilerOptions": { + "outDir": "build/esnext", + "rootDir": "src", + "tsBuildInfoFile": "build/esnext/tsconfig.esnext.tsbuildinfo" + }, + "include": [ + "src/**/*.ts" + ], + "references": [ + { + "path": "../../../api" + }, + { + "path": "../../../packages/opentelemetry-core" + }, + { + "path": "../../../packages/opentelemetry-resources" + }, + { + "path": "../../../packages/opentelemetry-sdk-trace-base" + }, + { + "path": "../api-logs" + }, + { + "path": "../otlp-exporter-base" + }, + { + "path": "../otlp-proto-exporter-base" + }, + { + "path": "../otlp-transformer" + }, + { + "path": "../sdk-logs" + } + ] +} diff --git a/experimental/packages/exporter-logs-otlp-proto/tsconfig.json b/experimental/packages/exporter-logs-otlp-proto/tsconfig.json new file mode 100644 index 0000000000..2349f8706c --- /dev/null +++ b/experimental/packages/exporter-logs-otlp-proto/tsconfig.json @@ -0,0 +1,40 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "build", + "rootDir": "." + }, + "include": [ + "src/**/*.ts", + "test/**/*.ts" + ], + "references": [ + { + "path": "../../../api" + }, + { + "path": "../../../packages/opentelemetry-core" + }, + { + "path": "../../../packages/opentelemetry-resources" + }, + { + "path": "../../../packages/opentelemetry-sdk-trace-base" + }, + { + "path": "../api-logs" + }, + { + "path": "../otlp-exporter-base" + }, + { + "path": "../otlp-proto-exporter-base" + }, + { + "path": "../otlp-transformer" + }, + { + "path": "../sdk-logs" + } + ] +} diff --git a/experimental/packages/otlp-proto-exporter-base/src/platform/browser/OTLPProtoExporterBrowserBase.ts b/experimental/packages/otlp-proto-exporter-base/src/platform/browser/OTLPProtoExporterBrowserBase.ts index 4e9f95d5c0..34c80d6e82 100644 --- a/experimental/packages/otlp-proto-exporter-base/src/platform/browser/OTLPProtoExporterBrowserBase.ts +++ b/experimental/packages/otlp-proto-exporter-base/src/platform/browser/OTLPProtoExporterBrowserBase.ts @@ -22,13 +22,8 @@ import { OTLPExporterConfigBase, sendWithXhr, } from '@opentelemetry/otlp-exporter-base'; -import * as root from '../../generated/root'; -interface ExportRequestType unknown }> { - create(properties?: T): R; - encode(message: T, writer?: protobuf.Writer): protobuf.Writer; - decode(reader: protobuf.Reader | Uint8Array, length?: number): R; -} +import { getExportRequestProto } from '../util'; /** * Collector Exporter abstract base class @@ -41,18 +36,6 @@ export abstract class OTLPProtoExporterBrowserBase< super(config); } - private _getExportRequestProto( - clientType: ServiceClientType - ): ExportRequestType { - if (clientType === ServiceClientType.SPANS) { - // eslint-disable-next-line - return root.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest as unknown as ExportRequestType; - } else { - // eslint-disable-next-line - return root.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest as unknown as ExportRequestType; - } - } - override send( objects: ExportItem[], onSuccess: () => void, @@ -64,7 +47,7 @@ export abstract class OTLPProtoExporterBrowserBase< } const serviceRequest = this.convert(objects); - const exportRequestType = this._getExportRequestProto( + const exportRequestType = getExportRequestProto( this.getServiceClientType() ); const message = exportRequestType.create(serviceRequest); diff --git a/experimental/packages/otlp-proto-exporter-base/src/platform/index.ts b/experimental/packages/otlp-proto-exporter-base/src/platform/index.ts index 22efeb0309..fc344756ea 100644 --- a/experimental/packages/otlp-proto-exporter-base/src/platform/index.ts +++ b/experimental/packages/otlp-proto-exporter-base/src/platform/index.ts @@ -14,11 +14,7 @@ * limitations under the License. */ -export { - OTLPProtoExporterNodeBase, - ExportRequestType, - getExportRequestProto, - send, -} from './node'; +export { OTLPProtoExporterNodeBase, send } from './node'; export { OTLPProtoExporterBrowserBase } from './browser'; export { ServiceClientType } from './types'; +export { ExportRequestType, getExportRequestProto } from './util'; diff --git a/experimental/packages/otlp-proto-exporter-base/src/platform/node/index.ts b/experimental/packages/otlp-proto-exporter-base/src/platform/node/index.ts index c9c84bdac3..08016fec93 100644 --- a/experimental/packages/otlp-proto-exporter-base/src/platform/node/index.ts +++ b/experimental/packages/otlp-proto-exporter-base/src/platform/node/index.ts @@ -15,4 +15,4 @@ */ export { OTLPProtoExporterNodeBase } from './OTLPProtoExporterNodeBase'; -export { ExportRequestType, getExportRequestProto, send } from './util'; +export { send } from './util'; diff --git a/experimental/packages/otlp-proto-exporter-base/src/platform/node/util.ts b/experimental/packages/otlp-proto-exporter-base/src/platform/node/util.ts index 5cdbfa396d..36fe866d67 100644 --- a/experimental/packages/otlp-proto-exporter-base/src/platform/node/util.ts +++ b/experimental/packages/otlp-proto-exporter-base/src/platform/node/util.ts @@ -14,33 +14,14 @@ * limitations under the License. */ -import { ServiceClientType } from '../types'; import { OTLPProtoExporterNodeBase } from './OTLPProtoExporterNodeBase'; import { CompressionAlgorithm, OTLPExporterError, sendWithHttp, } from '@opentelemetry/otlp-exporter-base'; -import type * as protobuf from 'protobufjs'; -import * as root from '../../generated/root'; -export interface ExportRequestType unknown }> { - create(properties?: T): R; - encode(message: T, writer?: protobuf.Writer): protobuf.Writer; - decode(reader: protobuf.Reader | Uint8Array, length?: number): R; -} - -export function getExportRequestProto( - clientType: ServiceClientType -): ExportRequestType { - if (clientType === ServiceClientType.SPANS) { - return root.opentelemetry.proto.collector.trace.v1 - .ExportTraceServiceRequest as unknown as ExportRequestType; - } else { - return root.opentelemetry.proto.collector.metrics.v1 - .ExportMetricsServiceRequest as unknown as ExportRequestType; - } -} +import { getExportRequestProto } from '../util'; export function send( collector: OTLPProtoExporterNodeBase, diff --git a/experimental/packages/otlp-proto-exporter-base/src/platform/types.ts b/experimental/packages/otlp-proto-exporter-base/src/platform/types.ts index 389cfb1f52..b15ad36abc 100644 --- a/experimental/packages/otlp-proto-exporter-base/src/platform/types.ts +++ b/experimental/packages/otlp-proto-exporter-base/src/platform/types.ts @@ -17,4 +17,5 @@ export enum ServiceClientType { SPANS, METRICS, + LOGS, } diff --git a/experimental/packages/otlp-proto-exporter-base/src/platform/util.ts b/experimental/packages/otlp-proto-exporter-base/src/platform/util.ts new file mode 100644 index 0000000000..c6e1272816 --- /dev/null +++ b/experimental/packages/otlp-proto-exporter-base/src/platform/util.ts @@ -0,0 +1,39 @@ +/* + * 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 root from '../generated/root'; +import { ServiceClientType } from './types'; + +export interface ExportRequestType unknown }> { + create(properties?: T): R; + encode(message: T, writer?: protobuf.Writer): protobuf.Writer; + decode(reader: protobuf.Reader | Uint8Array, length?: number): R; +} + +export function getExportRequestProto( + clientType: ServiceClientType +): ExportRequestType { + if (clientType === ServiceClientType.SPANS) { + return root.opentelemetry.proto.collector.trace.v1 + .ExportTraceServiceRequest as unknown as ExportRequestType; + } else if (clientType === ServiceClientType.LOGS) { + return root.opentelemetry.proto.collector.logs.v1 + .ExportLogsServiceRequest as unknown as ExportRequestType; + } else { + return root.opentelemetry.proto.collector.metrics.v1 + .ExportMetricsServiceRequest as unknown as ExportRequestType; + } +} diff --git a/tsconfig.esm.json b/tsconfig.esm.json index e10c926214..2fec210b9a 100644 --- a/tsconfig.esm.json +++ b/tsconfig.esm.json @@ -14,6 +14,9 @@ { "path": "experimental/packages/exporter-logs-otlp-http/tsconfig.esm.json" }, + { + "path": "experimental/packages/exporter-logs-otlp-proto/tsconfig.esm.json" + }, { "path": "experimental/packages/exporter-trace-otlp-http/tsconfig.esm.json" }, diff --git a/tsconfig.esnext.json b/tsconfig.esnext.json index 507c4d4309..c5970c9c5c 100644 --- a/tsconfig.esnext.json +++ b/tsconfig.esnext.json @@ -14,6 +14,9 @@ { "path": "experimental/packages/exporter-logs-otlp-http/tsconfig.esnext.json" }, + { + "path": "experimental/packages/exporter-logs-otlp-proto/tsconfig.esnext.json" + }, { "path": "experimental/packages/exporter-trace-otlp-http/tsconfig.esnext.json" }, diff --git a/tsconfig.json b/tsconfig.json index 7e90e75d2d..acf7329087 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,6 +9,7 @@ "experimental/packages/api-logs", "experimental/packages/exporter-logs-otlp-grpc", "experimental/packages/exporter-logs-otlp-http", + "experimental/packages/exporter-logs-otlp-proto", "experimental/packages/exporter-trace-otlp-grpc", "experimental/packages/exporter-trace-otlp-http", "experimental/packages/exporter-trace-otlp-proto", @@ -71,6 +72,9 @@ { "path": "experimental/packages/exporter-logs-otlp-http" }, + { + "path": "experimental/packages/exporter-logs-otlp-proto" + }, { "path": "experimental/packages/exporter-trace-otlp-grpc" }, From edebbcc757535bc88f01340409dbbecc0bb6ccf8 Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Tue, 6 Jun 2023 07:13:04 +0200 Subject: [PATCH 04/71] chore: prepare release 1.14 / 0.40 (#3854) Co-authored-by: Daniel Dyla --- CHANGELOG.md | 8 +++-- examples/esm-http-ts/package.json | 2 +- examples/http/package.json | 18 +++++------ examples/https/package.json | 18 +++++------ examples/opentelemetry-web/package.json | 30 +++++++++---------- examples/otlp-exporter-node/package.json | 24 +++++++-------- experimental/CHANGELOG.md | 16 +++++++--- .../node14/package.json | 6 ++-- .../node16/package.json | 6 ++-- experimental/examples/logs/package.json | 6 ++-- experimental/examples/prometheus/package.json | 6 ++-- experimental/packages/api-events/package.json | 2 +- experimental/packages/api-logs/package.json | 2 +- .../exporter-logs-otlp-grpc/package.json | 16 +++++----- .../exporter-logs-otlp-http/package.json | 12 ++++---- .../exporter-logs-otlp-proto/package.json | 18 +++++------ .../exporter-trace-otlp-grpc/package.json | 14 ++++----- .../exporter-trace-otlp-http/package.json | 12 ++++---- .../exporter-trace-otlp-proto/package.json | 14 ++++----- .../package.json | 6 ++-- .../package.json | 14 ++++----- .../package.json | 12 ++++---- .../package.json | 16 +++++----- .../package.json | 10 +++---- .../package.json | 16 +++++----- .../package.json | 14 ++++----- .../package.json | 16 +++++----- .../package.json | 16 +++++----- .../package.json | 4 +-- .../opentelemetry-sdk-node/package.json | 28 ++++++++--------- .../packages/otlp-exporter-base/package.json | 4 +-- .../otlp-grpc-exporter-base/package.json | 12 ++++---- .../otlp-proto-exporter-base/package.json | 6 ++-- .../packages/otlp-transformer/package.json | 14 ++++----- experimental/packages/sdk-logs/package.json | 8 ++--- .../packages/shim-opencensus/package.json | 10 +++---- .../package.json | 8 ++--- .../package.json | 2 +- .../package.json | 2 +- .../opentelemetry-context-zone/package.json | 4 +-- packages/opentelemetry-core/package.json | 4 +-- .../package.json | 10 +++---- .../package.json | 10 +++---- .../opentelemetry-propagator-b3/package.json | 4 +-- .../package.json | 4 +-- packages/opentelemetry-resources/package.json | 6 ++-- .../opentelemetry-sdk-trace-base/package.json | 8 ++--- .../opentelemetry-sdk-trace-node/package.json | 16 +++++----- .../opentelemetry-sdk-trace-web/package.json | 14 ++++----- .../package.json | 2 +- .../package.json | 12 ++++---- packages/sdk-metrics/package.json | 6 ++-- packages/template/package.json | 2 +- selenium-tests/package.json | 22 +++++++------- 54 files changed, 292 insertions(+), 280 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f827e31585..bab1ea9942 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,14 +11,18 @@ For experimental package changes, see the [experimental CHANGELOG](experimental/ ### :rocket: (Enhancement) -* feat(SpanExpoter): Add optional forceFlush to SpanExporter interface [#3753](https://github.com/open-telemetry/opentelemetry-js/pull/3753/) @sgracias1 @JacksonWeber - ### :bug: (Bug Fix) ### :books: (Refine Doc) ### :house: (Internal) +## 1.14.0 + +### :rocket: (Enhancement) + +* feat(SpanExporter): Add optional forceFlush to SpanExporter interface [#3753](https://github.com/open-telemetry/opentelemetry-js/pull/3753/) @sgracias1 @JacksonWeber + ## 1.13.0 ### :rocket: (Enhancement) diff --git a/examples/esm-http-ts/package.json b/examples/esm-http-ts/package.json index 49c0e2601f..6cba2efe26 100644 --- a/examples/esm-http-ts/package.json +++ b/examples/esm-http-ts/package.json @@ -1,7 +1,7 @@ { "name": "esm-http-ts", "private": true, - "version": "0.38.0", + "version": "0.40.0", "description": "Example of HTTP integration with OpenTelemetry using ESM and TypeScript", "main": "build/index.js", "type": "module", diff --git a/examples/http/package.json b/examples/http/package.json index e06dd1af2f..a48f8e2c1b 100644 --- a/examples/http/package.json +++ b/examples/http/package.json @@ -1,7 +1,7 @@ { "name": "http-example", "private": true, - "version": "0.39.1", + "version": "0.40.0", "description": "Example of HTTP integration with OpenTelemetry", "main": "index.js", "scripts": { @@ -29,14 +29,14 @@ }, "dependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/exporter-jaeger": "1.13.0", - "@opentelemetry/exporter-zipkin": "1.13.0", - "@opentelemetry/instrumentation": "0.39.1", - "@opentelemetry/instrumentation-http": "0.39.1", - "@opentelemetry/resources": "1.13.0", - "@opentelemetry/sdk-trace-base": "1.13.0", - "@opentelemetry/sdk-trace-node": "1.13.0", - "@opentelemetry/semantic-conventions": "1.13.0" + "@opentelemetry/exporter-jaeger": "1.14.0", + "@opentelemetry/exporter-zipkin": "1.14.0", + "@opentelemetry/instrumentation": "0.40.0", + "@opentelemetry/instrumentation-http": "0.40.0", + "@opentelemetry/resources": "1.14.0", + "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/sdk-trace-node": "1.14.0", + "@opentelemetry/semantic-conventions": "1.14.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/http", "devDependencies": { diff --git a/examples/https/package.json b/examples/https/package.json index 62b65273f2..2a63c724c9 100644 --- a/examples/https/package.json +++ b/examples/https/package.json @@ -1,7 +1,7 @@ { "name": "https-example", "private": true, - "version": "0.39.1", + "version": "0.40.0", "description": "Example of HTTPs integration with OpenTelemetry", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -33,14 +33,14 @@ }, "dependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/exporter-jaeger": "1.13.0", - "@opentelemetry/exporter-zipkin": "1.13.0", - "@opentelemetry/instrumentation": "0.39.1", - "@opentelemetry/instrumentation-http": "0.39.1", - "@opentelemetry/resources": "1.13.0", - "@opentelemetry/sdk-trace-base": "1.13.0", - "@opentelemetry/sdk-trace-node": "1.13.0", - "@opentelemetry/semantic-conventions": "1.13.0" + "@opentelemetry/exporter-jaeger": "1.14.0", + "@opentelemetry/exporter-zipkin": "1.14.0", + "@opentelemetry/instrumentation": "0.40.0", + "@opentelemetry/instrumentation-http": "0.40.0", + "@opentelemetry/resources": "1.14.0", + "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/sdk-trace-node": "1.14.0", + "@opentelemetry/semantic-conventions": "1.14.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/https", "devDependencies": { diff --git a/examples/opentelemetry-web/package.json b/examples/opentelemetry-web/package.json index c4c75e460c..c9afb00edd 100644 --- a/examples/opentelemetry-web/package.json +++ b/examples/opentelemetry-web/package.json @@ -1,7 +1,7 @@ { "name": "web-opentelemetry-example", "private": true, - "version": "0.39.1", + "version": "0.40.0", "description": "Example of using @opentelemetry/sdk-trace-web and @opentelemetry/sdk-metrics in browser", "main": "index.js", "scripts": { @@ -43,20 +43,20 @@ }, "dependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-zone": "1.13.0", - "@opentelemetry/core": "1.13.0", - "@opentelemetry/exporter-metrics-otlp-http": "0.39.1", - "@opentelemetry/exporter-trace-otlp-http": "0.39.1", - "@opentelemetry/exporter-trace-otlp-proto": "0.39.1", - "@opentelemetry/exporter-zipkin": "1.13.0", - "@opentelemetry/instrumentation": "0.39.1", - "@opentelemetry/instrumentation-fetch": "0.39.1", - "@opentelemetry/instrumentation-xml-http-request": "0.39.1", - "@opentelemetry/propagator-b3": "1.13.0", - "@opentelemetry/sdk-metrics": "1.13.0", - "@opentelemetry/sdk-trace-base": "1.13.0", - "@opentelemetry/sdk-trace-web": "1.13.0", - "@opentelemetry/semantic-conventions": "1.13.0" + "@opentelemetry/context-zone": "1.14.0", + "@opentelemetry/core": "1.14.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.40.0", + "@opentelemetry/exporter-trace-otlp-http": "0.40.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.40.0", + "@opentelemetry/exporter-zipkin": "1.14.0", + "@opentelemetry/instrumentation": "0.40.0", + "@opentelemetry/instrumentation-fetch": "0.40.0", + "@opentelemetry/instrumentation-xml-http-request": "0.40.0", + "@opentelemetry/propagator-b3": "1.14.0", + "@opentelemetry/sdk-metrics": "1.14.0", + "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/sdk-trace-web": "1.14.0", + "@opentelemetry/semantic-conventions": "1.14.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/tracer-web" } diff --git a/examples/otlp-exporter-node/package.json b/examples/otlp-exporter-node/package.json index c19ae9ea59..bb5fa25136 100644 --- a/examples/otlp-exporter-node/package.json +++ b/examples/otlp-exporter-node/package.json @@ -1,7 +1,7 @@ { "name": "example-otlp-exporter-node", "private": true, - "version": "0.39.1", + "version": "0.40.0", "description": "Example of using @opentelemetry/collector-exporter in Node.js", "main": "index.js", "scripts": { @@ -29,17 +29,17 @@ }, "dependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/core": "1.13.0", - "@opentelemetry/exporter-metrics-otlp-grpc": "0.39.1", - "@opentelemetry/exporter-metrics-otlp-http": "0.39.1", - "@opentelemetry/exporter-metrics-otlp-proto": "0.39.1", - "@opentelemetry/exporter-trace-otlp-grpc": "0.39.1", - "@opentelemetry/exporter-trace-otlp-http": "0.39.1", - "@opentelemetry/exporter-trace-otlp-proto": "0.39.1", - "@opentelemetry/resources": "1.13.0", - "@opentelemetry/sdk-metrics": "1.13.0", - "@opentelemetry/sdk-trace-base": "1.13.0", - "@opentelemetry/semantic-conventions": "1.13.0" + "@opentelemetry/core": "1.14.0", + "@opentelemetry/exporter-metrics-otlp-grpc": "0.40.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.40.0", + "@opentelemetry/exporter-metrics-otlp-proto": "0.40.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.40.0", + "@opentelemetry/exporter-trace-otlp-http": "0.40.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.40.0", + "@opentelemetry/resources": "1.14.0", + "@opentelemetry/sdk-metrics": "1.14.0", + "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/semantic-conventions": "1.14.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/otlp-exporter-node" } diff --git a/experimental/CHANGELOG.md b/experimental/CHANGELOG.md index 4935d9b83b..ff64e920fd 100644 --- a/experimental/CHANGELOG.md +++ b/experimental/CHANGELOG.md @@ -6,6 +6,18 @@ All notable changes to experimental packages in this project will be documented ### :boom: Breaking Change +### :rocket: (Enhancement) + +### :bug: (Bug Fix) + +### :books: (Refine Doc) + +### :house: (Internal) + +## 0.40.0 + +### :boom: Breaking Change + * fix(exporter-logs-otlp-grpc): change OTLPLogsExporter to OTLPLogExporter [#3819](https://github.com/open-telemetry/opentelemetry-js/pull/3819) @fuaiyi * chore(instrumentation-grpc): add 'grpc' deprecation notice postinstall script [#3833](https://github.com/open-telemetry/opentelemetry-js/pull/3833) @pichlermarc * Support for telemetry generation for the [`grpc`](https://www.npmjs.com/package/grpc) module will be dropped in the next release as the package has been @@ -26,10 +38,6 @@ All notable changes to experimental packages in this project will be documented * fix(sdk-node): use resource interface instead of concrete class [#3803](https://github.com/open-telemetry/opentelemetry-js/pull/3803) @blumamir * fix(sdk-logs): remove includeTraceContext configuration and use LogRecord context when available [#3817](https://github.com/open-telemetry/opentelemetry-js/pull/3817) @hectorhdzg -### :books: (Refine Doc) - -### :house: (Internal) - ## 0.39.1 ### :bug: (Bug Fix) diff --git a/experimental/backwards-compatability/node14/package.json b/experimental/backwards-compatability/node14/package.json index fb30bd3215..f858e7782f 100644 --- a/experimental/backwards-compatability/node14/package.json +++ b/experimental/backwards-compatability/node14/package.json @@ -1,6 +1,6 @@ { "name": "backcompat-node14", - "version": "0.39.1", + "version": "0.40.0", "private": true, "description": "Backwards compatability app for node 14 types and the OpenTelemetry Node.js SDK", "main": "index.js", @@ -9,8 +9,8 @@ "peer-api-check": "node ../../../scripts/peer-api-check.js" }, "dependencies": { - "@opentelemetry/sdk-node": "0.39.1", - "@opentelemetry/sdk-trace-base": "1.13.0" + "@opentelemetry/sdk-node": "0.40.0", + "@opentelemetry/sdk-trace-base": "1.14.0" }, "devDependencies": { "@types/node": "14.18.25", diff --git a/experimental/backwards-compatability/node16/package.json b/experimental/backwards-compatability/node16/package.json index bf74118063..8f5723c52d 100644 --- a/experimental/backwards-compatability/node16/package.json +++ b/experimental/backwards-compatability/node16/package.json @@ -1,6 +1,6 @@ { "name": "backcompat-node16", - "version": "0.39.1", + "version": "0.40.0", "private": true, "description": "Backwards compatability app for node 16 types and the OpenTelemetry Node.js SDK", "main": "index.js", @@ -9,8 +9,8 @@ "peer-api-check": "node ../../../scripts/peer-api-check.js" }, "dependencies": { - "@opentelemetry/sdk-node": "0.39.1", - "@opentelemetry/sdk-trace-base": "1.13.0" + "@opentelemetry/sdk-node": "0.40.0", + "@opentelemetry/sdk-trace-base": "1.14.0" }, "devDependencies": { "@types/node": "16.11.52", diff --git a/experimental/examples/logs/package.json b/experimental/examples/logs/package.json index 3e10700d19..0df41c352f 100644 --- a/experimental/examples/logs/package.json +++ b/experimental/examples/logs/package.json @@ -1,14 +1,14 @@ { "name": "logs-example", - "version": "0.2.0", + "version": "0.40.0", "private": true, "scripts": { "start": "ts-node index.ts" }, "dependencies": { "@opentelemetry/api": "^1.4.1", - "@opentelemetry/api-logs": "0.39.1", - "@opentelemetry/sdk-logs": "0.39.1" + "@opentelemetry/api-logs": "0.40.0", + "@opentelemetry/sdk-logs": "0.40.0" }, "devDependencies": { "@types/node": "18.6.5", diff --git a/experimental/examples/prometheus/package.json b/experimental/examples/prometheus/package.json index d1c5cb9ce6..037e147dc9 100644 --- a/experimental/examples/prometheus/package.json +++ b/experimental/examples/prometheus/package.json @@ -1,6 +1,6 @@ { "name": "prometheus-example", - "version": "0.39.1", + "version": "0.40.0", "private": true, "description": "Example of using @opentelemetry/sdk-metrics and @opentelemetry/exporter-prometheus", "main": "index.js", @@ -11,7 +11,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/exporter-prometheus": "0.39.1", - "@opentelemetry/sdk-metrics": "1.13.0" + "@opentelemetry/exporter-prometheus": "0.40.0", + "@opentelemetry/sdk-metrics": "1.14.0" } } diff --git a/experimental/packages/api-events/package.json b/experimental/packages/api-events/package.json index bc1a24a54b..696756fdee 100644 --- a/experimental/packages/api-events/package.json +++ b/experimental/packages/api-events/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/api-events", - "version": "0.39.1", + "version": "0.40.0", "description": "Public events API for OpenTelemetry", "main": "build/src/index.js", "module": "build/esm/index.js", diff --git a/experimental/packages/api-logs/package.json b/experimental/packages/api-logs/package.json index 9143ef36d0..73bc979376 100644 --- a/experimental/packages/api-logs/package.json +++ b/experimental/packages/api-logs/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/api-logs", - "version": "0.39.1", + "version": "0.40.0", "description": "Public logs API for OpenTelemetry", "main": "build/src/index.js", "module": "build/esm/index.js", diff --git a/experimental/packages/exporter-logs-otlp-grpc/package.json b/experimental/packages/exporter-logs-otlp-grpc/package.json index 99cb19287e..d5be8c217b 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/package.json +++ b/experimental/packages/exporter-logs-otlp-grpc/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-logs-otlp-grpc", - "version": "0.39.1", + "version": "0.40.0", "description": "OpenTelemetry Collector Exporter allows user to send collected log records to the OpenTelemetry Collector", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -51,9 +51,9 @@ "@babel/core": "7.16.0", "@grpc/proto-loader": "^0.7.3", "@opentelemetry/api": "1.4.1", - "@opentelemetry/api-logs": "0.39.1", - "@opentelemetry/otlp-exporter-base": "0.39.1", - "@opentelemetry/resources": "1.13.0", + "@opentelemetry/api-logs": "0.40.0", + "@opentelemetry/otlp-exporter-base": "0.40.0", + "@opentelemetry/resources": "1.14.0", "@types/mocha": "10.0.0", "@types/node": "18.6.5", "@types/sinon": "10.0.13", @@ -71,10 +71,10 @@ }, "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.13.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.39.1", - "@opentelemetry/otlp-transformer": "0.39.1", - "@opentelemetry/sdk-logs": "0.39.1" + "@opentelemetry/core": "1.14.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.40.0", + "@opentelemetry/otlp-transformer": "0.40.0", + "@opentelemetry/sdk-logs": "0.40.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-logs-otlp-grpc", "sideEffects": false diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index b6f4808b42..153f941b51 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-logs-otlp-http", - "version": "0.39.1", + "version": "0.40.0", "publishConfig": { "access": "public" }, @@ -72,7 +72,7 @@ "sideEffects": false, "devDependencies": { "@babel/core": "7.16.0", - "@opentelemetry/api-logs": ">=0.38.0", + "@opentelemetry/api-logs": "0.40.0", "@types/mocha": "10.0.0", "@types/node": "18.6.5", "@types/sinon": "10.0.13", @@ -101,9 +101,9 @@ "@opentelemetry/api-logs": ">=0.38.0" }, "dependencies": { - "@opentelemetry/core": "1.13.0", - "@opentelemetry/otlp-exporter-base": "0.39.1", - "@opentelemetry/otlp-transformer": "0.39.1", - "@opentelemetry/sdk-logs": "0.39.1" + "@opentelemetry/core": "1.14.0", + "@opentelemetry/otlp-exporter-base": "0.40.0", + "@opentelemetry/otlp-transformer": "0.40.0", + "@opentelemetry/sdk-logs": "0.40.0" } } diff --git a/experimental/packages/exporter-logs-otlp-proto/package.json b/experimental/packages/exporter-logs-otlp-proto/package.json index 016ec13486..9b32258ec5 100644 --- a/experimental/packages/exporter-logs-otlp-proto/package.json +++ b/experimental/packages/exporter-logs-otlp-proto/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-logs-otlp-proto", - "version": "0.39.1", + "version": "0.40.0", "description": "An OTLP exporter to send logs using protobuf over HTTP", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -81,14 +81,14 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.13.0", - "@opentelemetry/otlp-transformer": "0.39.1", - "@opentelemetry/resources": "1.13.0", - "@opentelemetry/sdk-trace-base": "1.13.0", - "@opentelemetry/api-logs": "^0.39.1", - "@opentelemetry/otlp-exporter-base": "0.39.1", - "@opentelemetry/otlp-proto-exporter-base": "0.39.1", - "@opentelemetry/sdk-logs": "^0.39.1" + "@opentelemetry/api-logs": "0.40.0", + "@opentelemetry/core": "1.14.0", + "@opentelemetry/otlp-exporter-base": "0.40.0", + "@opentelemetry/otlp-proto-exporter-base": "0.40.0", + "@opentelemetry/otlp-transformer": "0.40.0", + "@opentelemetry/resources": "1.14.0", + "@opentelemetry/sdk-logs": "0.40.0", + "@opentelemetry/sdk-trace-base": "1.14.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-logs-otlp-proto", "sideEffects": false diff --git a/experimental/packages/exporter-trace-otlp-grpc/package.json b/experimental/packages/exporter-trace-otlp-grpc/package.json index 506bf706e8..6f1177cd47 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/package.json +++ b/experimental/packages/exporter-trace-otlp-grpc/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-trace-otlp-grpc", - "version": "0.39.1", + "version": "0.40.0", "description": "OpenTelemetry Collector Exporter allows user to send collected traces to the OpenTelemetry Collector", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -50,7 +50,7 @@ "@babel/core": "7.16.0", "@grpc/proto-loader": "^0.7.3", "@opentelemetry/api": "1.4.1", - "@opentelemetry/otlp-exporter-base": "0.39.1", + "@opentelemetry/otlp-exporter-base": "0.40.0", "@types/mocha": "10.0.0", "@types/node": "18.6.5", "@types/sinon": "10.0.13", @@ -68,11 +68,11 @@ }, "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.13.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.39.1", - "@opentelemetry/otlp-transformer": "0.39.1", - "@opentelemetry/resources": "1.13.0", - "@opentelemetry/sdk-trace-base": "1.13.0" + "@opentelemetry/core": "1.14.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.40.0", + "@opentelemetry/otlp-transformer": "0.40.0", + "@opentelemetry/resources": "1.14.0", + "@opentelemetry/sdk-trace-base": "1.14.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-trace-otlp-grpc", "sideEffects": false diff --git a/experimental/packages/exporter-trace-otlp-http/package.json b/experimental/packages/exporter-trace-otlp-http/package.json index 1c38a1fd54..33ab897993 100644 --- a/experimental/packages/exporter-trace-otlp-http/package.json +++ b/experimental/packages/exporter-trace-otlp-http/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-trace-otlp-http", - "version": "0.39.1", + "version": "0.40.0", "description": "OpenTelemetry Collector Trace Exporter allows user to send collected traces to the OpenTelemetry Collector", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -93,11 +93,11 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.13.0", - "@opentelemetry/otlp-exporter-base": "0.39.1", - "@opentelemetry/otlp-transformer": "0.39.1", - "@opentelemetry/resources": "1.13.0", - "@opentelemetry/sdk-trace-base": "1.13.0" + "@opentelemetry/core": "1.14.0", + "@opentelemetry/otlp-exporter-base": "0.40.0", + "@opentelemetry/otlp-transformer": "0.40.0", + "@opentelemetry/resources": "1.14.0", + "@opentelemetry/sdk-trace-base": "1.14.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-trace-otlp-http", "sideEffects": false diff --git a/experimental/packages/exporter-trace-otlp-proto/package.json b/experimental/packages/exporter-trace-otlp-proto/package.json index bfe610b4d2..ccbd99b1e1 100644 --- a/experimental/packages/exporter-trace-otlp-proto/package.json +++ b/experimental/packages/exporter-trace-otlp-proto/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-trace-otlp-proto", - "version": "0.39.1", + "version": "0.40.0", "description": "OpenTelemetry Collector Exporter allows user to send collected traces to the OpenTelemetry Collector using protobuf over HTTP", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -80,12 +80,12 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.13.0", - "@opentelemetry/otlp-exporter-base": "0.39.1", - "@opentelemetry/otlp-proto-exporter-base": "0.39.1", - "@opentelemetry/otlp-transformer": "0.39.1", - "@opentelemetry/resources": "1.13.0", - "@opentelemetry/sdk-trace-base": "1.13.0" + "@opentelemetry/core": "1.14.0", + "@opentelemetry/otlp-exporter-base": "0.40.0", + "@opentelemetry/otlp-proto-exporter-base": "0.40.0", + "@opentelemetry/otlp-transformer": "0.40.0", + "@opentelemetry/resources": "1.14.0", + "@opentelemetry/sdk-trace-base": "1.14.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-trace-otlp-proto", "sideEffects": false diff --git a/experimental/packages/opentelemetry-browser-detector/package.json b/experimental/packages/opentelemetry-browser-detector/package.json index fa3e4746a0..f940103b14 100644 --- a/experimental/packages/opentelemetry-browser-detector/package.json +++ b/experimental/packages/opentelemetry-browser-detector/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/opentelemetry-browser-detector", - "version": "0.39.1", + "version": "0.40.0", "description": "OpenTelemetry Resource Detector for Browser", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -70,8 +70,8 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/resources": "1.13.0", - "@opentelemetry/semantic-conventions": "1.13.0" + "@opentelemetry/resources": "1.14.0", + "@opentelemetry/semantic-conventions": "1.14.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/browser-detector" } diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index 85b92e6fcb..245f6cddcd 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-metrics-otlp-grpc", - "version": "0.39.1", + "version": "0.40.0", "description": "OpenTelemetry Collector Metrics Exporter allows user to send collected metrics to the OpenTelemetry Collector", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -67,12 +67,12 @@ }, "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.13.0", - "@opentelemetry/exporter-metrics-otlp-http": "0.39.1", - "@opentelemetry/otlp-grpc-exporter-base": "0.39.1", - "@opentelemetry/otlp-transformer": "0.39.1", - "@opentelemetry/resources": "1.13.0", - "@opentelemetry/sdk-metrics": "1.13.0" + "@opentelemetry/core": "1.14.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.40.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.40.0", + "@opentelemetry/otlp-transformer": "0.40.0", + "@opentelemetry/resources": "1.14.0", + "@opentelemetry/sdk-metrics": "1.14.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc", "sideEffects": false diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index 7ddbd94874..25cad65a78 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-metrics-otlp-http", - "version": "0.39.1", + "version": "0.40.0", "description": "OpenTelemetry Collector Metrics Exporter allows user to send collected metrics to the OpenTelemetry Collector", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -93,11 +93,11 @@ "@opentelemetry/api": "^1.3.0" }, "dependencies": { - "@opentelemetry/core": "1.13.0", - "@opentelemetry/otlp-exporter-base": "0.39.1", - "@opentelemetry/otlp-transformer": "0.39.1", - "@opentelemetry/resources": "1.13.0", - "@opentelemetry/sdk-metrics": "1.13.0" + "@opentelemetry/core": "1.14.0", + "@opentelemetry/otlp-exporter-base": "0.40.0", + "@opentelemetry/otlp-transformer": "0.40.0", + "@opentelemetry/resources": "1.14.0", + "@opentelemetry/sdk-metrics": "1.14.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-http", "sideEffects": false diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index d384051e56..a38a810aad 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-metrics-otlp-proto", - "version": "0.39.1", + "version": "0.40.0", "description": "OpenTelemetry Collector Metrics Exporter allows user to send collected metrics to the OpenTelemetry Collector using protobuf over HTTP", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -65,13 +65,13 @@ "@opentelemetry/api": "^1.3.0" }, "dependencies": { - "@opentelemetry/core": "1.13.0", - "@opentelemetry/exporter-metrics-otlp-http": "0.39.1", - "@opentelemetry/otlp-exporter-base": "0.39.1", - "@opentelemetry/otlp-proto-exporter-base": "0.39.1", - "@opentelemetry/otlp-transformer": "0.39.1", - "@opentelemetry/resources": "1.13.0", - "@opentelemetry/sdk-metrics": "1.13.0" + "@opentelemetry/core": "1.14.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.40.0", + "@opentelemetry/otlp-exporter-base": "0.40.0", + "@opentelemetry/otlp-proto-exporter-base": "0.40.0", + "@opentelemetry/otlp-transformer": "0.40.0", + "@opentelemetry/resources": "1.14.0", + "@opentelemetry/sdk-metrics": "1.14.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-proto", "sideEffects": false diff --git a/experimental/packages/opentelemetry-exporter-prometheus/package.json b/experimental/packages/opentelemetry-exporter-prometheus/package.json index 144c4e62d8..83d386206b 100644 --- a/experimental/packages/opentelemetry-exporter-prometheus/package.json +++ b/experimental/packages/opentelemetry-exporter-prometheus/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-prometheus", - "version": "0.39.1", + "version": "0.40.0", "description": "OpenTelemetry Exporter Prometheus provides a metrics endpoint for Prometheus", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -44,7 +44,7 @@ }, "devDependencies": { "@opentelemetry/api": "1.4.1", - "@opentelemetry/semantic-conventions": "1.13.0", + "@opentelemetry/semantic-conventions": "1.14.0", "@types/mocha": "10.0.0", "@types/node": "18.6.5", "@types/sinon": "10.0.13", @@ -59,9 +59,9 @@ "@opentelemetry/api": "^1.3.0" }, "dependencies": { - "@opentelemetry/core": "1.13.0", - "@opentelemetry/resources": "1.13.0", - "@opentelemetry/sdk-metrics": "1.13.0" + "@opentelemetry/core": "1.14.0", + "@opentelemetry/resources": "1.14.0", + "@opentelemetry/sdk-metrics": "1.14.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-prometheus", "sideEffects": false diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index 29479c7c8f..b0a32e397e 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-fetch", - "version": "0.39.1", + "version": "0.40.0", "description": "OpenTelemetry fetch automatic instrumentation package.", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -56,9 +56,9 @@ "devDependencies": { "@babel/core": "7.16.0", "@opentelemetry/api": "1.4.1", - "@opentelemetry/context-zone": "1.13.0", - "@opentelemetry/propagator-b3": "1.13.0", - "@opentelemetry/sdk-trace-base": "1.13.0", + "@opentelemetry/context-zone": "1.14.0", + "@opentelemetry/propagator-b3": "1.14.0", + "@opentelemetry/sdk-trace-base": "1.14.0", "@types/mocha": "10.0.0", "@types/node": "18.6.5", "@types/sinon": "10.0.13", @@ -86,10 +86,10 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.13.0", - "@opentelemetry/instrumentation": "0.39.1", - "@opentelemetry/sdk-trace-web": "1.13.0", - "@opentelemetry/semantic-conventions": "1.13.0" + "@opentelemetry/core": "1.14.0", + "@opentelemetry/instrumentation": "0.40.0", + "@opentelemetry/sdk-trace-web": "1.14.0", + "@opentelemetry/semantic-conventions": "1.14.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-fetch", "sideEffects": false diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/package.json b/experimental/packages/opentelemetry-instrumentation-grpc/package.json index 1e63a6dd06..abe73ed1d1 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/package.json +++ b/experimental/packages/opentelemetry-instrumentation-grpc/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-grpc", - "version": "0.39.1", + "version": "0.40.0", "description": "OpenTelemetry grpc automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -49,10 +49,10 @@ "@grpc/grpc-js": "^1.7.1", "@grpc/proto-loader": "^0.7.3", "@opentelemetry/api": "1.4.1", - "@opentelemetry/context-async-hooks": "1.13.0", - "@opentelemetry/core": "1.13.0", - "@opentelemetry/sdk-trace-base": "1.13.0", - "@opentelemetry/sdk-trace-node": "1.13.0", + "@opentelemetry/context-async-hooks": "1.14.0", + "@opentelemetry/core": "1.14.0", + "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/sdk-trace-node": "1.14.0", "@types/mocha": "10.0.0", "@types/node": "18.6.5", "@types/semver": "7.3.9", @@ -71,8 +71,8 @@ "@opentelemetry/api": "^1.3.0" }, "dependencies": { - "@opentelemetry/instrumentation": "0.39.1", - "@opentelemetry/semantic-conventions": "1.13.0" + "@opentelemetry/instrumentation": "0.40.0", + "@opentelemetry/semantic-conventions": "1.14.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-grpc", "sideEffects": false diff --git a/experimental/packages/opentelemetry-instrumentation-http/package.json b/experimental/packages/opentelemetry-instrumentation-http/package.json index b46eef6a18..46c7eec6e9 100644 --- a/experimental/packages/opentelemetry-instrumentation-http/package.json +++ b/experimental/packages/opentelemetry-instrumentation-http/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-http", - "version": "0.39.1", + "version": "0.40.0", "description": "OpenTelemetry http/https automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,10 +46,10 @@ }, "devDependencies": { "@opentelemetry/api": "1.4.1", - "@opentelemetry/context-async-hooks": "1.13.0", - "@opentelemetry/sdk-metrics": "1.13.0", - "@opentelemetry/sdk-trace-base": "1.13.0", - "@opentelemetry/sdk-trace-node": "1.13.0", + "@opentelemetry/context-async-hooks": "1.14.0", + "@opentelemetry/sdk-metrics": "1.14.0", + "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/sdk-trace-node": "1.14.0", "@types/mocha": "10.0.0", "@types/node": "18.6.5", "@types/request-promise-native": "1.0.18", @@ -72,9 +72,9 @@ "@opentelemetry/api": "^1.3.0" }, "dependencies": { - "@opentelemetry/core": "1.13.0", - "@opentelemetry/instrumentation": "0.39.1", - "@opentelemetry/semantic-conventions": "1.13.0", + "@opentelemetry/core": "1.14.0", + "@opentelemetry/instrumentation": "0.40.0", + "@opentelemetry/semantic-conventions": "1.14.0", "semver": "^7.3.5" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-http", diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json index 4bf5707caf..4177a9c354 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-xml-http-request", - "version": "0.39.1", + "version": "0.40.0", "description": "OpenTelemetry XMLHttpRequest automatic instrumentation package.", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -56,9 +56,9 @@ "devDependencies": { "@babel/core": "7.16.0", "@opentelemetry/api": "1.4.1", - "@opentelemetry/context-zone": "1.13.0", - "@opentelemetry/propagator-b3": "1.13.0", - "@opentelemetry/sdk-trace-base": "1.13.0", + "@opentelemetry/context-zone": "1.14.0", + "@opentelemetry/propagator-b3": "1.14.0", + "@opentelemetry/sdk-trace-base": "1.14.0", "@types/mocha": "10.0.0", "@types/node": "18.6.5", "@types/sinon": "10.0.13", @@ -86,10 +86,10 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.13.0", - "@opentelemetry/instrumentation": "0.39.1", - "@opentelemetry/sdk-trace-web": "1.13.0", - "@opentelemetry/semantic-conventions": "1.13.0" + "@opentelemetry/core": "1.14.0", + "@opentelemetry/instrumentation": "0.40.0", + "@opentelemetry/sdk-trace-web": "1.14.0", + "@opentelemetry/semantic-conventions": "1.14.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-xml-http-request", "sideEffects": false diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index 4164952821..cb13c32ddb 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation", - "version": "0.39.1", + "version": "0.40.0", "description": "Base class for node which OpenTelemetry instrumentation modules extend", "author": "OpenTelemetry Authors", "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation", @@ -83,7 +83,7 @@ "devDependencies": { "@babel/core": "7.16.0", "@opentelemetry/api": "1.4.1", - "@opentelemetry/sdk-metrics": "1.13.0", + "@opentelemetry/sdk-metrics": "1.14.0", "@types/mocha": "10.0.0", "@types/node": "18.6.5", "@types/semver": "7.3.9", diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json index b6dd740713..db67154c4f 100644 --- a/experimental/packages/opentelemetry-sdk-node/package.json +++ b/experimental/packages/opentelemetry-sdk-node/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sdk-node", - "version": "0.39.1", + "version": "0.40.0", "description": "OpenTelemetry SDK for Node.js", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -44,25 +44,25 @@ "access": "public" }, "dependencies": { - "@opentelemetry/core": "1.13.0", - "@opentelemetry/exporter-jaeger": "1.13.0", - "@opentelemetry/exporter-trace-otlp-grpc": "0.39.1", - "@opentelemetry/exporter-trace-otlp-http": "0.39.1", - "@opentelemetry/exporter-trace-otlp-proto": "0.39.1", - "@opentelemetry/exporter-zipkin": "1.13.0", - "@opentelemetry/instrumentation": "0.39.1", - "@opentelemetry/resources": "1.13.0", - "@opentelemetry/sdk-metrics": "1.13.0", - "@opentelemetry/sdk-trace-base": "1.13.0", - "@opentelemetry/sdk-trace-node": "1.13.0", - "@opentelemetry/semantic-conventions": "1.13.0" + "@opentelemetry/core": "1.14.0", + "@opentelemetry/exporter-jaeger": "1.14.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.40.0", + "@opentelemetry/exporter-trace-otlp-http": "0.40.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.40.0", + "@opentelemetry/exporter-zipkin": "1.14.0", + "@opentelemetry/instrumentation": "0.40.0", + "@opentelemetry/resources": "1.14.0", + "@opentelemetry/sdk-metrics": "1.14.0", + "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/sdk-trace-node": "1.14.0", + "@opentelemetry/semantic-conventions": "1.14.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.5.0" }, "devDependencies": { "@opentelemetry/api": "1.4.1", - "@opentelemetry/context-async-hooks": "1.13.0", + "@opentelemetry/context-async-hooks": "1.14.0", "@types/mocha": "10.0.0", "@types/node": "18.6.5", "@types/semver": "7.3.9", diff --git a/experimental/packages/otlp-exporter-base/package.json b/experimental/packages/otlp-exporter-base/package.json index 8671fffcb9..145e379eba 100644 --- a/experimental/packages/otlp-exporter-base/package.json +++ b/experimental/packages/otlp-exporter-base/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/otlp-exporter-base", - "version": "0.39.1", + "version": "0.40.0", "description": "OpenTelemetry OTLP Exporter base (for internal use only)", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -61,7 +61,7 @@ "access": "public" }, "dependencies": { - "@opentelemetry/core": "1.13.0" + "@opentelemetry/core": "1.14.0" }, "devDependencies": { "@opentelemetry/api": "1.4.1", diff --git a/experimental/packages/otlp-grpc-exporter-base/package.json b/experimental/packages/otlp-grpc-exporter-base/package.json index 97f8940ef6..aad7b9170e 100644 --- a/experimental/packages/otlp-grpc-exporter-base/package.json +++ b/experimental/packages/otlp-grpc-exporter-base/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/otlp-grpc-exporter-base", - "version": "0.39.1", + "version": "0.40.0", "description": "OpenTelemetry OTLP-gRPC Exporter base (for internal use only)", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -50,9 +50,9 @@ "devDependencies": { "@babel/core": "7.16.0", "@opentelemetry/api": "1.4.1", - "@opentelemetry/otlp-transformer": "0.39.1", - "@opentelemetry/resources": "1.13.0", - "@opentelemetry/sdk-trace-base": "1.13.0", + "@opentelemetry/otlp-transformer": "0.40.0", + "@opentelemetry/resources": "1.14.0", + "@opentelemetry/sdk-trace-base": "1.14.0", "@types/mocha": "10.0.0", "@types/node": "18.6.5", "@types/sinon": "10.0.13", @@ -71,8 +71,8 @@ }, "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.13.0", - "@opentelemetry/otlp-exporter-base": "0.39.1", + "@opentelemetry/core": "1.14.0", + "@opentelemetry/otlp-exporter-base": "0.40.0", "protobufjs": "^7.2.2" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/otlp-grpc-exporter-base", diff --git a/experimental/packages/otlp-proto-exporter-base/package.json b/experimental/packages/otlp-proto-exporter-base/package.json index 29018d61b4..c96b96c37b 100644 --- a/experimental/packages/otlp-proto-exporter-base/package.json +++ b/experimental/packages/otlp-proto-exporter-base/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/otlp-proto-exporter-base", - "version": "0.39.1", + "version": "0.40.0", "description": "OpenTelemetry OTLP-HTTP-protobuf Exporter base (for internal use only)", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -77,8 +77,8 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.13.0", - "@opentelemetry/otlp-exporter-base": "0.39.1", + "@opentelemetry/core": "1.14.0", + "@opentelemetry/otlp-exporter-base": "0.40.0", "protobufjs": "^7.1.2" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/otlp-proto-exporter-base", diff --git a/experimental/packages/otlp-transformer/package.json b/experimental/packages/otlp-transformer/package.json index cc1e43642e..5cf982c8c4 100644 --- a/experimental/packages/otlp-transformer/package.json +++ b/experimental/packages/otlp-transformer/package.json @@ -4,7 +4,7 @@ "publishConfig": { "access": "public" }, - "version": "0.39.1", + "version": "0.40.0", "description": "Transform OpenTelemetry SDK data into OTLP", "module": "build/esm/index.js", "esnext": "build/esnext/index.js", @@ -76,12 +76,12 @@ "webpack": "4.46.0" }, "dependencies": { - "@opentelemetry/api-logs": "0.39.1", - "@opentelemetry/core": "1.13.0", - "@opentelemetry/resources": "1.13.0", - "@opentelemetry/sdk-logs": "0.39.1", - "@opentelemetry/sdk-metrics": "1.13.0", - "@opentelemetry/sdk-trace-base": "1.13.0" + "@opentelemetry/api-logs": "0.40.0", + "@opentelemetry/core": "1.14.0", + "@opentelemetry/resources": "1.14.0", + "@opentelemetry/sdk-logs": "0.40.0", + "@opentelemetry/sdk-metrics": "1.14.0", + "@opentelemetry/sdk-trace-base": "1.14.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/otlp-transformer", "sideEffects": false diff --git a/experimental/packages/sdk-logs/package.json b/experimental/packages/sdk-logs/package.json index f4222cb545..19c1996904 100644 --- a/experimental/packages/sdk-logs/package.json +++ b/experimental/packages/sdk-logs/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sdk-logs", - "version": "0.39.1", + "version": "0.40.0", "publishConfig": { "access": "public" }, @@ -73,7 +73,7 @@ }, "devDependencies": { "@opentelemetry/api": ">=1.4.0 <1.5.0", - "@opentelemetry/api-logs": "0.39.1", + "@opentelemetry/api-logs": "0.40.0", "@types/mocha": "10.0.0", "@types/node": "18.6.5", "@types/sinon": "10.0.13", @@ -91,7 +91,7 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/core": "1.13.0", - "@opentelemetry/resources": "1.13.0" + "@opentelemetry/core": "1.14.0", + "@opentelemetry/resources": "1.14.0" } } diff --git a/experimental/packages/shim-opencensus/package.json b/experimental/packages/shim-opencensus/package.json index 202f8e2d67..19481bea63 100644 --- a/experimental/packages/shim-opencensus/package.json +++ b/experimental/packages/shim-opencensus/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/shim-opencensus", - "version": "0.39.1", + "version": "0.40.0", "description": "OpenCensus to OpenTelemetry shim", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -44,17 +44,17 @@ "access": "public" }, "devDependencies": { - "@opentelemetry/context-async-hooks": "1.13.0", - "@opentelemetry/sdk-trace-base": "1.13.0", "@opencensus/core": "0.1.0", "@opentelemetry/api": "1.4.1", + "@opentelemetry/context-async-hooks": "1.14.0", + "@opentelemetry/sdk-trace-base": "1.14.0", "@types/mocha": "10.0.0", "@types/node": "18.6.5", + "@types/sinon": "10.0.13", "codecov": "3.8.3", "mocha": "10.0.0", "nyc": "15.1.0", "sinon": "15.0.0", - "@types/sinon": "10.0.13", "ts-mocha": "10.0.0", "typescript": "4.4.4" }, @@ -63,7 +63,7 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.13.0", + "@opentelemetry/core": "1.14.0", "require-in-the-middle": "^7.0.0", "semver": "^7.3.5" }, diff --git a/integration-tests/propagation-validation-server/package.json b/integration-tests/propagation-validation-server/package.json index 88846f5d9f..1658c1ed26 100644 --- a/integration-tests/propagation-validation-server/package.json +++ b/integration-tests/propagation-validation-server/package.json @@ -1,6 +1,6 @@ { "name": "propagation-validation-server", - "version": "1.13.0", + "version": "1.14.0", "description": "server for w3c tests", "main": "validation_server.js", "private": true, @@ -12,9 +12,9 @@ }, "dependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/context-async-hooks": "1.13.0", - "@opentelemetry/core": "1.13.0", - "@opentelemetry/sdk-trace-base": "1.13.0", + "@opentelemetry/context-async-hooks": "1.14.0", + "@opentelemetry/core": "1.14.0", + "@opentelemetry/sdk-trace-base": "1.14.0", "axios": "1.4.0", "body-parser": "1.19.0", "express": "4.17.3" diff --git a/packages/opentelemetry-context-async-hooks/package.json b/packages/opentelemetry-context-async-hooks/package.json index efda2f556d..662b4107b3 100644 --- a/packages/opentelemetry-context-async-hooks/package.json +++ b/packages/opentelemetry-context-async-hooks/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/context-async-hooks", - "version": "1.13.0", + "version": "1.14.0", "description": "OpenTelemetry AsyncHooks-based Context Manager", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/packages/opentelemetry-context-zone-peer-dep/package.json b/packages/opentelemetry-context-zone-peer-dep/package.json index dfcf81d491..c895e58de0 100644 --- a/packages/opentelemetry-context-zone-peer-dep/package.json +++ b/packages/opentelemetry-context-zone-peer-dep/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/context-zone-peer-dep", - "version": "1.13.0", + "version": "1.14.0", "description": "OpenTelemetry Context Zone with peer dependency for zone.js", "main": "build/src/index.js", "module": "build/esm/index.js", diff --git a/packages/opentelemetry-context-zone/package.json b/packages/opentelemetry-context-zone/package.json index 57d82fcbbc..60a1993a8d 100644 --- a/packages/opentelemetry-context-zone/package.json +++ b/packages/opentelemetry-context-zone/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/context-zone", - "version": "1.13.0", + "version": "1.14.0", "description": "OpenTelemetry Context Zone", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -73,7 +73,7 @@ "webpack-merge": "5.8.0" }, "dependencies": { - "@opentelemetry/context-zone-peer-dep": "1.13.0", + "@opentelemetry/context-zone-peer-dep": "1.14.0", "zone.js": "^0.11.0" }, "sideEffects": true, diff --git a/packages/opentelemetry-core/package.json b/packages/opentelemetry-core/package.json index 5900c8d204..b3b8de8a23 100644 --- a/packages/opentelemetry-core/package.json +++ b/packages/opentelemetry-core/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/core", - "version": "1.13.0", + "version": "1.14.0", "description": "OpenTelemetry Core provides constants and utilities shared by all OpenTelemetry SDK packages.", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -90,7 +90,7 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/semantic-conventions": "1.13.0" + "@opentelemetry/semantic-conventions": "1.14.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-core", "sideEffects": false diff --git a/packages/opentelemetry-exporter-jaeger/package.json b/packages/opentelemetry-exporter-jaeger/package.json index 6dfc53b45c..17ba0e50df 100644 --- a/packages/opentelemetry-exporter-jaeger/package.json +++ b/packages/opentelemetry-exporter-jaeger/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-jaeger", - "version": "1.13.0", + "version": "1.14.0", "description": "OpenTelemetry Exporter Jaeger allows user to send collected traces to Jaeger", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -45,7 +45,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/resources": "1.13.0", + "@opentelemetry/resources": "1.14.0", "@types/mocha": "10.0.0", "@types/node": "18.6.5", "@types/sinon": "10.0.13", @@ -61,9 +61,9 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.13.0", - "@opentelemetry/sdk-trace-base": "1.13.0", - "@opentelemetry/semantic-conventions": "1.13.0", + "@opentelemetry/core": "1.14.0", + "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/semantic-conventions": "1.14.0", "jaeger-client": "^3.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-exporter-jaeger", diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index a6c0e26d47..aeee242f84 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-zipkin", - "version": "1.13.0", + "version": "1.14.0", "description": "OpenTelemetry Zipkin Exporter allows the user to send collected traces to Zipkin.", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -90,10 +90,10 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.13.0", - "@opentelemetry/resources": "1.13.0", - "@opentelemetry/sdk-trace-base": "1.13.0", - "@opentelemetry/semantic-conventions": "1.13.0" + "@opentelemetry/core": "1.14.0", + "@opentelemetry/resources": "1.14.0", + "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/semantic-conventions": "1.14.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-exporter-zipkin", "sideEffects": false diff --git a/packages/opentelemetry-propagator-b3/package.json b/packages/opentelemetry-propagator-b3/package.json index 31fde1399c..3fb0ed7d57 100644 --- a/packages/opentelemetry-propagator-b3/package.json +++ b/packages/opentelemetry-propagator-b3/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/propagator-b3", - "version": "1.13.0", + "version": "1.14.0", "description": "OpenTelemetry B3 propagator provides context propagation for systems that are using the B3 header format", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -51,7 +51,7 @@ "access": "public" }, "dependencies": { - "@opentelemetry/core": "1.13.0" + "@opentelemetry/core": "1.14.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.5.0" diff --git a/packages/opentelemetry-propagator-jaeger/package.json b/packages/opentelemetry-propagator-jaeger/package.json index 30aa851011..598ccec32e 100644 --- a/packages/opentelemetry-propagator-jaeger/package.json +++ b/packages/opentelemetry-propagator-jaeger/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/propagator-jaeger", - "version": "1.13.0", + "version": "1.14.0", "description": "OpenTelemetry Jaeger propagator provides HTTP header propagation for systems that are using Jaeger HTTP header format.", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -79,7 +79,7 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/core": "1.13.0" + "@opentelemetry/core": "1.14.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-propagator-jaeger", "sideEffects": false diff --git a/packages/opentelemetry-resources/package.json b/packages/opentelemetry-resources/package.json index a6bb86ecc5..6aa2df79ce 100644 --- a/packages/opentelemetry-resources/package.json +++ b/packages/opentelemetry-resources/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resources", - "version": "1.13.0", + "version": "1.14.0", "description": "OpenTelemetry SDK resources", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -89,8 +89,8 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/core": "1.13.0", - "@opentelemetry/semantic-conventions": "1.13.0" + "@opentelemetry/core": "1.14.0", + "@opentelemetry/semantic-conventions": "1.14.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-resources", "sideEffects": false diff --git a/packages/opentelemetry-sdk-trace-base/package.json b/packages/opentelemetry-sdk-trace-base/package.json index d493500dc1..d2ee09e37c 100644 --- a/packages/opentelemetry-sdk-trace-base/package.json +++ b/packages/opentelemetry-sdk-trace-base/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sdk-trace-base", - "version": "1.13.0", + "version": "1.14.0", "description": "OpenTelemetry Tracing", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -91,9 +91,9 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/core": "1.13.0", - "@opentelemetry/resources": "1.13.0", - "@opentelemetry/semantic-conventions": "1.13.0" + "@opentelemetry/core": "1.14.0", + "@opentelemetry/resources": "1.14.0", + "@opentelemetry/semantic-conventions": "1.14.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-base", "sideEffects": false diff --git a/packages/opentelemetry-sdk-trace-node/package.json b/packages/opentelemetry-sdk-trace-node/package.json index 60ef5ccba8..075ea4aad7 100644 --- a/packages/opentelemetry-sdk-trace-node/package.json +++ b/packages/opentelemetry-sdk-trace-node/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sdk-trace-node", - "version": "1.13.0", + "version": "1.14.0", "description": "OpenTelemetry Node SDK provides automatic telemetry (tracing, metrics, etc) for Node.js applications", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,8 +46,8 @@ }, "devDependencies": { "@opentelemetry/api": ">=1.0.0 <1.5.0", - "@opentelemetry/resources": "1.13.0", - "@opentelemetry/semantic-conventions": "1.13.0", + "@opentelemetry/resources": "1.14.0", + "@opentelemetry/semantic-conventions": "1.14.0", "@types/mocha": "10.0.0", "@types/node": "18.6.5", "@types/semver": "7.3.9", @@ -63,11 +63,11 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/context-async-hooks": "1.13.0", - "@opentelemetry/core": "1.13.0", - "@opentelemetry/propagator-b3": "1.13.0", - "@opentelemetry/propagator-jaeger": "1.13.0", - "@opentelemetry/sdk-trace-base": "1.13.0", + "@opentelemetry/context-async-hooks": "1.14.0", + "@opentelemetry/core": "1.14.0", + "@opentelemetry/propagator-b3": "1.14.0", + "@opentelemetry/propagator-jaeger": "1.14.0", + "@opentelemetry/sdk-trace-base": "1.14.0", "semver": "^7.3.5" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node", diff --git a/packages/opentelemetry-sdk-trace-web/package.json b/packages/opentelemetry-sdk-trace-web/package.json index 21110b939c..e4be672326 100644 --- a/packages/opentelemetry-sdk-trace-web/package.json +++ b/packages/opentelemetry-sdk-trace-web/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sdk-trace-web", - "version": "1.13.0", + "version": "1.14.0", "description": "OpenTelemetry Web Tracer", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -57,9 +57,9 @@ "devDependencies": { "@babel/core": "7.16.0", "@opentelemetry/api": ">=1.0.0 <1.5.0", - "@opentelemetry/context-zone": "1.13.0", - "@opentelemetry/propagator-b3": "1.13.0", - "@opentelemetry/resources": "1.13.0", + "@opentelemetry/context-zone": "1.14.0", + "@opentelemetry/propagator-b3": "1.14.0", + "@opentelemetry/resources": "1.14.0", "@types/jquery": "3.5.8", "@types/mocha": "10.0.0", "@types/node": "18.6.5", @@ -90,9 +90,9 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/core": "1.13.0", - "@opentelemetry/sdk-trace-base": "1.13.0", - "@opentelemetry/semantic-conventions": "1.13.0" + "@opentelemetry/core": "1.14.0", + "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/semantic-conventions": "1.14.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-web", "sideEffects": false diff --git a/packages/opentelemetry-semantic-conventions/package.json b/packages/opentelemetry-semantic-conventions/package.json index 9f094c97cd..fd797b6a23 100644 --- a/packages/opentelemetry-semantic-conventions/package.json +++ b/packages/opentelemetry-semantic-conventions/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/semantic-conventions", - "version": "1.13.0", + "version": "1.14.0", "description": "OpenTelemetry semantic conventions", "main": "build/src/index.js", "module": "build/esm/index.js", diff --git a/packages/opentelemetry-shim-opentracing/package.json b/packages/opentelemetry-shim-opentracing/package.json index f009398ef2..c39e5a2e65 100644 --- a/packages/opentelemetry-shim-opentracing/package.json +++ b/packages/opentelemetry-shim-opentracing/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/shim-opentracing", - "version": "1.13.0", + "version": "1.14.0", "description": "OpenTracing to OpenTelemetry shim", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -43,9 +43,9 @@ }, "devDependencies": { "@opentelemetry/api": ">=1.0.0 <1.5.0", - "@opentelemetry/propagator-b3": "1.13.0", - "@opentelemetry/propagator-jaeger": "1.13.0", - "@opentelemetry/sdk-trace-base": "1.13.0", + "@opentelemetry/propagator-b3": "1.14.0", + "@opentelemetry/propagator-jaeger": "1.14.0", + "@opentelemetry/sdk-trace-base": "1.14.0", "@types/mocha": "10.0.0", "@types/node": "18.6.5", "codecov": "3.8.3", @@ -58,8 +58,8 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/core": "1.13.0", - "@opentelemetry/semantic-conventions": "1.13.0", + "@opentelemetry/core": "1.14.0", + "@opentelemetry/semantic-conventions": "1.14.0", "opentracing": "^0.14.4" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-shim-opentracing", diff --git a/packages/sdk-metrics/package.json b/packages/sdk-metrics/package.json index db230fd6b5..80ab750d71 100644 --- a/packages/sdk-metrics/package.json +++ b/packages/sdk-metrics/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sdk-metrics", - "version": "1.13.0", + "version": "1.14.0", "description": "OpenTelemetry metrics SDK", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -76,8 +76,8 @@ "@opentelemetry/api": ">=1.3.0 <1.5.0" }, "dependencies": { - "@opentelemetry/core": "1.13.0", - "@opentelemetry/resources": "1.13.0", + "@opentelemetry/core": "1.14.0", + "@opentelemetry/resources": "1.14.0", "lodash.merge": "4.6.2" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/sdk-metrics", diff --git a/packages/template/package.json b/packages/template/package.json index 47b183c625..2138d90be5 100644 --- a/packages/template/package.json +++ b/packages/template/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/template", - "version": "1.13.0", + "version": "1.14.0", "private": true, "publishConfig": { "access": "restricted" diff --git a/selenium-tests/package.json b/selenium-tests/package.json index 1bef831b3e..0203ef7a0c 100644 --- a/selenium-tests/package.json +++ b/selenium-tests/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/selenium-tests", - "version": "1.13.0", + "version": "1.14.0", "private": true, "description": "OpenTelemetry Selenium Tests", "main": "index.js", @@ -56,16 +56,16 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/context-zone-peer-dep": "1.13.0", - "@opentelemetry/core": "1.13.0", - "@opentelemetry/exporter-trace-otlp-http": "0.39.1", - "@opentelemetry/exporter-zipkin": "1.13.0", - "@opentelemetry/instrumentation": "0.39.1", - "@opentelemetry/instrumentation-fetch": "0.39.1", - "@opentelemetry/instrumentation-xml-http-request": "0.39.1", - "@opentelemetry/sdk-metrics": "1.13.0", - "@opentelemetry/sdk-trace-base": "1.13.0", - "@opentelemetry/sdk-trace-web": "1.13.0", + "@opentelemetry/context-zone-peer-dep": "1.14.0", + "@opentelemetry/core": "1.14.0", + "@opentelemetry/exporter-trace-otlp-http": "0.40.0", + "@opentelemetry/exporter-zipkin": "1.14.0", + "@opentelemetry/instrumentation": "0.40.0", + "@opentelemetry/instrumentation-fetch": "0.40.0", + "@opentelemetry/instrumentation-xml-http-request": "0.40.0", + "@opentelemetry/sdk-metrics": "1.14.0", + "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/sdk-trace-web": "1.14.0", "zone.js": "0.11.4" } } From 69da5d548ec4ad9e31297183b0f9764699b09760 Mon Sep 17 00:00:00 2001 From: Chengzhong Wu Date: Wed, 7 Jun 2023 15:52:13 +0800 Subject: [PATCH 05/71] chore(deps): update dependency linkinator to v5 (#3866) Co-authored-by: Marc Pichler --- .github/workflows/lint.yml | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 16b9d4b4cd..79c0f720be 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -14,7 +14,7 @@ jobs: steps: - uses: actions/setup-node@v3 with: - node-version: '14' + node-version: '16' - uses: actions/checkout@v3 diff --git a/package.json b/package.json index 0d232ef636..93302e80ef 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,7 @@ "eslint-plugin-prettier": "4.2.1", "gh-pages": "5.0.0", "lerna": "6.0.3", - "linkinator": "4.0.3", + "linkinator": "5.0.1", "markdownlint-cli": "0.32.2", "prettier": "2.8.0", "semver": "7.3.5", From 3d7015121cbddbf41002c3c87a2f34bf7424f217 Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Wed, 7 Jun 2023 22:29:39 +0200 Subject: [PATCH 06/71] chore(renovate): improve PR grouping and add @pichlermarc to assignees (#3868) * chore(renovate): improve PR grouping and add @pichlermarc to assingees * chore: fix 'compatability' typo --- .github/workflows/docs.yaml | 2 +- .../node14/index.ts | 0 .../node14/package.json | 2 +- .../node14/tsconfig.json | 0 .../node16/index.ts | 0 .../node16/package.json | 2 +- .../node16/tsconfig.json | 0 lerna.json | 2 +- renovate.json | 27 ++++++++++++++----- scripts/update-ts-configs.js | 2 +- 10 files changed, 25 insertions(+), 12 deletions(-) rename experimental/{backwards-compatability => backwards-compatibility}/node14/index.ts (100%) rename experimental/{backwards-compatability => backwards-compatibility}/node14/package.json (90%) rename experimental/{backwards-compatability => backwards-compatibility}/node14/tsconfig.json (100%) rename experimental/{backwards-compatability => backwards-compatibility}/node16/index.ts (100%) rename experimental/{backwards-compatability => backwards-compatibility}/node16/package.json (90%) rename experimental/{backwards-compatability => backwards-compatibility}/node16/tsconfig.json (100%) diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index d11fe80ab6..cde3ca25c7 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -23,7 +23,7 @@ jobs: path: | package-lock.json packages/*/package-lock.json - backwards-compatability/*/package-lock.json + backwards-compatibility/*/package-lock.json metapackages/*/package-lock.json packages/*/package-lock.json integration-tests/*/package-lock.json diff --git a/experimental/backwards-compatability/node14/index.ts b/experimental/backwards-compatibility/node14/index.ts similarity index 100% rename from experimental/backwards-compatability/node14/index.ts rename to experimental/backwards-compatibility/node14/index.ts diff --git a/experimental/backwards-compatability/node14/package.json b/experimental/backwards-compatibility/node14/package.json similarity index 90% rename from experimental/backwards-compatability/node14/package.json rename to experimental/backwards-compatibility/node14/package.json index f858e7782f..74b211cc10 100644 --- a/experimental/backwards-compatability/node14/package.json +++ b/experimental/backwards-compatibility/node14/package.json @@ -2,7 +2,7 @@ "name": "backcompat-node14", "version": "0.40.0", "private": true, - "description": "Backwards compatability app for node 14 types and the OpenTelemetry Node.js SDK", + "description": "Backwards compatibility app for node 14 types and the OpenTelemetry Node.js SDK", "main": "index.js", "scripts": { "test:backcompat": "tsc --noEmit index.ts && tsc --noEmit --esModuleInterop index.ts", diff --git a/experimental/backwards-compatability/node14/tsconfig.json b/experimental/backwards-compatibility/node14/tsconfig.json similarity index 100% rename from experimental/backwards-compatability/node14/tsconfig.json rename to experimental/backwards-compatibility/node14/tsconfig.json diff --git a/experimental/backwards-compatability/node16/index.ts b/experimental/backwards-compatibility/node16/index.ts similarity index 100% rename from experimental/backwards-compatability/node16/index.ts rename to experimental/backwards-compatibility/node16/index.ts diff --git a/experimental/backwards-compatability/node16/package.json b/experimental/backwards-compatibility/node16/package.json similarity index 90% rename from experimental/backwards-compatability/node16/package.json rename to experimental/backwards-compatibility/node16/package.json index 8f5723c52d..5170101e1d 100644 --- a/experimental/backwards-compatability/node16/package.json +++ b/experimental/backwards-compatibility/node16/package.json @@ -2,7 +2,7 @@ "name": "backcompat-node16", "version": "0.40.0", "private": true, - "description": "Backwards compatability app for node 16 types and the OpenTelemetry Node.js SDK", + "description": "Backwards compatibility app for node 16 types and the OpenTelemetry Node.js SDK", "main": "index.js", "scripts": { "test:backcompat": "tsc --noEmit index.ts && tsc --noEmit --esModuleInterop index.ts", diff --git a/experimental/backwards-compatability/node16/tsconfig.json b/experimental/backwards-compatibility/node16/tsconfig.json similarity index 100% rename from experimental/backwards-compatability/node16/tsconfig.json rename to experimental/backwards-compatibility/node16/tsconfig.json diff --git a/lerna.json b/lerna.json index 14fb76982e..f0053f3ed7 100644 --- a/lerna.json +++ b/lerna.json @@ -6,7 +6,7 @@ "packages/*", "experimental/packages/*", "experimental/examples/*", - "experimental/backwards-compatability/*", + "experimental/backwards-compatibility/*", "integration-tests/*", "selenium-tests", "examples/otlp-exporter-node", diff --git a/renovate.json b/renovate.json index dab042a79f..5a106908e4 100644 --- a/renovate.json +++ b/renovate.json @@ -2,18 +2,31 @@ "extends": ["config:base"], "packageRules": [ { - "groupName": "all non-major dependencies", - "groupSlug": "all-minor-patch", - "matchUpdateTypes": ["patch", "minor"] + "groupName": "all patch versions", + "groupSlug": "all-patch", + "matchUpdateTypes": ["patch"], + "excludePackageNames": ["prettier"], + "schedule": ["before 3am every weekday"] }, { - "matchPaths": ["backwards-compatibility"], + "matchUpdateTypes": ["minor"], + "dependencyDashboardApproval": true + }, + { + "matchUpdateTypes": ["major"], + "schedule": ["before 3am on Monday"] + }, + { + "matchPackageNames": ["typescript", "webpack", "webpack-cli"], + "dependencyDashboardApproval": true + }, + { + "matchPaths": ["experimental/backwards-compatibility/**"], "matchPackageNames": ["@types/node"], "enabled": false } ], - "ignoreDeps": ["gcp-metadata", "got", "mocha", "husky", "karma-webpack", "@opentelemetry/api"], - "assignees": ["@blumamir", "@dyladan", "@legendecas"], - "schedule": ["before 3am on Friday"], + "ignoreDeps": ["@opentelemetry/api", "@opentelemetry/resources_1.9.0"], + "assignees": ["@blumamir", "@dyladan", "@legendecas", "@pichlermarc"], "labels": ["dependencies"] } diff --git a/scripts/update-ts-configs.js b/scripts/update-ts-configs.js index 3c4f43273f..d437172181 100644 --- a/scripts/update-ts-configs.js +++ b/scripts/update-ts-configs.js @@ -45,7 +45,7 @@ const tsConfigMergeKeys = [ const tsConfigPriorityKeys = ['extends']; const ignoredLernaProjects = [ 'experimental/examples/*', - 'experimental/backwards-compatability/*', + 'experimental/backwards-compatibility/*', 'integration-tests/*', 'selenium-tests', 'examples/otlp-exporter-node', From a2ff4b677d64ec6421351f19fc9eee8f66d6fb60 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 8 Jun 2023 04:10:17 +0200 Subject: [PATCH 07/71] chore(deps): update dependency mocha to v10.2.0 (#3873) --- api/package.json | 2 +- experimental/packages/api-events/package.json | 2 +- experimental/packages/api-logs/package.json | 2 +- experimental/packages/exporter-logs-otlp-grpc/package.json | 2 +- experimental/packages/exporter-logs-otlp-http/package.json | 2 +- experimental/packages/exporter-logs-otlp-proto/package.json | 2 +- experimental/packages/exporter-trace-otlp-grpc/package.json | 2 +- experimental/packages/exporter-trace-otlp-http/package.json | 2 +- experimental/packages/exporter-trace-otlp-proto/package.json | 2 +- .../packages/opentelemetry-browser-detector/package.json | 4 ++-- .../opentelemetry-exporter-metrics-otlp-grpc/package.json | 2 +- .../opentelemetry-exporter-metrics-otlp-http/package.json | 2 +- .../opentelemetry-exporter-metrics-otlp-proto/package.json | 2 +- .../packages/opentelemetry-exporter-prometheus/package.json | 2 +- .../packages/opentelemetry-instrumentation-fetch/package.json | 2 +- .../packages/opentelemetry-instrumentation-grpc/package.json | 2 +- .../packages/opentelemetry-instrumentation-http/package.json | 2 +- .../package.json | 2 +- .../packages/opentelemetry-instrumentation/package.json | 2 +- experimental/packages/opentelemetry-sdk-node/package.json | 2 +- experimental/packages/otlp-exporter-base/package.json | 2 +- experimental/packages/otlp-grpc-exporter-base/package.json | 2 +- experimental/packages/otlp-proto-exporter-base/package.json | 2 +- experimental/packages/otlp-transformer/package.json | 2 +- experimental/packages/sdk-logs/package.json | 2 +- experimental/packages/shim-opencensus/package.json | 2 +- packages/opentelemetry-context-async-hooks/package.json | 2 +- packages/opentelemetry-context-zone-peer-dep/package.json | 2 +- packages/opentelemetry-context-zone/package.json | 2 +- packages/opentelemetry-core/package.json | 2 +- packages/opentelemetry-exporter-jaeger/package.json | 2 +- packages/opentelemetry-exporter-zipkin/package.json | 2 +- packages/opentelemetry-propagator-b3/package.json | 2 +- packages/opentelemetry-propagator-jaeger/package.json | 2 +- packages/opentelemetry-resources/package.json | 2 +- packages/opentelemetry-sdk-trace-base/package.json | 2 +- packages/opentelemetry-sdk-trace-node/package.json | 2 +- packages/opentelemetry-sdk-trace-web/package.json | 2 +- packages/opentelemetry-semantic-conventions/package.json | 2 +- packages/opentelemetry-shim-opentracing/package.json | 2 +- packages/sdk-metrics/package.json | 2 +- 41 files changed, 42 insertions(+), 42 deletions(-) diff --git a/api/package.json b/api/package.json index a82fd886b8..6541e36329 100644 --- a/api/package.json +++ b/api/package.json @@ -76,7 +76,7 @@ "karma-spec-reporter": "0.0.32", "karma-webpack": "4.0.2", "memfs": "3.4.9", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/api-events/package.json b/experimental/packages/api-events/package.json index 696756fdee..367ba24cdd 100644 --- a/experimental/packages/api-events/package.json +++ b/experimental/packages/api-events/package.json @@ -75,7 +75,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.32", "karma-webpack": "4.0.2", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", diff --git a/experimental/packages/api-logs/package.json b/experimental/packages/api-logs/package.json index 73bc979376..3055a48f3e 100644 --- a/experimental/packages/api-logs/package.json +++ b/experimental/packages/api-logs/package.json @@ -75,7 +75,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.32", "karma-webpack": "4.0.2", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", diff --git a/experimental/packages/exporter-logs-otlp-grpc/package.json b/experimental/packages/exporter-logs-otlp-grpc/package.json index d5be8c217b..f0f56eb39c 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/package.json +++ b/experimental/packages/exporter-logs-otlp-grpc/package.json @@ -59,7 +59,7 @@ "@types/sinon": "10.0.13", "codecov": "3.8.3", "cpx": "1.5.0", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index 153f941b51..24f498a5ea 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -87,7 +87,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.32", "karma-webpack": "4.0.2", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "14.0.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/exporter-logs-otlp-proto/package.json b/experimental/packages/exporter-logs-otlp-proto/package.json index 9b32258ec5..315ada966b 100644 --- a/experimental/packages/exporter-logs-otlp-proto/package.json +++ b/experimental/packages/exporter-logs-otlp-proto/package.json @@ -70,7 +70,7 @@ "@types/sinon": "10.0.13", "codecov": "3.8.3", "cpx": "1.5.0", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/exporter-trace-otlp-grpc/package.json b/experimental/packages/exporter-trace-otlp-grpc/package.json index 6f1177cd47..324002923f 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/package.json +++ b/experimental/packages/exporter-trace-otlp-grpc/package.json @@ -56,7 +56,7 @@ "@types/sinon": "10.0.13", "codecov": "3.8.3", "cpx": "1.5.0", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/exporter-trace-otlp-http/package.json b/experimental/packages/exporter-trace-otlp-http/package.json index 33ab897993..e182c4c7e4 100644 --- a/experimental/packages/exporter-trace-otlp-http/package.json +++ b/experimental/packages/exporter-trace-otlp-http/package.json @@ -79,7 +79,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.32", "karma-webpack": "4.0.2", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/exporter-trace-otlp-proto/package.json b/experimental/packages/exporter-trace-otlp-proto/package.json index ccbd99b1e1..b3b847bc06 100644 --- a/experimental/packages/exporter-trace-otlp-proto/package.json +++ b/experimental/packages/exporter-trace-otlp-proto/package.json @@ -69,7 +69,7 @@ "@types/sinon": "10.0.13", "codecov": "3.8.3", "cpx": "1.5.0", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/opentelemetry-browser-detector/package.json b/experimental/packages/opentelemetry-browser-detector/package.json index f940103b14..41f54a092c 100644 --- a/experimental/packages/opentelemetry-browser-detector/package.json +++ b/experimental/packages/opentelemetry-browser-detector/package.json @@ -55,11 +55,11 @@ "devDependencies": { "@babel/core": "7.16.0", "@opentelemetry/api": "1.4.1", - "@types/mocha": "9.1.1", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.13", "codecov": "3.8.3", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index 245f6cddcd..2754313f69 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -55,7 +55,7 @@ "@types/sinon": "10.0.13", "codecov": "3.8.3", "cpx": "1.5.0", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index 25cad65a78..51d67cac38 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -79,7 +79,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.32", "karma-webpack": "4.0.2", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index a38a810aad..0fddb13409 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -54,7 +54,7 @@ "@types/sinon": "10.0.13", "codecov": "3.8.3", "cpx": "1.5.0", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/opentelemetry-exporter-prometheus/package.json b/experimental/packages/opentelemetry-exporter-prometheus/package.json index 83d386206b..959077ec32 100644 --- a/experimental/packages/opentelemetry-exporter-prometheus/package.json +++ b/experimental/packages/opentelemetry-exporter-prometheus/package.json @@ -49,7 +49,7 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.13", "codecov": "3.8.3", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", "ts-mocha": "10.0.0", diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index b0a32e397e..e649a03e4a 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -72,7 +72,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.32", "karma-webpack": "4.0.2", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/package.json b/experimental/packages/opentelemetry-instrumentation-grpc/package.json index abe73ed1d1..1c0c46064c 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/package.json +++ b/experimental/packages/opentelemetry-instrumentation-grpc/package.json @@ -59,7 +59,7 @@ "@types/sinon": "10.0.13", "codecov": "3.8.3", "grpc": "1.24.11", - "mocha": "10.0.0", + "mocha": "10.2.0", "node-pre-gyp": "0.17.0", "nyc": "15.1.0", "semver": "7.3.5", diff --git a/experimental/packages/opentelemetry-instrumentation-http/package.json b/experimental/packages/opentelemetry-instrumentation-http/package.json index 46c7eec6e9..ef1d84af49 100644 --- a/experimental/packages/opentelemetry-instrumentation-http/package.json +++ b/experimental/packages/opentelemetry-instrumentation-http/package.json @@ -58,7 +58,7 @@ "@types/superagent": "4.1.13", "axios": "1.4.0", "codecov": "3.8.3", - "mocha": "10.0.0", + "mocha": "10.2.0", "nock": "13.0.11", "nyc": "15.1.0", "request": "2.88.2", diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json index 4177a9c354..3f4a557e44 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json @@ -72,7 +72,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.32", "karma-webpack": "4.0.2", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index cb13c32ddb..5a98b08c25 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -99,7 +99,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.32", "karma-webpack": "4.0.2", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json index db67154c4f..6bafec79c5 100644 --- a/experimental/packages/opentelemetry-sdk-node/package.json +++ b/experimental/packages/opentelemetry-sdk-node/package.json @@ -69,7 +69,7 @@ "@types/sinon": "10.0.13", "codecov": "3.8.3", "istanbul-instrumenter-loader": "3.0.1", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "semver": "7.3.5", "sinon": "15.0.0", diff --git a/experimental/packages/otlp-exporter-base/package.json b/experimental/packages/otlp-exporter-base/package.json index 145e379eba..f81be8a2f9 100644 --- a/experimental/packages/otlp-exporter-base/package.json +++ b/experimental/packages/otlp-exporter-base/package.json @@ -70,7 +70,7 @@ "@types/sinon": "10.0.13", "codecov": "3.8.3", "istanbul-instrumenter-loader": "3.0.1", - "mocha": "10.0.0", + "mocha": "10.2.0", "nock": "13.0.11", "nyc": "15.1.0", "sinon": "15.0.0", diff --git a/experimental/packages/otlp-grpc-exporter-base/package.json b/experimental/packages/otlp-grpc-exporter-base/package.json index aad7b9170e..75b4e487f9 100644 --- a/experimental/packages/otlp-grpc-exporter-base/package.json +++ b/experimental/packages/otlp-grpc-exporter-base/package.json @@ -58,7 +58,7 @@ "@types/sinon": "10.0.13", "codecov": "3.8.3", "cpx": "1.5.0", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "protobufjs-cli": "1.0.2", "sinon": "15.0.0", diff --git a/experimental/packages/otlp-proto-exporter-base/package.json b/experimental/packages/otlp-proto-exporter-base/package.json index c96b96c37b..c7b69b659e 100644 --- a/experimental/packages/otlp-proto-exporter-base/package.json +++ b/experimental/packages/otlp-proto-exporter-base/package.json @@ -65,7 +65,7 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.13", "codecov": "3.8.3", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "protobufjs-cli": "1.0.2", "sinon": "15.0.0", diff --git a/experimental/packages/otlp-transformer/package.json b/experimental/packages/otlp-transformer/package.json index 5cf982c8c4..652efb6918 100644 --- a/experimental/packages/otlp-transformer/package.json +++ b/experimental/packages/otlp-transformer/package.json @@ -68,7 +68,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.32", "karma-webpack": "4.0.2", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", diff --git a/experimental/packages/sdk-logs/package.json b/experimental/packages/sdk-logs/package.json index 19c1996904..d1b714b129 100644 --- a/experimental/packages/sdk-logs/package.json +++ b/experimental/packages/sdk-logs/package.json @@ -84,7 +84,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.32", "karma-webpack": "4.0.2", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "14.0.0", "ts-mocha": "10.0.0", diff --git a/experimental/packages/shim-opencensus/package.json b/experimental/packages/shim-opencensus/package.json index 19481bea63..cd833cc9ea 100644 --- a/experimental/packages/shim-opencensus/package.json +++ b/experimental/packages/shim-opencensus/package.json @@ -52,7 +52,7 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.13", "codecov": "3.8.3", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", "ts-mocha": "10.0.0", diff --git a/packages/opentelemetry-context-async-hooks/package.json b/packages/opentelemetry-context-async-hooks/package.json index 662b4107b3..5d14959ab7 100644 --- a/packages/opentelemetry-context-async-hooks/package.json +++ b/packages/opentelemetry-context-async-hooks/package.json @@ -48,7 +48,7 @@ "@types/mocha": "10.0.0", "@types/node": "18.6.5", "codecov": "3.8.3", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "ts-mocha": "10.0.0", "typescript": "4.4.4" diff --git a/packages/opentelemetry-context-zone-peer-dep/package.json b/packages/opentelemetry-context-zone-peer-dep/package.json index c895e58de0..f197fb52bd 100644 --- a/packages/opentelemetry-context-zone-peer-dep/package.json +++ b/packages/opentelemetry-context-zone-peer-dep/package.json @@ -69,7 +69,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.32", "karma-webpack": "4.0.2", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", "ts-loader": "8.4.0", diff --git a/packages/opentelemetry-context-zone/package.json b/packages/opentelemetry-context-zone/package.json index 60a1993a8d..61be536f07 100644 --- a/packages/opentelemetry-context-zone/package.json +++ b/packages/opentelemetry-context-zone/package.json @@ -62,7 +62,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.32", "karma-webpack": "4.0.2", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", "ts-loader": "8.4.0", diff --git a/packages/opentelemetry-core/package.json b/packages/opentelemetry-core/package.json index b3b8de8a23..d3200c6d0b 100644 --- a/packages/opentelemetry-core/package.json +++ b/packages/opentelemetry-core/package.json @@ -78,7 +78,7 @@ "karma-spec-reporter": "0.0.32", "karma-webpack": "4.0.2", "lerna": "6.0.3", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", "ts-loader": "8.4.0", diff --git a/packages/opentelemetry-exporter-jaeger/package.json b/packages/opentelemetry-exporter-jaeger/package.json index 17ba0e50df..9a6c95dea5 100644 --- a/packages/opentelemetry-exporter-jaeger/package.json +++ b/packages/opentelemetry-exporter-jaeger/package.json @@ -50,7 +50,7 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.13", "codecov": "3.8.3", - "mocha": "10.0.0", + "mocha": "10.2.0", "nock": "13.0.11", "nyc": "15.1.0", "sinon": "15.0.0", diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index aeee242f84..8b4e87b43e 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -75,7 +75,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.32", "karma-webpack": "4.0.2", - "mocha": "10.0.0", + "mocha": "10.2.0", "nock": "13.0.11", "nyc": "15.1.0", "sinon": "15.0.0", diff --git a/packages/opentelemetry-propagator-b3/package.json b/packages/opentelemetry-propagator-b3/package.json index 3fb0ed7d57..17e25ec4f4 100644 --- a/packages/opentelemetry-propagator-b3/package.json +++ b/packages/opentelemetry-propagator-b3/package.json @@ -62,7 +62,7 @@ "@types/node": "18.6.5", "codecov": "3.8.3", "istanbul-instrumenter-loader": "3.0.1", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", diff --git a/packages/opentelemetry-propagator-jaeger/package.json b/packages/opentelemetry-propagator-jaeger/package.json index 598ccec32e..fd5bdc9dd3 100644 --- a/packages/opentelemetry-propagator-jaeger/package.json +++ b/packages/opentelemetry-propagator-jaeger/package.json @@ -67,7 +67,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.32", "karma-webpack": "4.0.2", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", "ts-loader": "8.4.0", diff --git a/packages/opentelemetry-resources/package.json b/packages/opentelemetry-resources/package.json index 6aa2df79ce..28a38b7ade 100644 --- a/packages/opentelemetry-resources/package.json +++ b/packages/opentelemetry-resources/package.json @@ -75,7 +75,7 @@ "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.32", "karma-webpack": "4.0.2", - "mocha": "10.0.0", + "mocha": "10.2.0", "nock": "13.0.11", "nyc": "15.1.0", "sinon": "15.0.0", diff --git a/packages/opentelemetry-sdk-trace-base/package.json b/packages/opentelemetry-sdk-trace-base/package.json index d2ee09e37c..0515f543f1 100644 --- a/packages/opentelemetry-sdk-trace-base/package.json +++ b/packages/opentelemetry-sdk-trace-base/package.json @@ -79,7 +79,7 @@ "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.32", "karma-webpack": "4.0.2", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", "ts-loader": "8.4.0", diff --git a/packages/opentelemetry-sdk-trace-node/package.json b/packages/opentelemetry-sdk-trace-node/package.json index 075ea4aad7..5d115ecd82 100644 --- a/packages/opentelemetry-sdk-trace-node/package.json +++ b/packages/opentelemetry-sdk-trace-node/package.json @@ -53,7 +53,7 @@ "@types/semver": "7.3.9", "@types/sinon": "10.0.13", "codecov": "3.8.3", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", "ts-mocha": "10.0.0", diff --git a/packages/opentelemetry-sdk-trace-web/package.json b/packages/opentelemetry-sdk-trace-web/package.json index e4be672326..d2f950b8bb 100644 --- a/packages/opentelemetry-sdk-trace-web/package.json +++ b/packages/opentelemetry-sdk-trace-web/package.json @@ -76,7 +76,7 @@ "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.32", "karma-webpack": "4.0.2", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", "ts-loader": "8.4.0", diff --git a/packages/opentelemetry-semantic-conventions/package.json b/packages/opentelemetry-semantic-conventions/package.json index fd797b6a23..510cefa003 100644 --- a/packages/opentelemetry-semantic-conventions/package.json +++ b/packages/opentelemetry-semantic-conventions/package.json @@ -53,7 +53,7 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.13", "codecov": "3.8.3", - "mocha": "10.0.0", + "mocha": "10.2.0", "nock": "13.0.11", "nyc": "15.1.0", "sinon": "15.0.0", diff --git a/packages/opentelemetry-shim-opentracing/package.json b/packages/opentelemetry-shim-opentracing/package.json index c39e5a2e65..8b6163658a 100644 --- a/packages/opentelemetry-shim-opentracing/package.json +++ b/packages/opentelemetry-shim-opentracing/package.json @@ -49,7 +49,7 @@ "@types/mocha": "10.0.0", "@types/node": "18.6.5", "codecov": "3.8.3", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "ts-mocha": "10.0.0", "typescript": "4.4.4" diff --git a/packages/sdk-metrics/package.json b/packages/sdk-metrics/package.json index 80ab750d71..652373b1d9 100644 --- a/packages/sdk-metrics/package.json +++ b/packages/sdk-metrics/package.json @@ -66,7 +66,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.32", "karma-webpack": "4.0.2", - "mocha": "10.0.0", + "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", "ts-mocha": "10.0.0", From 51dd6f2ddd73cb5fcfd27fb8fb4b1b90d59812e3 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 8 Jun 2023 11:45:34 +0200 Subject: [PATCH 08/71] chore(deps): update all patch versions (#3874) --- api/package.json | 8 ++++---- experimental/packages/api-events/package.json | 4 ++-- experimental/packages/api-logs/package.json | 4 ++-- .../packages/exporter-logs-otlp-grpc/package.json | 4 ++-- .../packages/exporter-logs-otlp-http/package.json | 8 ++++---- .../packages/exporter-logs-otlp-proto/package.json | 4 ++-- .../packages/exporter-trace-otlp-grpc/package.json | 4 ++-- .../packages/exporter-trace-otlp-http/package.json | 6 +++--- .../packages/exporter-trace-otlp-proto/package.json | 4 ++-- .../packages/opentelemetry-browser-detector/package.json | 2 +- .../opentelemetry-exporter-metrics-otlp-grpc/package.json | 4 ++-- .../opentelemetry-exporter-metrics-otlp-http/package.json | 6 +++--- .../package.json | 4 ++-- .../opentelemetry-exporter-prometheus/package.json | 4 ++-- .../opentelemetry-instrumentation-fetch/package.json | 6 +++--- .../opentelemetry-instrumentation-grpc/package.json | 4 ++-- .../opentelemetry-instrumentation-http/package.json | 8 ++++---- .../package.json | 6 +++--- .../packages/opentelemetry-instrumentation/package.json | 6 +++--- experimental/packages/opentelemetry-sdk-node/package.json | 4 ++-- experimental/packages/otlp-exporter-base/package.json | 4 ++-- .../packages/otlp-grpc-exporter-base/package.json | 4 ++-- .../packages/otlp-proto-exporter-base/package.json | 4 ++-- experimental/packages/otlp-transformer/package.json | 4 ++-- experimental/packages/sdk-logs/package.json | 8 ++++---- experimental/packages/shim-opencensus/package.json | 4 ++-- packages/opentelemetry-context-async-hooks/package.json | 2 +- packages/opentelemetry-context-zone-peer-dep/package.json | 6 +++--- packages/opentelemetry-context-zone/package.json | 6 +++--- packages/opentelemetry-core/package.json | 6 +++--- packages/opentelemetry-exporter-jaeger/package.json | 4 ++-- packages/opentelemetry-exporter-zipkin/package.json | 6 +++--- packages/opentelemetry-propagator-b3/package.json | 2 +- packages/opentelemetry-propagator-jaeger/package.json | 6 +++--- packages/opentelemetry-resources/package.json | 6 +++--- packages/opentelemetry-sdk-trace-base/package.json | 6 +++--- packages/opentelemetry-sdk-trace-node/package.json | 4 ++-- packages/opentelemetry-sdk-trace-web/package.json | 8 ++++---- packages/opentelemetry-semantic-conventions/package.json | 4 ++-- packages/opentelemetry-shim-opentracing/package.json | 2 +- packages/sdk-metrics/package.json | 8 ++++---- 41 files changed, 102 insertions(+), 102 deletions(-) diff --git a/api/package.json b/api/package.json index 6541e36329..f5f3d0e2e6 100644 --- a/api/package.json +++ b/api/package.json @@ -60,10 +60,10 @@ "access": "public" }, "devDependencies": { - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", - "@types/webpack": "4.41.26", + "@types/sinon": "10.0.15", + "@types/webpack": "4.41.33", "@types/webpack-env": "1.16.3", "codecov": "3.8.3", "dpdm": "3.10.0", @@ -73,7 +73,7 @@ "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", "karma-mocha-webworker": "1.3.0", - "karma-spec-reporter": "0.0.32", + "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", "memfs": "3.4.9", "mocha": "10.2.0", diff --git a/experimental/packages/api-events/package.json b/experimental/packages/api-events/package.json index 367ba24cdd..934a5f152e 100644 --- a/experimental/packages/api-events/package.json +++ b/experimental/packages/api-events/package.json @@ -64,7 +64,7 @@ "@opentelemetry/api": "^1.0.0" }, "devDependencies": { - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/webpack-env": "1.16.3", "codecov": "3.8.3", @@ -73,7 +73,7 @@ "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.32", + "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/experimental/packages/api-logs/package.json b/experimental/packages/api-logs/package.json index 3055a48f3e..0fe84f8740 100644 --- a/experimental/packages/api-logs/package.json +++ b/experimental/packages/api-logs/package.json @@ -64,7 +64,7 @@ "@opentelemetry/api": "^1.0.0" }, "devDependencies": { - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/webpack-env": "1.16.3", "codecov": "3.8.3", @@ -73,7 +73,7 @@ "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.32", + "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/experimental/packages/exporter-logs-otlp-grpc/package.json b/experimental/packages/exporter-logs-otlp-grpc/package.json index f0f56eb39c..699788e84d 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/package.json +++ b/experimental/packages/exporter-logs-otlp-grpc/package.json @@ -54,9 +54,9 @@ "@opentelemetry/api-logs": "0.40.0", "@opentelemetry/otlp-exporter-base": "0.40.0", "@opentelemetry/resources": "1.14.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "codecov": "3.8.3", "cpx": "1.5.0", "mocha": "10.2.0", diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index 24f498a5ea..6986bcca30 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -73,9 +73,9 @@ "devDependencies": { "@babel/core": "7.16.0", "@opentelemetry/api-logs": "0.40.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "babel-loader": "8.2.3", "codecov": "3.8.3", @@ -85,11 +85,11 @@ "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.32", + "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "14.0.0", + "sinon": "14.0.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4", diff --git a/experimental/packages/exporter-logs-otlp-proto/package.json b/experimental/packages/exporter-logs-otlp-proto/package.json index 315ada966b..bf66f69e65 100644 --- a/experimental/packages/exporter-logs-otlp-proto/package.json +++ b/experimental/packages/exporter-logs-otlp-proto/package.json @@ -65,9 +65,9 @@ "devDependencies": { "@babel/core": "7.16.0", "@opentelemetry/api": "1.4.1", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "codecov": "3.8.3", "cpx": "1.5.0", "mocha": "10.2.0", diff --git a/experimental/packages/exporter-trace-otlp-grpc/package.json b/experimental/packages/exporter-trace-otlp-grpc/package.json index 324002923f..362e0934d3 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/package.json +++ b/experimental/packages/exporter-trace-otlp-grpc/package.json @@ -51,9 +51,9 @@ "@grpc/proto-loader": "^0.7.3", "@opentelemetry/api": "1.4.1", "@opentelemetry/otlp-exporter-base": "0.40.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "codecov": "3.8.3", "cpx": "1.5.0", "mocha": "10.2.0", diff --git a/experimental/packages/exporter-trace-otlp-http/package.json b/experimental/packages/exporter-trace-otlp-http/package.json index e182c4c7e4..fb9eec5a93 100644 --- a/experimental/packages/exporter-trace-otlp-http/package.json +++ b/experimental/packages/exporter-trace-otlp-http/package.json @@ -65,9 +65,9 @@ "devDependencies": { "@babel/core": "7.16.0", "@opentelemetry/api": "1.4.1", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "babel-loader": "8.2.3", "codecov": "3.8.3", @@ -77,7 +77,7 @@ "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.32", + "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/experimental/packages/exporter-trace-otlp-proto/package.json b/experimental/packages/exporter-trace-otlp-proto/package.json index b3b847bc06..10c2b03cf5 100644 --- a/experimental/packages/exporter-trace-otlp-proto/package.json +++ b/experimental/packages/exporter-trace-otlp-proto/package.json @@ -64,9 +64,9 @@ "devDependencies": { "@babel/core": "7.16.0", "@opentelemetry/api": "1.4.1", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "codecov": "3.8.3", "cpx": "1.5.0", "mocha": "10.2.0", diff --git a/experimental/packages/opentelemetry-browser-detector/package.json b/experimental/packages/opentelemetry-browser-detector/package.json index 41f54a092c..0c2d09c3d7 100644 --- a/experimental/packages/opentelemetry-browser-detector/package.json +++ b/experimental/packages/opentelemetry-browser-detector/package.json @@ -57,7 +57,7 @@ "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "codecov": "3.8.3", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index 2754313f69..d2d2d9ffd4 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -50,9 +50,9 @@ "@babel/core": "7.16.0", "@grpc/proto-loader": "^0.7.3", "@opentelemetry/api": "1.4.1", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "codecov": "3.8.3", "cpx": "1.5.0", "mocha": "10.2.0", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index 51d67cac38..ad0a4100b4 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -65,9 +65,9 @@ "devDependencies": { "@babel/core": "7.16.0", "@opentelemetry/api": "1.4.1", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "babel-loader": "8.2.3", "codecov": "3.8.3", @@ -77,7 +77,7 @@ "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.32", + "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index 0fddb13409..35d5b14f96 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -49,9 +49,9 @@ "devDependencies": { "@babel/core": "7.16.0", "@opentelemetry/api": "1.4.1", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "codecov": "3.8.3", "cpx": "1.5.0", "mocha": "10.2.0", diff --git a/experimental/packages/opentelemetry-exporter-prometheus/package.json b/experimental/packages/opentelemetry-exporter-prometheus/package.json index 959077ec32..0102ede2e7 100644 --- a/experimental/packages/opentelemetry-exporter-prometheus/package.json +++ b/experimental/packages/opentelemetry-exporter-prometheus/package.json @@ -45,9 +45,9 @@ "devDependencies": { "@opentelemetry/api": "1.4.1", "@opentelemetry/semantic-conventions": "1.14.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "codecov": "3.8.3", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index e649a03e4a..a8f6213a70 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -59,9 +59,9 @@ "@opentelemetry/context-zone": "1.14.0", "@opentelemetry/propagator-b3": "1.14.0", "@opentelemetry/sdk-trace-base": "1.14.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "babel-loader": "8.2.3", "codecov": "3.8.3", @@ -70,7 +70,7 @@ "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.32", + "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/package.json b/experimental/packages/opentelemetry-instrumentation-grpc/package.json index 1c0c46064c..20b06eb4f5 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/package.json +++ b/experimental/packages/opentelemetry-instrumentation-grpc/package.json @@ -53,10 +53,10 @@ "@opentelemetry/core": "1.14.0", "@opentelemetry/sdk-trace-base": "1.14.0", "@opentelemetry/sdk-trace-node": "1.14.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/semver": "7.3.9", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "codecov": "3.8.3", "grpc": "1.24.11", "mocha": "10.2.0", diff --git a/experimental/packages/opentelemetry-instrumentation-http/package.json b/experimental/packages/opentelemetry-instrumentation-http/package.json index ef1d84af49..d0f9cd3914 100644 --- a/experimental/packages/opentelemetry-instrumentation-http/package.json +++ b/experimental/packages/opentelemetry-instrumentation-http/package.json @@ -50,12 +50,12 @@ "@opentelemetry/sdk-metrics": "1.14.0", "@opentelemetry/sdk-trace-base": "1.14.0", "@opentelemetry/sdk-trace-node": "1.14.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/request-promise-native": "1.0.18", "@types/semver": "7.3.9", - "@types/sinon": "10.0.13", - "@types/superagent": "4.1.13", + "@types/sinon": "10.0.15", + "@types/superagent": "4.1.18", "axios": "1.4.0", "codecov": "3.8.3", "mocha": "10.2.0", @@ -64,7 +64,7 @@ "request": "2.88.2", "request-promise-native": "1.0.9", "sinon": "15.0.0", - "superagent": "8.0.0", + "superagent": "8.0.9", "ts-mocha": "10.0.0", "typescript": "4.4.4" }, diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json index 3f4a557e44..29f36e0c18 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json @@ -59,9 +59,9 @@ "@opentelemetry/context-zone": "1.14.0", "@opentelemetry/propagator-b3": "1.14.0", "@opentelemetry/sdk-trace-base": "1.14.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "babel-loader": "8.2.3", "codecov": "3.8.3", @@ -70,7 +70,7 @@ "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.32", + "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index 5a98b08c25..aed1782f4f 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -84,10 +84,10 @@ "@babel/core": "7.16.0", "@opentelemetry/api": "1.4.1", "@opentelemetry/sdk-metrics": "1.14.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/semver": "7.3.9", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "babel-loader": "8.2.3", "codecov": "3.8.3", @@ -97,7 +97,7 @@ "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.32", + "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json index 6bafec79c5..0372de64f7 100644 --- a/experimental/packages/opentelemetry-sdk-node/package.json +++ b/experimental/packages/opentelemetry-sdk-node/package.json @@ -63,10 +63,10 @@ "devDependencies": { "@opentelemetry/api": "1.4.1", "@opentelemetry/context-async-hooks": "1.14.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/semver": "7.3.9", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "codecov": "3.8.3", "istanbul-instrumenter-loader": "3.0.1", "mocha": "10.2.0", diff --git a/experimental/packages/otlp-exporter-base/package.json b/experimental/packages/otlp-exporter-base/package.json index f81be8a2f9..96356cd4d9 100644 --- a/experimental/packages/otlp-exporter-base/package.json +++ b/experimental/packages/otlp-exporter-base/package.json @@ -65,9 +65,9 @@ }, "devDependencies": { "@opentelemetry/api": "1.4.1", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "codecov": "3.8.3", "istanbul-instrumenter-loader": "3.0.1", "mocha": "10.2.0", diff --git a/experimental/packages/otlp-grpc-exporter-base/package.json b/experimental/packages/otlp-grpc-exporter-base/package.json index 75b4e487f9..b10279fa56 100644 --- a/experimental/packages/otlp-grpc-exporter-base/package.json +++ b/experimental/packages/otlp-grpc-exporter-base/package.json @@ -53,9 +53,9 @@ "@opentelemetry/otlp-transformer": "0.40.0", "@opentelemetry/resources": "1.14.0", "@opentelemetry/sdk-trace-base": "1.14.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "codecov": "3.8.3", "cpx": "1.5.0", "mocha": "10.2.0", diff --git a/experimental/packages/otlp-proto-exporter-base/package.json b/experimental/packages/otlp-proto-exporter-base/package.json index c7b69b659e..0818a4a844 100644 --- a/experimental/packages/otlp-proto-exporter-base/package.json +++ b/experimental/packages/otlp-proto-exporter-base/package.json @@ -61,9 +61,9 @@ "devDependencies": { "@babel/core": "7.16.0", "@opentelemetry/api": "1.4.1", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "codecov": "3.8.3", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/experimental/packages/otlp-transformer/package.json b/experimental/packages/otlp-transformer/package.json index 652efb6918..86359693ae 100644 --- a/experimental/packages/otlp-transformer/package.json +++ b/experimental/packages/otlp-transformer/package.json @@ -58,7 +58,7 @@ "@opentelemetry/api": "1.4.1", "@opentelemetry/api-logs": "0.39.1", "@opentelemetry/sdk-logs": "0.39.1", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/webpack-env": "1.16.3", "codecov": "3.8.3", "istanbul-instrumenter-loader": "3.0.1", @@ -66,7 +66,7 @@ "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.32", + "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/experimental/packages/sdk-logs/package.json b/experimental/packages/sdk-logs/package.json index d1b714b129..540d337f13 100644 --- a/experimental/packages/sdk-logs/package.json +++ b/experimental/packages/sdk-logs/package.json @@ -74,19 +74,19 @@ "devDependencies": { "@opentelemetry/api": ">=1.4.0 <1.5.0", "@opentelemetry/api-logs": "0.40.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "codecov": "3.8.3", "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.32", + "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "14.0.0", + "sinon": "14.0.2", "ts-mocha": "10.0.0", "typescript": "4.4.4" }, diff --git a/experimental/packages/shim-opencensus/package.json b/experimental/packages/shim-opencensus/package.json index cd833cc9ea..ec3c5dafed 100644 --- a/experimental/packages/shim-opencensus/package.json +++ b/experimental/packages/shim-opencensus/package.json @@ -48,9 +48,9 @@ "@opentelemetry/api": "1.4.1", "@opentelemetry/context-async-hooks": "1.14.0", "@opentelemetry/sdk-trace-base": "1.14.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "codecov": "3.8.3", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/packages/opentelemetry-context-async-hooks/package.json b/packages/opentelemetry-context-async-hooks/package.json index 5d14959ab7..a227e9ce27 100644 --- a/packages/opentelemetry-context-async-hooks/package.json +++ b/packages/opentelemetry-context-async-hooks/package.json @@ -45,7 +45,7 @@ }, "devDependencies": { "@opentelemetry/api": ">=1.0.0 <1.5.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", "codecov": "3.8.3", "mocha": "10.2.0", diff --git a/packages/opentelemetry-context-zone-peer-dep/package.json b/packages/opentelemetry-context-zone-peer-dep/package.json index f197fb52bd..a930cb8484 100644 --- a/packages/opentelemetry-context-zone-peer-dep/package.json +++ b/packages/opentelemetry-context-zone-peer-dep/package.json @@ -55,9 +55,9 @@ "devDependencies": { "@babel/core": "7.16.0", "@opentelemetry/api": ">=1.0.0 <1.5.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "@types/zone.js": "0.5.12", "babel-loader": "8.2.3", @@ -67,7 +67,7 @@ "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.32", + "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/packages/opentelemetry-context-zone/package.json b/packages/opentelemetry-context-zone/package.json index 61be536f07..e79a867835 100644 --- a/packages/opentelemetry-context-zone/package.json +++ b/packages/opentelemetry-context-zone/package.json @@ -51,16 +51,16 @@ }, "devDependencies": { "@babel/core": "7.16.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "babel-loader": "8.2.3", "codecov": "3.8.3", "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.32", + "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/packages/opentelemetry-core/package.json b/packages/opentelemetry-core/package.json index d3200c6d0b..89e1b0acab 100644 --- a/packages/opentelemetry-core/package.json +++ b/packages/opentelemetry-core/package.json @@ -65,9 +65,9 @@ }, "devDependencies": { "@opentelemetry/api": ">=1.0.0 <1.5.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "codecov": "3.8.3", "istanbul-instrumenter-loader": "3.0.1", @@ -75,7 +75,7 @@ "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.32", + "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", "lerna": "6.0.3", "mocha": "10.2.0", diff --git a/packages/opentelemetry-exporter-jaeger/package.json b/packages/opentelemetry-exporter-jaeger/package.json index 9a6c95dea5..030eba5f6e 100644 --- a/packages/opentelemetry-exporter-jaeger/package.json +++ b/packages/opentelemetry-exporter-jaeger/package.json @@ -46,9 +46,9 @@ "devDependencies": { "@opentelemetry/api": "^1.0.0", "@opentelemetry/resources": "1.14.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "codecov": "3.8.3", "mocha": "10.2.0", "nock": "13.0.11", diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index 8b4e87b43e..70f71e4603 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -62,9 +62,9 @@ "devDependencies": { "@babel/core": "7.16.0", "@opentelemetry/api": "^1.0.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "babel-loader": "8.2.3", "codecov": "3.8.3", @@ -73,7 +73,7 @@ "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.32", + "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", "mocha": "10.2.0", "nock": "13.0.11", diff --git a/packages/opentelemetry-propagator-b3/package.json b/packages/opentelemetry-propagator-b3/package.json index 17e25ec4f4..7f21ce7603 100644 --- a/packages/opentelemetry-propagator-b3/package.json +++ b/packages/opentelemetry-propagator-b3/package.json @@ -58,7 +58,7 @@ }, "devDependencies": { "@opentelemetry/api": ">=1.0.0 <1.5.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", "codecov": "3.8.3", "istanbul-instrumenter-loader": "3.0.1", diff --git a/packages/opentelemetry-propagator-jaeger/package.json b/packages/opentelemetry-propagator-jaeger/package.json index fd5bdc9dd3..a6d01b7a4d 100644 --- a/packages/opentelemetry-propagator-jaeger/package.json +++ b/packages/opentelemetry-propagator-jaeger/package.json @@ -55,9 +55,9 @@ }, "devDependencies": { "@opentelemetry/api": ">=1.0.0 <1.5.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "codecov": "3.8.3", "istanbul-instrumenter-loader": "3.0.1", @@ -65,7 +65,7 @@ "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.32", + "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/packages/opentelemetry-resources/package.json b/packages/opentelemetry-resources/package.json index 28a38b7ade..b2655b10a9 100644 --- a/packages/opentelemetry-resources/package.json +++ b/packages/opentelemetry-resources/package.json @@ -63,9 +63,9 @@ "devDependencies": { "@opentelemetry/api": ">=1.0.0 <1.5.0", "@opentelemetry/resources_1.9.0": "npm:@opentelemetry/resources@1.9.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "codecov": "3.8.3", "karma": "6.3.16", @@ -73,7 +73,7 @@ "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", "karma-mocha-webworker": "1.3.0", - "karma-spec-reporter": "0.0.32", + "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", "mocha": "10.2.0", "nock": "13.0.11", diff --git a/packages/opentelemetry-sdk-trace-base/package.json b/packages/opentelemetry-sdk-trace-base/package.json index 0515f543f1..40c985ee97 100644 --- a/packages/opentelemetry-sdk-trace-base/package.json +++ b/packages/opentelemetry-sdk-trace-base/package.json @@ -66,9 +66,9 @@ "devDependencies": { "@opentelemetry/api": ">=1.0.0 <1.5.0", "@opentelemetry/resources_1.9.0": "npm:@opentelemetry/resources@1.9.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "codecov": "3.8.3", "istanbul-instrumenter-loader": "3.0.1", @@ -77,7 +77,7 @@ "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", "karma-mocha-webworker": "1.3.0", - "karma-spec-reporter": "0.0.32", + "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/packages/opentelemetry-sdk-trace-node/package.json b/packages/opentelemetry-sdk-trace-node/package.json index 5d115ecd82..5286d4dd42 100644 --- a/packages/opentelemetry-sdk-trace-node/package.json +++ b/packages/opentelemetry-sdk-trace-node/package.json @@ -48,10 +48,10 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0", "@opentelemetry/resources": "1.14.0", "@opentelemetry/semantic-conventions": "1.14.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/semver": "7.3.9", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "codecov": "3.8.3", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/packages/opentelemetry-sdk-trace-web/package.json b/packages/opentelemetry-sdk-trace-web/package.json index d2f950b8bb..d63b1ebc75 100644 --- a/packages/opentelemetry-sdk-trace-web/package.json +++ b/packages/opentelemetry-sdk-trace-web/package.json @@ -60,10 +60,10 @@ "@opentelemetry/context-zone": "1.14.0", "@opentelemetry/propagator-b3": "1.14.0", "@opentelemetry/resources": "1.14.0", - "@types/jquery": "3.5.8", - "@types/mocha": "10.0.0", + "@types/jquery": "3.5.16", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "babel-loader": "8.2.3", "codecov": "3.8.3", @@ -74,7 +74,7 @@ "karma-jquery": "0.2.4", "karma-mocha": "2.0.1", "karma-mocha-webworker": "1.3.0", - "karma-spec-reporter": "0.0.32", + "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/packages/opentelemetry-semantic-conventions/package.json b/packages/opentelemetry-semantic-conventions/package.json index 510cefa003..d918b90ab0 100644 --- a/packages/opentelemetry-semantic-conventions/package.json +++ b/packages/opentelemetry-semantic-conventions/package.json @@ -49,9 +49,9 @@ "access": "public" }, "devDependencies": { - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "codecov": "3.8.3", "mocha": "10.2.0", "nock": "13.0.11", diff --git a/packages/opentelemetry-shim-opentracing/package.json b/packages/opentelemetry-shim-opentracing/package.json index 8b6163658a..5e84c89124 100644 --- a/packages/opentelemetry-shim-opentracing/package.json +++ b/packages/opentelemetry-shim-opentracing/package.json @@ -46,7 +46,7 @@ "@opentelemetry/propagator-b3": "1.14.0", "@opentelemetry/propagator-jaeger": "1.14.0", "@opentelemetry/sdk-trace-base": "1.14.0", - "@types/mocha": "10.0.0", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", "codecov": "3.8.3", "mocha": "10.2.0", diff --git a/packages/sdk-metrics/package.json b/packages/sdk-metrics/package.json index 652373b1d9..193ada1af0 100644 --- a/packages/sdk-metrics/package.json +++ b/packages/sdk-metrics/package.json @@ -55,16 +55,16 @@ }, "devDependencies": { "@opentelemetry/api": ">=1.3.0 <1.5.0", - "@types/lodash.merge": "4.6.6", - "@types/mocha": "10.0.0", + "@types/lodash.merge": "4.6.7", + "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/sinon": "10.0.13", + "@types/sinon": "10.0.15", "codecov": "3.8.3", "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.32", + "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", From 228e67b941ea012781df75b2dc53c8731f97e8dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=B2=92=E7=B2=92=E6=A9=99?= Date: Fri, 9 Jun 2023 01:16:38 +0800 Subject: [PATCH 09/71] chore(otlp-grpc-exporter): update TLS certs and keys for tests (#3878) * chore(otlp-grpc-exporter): remove unused certs * chore(otlp-grpc-exporter): update TLS certs and keys for tests --- .../exporter-logs-otlp-grpc/test/certs/ca.crt | 54 +++++----- .../exporter-logs-otlp-grpc/test/certs/ca.key | 98 ++++++++--------- .../test/certs/client.crt | 50 ++++----- .../test/certs/client.csr | 46 ++++---- .../test/certs/client.key | 98 ++++++++--------- .../test/certs/regenerate.sh | 20 ++-- .../test/certs/server.crt | 50 ++++----- .../test/certs/server.csr | 46 ++++---- .../test/certs/server.key | 98 ++++++++--------- .../test/certs/ca.crt | 54 +++++----- .../test/certs/ca.key | 98 ++++++++--------- .../test/certs/client.crt | 50 ++++----- .../test/certs/client.csr | 46 ++++---- .../test/certs/client.key | 98 ++++++++--------- .../test/certs/regenerate.sh | 20 ++-- .../test/certs/server.crt | 50 ++++----- .../test/certs/server.csr | 46 ++++---- .../test/certs/server.key | 98 ++++++++--------- .../test/certs/ca.crt | 33 ------ .../test/certs/ca.key | 54 ---------- .../test/certs/client.crt | 31 ------ .../test/certs/client.csr | 28 ----- .../test/certs/client.key | 51 --------- .../test/certs/regenerate.sh | 22 ---- .../test/certs/server.crt | 31 ------ .../test/certs/server.csr | 28 ----- .../test/certs/server.key | 51 --------- .../test/certs/ca.crt | 33 ------ .../test/certs/ca.key | 54 ---------- .../test/certs/client.crt | 31 ------ .../test/certs/client.csr | 28 ----- .../test/certs/client.key | 51 --------- .../test/certs/regenerate.sh | 22 ---- .../test/certs/server.crt | 31 ------ .../test/certs/server.csr | 28 ----- .../test/certs/server.key | 51 --------- .../test/certs/ca.crt | 54 +++++----- .../test/certs/ca.key | 98 ++++++++--------- .../test/certs/client.crt | 50 ++++----- .../test/certs/client.csr | 46 ++++---- .../test/certs/client.key | 98 ++++++++--------- .../test/certs/regenerate.sh | 20 ++-- .../test/certs/server.crt | 50 ++++----- .../test/certs/server.csr | 46 ++++---- .../test/certs/server.key | 98 ++++++++--------- .../otlp-exporter-base/test/certs/ca.crt | 33 ------ .../otlp-exporter-base/test/certs/ca.key | 54 ---------- .../otlp-exporter-base/test/certs/client.crt | 31 ------ .../otlp-exporter-base/test/certs/client.csr | 28 ----- .../otlp-exporter-base/test/certs/client.key | 51 --------- .../test/certs/regenerate.sh | 22 ---- .../otlp-exporter-base/test/certs/server.crt | 31 ------ .../otlp-exporter-base/test/certs/server.csr | 28 ----- .../otlp-exporter-base/test/certs/server.key | 51 --------- .../otlp-grpc-exporter-base/test/certs/ca.crt | 54 +++++----- .../otlp-grpc-exporter-base/test/certs/ca.key | 101 +++++++++--------- .../test/certs/client.crt | 50 ++++----- .../test/certs/client.csr | 46 ++++---- .../test/certs/client.key | 98 ++++++++--------- .../test/certs/regenerate.sh | 20 ++-- .../test/certs/server.crt | 50 ++++----- .../test/certs/server.csr | 46 ++++---- .../test/certs/server.key | 98 ++++++++--------- 63 files changed, 1120 insertions(+), 2110 deletions(-) delete mode 100644 experimental/packages/exporter-trace-otlp-http/test/certs/ca.crt delete mode 100644 experimental/packages/exporter-trace-otlp-http/test/certs/ca.key delete mode 100644 experimental/packages/exporter-trace-otlp-http/test/certs/client.crt delete mode 100644 experimental/packages/exporter-trace-otlp-http/test/certs/client.csr delete mode 100644 experimental/packages/exporter-trace-otlp-http/test/certs/client.key delete mode 100755 experimental/packages/exporter-trace-otlp-http/test/certs/regenerate.sh delete mode 100644 experimental/packages/exporter-trace-otlp-http/test/certs/server.crt delete mode 100644 experimental/packages/exporter-trace-otlp-http/test/certs/server.csr delete mode 100644 experimental/packages/exporter-trace-otlp-http/test/certs/server.key delete mode 100644 experimental/packages/exporter-trace-otlp-proto/test/certs/ca.crt delete mode 100644 experimental/packages/exporter-trace-otlp-proto/test/certs/ca.key delete mode 100644 experimental/packages/exporter-trace-otlp-proto/test/certs/client.crt delete mode 100644 experimental/packages/exporter-trace-otlp-proto/test/certs/client.csr delete mode 100644 experimental/packages/exporter-trace-otlp-proto/test/certs/client.key delete mode 100755 experimental/packages/exporter-trace-otlp-proto/test/certs/regenerate.sh delete mode 100644 experimental/packages/exporter-trace-otlp-proto/test/certs/server.crt delete mode 100644 experimental/packages/exporter-trace-otlp-proto/test/certs/server.csr delete mode 100644 experimental/packages/exporter-trace-otlp-proto/test/certs/server.key delete mode 100644 experimental/packages/otlp-exporter-base/test/certs/ca.crt delete mode 100644 experimental/packages/otlp-exporter-base/test/certs/ca.key delete mode 100644 experimental/packages/otlp-exporter-base/test/certs/client.crt delete mode 100644 experimental/packages/otlp-exporter-base/test/certs/client.csr delete mode 100644 experimental/packages/otlp-exporter-base/test/certs/client.key delete mode 100755 experimental/packages/otlp-exporter-base/test/certs/regenerate.sh delete mode 100644 experimental/packages/otlp-exporter-base/test/certs/server.crt delete mode 100644 experimental/packages/otlp-exporter-base/test/certs/server.csr delete mode 100644 experimental/packages/otlp-exporter-base/test/certs/server.key diff --git a/experimental/packages/exporter-logs-otlp-grpc/test/certs/ca.crt b/experimental/packages/exporter-logs-otlp-grpc/test/certs/ca.crt index 27e1d6826b..c194f04954 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/test/certs/ca.crt +++ b/experimental/packages/exporter-logs-otlp-grpc/test/certs/ca.crt @@ -1,33 +1,33 @@ -----BEGIN CERTIFICATE----- -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 -g2LKPYSY8A== +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMm3OXVbMd0t2r4x+Pg4fecPeFhRzsg6 +sp7AM4UYlhb0Xkx8ij3q0E47uQM/OSari6qi7p1Un6nzgaXmhosaNkVXaKV4dQ4g +zKqrvC2+nTYU4lwss4Rx32CQxOKXEvN5FPwLTNo903PP3wqJyVt8syN0CDW953m/ +hUdkNaOe/lXmDJ9TmTTGyuPZFSlNlufbaNsBUM5chVFgBYDQIVy0jls8MiYLfao5 +tfprj+yS+lnTDl54dDTVVyAgV22SY65cnUgvO4bu3nzhS/h2Xg4/6/yAuYaRI7GQ +xvlA4pzx+aLaRDTJKiszRrHbQFv4PY+MmkVxvg2Oka4Vc2XMgDM87H0bd+beO8NH +Tf7UHU5AmIr2j2R27LWeELOqanm1HYn2VK182lD7OwQ5u5yqZZuke8bMMPJQEPUm +EwhIgXMVIlGps2+rDUEalPYkQ/BmAcs2g7fywW3RhIWCacggKoee1x9a6oiUM5yi +oDJ6T/C4WUQzIVebdMC25zBBlxcy8fK4Yus/DFTqM/eXPl4NVzbH/yB5tlU2GU0Q +V4tpGL1jsUy4b7r1bzuYVNfnKrarUGFF5TIHuvDo3voJNGb4hWBH/JdttG/9NaWA +HomZ8CUWR+gNEzyPkwq7upkiblKxJV7HKo79Eex+dlWa+Ru1F3kwYE200Y+a/wOF +Rj4+PfMu7WvpAgMBAAGjUzBRMB0GA1UdDgQWBBSwH/Wk2wTc+MEPAEornj1eGKra +0zAfBgNVHSMEGDAWgBSwH/Wk2wTc+MEPAEornj1eGKra0zAPBgNVHRMBAf8EBTAD +AQH/MA0GCSqGSIb3DQEBCwUAA4ICAQCNkzOjjqH3qeQ0wT/Has5PSoWwRwq+B1JT +gg29bgEMD6dVkLdzgEuRVVkMtc/tCZAkA02pc0VN8+lNLW7ckNU/QhMTQYn+FgMR +cG86vR9loTnwUrxR4dS6Nbx1sQ7hpe2GZkWpTNmjh1duHBNHv9nS2JmMkRypqRne +oAI3/th1Qlrtl/zDn02/+P5/av0YJcMOcnRkULHnI62cbXHa2iPd/nENgH2xC6CA +EuYN/bnmOEUPeKljU1IZS6asjGMLdWLmpLs7oOcHGLD3pax+om69Pmn7rps8Z071 +WsJDHFCftItCUrg4KWwpXr77Vq4WAN2tOBdDHEZsbES6a54+7sc1QKOVSWwPuGEd +ShFHhTzoaB0dpwm6kLdYsEkC8JLIjV+Ikg5X3VTDITjUlHoJf2mxCGOzBiCnUr75 +Am0eBqlVcc/2aVk1tcVS9N7reY/KcMaAJvI314O9I94pYdIIm5jw3UmA9Y6HmpN0 +vYtQUF2sS5W82XoFD8bpOq/bx1o2ib2x32dfPQkVgd4sbmpsyN62Fy1HpHwXtXno +xGVaDzGSWj/7RyYyKhNmp3nfQsU0Tt6iVkM+N30vl2heZqEUgXxCG9qHVzWv9z6x +AJzuafjM8tviROpiHkvzsmq7uDhksGooKCi+m+eoEBJrd0J4gjngAi1NYjTsB2GT +4mvPz05UkA== -----END CERTIFICATE----- diff --git a/experimental/packages/exporter-logs-otlp-grpc/test/certs/ca.key b/experimental/packages/exporter-logs-otlp-grpc/test/certs/ca.key index 3ca1e8e149..00ccb04622 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/test/certs/ca.key +++ b/experimental/packages/exporter-logs-otlp-grpc/test/certs/ca.key @@ -1,51 +1,51 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/experimental/packages/exporter-logs-otlp-grpc/test/certs/client.crt b/experimental/packages/exporter-logs-otlp-grpc/test/certs/client.crt index cb5c4508d7..fd05c9c40b 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/test/certs/client.crt +++ b/experimental/packages/exporter-logs-otlp-grpc/test/certs/client.crt @@ -1,31 +1,31 @@ -----BEGIN CERTIFICATE----- MIIFPzCCAycCAQEwDQYJKoZIhvcNAQELBQAwYTELMAkGA1UEBhMCQ0wxCzAJBgNV BAgMAlJNMRowGAYDVQQHDBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEUm9v -dDENMAsGA1UECwwEVGVzdDELMAkGA1UEAwwCY2EwHhcNMjIwNjA4MDk1NDAxWhcN -MjMwNjA4MDk1NDAxWjBqMQswCQYDVQQGEwJDTDELMAkGA1UECAwCUk0xGjAYBgNV +dDENMAsGA1UECwwEVGVzdDELMAkGA1UEAwwCY2EwHhcNMjMwNjA4MTY0NDI2WhcN +MjQwNjA3MTY0NDI2WjBqMQswCQYDVQQGEwJDTDELMAkGA1UECAwCUk0xGjAYBgNV BAcMEU9wZW5UZWxlbWV0cnlUZXN0MQ0wCwYDVQQKDARUZXN0MQ8wDQYDVQQLDAZD bGllbnQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAMo9AlVbqKk0NI3U4IPhXARrA/9HCtW6TK8bNj+KqBETPJ0OV6Ep -FC1AUG8h6ZpQy1lAVchMOXXzVIxejJ53Wq2aBMELl7KaheEUAzbQNqSBxL7cY61l -sk1rd0ryQ0167j/tNV5h3FH4ZawD7vt2oGte4Dxipj+gFQx/MXD1j2vOKm0SO6xr -IdSWg79HRnMb6mJMCtTc6kvX5XDN3avwrhndsPKZREhs1ei6lhY4ip3N70357MB6 -vNF7euAMQU7KZ0uZZbj0lqINT+6jwEJ6yhkZM9ILKbxC8+IAhCAOsu2bKXtkhDSN -V+3Jr3x8PRWlhlCitGt9a8/DlT0RIfcXQHRmY7hdnMqt+7vJio56oHcyv2+8ap+C -rWr5OfsRuQvSs3ebn1zhDim0AspKOfdwGepPubgM/MuilYIi35L6CbRp+VbSGmIy -GUOGoWa3uykcMOm4hIK6bbFOGUTixbwIjRfxzuPfPLqIK+aQ5kBSUdDhK9LHpNOM -n0RihXBoRfE3VfnuWVcetp/FG7B5PTgCvP0Ss9QivTV/OQmi1juPa1ONmtZodZTz -eV2mDvZLQKFIInOQE/6dxMn+yrmYlQdV2nEiJU1yiKp5601OklqeX0BO1rWQy283 -AUwbAS5ZBmQeF4KmDZtEphdOTEDmu5YTyDhIvSK58Rq+iQq+CLmaYH3BAgMBAAEw -DQYJKoZIhvcNAQELBQADggIBABV90+TvW47WUdsZpy0eZayjWgIZvKqpWVcYI4Px -1zEGMVJvg8TPjPujGIdhkhxbabklqy/+s/im4ev9MnIGG0wckoYaJgH9KvtD/Br9 -3SpexmN9mQMO8/8299TWJBjS1q5UYjktvbuKFGpizs3+y4n88UmcXRh8y2Z1oglZ -WuXn5A5BJkpXONI3U615mXTf0CLnpbU//4z5VQe2AylksOgo3y7DHXz3iPOh15TN -EnDz7Pms0i8tswSbmS+NU2Clv7ACHhstdPoEqiN/V9gpjon1n+fBXaqMhaXI9C9b -NV9l5AW1utBAc/zlzRnKYtw/yrDW00KAN2FJbGefThJWPCYUlBx5hcCl1C8ObjIz -4b2+2TLdnwkMeeb8FV6mzTaQVWQ5Yr+ffQBqDhahEwjGyUOjzqFtGSlujWKLT4g1 -T9XnVr8KKU6UWDeHDp1lz8S9wo2l5DJN/S6u/SB9RXBOgzFVO9EWnbxkpR4YqdwK -WNP+Xhw9AO+DVX+/zK0PHF4f1z85E30R/V/CmvSx07jaXxK+ixcCykfb0DRvyVyr -WyVxz72LeJnsqWBSjBlwGslPsOzucA6RfN2b7/9rTObglKoKbEV/dSKoRZ34hFcV -nuiwRbVjVXH1az8FU8o+nG+anKW/jpVn4NcabYiHWH6qL+W3ZRTcWkyOOsSHHdOS -Hdil +ADCCAgoCggIBANewSXGnuCUsPcOnXPq7SUFTLaSM62x2FnJrzb6rne8KYQ615l6D +d2Nm7MrttHWJUBQS6iDCsEGlF/AWYO5adVuZ+Xf+S+NoWMXPTUuJYq+5VEeAS8PM +IriksA8Npn0hAMNTDrd/eNXQ5W4zLQOqUWnKcuE0P1M7gI3/rfX9/JXkZfUmkQGK +OSva3qJHOcG7Bc7vqbJnkFebIw87e2iHxNnUf5IoJmrUaOMdFiQyHBBoJyTVJ3wp +Ufr6Q2+d0sIyes9PV33DbB8DyKGdOfbLg4YmKsnAvnypC0p2Xw9yAnHlQX27Ngcq +tfzcOXx3QlNPxQDF3oNHzi8GD7ysex1z7PRIsZlLVQLshAdOfA+naktPezj52R8V +BtWaxgVFI7IA5X21reS25t01k/GXNcyIJxW5KSz00b1h8+mpz0n0R3Mz3HuZybAX +g5bnZ+91jOeQmTt08eMXjwAGClxcOqfrssfDvOnUSZjDpzEGDaVuFGVPA9hR/eKN +Bfo659rv45pYhtxoHLz1LJWoZ1uegmKrGF1w16K05k5mpzwH6fzqDzzbF1xyynGX +yfbIqsvsBniuWGmhMjlfT5+l0VG2GgsD7Yijv6SV0YZrVf85iA5q6XdKTBuKYmin +ZEbneEjw9kc9myMeC5ik7wHuksA/BQcja1TPwB4ZRbPEcfi2iFxbtsSzAgMBAAEw +DQYJKoZIhvcNAQELBQADggIBAGdcqEI2l/dKxu9vPuRC2/VRgjgDBN4UJJCY111T +2A7GsGzd7lRhtxB5ZzClF77UiRJG+cvFai00c9+L3wp8qy4sZWY4MaJIWoKRh72Q +sRiH8AskeIl3uvvvaH86bbmpDo7M48Cs/zXZo9VhLzD8ZuHcS1mdjkOcnQzkbSzR +YeM9ActeuJRmsdQ+gSzCTvFqmGutL6xvM8b9a6PwyY5nPxS+eh0/7KNp+EXBvp0U +MWp6mMfq22nAwAQRLbvh5f+a/4GSwg73By6hwnsgb7tpBBJ6ppnKAIALRf7l5JwS +V0LM5Vnpp4J4JjdYyQzk2xkxi+UGIP1IRigbeWc4K3qgg6BUUkfSf4W9oJD4JCa2 +cOsqnKqFxTwXT4b9j9qsPpg7mUQ2+UtU4Lv3h/7sXpbpx0ldb2Hnaq+JqUz0l/7c +54y3+nzke7I4CWKtLJUSamQiyOC3CBVkRX0YEYUBhMXim6dKAfiOEV6K3bwiU+YZ +aDe0lEeLbzAp87DKRTAvDYhRMIFtD3g2qmYrWpQ4gj8vSEorNAfg3kVHMFRGlk9o +jaFduAz0hKk+QG5SgePXMph5ZRXGRq0FnDbF2gZ7WV+jZiIhsYGJ43+RBWHh4HO4 +P4h9eOWQG8AxpDRmOo2KmyPbV0V/eltC4N0oOAmWz+i0qqulnpG4dOzQKpinRBBr +jPt5 -----END CERTIFICATE----- diff --git a/experimental/packages/exporter-logs-otlp-grpc/test/certs/client.csr b/experimental/packages/exporter-logs-otlp-grpc/test/certs/client.csr index 30ac376794..b783896725 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/test/certs/client.csr +++ b/experimental/packages/exporter-logs-otlp-grpc/test/certs/client.csr @@ -2,27 +2,27 @@ MIIErzCCApcCAQAwajELMAkGA1UEBhMCQ0wxCzAJBgNVBAgMAlJNMRowGAYDVQQH DBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEVGVzdDEPMA0GA1UECwwGQ2xp ZW50MRIwEAYDVQQDDAlsb2NhbGhvc3QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw -ggIKAoICAQDKPQJVW6ipNDSN1OCD4VwEawP/RwrVukyvGzY/iqgREzydDlehKRQt -QFBvIemaUMtZQFXITDl181SMXoyed1qtmgTBC5eymoXhFAM20DakgcS+3GOtZbJN -a3dK8kNNeu4/7TVeYdxR+GWsA+77dqBrXuA8YqY/oBUMfzFw9Y9rziptEjusayHU -loO/R0ZzG+piTArU3OpL1+Vwzd2r8K4Z3bDymURIbNXoupYWOIqdze9N+ezAerzR -e3rgDEFOymdLmWW49JaiDU/uo8BCesoZGTPSCym8QvPiAIQgDrLtmyl7ZIQ0jVft -ya98fD0VpYZQorRrfWvPw5U9ESH3F0B0ZmO4XZzKrfu7yYqOeqB3Mr9vvGqfgq1q -+Tn7EbkL0rN3m59c4Q4ptALKSjn3cBnqT7m4DPzLopWCIt+S+gm0aflW0hpiMhlD -hqFmt7spHDDpuISCum2xThlE4sW8CI0X8c7j3zy6iCvmkOZAUlHQ4SvSx6TTjJ9E -YoVwaEXxN1X57llXHrafxRuweT04Arz9ErPUIr01fzkJotY7j2tTjZrWaHWU83ld -pg72S0ChSCJzkBP+ncTJ/sq5mJUHVdpxIiVNcoiqeetNTpJanl9ATta1kMtvNwFM -GwEuWQZkHheCpg2bRKYXTkxA5ruWE8g4SL0iufEavokKvgi5mmB9wQIDAQABoAAw -DQYJKoZIhvcNAQELBQADggIBAGsOxCfMBI11h5BOvDgKpVlAhxHlwyitXGPQHcsr -tjOQi0CRnkcrUMZcgnjX3OPCD3ngjZJW02m82BrN7WJJpSLzEKpnKP6Y91BXfHma -3qPFmMNkXCZ8WRjp6K/l98z9j+lFksN5y2BJCqf8oL1iURPYuHlgRK3LhpR4LOPt -JrJYwAML4hr1g93ejdwGc1LjNx8dyAriCM7h7IwhYGgnT1kYu/shVgT6SH0+ixAq -PNIOekCJH75k9C/QP/hPPARbAzD5of69haLeAcABik/cH/RRuDHTTVxgHFfV/W8r -BWwf7IIxX0iEPCQWxW1Q5SfzOmP9ICLFln4s38MgEGIyGqxgfkSi3nuLkwKTLB1j -NppTiO7Da4Vvso85hdLqNXvE3J6VSiu2c0oDf/ZZYkSizEzt9ESPPp3VcNj2MDbr -CxwhzV018wovlTunUSwKWvRn+syT10bnzZX/+QarZ7mfq57DPfMHNiiPM1ej26eE -Z7A3R3J67H4Ifp5Ua9jdga6x0RfOBRDuZv2N861eVs+9jSIC+hmrvQ1TbTvzHFVB -KYE1UBDRNijuGwsYgZ74vPKLGgA7cFs9X2JXzKc/0Y9opgBltZlNBF97XZSLDw1v -VaPCUVqOU6VKamPX8nVhkpHoUdDSl08T+VKwP5Da4oJHmSZMzxRQLl2TZnIru14+ -uVcP +ggIKAoICAQDXsElxp7glLD3Dp1z6u0lBUy2kjOtsdhZya82+q53vCmEOteZeg3dj +ZuzK7bR1iVAUEuogwrBBpRfwFmDuWnVbmfl3/kvjaFjFz01LiWKvuVRHgEvDzCK4 +pLAPDaZ9IQDDUw63f3jV0OVuMy0DqlFpynLhND9TO4CN/631/fyV5GX1JpEBijkr +2t6iRznBuwXO76myZ5BXmyMPO3toh8TZ1H+SKCZq1GjjHRYkMhwQaCck1Sd8KVH6 ++kNvndLCMnrPT1d9w2wfA8ihnTn2y4OGJirJwL58qQtKdl8PcgJx5UF9uzYHKrX8 +3Dl8d0JTT8UAxd6DR84vBg+8rHsdc+z0SLGZS1UC7IQHTnwPp2pLT3s4+dkfFQbV +msYFRSOyAOV9ta3ktubdNZPxlzXMiCcVuSks9NG9YfPpqc9J9EdzM9x7mcmwF4OW +52fvdYznkJk7dPHjF48ABgpcXDqn67LHw7zp1EmYw6cxBg2lbhRlTwPYUf3ijQX6 +Oufa7+OaWIbcaBy89SyVqGdbnoJiqxhdcNeitOZOZqc8B+n86g882xdccspxl8n2 +yKrL7AZ4rlhpoTI5X0+fpdFRthoLA+2Io7+kldGGa1X/OYgOaul3SkwbimJop2RG +53hI8PZHPZsjHguYpO8B7pLAPwUHI2tUz8AeGUWzxHH4tohcW7bEswIDAQABoAAw +DQYJKoZIhvcNAQELBQADggIBACboOarzimaArw3lDm6ET5yiU7NxTWtnWwFUOoSh +qS2cvumnCokUlrDyMSSKoHl2i2biUd9uiHuEqlh0yufNgnTsyAXLg0UiBHAv5Tos +Esc5A+JTV5ehy+Zrjpl3Ayh8difS8hJEBjMhH+7rCN3rhpvwkTSaXDCQTBzWPhQ1 +R0EIho/SNOh5mXQKAUWwhtleI0sEJC/PqezGfN+w+URHnzE7YMwg02bvoMxBEror +YVddG4o0nIyd6CPg++K7TBzYGGOf1CUCrI9S1bBn3jcv2mq5YgZMdLEa0HkA9XzU +J/dTSGz5pJbkoaX9IHv8a3uoc+V1jdNWZRmTUYG/cNoAFISoG+uuJLgesF5l+vxx +GUwkE6wj4bNYR/Pqy5963oDmA3ndBzR1wtCZqIsLX3t3A9fLLtIEgeN/XDSvNDBs +YdwBrx2HTatK7QCJ5e+4ACs6Wc2c1nnDviPddpxUgl0pHKcMbT+xNk7bY5fjl5Qr +wzuBNgvQcsZxNNvI8bs13k/eBmKrKOV2WUP1mHRzSoxPX3gzGRSWCe/7QR51oWlB +Qkb6OGVGLCKPnhIKFeZ6G1Qv8q7/hOOlmWGO4bN7s5fjAKEsm3JV1xrsqSKRofRG +JfdPjQD88jewIAk6xGSMKmc4usQN+y/IfU8yZ57MHSHULccA1Wl/VXfgKCAxS5fK +uXtm -----END CERTIFICATE REQUEST----- diff --git a/experimental/packages/exporter-logs-otlp-grpc/test/certs/client.key b/experimental/packages/exporter-logs-otlp-grpc/test/certs/client.key index fd649acf54..58414d8d59 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/test/certs/client.key +++ b/experimental/packages/exporter-logs-otlp-grpc/test/certs/client.key @@ -1,51 +1,51 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/experimental/packages/exporter-logs-otlp-grpc/test/certs/regenerate.sh b/experimental/packages/exporter-logs-otlp-grpc/test/certs/regenerate.sh index e1f1af5b54..84637be753 100755 --- a/experimental/packages/exporter-logs-otlp-grpc/test/certs/regenerate.sh +++ b/experimental/packages/exporter-logs-otlp-grpc/test/certs/regenerate.sh @@ -8,15 +8,15 @@ rm ca.crt ca.key client.crt client.csr client.key server.crt server.csr server.key -openssl genrsa -nodes -des3 -out ca.key 4096 -openssl req -nodes -new -x509 -days 365 -key ca.key -out ca.crt -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Root/OU=Test/CN=ca" +openssl genrsa -out ca.key 4096 +openssl req -new -x509 -days 365 -key ca.key -out ca.crt -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Root/OU=Test/CN=ca" -openssl genrsa -nodes -des3 -out server.key 4096 -openssl req -nodes -new -key server.key -out server.csr -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Test/OU=Server/CN=localhost" -openssl x509 -req -nodes -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt -openssl rsa -nodes -in server.key -out server.key +openssl genrsa -out server.key 4096 +openssl req -new -key server.key -out server.csr -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Test/OU=Server/CN=localhost" +openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt +openssl rsa -in server.key -out server.key -openssl genrsa -nodes -des3 -out client.key 4096 -openssl req -nodes -new -key client.key -out client.csr -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Test/OU=Client/CN=localhost" -openssl x509 -nodes -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt -openssl rsa -nodes -in client.key -out client.key +openssl genrsa -out client.key 4096 +openssl req -new -key client.key -out client.csr -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Test/OU=Client/CN=localhost" +openssl x509 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt +openssl rsa -in client.key -out client.key diff --git a/experimental/packages/exporter-logs-otlp-grpc/test/certs/server.crt b/experimental/packages/exporter-logs-otlp-grpc/test/certs/server.crt index da8b6beedd..ace156a29e 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/test/certs/server.crt +++ b/experimental/packages/exporter-logs-otlp-grpc/test/certs/server.crt @@ -1,31 +1,31 @@ -----BEGIN CERTIFICATE----- MIIFPzCCAycCAQEwDQYJKoZIhvcNAQELBQAwYTELMAkGA1UEBhMCQ0wxCzAJBgNV BAgMAlJNMRowGAYDVQQHDBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEUm9v -dDENMAsGA1UECwwEVGVzdDELMAkGA1UEAwwCY2EwHhcNMjIwNjA4MDk1NDAwWhcN -MjMwNjA4MDk1NDAwWjBqMQswCQYDVQQGEwJDTDELMAkGA1UECAwCUk0xGjAYBgNV +dDENMAsGA1UECwwEVGVzdDELMAkGA1UEAwwCY2EwHhcNMjMwNjA4MTY0NDI0WhcN +MjQwNjA3MTY0NDI0WjBqMQswCQYDVQQGEwJDTDELMAkGA1UECAwCUk0xGjAYBgNV BAcMEU9wZW5UZWxlbWV0cnlUZXN0MQ0wCwYDVQQKDARUZXN0MQ8wDQYDVQQLDAZT ZXJ2ZXIxEjAQBgNVBAMMCWxvY2FsaG9zdDCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAKF4wbhjwTd048CdtquNjhuVGIvPxpdNaCPXbSJN9joRqRwp0vt4 -DnRfLWda34UzZ9fxXN4HTgYrzLYkrdOUhvourhjka2mjcs1kOjlfFeGwgJe8LTVG -6qE+LdJFw4xPd53dZtsN1dQaj7e/GlK4jNI69qtq16dnFswjbzAI62or9MHdzY4F -fEFReMr25kGSo+/nNwI21PbiMhZ+OSTuoSgomx6JmXUYG9+uZFZTrE+fn47jMK4w -Bv1W+U2D1w2Aof01lyfQQ/giMY6XUAIPHIyBEvFyF1sdU+ZJzubl3vPGzf84If8+ -31iYsYEoqR3vwYs7+fmAWXOcXnjL8N0QqZPT37fsKLF1l+WCxhWLMlc8x9Kq8Gez -mOJRrR3j5Ui+ux6TpQV3aIXj3ykUIeDIIwRPNsDrwzJLNG28YVMV1rz4+V2/MsQ4 -ML1MilP3ZB9uxUN391XulLxsQI0olv+LZqKYnqqeHbFDt61Hr4WmefqKqB4rlO1j -WH4SLCEykzToFQpK9MQpPmUJ2UZrudN3flJGZ8bpnGu2gA2rgqfejB52D5jpZTzT -RU9OZp1v6JWjjRh3vcqVSin0mPLEXQj11cpKOBzIBEjqoPtpnjH8SQd9mb7n/o5q -8gLSuTcOqn3lLH3DvLTBilsmNcIbBItpC6QGc5EVqPlAJKIvLvOGb6B5AgMBAAEw -DQYJKoZIhvcNAQELBQADggIBAEdYvhg/TGjtzlJIqUv1qfyJr6gOm9Ydoz1WDaau -HJTkmI7vCeHUDxnhXEq1lYKt89XvUHsfI0lkCV2Gt+wppsL3ZZIGsv0C70nIPTIT -egPoBeUpqk1ZtPN3VEvgD3GDjAJzuvaL1Uhw9Yt4qKxP6ozyRfhObbTSomLNplui -LGGd6PqVF1vDAx6Ubw/LaNQzVjzQsMm4AgafakIh4c9aA3zxyZvUwAvT7ZVElMHK -moEudZQzL9Cx/Y9Pgv+z3JcXpT7UbDWSB/dVi5ZgcTtzHaYKAMFaunxNYqwWoicf -zB1uk2QOLgfxteWBjeaNl9UfXShGm+iGRoVVL7VrayO6+ScGchUGN5h1qR4xzWpA -2QKSb7t1oEW/GtrV6AD3jJUjcna4LP6DdpY/0IocgU5KonR0eFUNrZA8hUsXquQ0 -/Cx9d7ktdEDudeS4tJywF1CI3IcIZQ2vExJ+NjdlAFIVFkaqFFLhv/cCcGaBpH7X -6dc5bOoqyOgX97yBJJX9Joz6ZoAp2XO1tvycxj2g84V90lDsbTurmyuoR8yTcBbE -FNseKWNRi4fmsB1etz/HX3h1qUPP1ze+fY4C2zPleIB6uSKM5ZfODpMDejHQRF29 -YshoFbAJ19zOHYY+5LYHoLGJlN34TJ4ouPpAtRIQu4ebQZwMxddU1759sCIIwkHe -V5d5 +ADCCAgoCggIBAKtVnxPqCZheCuqePfLknxc+6MeyYkf494U8WWeZo+yirYV3zY70 +1KhKZ+M+XDqhrBXc7IQHZd2KKxYBGnrv9yvbllmtZRdnk3hnn8B4eNh3w5gCRKPo +GSTeiNN7WEIRwYZNkr8AWgeoYT1jN8SAMn5+qSqKSd62Z1BPJNi0eQmTVxgLZqzx +92AWBZQl9rOme+1zV6ohKcR22Of3yUl6476L1rYYcX0DXp0QFkhK0TFKNt3cHxqq +WTRuMTnyCj7woWRtwclWTdO2buAkJe8cIde6rcbaUAX9jTdkbAgYAB9MctEKqasO +MqFyMzweS3sG9oUnmd0/GRL9as314xTZuz8fFnfj5l0BN6thVMmvEEYU3rTLQRKf +AKWzI2VrU+5wIxN8O/4ZbriQ5ae13p6TDYilSZ6kMxSzfOM/A00hlA+DKMS0o8g8 +V9Y3wcl3aSSjoZbH7XS/uDEueodudz9V3HxCk7Wc41SpunQPFprmPDWtjiW0jcMD +3kHV819r2F8aidKN94Q+3KI+N/mwn1QdDVsquiCq0wbR54i3CoAkQbi5YeUdEZD6 +/mNLs/BABgzSbANw7Fn1Pd9gY/JIsRhMskcFRqXe9tOqKk8/GxMv/r9MgJn6HHlk +iDa3OZsoOtFbjjOPFoy/Xq9YMi4ODnJkEhe7BSsVl/wkDAUdg7Zfu8XVAgMBAAEw +DQYJKoZIhvcNAQELBQADggIBAEft+R+qGyKffiiJpYWLPn0C9SmpjZiWPK331n57 +Nk3GA8u9gRgD1gyqqLr19r86nLArF8jcB/nChPB1A9ysW3xyTNvpOlAwYvEjxWR2 +tJr8wiDucAd+SnQud6e+5PI5e8LnyxYoeoZ+i6hMbhNV70NthoINHMAQx+5NeSpa +Q0GJ4d0XA3W/8Pu6oK7O0QkVovVut73Koz5DqsF91zFJp7SjVKaCnnjRKyU8wbg5 +uTO0TRheEtx3AeEXNps5Yhq0daLTnmnuFeyaJHm2F1QuBmma1TTwIF3HDclv2wLn +Jp+MWG9yoN9oEJLqS/AvDu1BltPSuvnYgLZr7cl0os+TEqpzxroa4ziE98dEiy0D +K4YQ59UTz6C8Ps0uX0hcs3jsvZOkBWptusvJBfZN59xLJAVmF2igkgIBKoiXvXmv +fXDx0hsOBg2IPe2O8lLHlFKlJZlMc+prH1iD0Xv6HefSP4L1eZHU37zjrRf/GiNX +r6GoEhJR2pKEoZQT81xpYp/w+qjzWcTl/mLD6FEePRzV92h3ubjRWBB36UhLtnEG +LJgp7yq3aGu7rg9rnuz8J6DG8DStE9rNuRjkV1O2C/PvR97XmVoIqbrMlxX9MUQJ +XxLm5dqBz7EVuhDJSyp4zCkDYsOj1y/SLL2O3cTyQQeZg6jlqripNqWnviAdTWe5 +JIPp -----END CERTIFICATE----- diff --git a/experimental/packages/exporter-logs-otlp-grpc/test/certs/server.csr b/experimental/packages/exporter-logs-otlp-grpc/test/certs/server.csr index d8ab7deb4b..b421a7a60c 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/test/certs/server.csr +++ b/experimental/packages/exporter-logs-otlp-grpc/test/certs/server.csr @@ -2,27 +2,27 @@ MIIErzCCApcCAQAwajELMAkGA1UEBhMCQ0wxCzAJBgNVBAgMAlJNMRowGAYDVQQH DBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEVGVzdDEPMA0GA1UECwwGU2Vy dmVyMRIwEAYDVQQDDAlsb2NhbGhvc3QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw -ggIKAoICAQCheMG4Y8E3dOPAnbarjY4blRiLz8aXTWgj120iTfY6EakcKdL7eA50 -Xy1nWt+FM2fX8VzeB04GK8y2JK3TlIb6Lq4Y5Gtpo3LNZDo5XxXhsICXvC01Ruqh -Pi3SRcOMT3ed3WbbDdXUGo+3vxpSuIzSOvaratenZxbMI28wCOtqK/TB3c2OBXxB -UXjK9uZBkqPv5zcCNtT24jIWfjkk7qEoKJseiZl1GBvfrmRWU6xPn5+O4zCuMAb9 -VvlNg9cNgKH9NZcn0EP4IjGOl1ACDxyMgRLxchdbHVPmSc7m5d7zxs3/OCH/Pt9Y -mLGBKKkd78GLO/n5gFlznF54y/DdEKmT09+37CixdZflgsYVizJXPMfSqvBns5ji -Ua0d4+VIvrsek6UFd2iF498pFCHgyCMETzbA68MySzRtvGFTFda8+PldvzLEODC9 -TIpT92QfbsVDd/dV7pS8bECNKJb/i2aimJ6qnh2xQ7etR6+Fpnn6iqgeK5TtY1h+ -EiwhMpM06BUKSvTEKT5lCdlGa7nTd35SRmfG6ZxrtoANq4Kn3owedg+Y6WU800VP -Tmadb+iVo40Yd73KlUop9JjyxF0I9dXKSjgcyARI6qD7aZ4x/EkHfZm+5/6OavIC -0rk3Dqp95Sx9w7y0wYpbJjXCGwSLaQukBnORFaj5QCSiLy7zhm+geQIDAQABoAAw -DQYJKoZIhvcNAQELBQADggIBADoGwPR/TLe0PwsB2orIjrHnsZLYzcHxh9JdRaCO -Q07NvbocAqN3nIiHaUI/IqZG3aiBQb7i98maE2fcFVgsMoRVLB2GsQw+bzoPF+45 -kbtff4L1mHEt8AIIL063AepTetAMUfojpoRI0JG6pChzHDxuud++kPrz50wR5eEk -OhDjX46qh8VxExH3rfU+VDY/FvXMJaMLa76HOmY93g/p+C6T+SiTrs+QEPqWsMKa -eHJTTP0PZx8ikdT64aJpDiOmXVthymPPSZvDEWzlJ7RF8y0p+SoqPM3Pv8/M7zq7 -2dRL6UABTMGtBMEtj5DDZYWTl+1O8Yn4xhjHBcDT3ug3IvnCKCpX2ufi+wJzaWEu -QFAL+N5Sc1rZxklqWKprQeGBiEIE3UXdDA6Xvom85gLoaWoH6nMFvDNab+zJl4Ty -0Iiciq9jzUq4eda/TjgPxDs6RNlJxSXs1lASUR0Jx+Nb9wH2R1n6XQJhcOrz6nJ/ -T+/INYf5VrUdvf9P0PRub7Ga962fBDUG6WQx3PPjy/iEmffN/nsBXXzvQiw7ObW4 -eNCQob2H/3lAdxOs2txKhTCgUV9CzUb2P4Uq4s26n0yA6qpVG6Jgp14s+kVrgFYQ -KjhoFMWXtN3YqETnVNe6A9PEwkSpCm/JyGTm524ok0KyrXo1nSm1WKZqEIQCpp2D -vQFY +ggIKAoICAQCrVZ8T6gmYXgrqnj3y5J8XPujHsmJH+PeFPFlnmaPsoq2Fd82O9NSo +SmfjPlw6oawV3OyEB2XdiisWARp67/cr25ZZrWUXZ5N4Z5/AeHjYd8OYAkSj6Bkk +3ojTe1hCEcGGTZK/AFoHqGE9YzfEgDJ+fqkqiknetmdQTyTYtHkJk1cYC2as8fdg +FgWUJfazpnvtc1eqISnEdtjn98lJeuO+i9a2GHF9A16dEBZIStExSjbd3B8aqlk0 +bjE58go+8KFkbcHJVk3Ttm7gJCXvHCHXuq3G2lAF/Y03ZGwIGAAfTHLRCqmrDjKh +cjM8Hkt7BvaFJ5ndPxkS/WrN9eMU2bs/HxZ34+ZdATerYVTJrxBGFN60y0ESnwCl +syNla1PucCMTfDv+GW64kOWntd6ekw2IpUmepDMUs3zjPwNNIZQPgyjEtKPIPFfW +N8HJd2kko6GWx+10v7gxLnqHbnc/Vdx8QpO1nONUqbp0Dxaa5jw1rY4ltI3DA95B +1fNfa9hfGonSjfeEPtyiPjf5sJ9UHQ1bKrogqtMG0eeItwqAJEG4uWHlHRGQ+v5j +S7PwQAYM0mwDcOxZ9T3fYGPySLEYTLJHBUal3vbTqipPPxsTL/6/TICZ+hx5ZIg2 +tzmbKDrRW44zjxaMv16vWDIuDg5yZBIXuwUrFZf8JAwFHYO2X7vF1QIDAQABoAAw +DQYJKoZIhvcNAQELBQADggIBAJCMEdjKyklN2izvOhd7+JMXm/ClW3hjowbu+csO +JNz8NqUNLrKJjFyV3yAUGWuyp3z982S+XGfcm3nU7n9AJOjT4DLJId6opOtA6CSp +KTRgVZmeViL6O6UqBLTacz5DDjwMQXxszc+QpU53cMT6Y7VMvIOhQ6AmIvz1v71u +5gaYmlbfXVlmiPHEKRsQG9/DNIPe1mHP0p+S9qYKmCx7Jlpee7IstW/hNjt7alDn +uFaxFjxmCCSdWaMRyMW/qNRks9q3VdhJPan+amFeXceoEG7SOKiFiOc8A7DribSm +iKc2YlOw14xqc+cJutiKBvoBMri2eh1JgCbPT4ufVGFpbDkfYwAJxWx44Eg0X90j +gJUw8IRuHQZkEYss6jwFMFcOqjpe+AqrssOl4GZmu5gcaiUnj8PkSVZLTOrLilPg +sSDjzmoHdv4QcBppTrjj6PyR5Xd6DeGasWkMPvIPjiPN3mOhfxJ3C87atMqOhTLx +em7vFOBegAW6g40J9JD1XMoI/zFnTU8NevZQgCyx/Tq1XNRmUeMA6y/qpfTNKi/f +F7v/7nDWoxBgpOw3J0E9R+6rxD7Cjb2RWZEf20ZGdNBlPE+UG9c9b3HC3IHiwRHb +L9Fi0251w+fkaPX8dojQKErCEknqJ1SCP5S5F5g1QCQby22Y7LQsggMMf94s/wQX +4uMh -----END CERTIFICATE REQUEST----- diff --git a/experimental/packages/exporter-logs-otlp-grpc/test/certs/server.key b/experimental/packages/exporter-logs-otlp-grpc/test/certs/server.key index 9147802e7d..80b9cea7bf 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/test/certs/server.key +++ b/experimental/packages/exporter-logs-otlp-grpc/test/certs/server.key @@ -1,51 +1,51 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/experimental/packages/exporter-trace-otlp-grpc/test/certs/ca.crt b/experimental/packages/exporter-trace-otlp-grpc/test/certs/ca.crt index 27e1d6826b..c194f04954 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/test/certs/ca.crt +++ b/experimental/packages/exporter-trace-otlp-grpc/test/certs/ca.crt @@ -1,33 +1,33 @@ -----BEGIN CERTIFICATE----- -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 -g2LKPYSY8A== +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMm3OXVbMd0t2r4x+Pg4fecPeFhRzsg6 +sp7AM4UYlhb0Xkx8ij3q0E47uQM/OSari6qi7p1Un6nzgaXmhosaNkVXaKV4dQ4g +zKqrvC2+nTYU4lwss4Rx32CQxOKXEvN5FPwLTNo903PP3wqJyVt8syN0CDW953m/ +hUdkNaOe/lXmDJ9TmTTGyuPZFSlNlufbaNsBUM5chVFgBYDQIVy0jls8MiYLfao5 +tfprj+yS+lnTDl54dDTVVyAgV22SY65cnUgvO4bu3nzhS/h2Xg4/6/yAuYaRI7GQ +xvlA4pzx+aLaRDTJKiszRrHbQFv4PY+MmkVxvg2Oka4Vc2XMgDM87H0bd+beO8NH +Tf7UHU5AmIr2j2R27LWeELOqanm1HYn2VK182lD7OwQ5u5yqZZuke8bMMPJQEPUm +EwhIgXMVIlGps2+rDUEalPYkQ/BmAcs2g7fywW3RhIWCacggKoee1x9a6oiUM5yi +oDJ6T/C4WUQzIVebdMC25zBBlxcy8fK4Yus/DFTqM/eXPl4NVzbH/yB5tlU2GU0Q +V4tpGL1jsUy4b7r1bzuYVNfnKrarUGFF5TIHuvDo3voJNGb4hWBH/JdttG/9NaWA +HomZ8CUWR+gNEzyPkwq7upkiblKxJV7HKo79Eex+dlWa+Ru1F3kwYE200Y+a/wOF +Rj4+PfMu7WvpAgMBAAGjUzBRMB0GA1UdDgQWBBSwH/Wk2wTc+MEPAEornj1eGKra +0zAfBgNVHSMEGDAWgBSwH/Wk2wTc+MEPAEornj1eGKra0zAPBgNVHRMBAf8EBTAD +AQH/MA0GCSqGSIb3DQEBCwUAA4ICAQCNkzOjjqH3qeQ0wT/Has5PSoWwRwq+B1JT +gg29bgEMD6dVkLdzgEuRVVkMtc/tCZAkA02pc0VN8+lNLW7ckNU/QhMTQYn+FgMR +cG86vR9loTnwUrxR4dS6Nbx1sQ7hpe2GZkWpTNmjh1duHBNHv9nS2JmMkRypqRne +oAI3/th1Qlrtl/zDn02/+P5/av0YJcMOcnRkULHnI62cbXHa2iPd/nENgH2xC6CA +EuYN/bnmOEUPeKljU1IZS6asjGMLdWLmpLs7oOcHGLD3pax+om69Pmn7rps8Z071 +WsJDHFCftItCUrg4KWwpXr77Vq4WAN2tOBdDHEZsbES6a54+7sc1QKOVSWwPuGEd +ShFHhTzoaB0dpwm6kLdYsEkC8JLIjV+Ikg5X3VTDITjUlHoJf2mxCGOzBiCnUr75 +Am0eBqlVcc/2aVk1tcVS9N7reY/KcMaAJvI314O9I94pYdIIm5jw3UmA9Y6HmpN0 +vYtQUF2sS5W82XoFD8bpOq/bx1o2ib2x32dfPQkVgd4sbmpsyN62Fy1HpHwXtXno +xGVaDzGSWj/7RyYyKhNmp3nfQsU0Tt6iVkM+N30vl2heZqEUgXxCG9qHVzWv9z6x +AJzuafjM8tviROpiHkvzsmq7uDhksGooKCi+m+eoEBJrd0J4gjngAi1NYjTsB2GT +4mvPz05UkA== -----END CERTIFICATE----- diff --git a/experimental/packages/exporter-trace-otlp-grpc/test/certs/ca.key b/experimental/packages/exporter-trace-otlp-grpc/test/certs/ca.key index 3ca1e8e149..00ccb04622 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/test/certs/ca.key +++ b/experimental/packages/exporter-trace-otlp-grpc/test/certs/ca.key @@ -1,51 +1,51 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/experimental/packages/exporter-trace-otlp-grpc/test/certs/client.crt b/experimental/packages/exporter-trace-otlp-grpc/test/certs/client.crt index cb5c4508d7..fd05c9c40b 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/test/certs/client.crt +++ b/experimental/packages/exporter-trace-otlp-grpc/test/certs/client.crt @@ -1,31 +1,31 @@ -----BEGIN CERTIFICATE----- MIIFPzCCAycCAQEwDQYJKoZIhvcNAQELBQAwYTELMAkGA1UEBhMCQ0wxCzAJBgNV BAgMAlJNMRowGAYDVQQHDBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEUm9v -dDENMAsGA1UECwwEVGVzdDELMAkGA1UEAwwCY2EwHhcNMjIwNjA4MDk1NDAxWhcN -MjMwNjA4MDk1NDAxWjBqMQswCQYDVQQGEwJDTDELMAkGA1UECAwCUk0xGjAYBgNV +dDENMAsGA1UECwwEVGVzdDELMAkGA1UEAwwCY2EwHhcNMjMwNjA4MTY0NDI2WhcN +MjQwNjA3MTY0NDI2WjBqMQswCQYDVQQGEwJDTDELMAkGA1UECAwCUk0xGjAYBgNV BAcMEU9wZW5UZWxlbWV0cnlUZXN0MQ0wCwYDVQQKDARUZXN0MQ8wDQYDVQQLDAZD bGllbnQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAMo9AlVbqKk0NI3U4IPhXARrA/9HCtW6TK8bNj+KqBETPJ0OV6Ep -FC1AUG8h6ZpQy1lAVchMOXXzVIxejJ53Wq2aBMELl7KaheEUAzbQNqSBxL7cY61l -sk1rd0ryQ0167j/tNV5h3FH4ZawD7vt2oGte4Dxipj+gFQx/MXD1j2vOKm0SO6xr -IdSWg79HRnMb6mJMCtTc6kvX5XDN3avwrhndsPKZREhs1ei6lhY4ip3N70357MB6 -vNF7euAMQU7KZ0uZZbj0lqINT+6jwEJ6yhkZM9ILKbxC8+IAhCAOsu2bKXtkhDSN -V+3Jr3x8PRWlhlCitGt9a8/DlT0RIfcXQHRmY7hdnMqt+7vJio56oHcyv2+8ap+C -rWr5OfsRuQvSs3ebn1zhDim0AspKOfdwGepPubgM/MuilYIi35L6CbRp+VbSGmIy -GUOGoWa3uykcMOm4hIK6bbFOGUTixbwIjRfxzuPfPLqIK+aQ5kBSUdDhK9LHpNOM -n0RihXBoRfE3VfnuWVcetp/FG7B5PTgCvP0Ss9QivTV/OQmi1juPa1ONmtZodZTz -eV2mDvZLQKFIInOQE/6dxMn+yrmYlQdV2nEiJU1yiKp5601OklqeX0BO1rWQy283 -AUwbAS5ZBmQeF4KmDZtEphdOTEDmu5YTyDhIvSK58Rq+iQq+CLmaYH3BAgMBAAEw -DQYJKoZIhvcNAQELBQADggIBABV90+TvW47WUdsZpy0eZayjWgIZvKqpWVcYI4Px -1zEGMVJvg8TPjPujGIdhkhxbabklqy/+s/im4ev9MnIGG0wckoYaJgH9KvtD/Br9 -3SpexmN9mQMO8/8299TWJBjS1q5UYjktvbuKFGpizs3+y4n88UmcXRh8y2Z1oglZ -WuXn5A5BJkpXONI3U615mXTf0CLnpbU//4z5VQe2AylksOgo3y7DHXz3iPOh15TN -EnDz7Pms0i8tswSbmS+NU2Clv7ACHhstdPoEqiN/V9gpjon1n+fBXaqMhaXI9C9b -NV9l5AW1utBAc/zlzRnKYtw/yrDW00KAN2FJbGefThJWPCYUlBx5hcCl1C8ObjIz -4b2+2TLdnwkMeeb8FV6mzTaQVWQ5Yr+ffQBqDhahEwjGyUOjzqFtGSlujWKLT4g1 -T9XnVr8KKU6UWDeHDp1lz8S9wo2l5DJN/S6u/SB9RXBOgzFVO9EWnbxkpR4YqdwK -WNP+Xhw9AO+DVX+/zK0PHF4f1z85E30R/V/CmvSx07jaXxK+ixcCykfb0DRvyVyr -WyVxz72LeJnsqWBSjBlwGslPsOzucA6RfN2b7/9rTObglKoKbEV/dSKoRZ34hFcV -nuiwRbVjVXH1az8FU8o+nG+anKW/jpVn4NcabYiHWH6qL+W3ZRTcWkyOOsSHHdOS -Hdil +ADCCAgoCggIBANewSXGnuCUsPcOnXPq7SUFTLaSM62x2FnJrzb6rne8KYQ615l6D +d2Nm7MrttHWJUBQS6iDCsEGlF/AWYO5adVuZ+Xf+S+NoWMXPTUuJYq+5VEeAS8PM +IriksA8Npn0hAMNTDrd/eNXQ5W4zLQOqUWnKcuE0P1M7gI3/rfX9/JXkZfUmkQGK +OSva3qJHOcG7Bc7vqbJnkFebIw87e2iHxNnUf5IoJmrUaOMdFiQyHBBoJyTVJ3wp +Ufr6Q2+d0sIyes9PV33DbB8DyKGdOfbLg4YmKsnAvnypC0p2Xw9yAnHlQX27Ngcq +tfzcOXx3QlNPxQDF3oNHzi8GD7ysex1z7PRIsZlLVQLshAdOfA+naktPezj52R8V +BtWaxgVFI7IA5X21reS25t01k/GXNcyIJxW5KSz00b1h8+mpz0n0R3Mz3HuZybAX +g5bnZ+91jOeQmTt08eMXjwAGClxcOqfrssfDvOnUSZjDpzEGDaVuFGVPA9hR/eKN +Bfo659rv45pYhtxoHLz1LJWoZ1uegmKrGF1w16K05k5mpzwH6fzqDzzbF1xyynGX +yfbIqsvsBniuWGmhMjlfT5+l0VG2GgsD7Yijv6SV0YZrVf85iA5q6XdKTBuKYmin +ZEbneEjw9kc9myMeC5ik7wHuksA/BQcja1TPwB4ZRbPEcfi2iFxbtsSzAgMBAAEw +DQYJKoZIhvcNAQELBQADggIBAGdcqEI2l/dKxu9vPuRC2/VRgjgDBN4UJJCY111T +2A7GsGzd7lRhtxB5ZzClF77UiRJG+cvFai00c9+L3wp8qy4sZWY4MaJIWoKRh72Q +sRiH8AskeIl3uvvvaH86bbmpDo7M48Cs/zXZo9VhLzD8ZuHcS1mdjkOcnQzkbSzR +YeM9ActeuJRmsdQ+gSzCTvFqmGutL6xvM8b9a6PwyY5nPxS+eh0/7KNp+EXBvp0U +MWp6mMfq22nAwAQRLbvh5f+a/4GSwg73By6hwnsgb7tpBBJ6ppnKAIALRf7l5JwS +V0LM5Vnpp4J4JjdYyQzk2xkxi+UGIP1IRigbeWc4K3qgg6BUUkfSf4W9oJD4JCa2 +cOsqnKqFxTwXT4b9j9qsPpg7mUQ2+UtU4Lv3h/7sXpbpx0ldb2Hnaq+JqUz0l/7c +54y3+nzke7I4CWKtLJUSamQiyOC3CBVkRX0YEYUBhMXim6dKAfiOEV6K3bwiU+YZ +aDe0lEeLbzAp87DKRTAvDYhRMIFtD3g2qmYrWpQ4gj8vSEorNAfg3kVHMFRGlk9o +jaFduAz0hKk+QG5SgePXMph5ZRXGRq0FnDbF2gZ7WV+jZiIhsYGJ43+RBWHh4HO4 +P4h9eOWQG8AxpDRmOo2KmyPbV0V/eltC4N0oOAmWz+i0qqulnpG4dOzQKpinRBBr +jPt5 -----END CERTIFICATE----- diff --git a/experimental/packages/exporter-trace-otlp-grpc/test/certs/client.csr b/experimental/packages/exporter-trace-otlp-grpc/test/certs/client.csr index 30ac376794..b783896725 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/test/certs/client.csr +++ b/experimental/packages/exporter-trace-otlp-grpc/test/certs/client.csr @@ -2,27 +2,27 @@ MIIErzCCApcCAQAwajELMAkGA1UEBhMCQ0wxCzAJBgNVBAgMAlJNMRowGAYDVQQH DBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEVGVzdDEPMA0GA1UECwwGQ2xp ZW50MRIwEAYDVQQDDAlsb2NhbGhvc3QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw -ggIKAoICAQDKPQJVW6ipNDSN1OCD4VwEawP/RwrVukyvGzY/iqgREzydDlehKRQt -QFBvIemaUMtZQFXITDl181SMXoyed1qtmgTBC5eymoXhFAM20DakgcS+3GOtZbJN -a3dK8kNNeu4/7TVeYdxR+GWsA+77dqBrXuA8YqY/oBUMfzFw9Y9rziptEjusayHU -loO/R0ZzG+piTArU3OpL1+Vwzd2r8K4Z3bDymURIbNXoupYWOIqdze9N+ezAerzR -e3rgDEFOymdLmWW49JaiDU/uo8BCesoZGTPSCym8QvPiAIQgDrLtmyl7ZIQ0jVft -ya98fD0VpYZQorRrfWvPw5U9ESH3F0B0ZmO4XZzKrfu7yYqOeqB3Mr9vvGqfgq1q -+Tn7EbkL0rN3m59c4Q4ptALKSjn3cBnqT7m4DPzLopWCIt+S+gm0aflW0hpiMhlD -hqFmt7spHDDpuISCum2xThlE4sW8CI0X8c7j3zy6iCvmkOZAUlHQ4SvSx6TTjJ9E -YoVwaEXxN1X57llXHrafxRuweT04Arz9ErPUIr01fzkJotY7j2tTjZrWaHWU83ld -pg72S0ChSCJzkBP+ncTJ/sq5mJUHVdpxIiVNcoiqeetNTpJanl9ATta1kMtvNwFM -GwEuWQZkHheCpg2bRKYXTkxA5ruWE8g4SL0iufEavokKvgi5mmB9wQIDAQABoAAw -DQYJKoZIhvcNAQELBQADggIBAGsOxCfMBI11h5BOvDgKpVlAhxHlwyitXGPQHcsr -tjOQi0CRnkcrUMZcgnjX3OPCD3ngjZJW02m82BrN7WJJpSLzEKpnKP6Y91BXfHma -3qPFmMNkXCZ8WRjp6K/l98z9j+lFksN5y2BJCqf8oL1iURPYuHlgRK3LhpR4LOPt -JrJYwAML4hr1g93ejdwGc1LjNx8dyAriCM7h7IwhYGgnT1kYu/shVgT6SH0+ixAq -PNIOekCJH75k9C/QP/hPPARbAzD5of69haLeAcABik/cH/RRuDHTTVxgHFfV/W8r -BWwf7IIxX0iEPCQWxW1Q5SfzOmP9ICLFln4s38MgEGIyGqxgfkSi3nuLkwKTLB1j -NppTiO7Da4Vvso85hdLqNXvE3J6VSiu2c0oDf/ZZYkSizEzt9ESPPp3VcNj2MDbr -CxwhzV018wovlTunUSwKWvRn+syT10bnzZX/+QarZ7mfq57DPfMHNiiPM1ej26eE -Z7A3R3J67H4Ifp5Ua9jdga6x0RfOBRDuZv2N861eVs+9jSIC+hmrvQ1TbTvzHFVB -KYE1UBDRNijuGwsYgZ74vPKLGgA7cFs9X2JXzKc/0Y9opgBltZlNBF97XZSLDw1v -VaPCUVqOU6VKamPX8nVhkpHoUdDSl08T+VKwP5Da4oJHmSZMzxRQLl2TZnIru14+ -uVcP +ggIKAoICAQDXsElxp7glLD3Dp1z6u0lBUy2kjOtsdhZya82+q53vCmEOteZeg3dj +ZuzK7bR1iVAUEuogwrBBpRfwFmDuWnVbmfl3/kvjaFjFz01LiWKvuVRHgEvDzCK4 +pLAPDaZ9IQDDUw63f3jV0OVuMy0DqlFpynLhND9TO4CN/631/fyV5GX1JpEBijkr +2t6iRznBuwXO76myZ5BXmyMPO3toh8TZ1H+SKCZq1GjjHRYkMhwQaCck1Sd8KVH6 ++kNvndLCMnrPT1d9w2wfA8ihnTn2y4OGJirJwL58qQtKdl8PcgJx5UF9uzYHKrX8 +3Dl8d0JTT8UAxd6DR84vBg+8rHsdc+z0SLGZS1UC7IQHTnwPp2pLT3s4+dkfFQbV +msYFRSOyAOV9ta3ktubdNZPxlzXMiCcVuSks9NG9YfPpqc9J9EdzM9x7mcmwF4OW +52fvdYznkJk7dPHjF48ABgpcXDqn67LHw7zp1EmYw6cxBg2lbhRlTwPYUf3ijQX6 +Oufa7+OaWIbcaBy89SyVqGdbnoJiqxhdcNeitOZOZqc8B+n86g882xdccspxl8n2 +yKrL7AZ4rlhpoTI5X0+fpdFRthoLA+2Io7+kldGGa1X/OYgOaul3SkwbimJop2RG +53hI8PZHPZsjHguYpO8B7pLAPwUHI2tUz8AeGUWzxHH4tohcW7bEswIDAQABoAAw +DQYJKoZIhvcNAQELBQADggIBACboOarzimaArw3lDm6ET5yiU7NxTWtnWwFUOoSh +qS2cvumnCokUlrDyMSSKoHl2i2biUd9uiHuEqlh0yufNgnTsyAXLg0UiBHAv5Tos +Esc5A+JTV5ehy+Zrjpl3Ayh8difS8hJEBjMhH+7rCN3rhpvwkTSaXDCQTBzWPhQ1 +R0EIho/SNOh5mXQKAUWwhtleI0sEJC/PqezGfN+w+URHnzE7YMwg02bvoMxBEror +YVddG4o0nIyd6CPg++K7TBzYGGOf1CUCrI9S1bBn3jcv2mq5YgZMdLEa0HkA9XzU +J/dTSGz5pJbkoaX9IHv8a3uoc+V1jdNWZRmTUYG/cNoAFISoG+uuJLgesF5l+vxx +GUwkE6wj4bNYR/Pqy5963oDmA3ndBzR1wtCZqIsLX3t3A9fLLtIEgeN/XDSvNDBs +YdwBrx2HTatK7QCJ5e+4ACs6Wc2c1nnDviPddpxUgl0pHKcMbT+xNk7bY5fjl5Qr +wzuBNgvQcsZxNNvI8bs13k/eBmKrKOV2WUP1mHRzSoxPX3gzGRSWCe/7QR51oWlB +Qkb6OGVGLCKPnhIKFeZ6G1Qv8q7/hOOlmWGO4bN7s5fjAKEsm3JV1xrsqSKRofRG +JfdPjQD88jewIAk6xGSMKmc4usQN+y/IfU8yZ57MHSHULccA1Wl/VXfgKCAxS5fK +uXtm -----END CERTIFICATE REQUEST----- diff --git a/experimental/packages/exporter-trace-otlp-grpc/test/certs/client.key b/experimental/packages/exporter-trace-otlp-grpc/test/certs/client.key index fd649acf54..58414d8d59 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/test/certs/client.key +++ b/experimental/packages/exporter-trace-otlp-grpc/test/certs/client.key @@ -1,51 +1,51 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/experimental/packages/exporter-trace-otlp-grpc/test/certs/regenerate.sh b/experimental/packages/exporter-trace-otlp-grpc/test/certs/regenerate.sh index e1f1af5b54..84637be753 100755 --- a/experimental/packages/exporter-trace-otlp-grpc/test/certs/regenerate.sh +++ b/experimental/packages/exporter-trace-otlp-grpc/test/certs/regenerate.sh @@ -8,15 +8,15 @@ rm ca.crt ca.key client.crt client.csr client.key server.crt server.csr server.key -openssl genrsa -nodes -des3 -out ca.key 4096 -openssl req -nodes -new -x509 -days 365 -key ca.key -out ca.crt -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Root/OU=Test/CN=ca" +openssl genrsa -out ca.key 4096 +openssl req -new -x509 -days 365 -key ca.key -out ca.crt -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Root/OU=Test/CN=ca" -openssl genrsa -nodes -des3 -out server.key 4096 -openssl req -nodes -new -key server.key -out server.csr -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Test/OU=Server/CN=localhost" -openssl x509 -req -nodes -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt -openssl rsa -nodes -in server.key -out server.key +openssl genrsa -out server.key 4096 +openssl req -new -key server.key -out server.csr -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Test/OU=Server/CN=localhost" +openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt +openssl rsa -in server.key -out server.key -openssl genrsa -nodes -des3 -out client.key 4096 -openssl req -nodes -new -key client.key -out client.csr -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Test/OU=Client/CN=localhost" -openssl x509 -nodes -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt -openssl rsa -nodes -in client.key -out client.key +openssl genrsa -out client.key 4096 +openssl req -new -key client.key -out client.csr -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Test/OU=Client/CN=localhost" +openssl x509 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt +openssl rsa -in client.key -out client.key diff --git a/experimental/packages/exporter-trace-otlp-grpc/test/certs/server.crt b/experimental/packages/exporter-trace-otlp-grpc/test/certs/server.crt index da8b6beedd..ace156a29e 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/test/certs/server.crt +++ b/experimental/packages/exporter-trace-otlp-grpc/test/certs/server.crt @@ -1,31 +1,31 @@ -----BEGIN CERTIFICATE----- MIIFPzCCAycCAQEwDQYJKoZIhvcNAQELBQAwYTELMAkGA1UEBhMCQ0wxCzAJBgNV BAgMAlJNMRowGAYDVQQHDBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEUm9v -dDENMAsGA1UECwwEVGVzdDELMAkGA1UEAwwCY2EwHhcNMjIwNjA4MDk1NDAwWhcN -MjMwNjA4MDk1NDAwWjBqMQswCQYDVQQGEwJDTDELMAkGA1UECAwCUk0xGjAYBgNV +dDENMAsGA1UECwwEVGVzdDELMAkGA1UEAwwCY2EwHhcNMjMwNjA4MTY0NDI0WhcN +MjQwNjA3MTY0NDI0WjBqMQswCQYDVQQGEwJDTDELMAkGA1UECAwCUk0xGjAYBgNV BAcMEU9wZW5UZWxlbWV0cnlUZXN0MQ0wCwYDVQQKDARUZXN0MQ8wDQYDVQQLDAZT ZXJ2ZXIxEjAQBgNVBAMMCWxvY2FsaG9zdDCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAKF4wbhjwTd048CdtquNjhuVGIvPxpdNaCPXbSJN9joRqRwp0vt4 -DnRfLWda34UzZ9fxXN4HTgYrzLYkrdOUhvourhjka2mjcs1kOjlfFeGwgJe8LTVG -6qE+LdJFw4xPd53dZtsN1dQaj7e/GlK4jNI69qtq16dnFswjbzAI62or9MHdzY4F -fEFReMr25kGSo+/nNwI21PbiMhZ+OSTuoSgomx6JmXUYG9+uZFZTrE+fn47jMK4w -Bv1W+U2D1w2Aof01lyfQQ/giMY6XUAIPHIyBEvFyF1sdU+ZJzubl3vPGzf84If8+ -31iYsYEoqR3vwYs7+fmAWXOcXnjL8N0QqZPT37fsKLF1l+WCxhWLMlc8x9Kq8Gez -mOJRrR3j5Ui+ux6TpQV3aIXj3ykUIeDIIwRPNsDrwzJLNG28YVMV1rz4+V2/MsQ4 -ML1MilP3ZB9uxUN391XulLxsQI0olv+LZqKYnqqeHbFDt61Hr4WmefqKqB4rlO1j -WH4SLCEykzToFQpK9MQpPmUJ2UZrudN3flJGZ8bpnGu2gA2rgqfejB52D5jpZTzT -RU9OZp1v6JWjjRh3vcqVSin0mPLEXQj11cpKOBzIBEjqoPtpnjH8SQd9mb7n/o5q -8gLSuTcOqn3lLH3DvLTBilsmNcIbBItpC6QGc5EVqPlAJKIvLvOGb6B5AgMBAAEw -DQYJKoZIhvcNAQELBQADggIBAEdYvhg/TGjtzlJIqUv1qfyJr6gOm9Ydoz1WDaau -HJTkmI7vCeHUDxnhXEq1lYKt89XvUHsfI0lkCV2Gt+wppsL3ZZIGsv0C70nIPTIT -egPoBeUpqk1ZtPN3VEvgD3GDjAJzuvaL1Uhw9Yt4qKxP6ozyRfhObbTSomLNplui -LGGd6PqVF1vDAx6Ubw/LaNQzVjzQsMm4AgafakIh4c9aA3zxyZvUwAvT7ZVElMHK -moEudZQzL9Cx/Y9Pgv+z3JcXpT7UbDWSB/dVi5ZgcTtzHaYKAMFaunxNYqwWoicf -zB1uk2QOLgfxteWBjeaNl9UfXShGm+iGRoVVL7VrayO6+ScGchUGN5h1qR4xzWpA -2QKSb7t1oEW/GtrV6AD3jJUjcna4LP6DdpY/0IocgU5KonR0eFUNrZA8hUsXquQ0 -/Cx9d7ktdEDudeS4tJywF1CI3IcIZQ2vExJ+NjdlAFIVFkaqFFLhv/cCcGaBpH7X -6dc5bOoqyOgX97yBJJX9Joz6ZoAp2XO1tvycxj2g84V90lDsbTurmyuoR8yTcBbE -FNseKWNRi4fmsB1etz/HX3h1qUPP1ze+fY4C2zPleIB6uSKM5ZfODpMDejHQRF29 -YshoFbAJ19zOHYY+5LYHoLGJlN34TJ4ouPpAtRIQu4ebQZwMxddU1759sCIIwkHe -V5d5 +ADCCAgoCggIBAKtVnxPqCZheCuqePfLknxc+6MeyYkf494U8WWeZo+yirYV3zY70 +1KhKZ+M+XDqhrBXc7IQHZd2KKxYBGnrv9yvbllmtZRdnk3hnn8B4eNh3w5gCRKPo +GSTeiNN7WEIRwYZNkr8AWgeoYT1jN8SAMn5+qSqKSd62Z1BPJNi0eQmTVxgLZqzx +92AWBZQl9rOme+1zV6ohKcR22Of3yUl6476L1rYYcX0DXp0QFkhK0TFKNt3cHxqq +WTRuMTnyCj7woWRtwclWTdO2buAkJe8cIde6rcbaUAX9jTdkbAgYAB9MctEKqasO +MqFyMzweS3sG9oUnmd0/GRL9as314xTZuz8fFnfj5l0BN6thVMmvEEYU3rTLQRKf +AKWzI2VrU+5wIxN8O/4ZbriQ5ae13p6TDYilSZ6kMxSzfOM/A00hlA+DKMS0o8g8 +V9Y3wcl3aSSjoZbH7XS/uDEueodudz9V3HxCk7Wc41SpunQPFprmPDWtjiW0jcMD +3kHV819r2F8aidKN94Q+3KI+N/mwn1QdDVsquiCq0wbR54i3CoAkQbi5YeUdEZD6 +/mNLs/BABgzSbANw7Fn1Pd9gY/JIsRhMskcFRqXe9tOqKk8/GxMv/r9MgJn6HHlk +iDa3OZsoOtFbjjOPFoy/Xq9YMi4ODnJkEhe7BSsVl/wkDAUdg7Zfu8XVAgMBAAEw +DQYJKoZIhvcNAQELBQADggIBAEft+R+qGyKffiiJpYWLPn0C9SmpjZiWPK331n57 +Nk3GA8u9gRgD1gyqqLr19r86nLArF8jcB/nChPB1A9ysW3xyTNvpOlAwYvEjxWR2 +tJr8wiDucAd+SnQud6e+5PI5e8LnyxYoeoZ+i6hMbhNV70NthoINHMAQx+5NeSpa +Q0GJ4d0XA3W/8Pu6oK7O0QkVovVut73Koz5DqsF91zFJp7SjVKaCnnjRKyU8wbg5 +uTO0TRheEtx3AeEXNps5Yhq0daLTnmnuFeyaJHm2F1QuBmma1TTwIF3HDclv2wLn +Jp+MWG9yoN9oEJLqS/AvDu1BltPSuvnYgLZr7cl0os+TEqpzxroa4ziE98dEiy0D +K4YQ59UTz6C8Ps0uX0hcs3jsvZOkBWptusvJBfZN59xLJAVmF2igkgIBKoiXvXmv +fXDx0hsOBg2IPe2O8lLHlFKlJZlMc+prH1iD0Xv6HefSP4L1eZHU37zjrRf/GiNX +r6GoEhJR2pKEoZQT81xpYp/w+qjzWcTl/mLD6FEePRzV92h3ubjRWBB36UhLtnEG +LJgp7yq3aGu7rg9rnuz8J6DG8DStE9rNuRjkV1O2C/PvR97XmVoIqbrMlxX9MUQJ +XxLm5dqBz7EVuhDJSyp4zCkDYsOj1y/SLL2O3cTyQQeZg6jlqripNqWnviAdTWe5 +JIPp -----END CERTIFICATE----- diff --git a/experimental/packages/exporter-trace-otlp-grpc/test/certs/server.csr b/experimental/packages/exporter-trace-otlp-grpc/test/certs/server.csr index d8ab7deb4b..b421a7a60c 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/test/certs/server.csr +++ b/experimental/packages/exporter-trace-otlp-grpc/test/certs/server.csr @@ -2,27 +2,27 @@ MIIErzCCApcCAQAwajELMAkGA1UEBhMCQ0wxCzAJBgNVBAgMAlJNMRowGAYDVQQH DBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEVGVzdDEPMA0GA1UECwwGU2Vy dmVyMRIwEAYDVQQDDAlsb2NhbGhvc3QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw -ggIKAoICAQCheMG4Y8E3dOPAnbarjY4blRiLz8aXTWgj120iTfY6EakcKdL7eA50 -Xy1nWt+FM2fX8VzeB04GK8y2JK3TlIb6Lq4Y5Gtpo3LNZDo5XxXhsICXvC01Ruqh -Pi3SRcOMT3ed3WbbDdXUGo+3vxpSuIzSOvaratenZxbMI28wCOtqK/TB3c2OBXxB -UXjK9uZBkqPv5zcCNtT24jIWfjkk7qEoKJseiZl1GBvfrmRWU6xPn5+O4zCuMAb9 -VvlNg9cNgKH9NZcn0EP4IjGOl1ACDxyMgRLxchdbHVPmSc7m5d7zxs3/OCH/Pt9Y -mLGBKKkd78GLO/n5gFlznF54y/DdEKmT09+37CixdZflgsYVizJXPMfSqvBns5ji -Ua0d4+VIvrsek6UFd2iF498pFCHgyCMETzbA68MySzRtvGFTFda8+PldvzLEODC9 -TIpT92QfbsVDd/dV7pS8bECNKJb/i2aimJ6qnh2xQ7etR6+Fpnn6iqgeK5TtY1h+ -EiwhMpM06BUKSvTEKT5lCdlGa7nTd35SRmfG6ZxrtoANq4Kn3owedg+Y6WU800VP -Tmadb+iVo40Yd73KlUop9JjyxF0I9dXKSjgcyARI6qD7aZ4x/EkHfZm+5/6OavIC -0rk3Dqp95Sx9w7y0wYpbJjXCGwSLaQukBnORFaj5QCSiLy7zhm+geQIDAQABoAAw -DQYJKoZIhvcNAQELBQADggIBADoGwPR/TLe0PwsB2orIjrHnsZLYzcHxh9JdRaCO -Q07NvbocAqN3nIiHaUI/IqZG3aiBQb7i98maE2fcFVgsMoRVLB2GsQw+bzoPF+45 -kbtff4L1mHEt8AIIL063AepTetAMUfojpoRI0JG6pChzHDxuud++kPrz50wR5eEk -OhDjX46qh8VxExH3rfU+VDY/FvXMJaMLa76HOmY93g/p+C6T+SiTrs+QEPqWsMKa -eHJTTP0PZx8ikdT64aJpDiOmXVthymPPSZvDEWzlJ7RF8y0p+SoqPM3Pv8/M7zq7 -2dRL6UABTMGtBMEtj5DDZYWTl+1O8Yn4xhjHBcDT3ug3IvnCKCpX2ufi+wJzaWEu -QFAL+N5Sc1rZxklqWKprQeGBiEIE3UXdDA6Xvom85gLoaWoH6nMFvDNab+zJl4Ty -0Iiciq9jzUq4eda/TjgPxDs6RNlJxSXs1lASUR0Jx+Nb9wH2R1n6XQJhcOrz6nJ/ -T+/INYf5VrUdvf9P0PRub7Ga962fBDUG6WQx3PPjy/iEmffN/nsBXXzvQiw7ObW4 -eNCQob2H/3lAdxOs2txKhTCgUV9CzUb2P4Uq4s26n0yA6qpVG6Jgp14s+kVrgFYQ -KjhoFMWXtN3YqETnVNe6A9PEwkSpCm/JyGTm524ok0KyrXo1nSm1WKZqEIQCpp2D -vQFY +ggIKAoICAQCrVZ8T6gmYXgrqnj3y5J8XPujHsmJH+PeFPFlnmaPsoq2Fd82O9NSo +SmfjPlw6oawV3OyEB2XdiisWARp67/cr25ZZrWUXZ5N4Z5/AeHjYd8OYAkSj6Bkk +3ojTe1hCEcGGTZK/AFoHqGE9YzfEgDJ+fqkqiknetmdQTyTYtHkJk1cYC2as8fdg +FgWUJfazpnvtc1eqISnEdtjn98lJeuO+i9a2GHF9A16dEBZIStExSjbd3B8aqlk0 +bjE58go+8KFkbcHJVk3Ttm7gJCXvHCHXuq3G2lAF/Y03ZGwIGAAfTHLRCqmrDjKh +cjM8Hkt7BvaFJ5ndPxkS/WrN9eMU2bs/HxZ34+ZdATerYVTJrxBGFN60y0ESnwCl +syNla1PucCMTfDv+GW64kOWntd6ekw2IpUmepDMUs3zjPwNNIZQPgyjEtKPIPFfW +N8HJd2kko6GWx+10v7gxLnqHbnc/Vdx8QpO1nONUqbp0Dxaa5jw1rY4ltI3DA95B +1fNfa9hfGonSjfeEPtyiPjf5sJ9UHQ1bKrogqtMG0eeItwqAJEG4uWHlHRGQ+v5j +S7PwQAYM0mwDcOxZ9T3fYGPySLEYTLJHBUal3vbTqipPPxsTL/6/TICZ+hx5ZIg2 +tzmbKDrRW44zjxaMv16vWDIuDg5yZBIXuwUrFZf8JAwFHYO2X7vF1QIDAQABoAAw +DQYJKoZIhvcNAQELBQADggIBAJCMEdjKyklN2izvOhd7+JMXm/ClW3hjowbu+csO +JNz8NqUNLrKJjFyV3yAUGWuyp3z982S+XGfcm3nU7n9AJOjT4DLJId6opOtA6CSp +KTRgVZmeViL6O6UqBLTacz5DDjwMQXxszc+QpU53cMT6Y7VMvIOhQ6AmIvz1v71u +5gaYmlbfXVlmiPHEKRsQG9/DNIPe1mHP0p+S9qYKmCx7Jlpee7IstW/hNjt7alDn +uFaxFjxmCCSdWaMRyMW/qNRks9q3VdhJPan+amFeXceoEG7SOKiFiOc8A7DribSm +iKc2YlOw14xqc+cJutiKBvoBMri2eh1JgCbPT4ufVGFpbDkfYwAJxWx44Eg0X90j +gJUw8IRuHQZkEYss6jwFMFcOqjpe+AqrssOl4GZmu5gcaiUnj8PkSVZLTOrLilPg +sSDjzmoHdv4QcBppTrjj6PyR5Xd6DeGasWkMPvIPjiPN3mOhfxJ3C87atMqOhTLx +em7vFOBegAW6g40J9JD1XMoI/zFnTU8NevZQgCyx/Tq1XNRmUeMA6y/qpfTNKi/f +F7v/7nDWoxBgpOw3J0E9R+6rxD7Cjb2RWZEf20ZGdNBlPE+UG9c9b3HC3IHiwRHb +L9Fi0251w+fkaPX8dojQKErCEknqJ1SCP5S5F5g1QCQby22Y7LQsggMMf94s/wQX +4uMh -----END CERTIFICATE REQUEST----- diff --git a/experimental/packages/exporter-trace-otlp-grpc/test/certs/server.key b/experimental/packages/exporter-trace-otlp-grpc/test/certs/server.key index 9147802e7d..80b9cea7bf 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/test/certs/server.key +++ b/experimental/packages/exporter-trace-otlp-grpc/test/certs/server.key @@ -1,51 +1,51 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/experimental/packages/exporter-trace-otlp-http/test/certs/ca.crt b/experimental/packages/exporter-trace-otlp-http/test/certs/ca.crt deleted file mode 100644 index 529ce2f7b8..0000000000 --- a/experimental/packages/exporter-trace-otlp-http/test/certs/ca.crt +++ /dev/null @@ -1,33 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFozCCA4ugAwIBAgIUa6OxgyEYxNjpjac0jTAKn+IkGTYwDQYJKoZIhvcNAQEL -BQAwYTELMAkGA1UEBhMCQ0wxCzAJBgNVBAgMAlJNMRowGAYDVQQHDBFPcGVuVGVs -ZW1ldHJ5VGVzdDENMAsGA1UECgwEUm9vdDENMAsGA1UECwwEVGVzdDELMAkGA1UE -AwwCY2EwHhcNMjEwNjA3MjAxMDExWhcNMjIwNjA3MjAxMDExWjBhMQswCQYDVQQG -EwJDTDELMAkGA1UECAwCUk0xGjAYBgNVBAcMEU9wZW5UZWxlbWV0cnlUZXN0MQ0w -CwYDVQQKDARSb290MQ0wCwYDVQQLDARUZXN0MQswCQYDVQQDDAJjYTCCAiIwDQYJ -KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMbVyp3NCtDwKpGbV+MCML63o+vGVhpd -Dlt3ncpcwz0FMK6UJDXzTe4joKCaezWto3Bmhb28Lezcf8AdzmTdnoENAaqUX2SE -giGVoeaJ/M1hW1IiOffa9zIMkt6cwf8MUUMl5kTRMdAqmpikNqN0rqNpaGuqBYf9 -kvDy3hw+dj19hKEeEXI2zt/HYDOBHYgpalWiOS8qwj0zSfxAUeura+eXKMlx0JOY -h5N25OUH1oLt1flhyuHnwRThKbvyMnL36Ey+G7uCFH0hQSGO0BLhg1LPDWG1PmTn -KzsvqaIgDF/tMCXykvaWcsSxrhvsNeOFFmmkKp1ECVOFgFYsGuK8lJlEvm6Owrvz -4X69L0phCJtaCCaSUFdybqx+G2ZKLZNqTtnMw/3YECp37KyrRd75Gy1UrU031+XC -Fpt4pHw+3isjAOf1bj32F2Ed7aaqVqM2A7m8AgA0m22J/f+jBzmv6UJN/kvfFXzC -0lbX6b1fGj49vU9WEO/o+F3qaH/c50HPf45AB2d4pWbDl5alXZei58ZyEemBndlv -XcGPtVR9S/5rphlX1vAIOT7ePWgUVkAi5fB/rLVGyC1FwA0zYvdyj9CVigJNs29G -yftsvMynF8TL7/qCIGNz72qtW/Pn227OI4WamvYhX6fJwJirXwTEQhAfKXljocI/ -Liqxx15Sfs+3AgMBAAGjUzBRMB0GA1UdDgQWBBSMocah0cTqX4owoPL4+zV1pe5F -QzAfBgNVHSMEGDAWgBSMocah0cTqX4owoPL4+zV1pe5FQzAPBgNVHRMBAf8EBTAD -AQH/MA0GCSqGSIb3DQEBCwUAA4ICAQCIpnaYSMXT+nrdOgw2zKHTk47wANGf6nfK -76VwsQfzVkJm/tzEgq+saEznGRW1ttdQfXHJM3NCfneVhjXDkihrHsxiL4S+5OMq -cusp2tKupGXlxwOt7tsAhH5j4SQLyEUiWMmm/Wvwtx2HWuNO8LZGhoAcUrT7r94f -vqr3tYyb3D06/rBRj2QcybYGJHsQAULEQvmWJvCveh5gqxkRjDJlwmqV/lIarPCt -diKbsZqHJMNaRMbgsxV8hVSvD6RKtBG+K8hpuHF2ZKfzb7Yt1IDPtUGCL811ykzh -2PjumjaQ2JCP6vtYAhTS1r/+cbOi+4v5JzF+kxHxFc9vK/gzBT88174S2MQaqwhF -jQiS3YfElLXkr37E9gxMKLDanbFsxPPiXO96s0RSjNK2mzSbz/gfmsjGqxKNq3t1 -IwAfjePmmx4FJ1O/FwOA5RWE+KRhzNucktjxz39oZrnqtPeTqHnAivNOyK3XB68v -5HRjP79TrzIbLCauyJD/qM5UtCRXW2La1rsH8lIBtcxUcZOkvDnE6Po44D5hH2kQ -swRqF9Vy7PL9MWJPTgn4+WFLNoBe+nMY82y7xstRv7c2ctXpAxSWxIXgBN+B9nXo -3Lqpgg0UkjTiCp13Mejq/7DYAw+/Ou8bxWs3BuCQvFcG2+FBMWh0dL1FxVq3BPyq -oveTgr1sfQ== ------END CERTIFICATE----- diff --git a/experimental/packages/exporter-trace-otlp-http/test/certs/ca.key b/experimental/packages/exporter-trace-otlp-http/test/certs/ca.key deleted file mode 100644 index df94d44c38..0000000000 --- a/experimental/packages/exporter-trace-otlp-http/test/certs/ca.key +++ /dev/null @@ -1,54 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -Proc-Type: 4,ENCRYPTED -DEK-Info: DES-EDE3-CBC,7EE0C188F59416E9 - -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 ------END RSA PRIVATE KEY----- diff --git a/experimental/packages/exporter-trace-otlp-http/test/certs/client.crt b/experimental/packages/exporter-trace-otlp-http/test/certs/client.crt deleted file mode 100644 index b1519dede6..0000000000 --- a/experimental/packages/exporter-trace-otlp-http/test/certs/client.crt +++ /dev/null @@ -1,31 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFPzCCAycCAQEwDQYJKoZIhvcNAQELBQAwYTELMAkGA1UEBhMCQ0wxCzAJBgNV -BAgMAlJNMRowGAYDVQQHDBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEUm9v -dDENMAsGA1UECwwEVGVzdDELMAkGA1UEAwwCY2EwHhcNMjEwNjA3MjAxMDExWhcN -MjIwNjA3MjAxMDExWjBqMQswCQYDVQQGEwJDTDELMAkGA1UECAwCUk0xGjAYBgNV -BAcMEU9wZW5UZWxlbWV0cnlUZXN0MQ0wCwYDVQQKDARUZXN0MQ8wDQYDVQQLDAZD -bGllbnQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAN1or7F+548RpVIgdrzYmuWgKMfWsO5FhgqpGp+xuoVgMMTlZM3i -yiarMnAE0G6ZVMwqCeXkiUGL9QLatJ1S/HO2sWLUkWaPD7X7O4k1yGtl6UsRcr4K -+YBUbucxfrCQjaWKlBc1GMBrDyY/u/rl0CIYu3GtegniN6HG6rBXC2e98DVctQ3M -r/RXB9DWqMC2KW2X92X+FyWqTfGjv8wjRnhQdDNXPA/PCembzhfCL8VlmG65rDiz -VQxiTotTOCmaxULdF307jorMTLIHZVV2OnAA/udeDcxITnKcksLiRKKAiHUXMIPq -RGxNtLX1sdBD/FoQ28sr8o6Ko7qb3uaA4CZhp2I4RR925oZISyObzY3QxrlafN4g -hFnWkTFJY0K+43cxta8K3gAnQXxN/BANDEydS1YM9adqYbt09wctSUjMqJHGZWnn -IVOged+/DEIW9EmyLSPM1DC1s1owOrgwBXzHRRNXuUFjZPPrMC8TkBexNjsapLjr -nE/xa5cB80DIntkM8ysfLU6p39NihM2hmeyI2YS8osheElXEL3dz5vM8Wzv28qgF -PvGpdYz6cAibE9qJ+oT416dVc+9G6i1fcBl7X8w+KUGVFsRnftovwjoSToGlckqg -dv1Tsf6FBDpSMro3BbGogpDhkSxy//eWvzejjHBemz06Kh2DGkKhnT9rAgMBAAEw -DQYJKoZIhvcNAQELBQADggIBAIGWBdgWOoqGIy0fuSbqQgjgrhDrPGBV15TfvB4T -84xfk9YZxdRKkG3J65uLffTnnotZs6gqLx6MfosR6zQYhSK27fTXpJJdRaI55kgT -2e/xNCe867Bz/3nW+vwWIGTuFn6hFq9f8HNLZMpHu3DClj7AB7ga6qp1uFWIn5oq -xC4da8/JTR6FY2srIktyH5Vr64FnhtX9cLSa/U7df7asZjRUm6ndPS49X01G6BJQ -vH0RO1caCCbpDVqPwJnAf3BXD1MkKsNe4hULt25XCxSsyM7v0Ru4KcSSGxiYHowQ -+VzRdJVYe8ytpcg1eVlWutOlDXGLaeGNQ0/u5OEQ8iqZvp1/qiq/LQIRZlxa+ZlL -vsVAgOxolRpm6W01cYCCWX8utsrMq8lKjMIal0SZhj6oP/rwtH8UVRhqhrQyAn6y -K6IYGLGvXGacJYuHpcAFQ0f8LUCCs0kxN/zZOZ98atF0MvgUWKZFNgrvcX5se8iV -kS/7UHH4Ie9ZO6Hv9IvnElOfZY9dnFPNxcbWnA7U0kLa5CWh8CD55ScAGHrvcz3O -JXPW0SHb2xZmXDTfgmS4vMI5PYDyipSCoUDClA3BPr/dkAVssj8SMikJZWhVvDrK -IcKRHpkmrzLJbatxeDNlCtLRSAXeuTheLqqSA2HACReNYkQLPd5V7mY6uRw3d3o6 -3rKe ------END CERTIFICATE----- diff --git a/experimental/packages/exporter-trace-otlp-http/test/certs/client.csr b/experimental/packages/exporter-trace-otlp-http/test/certs/client.csr deleted file mode 100644 index 2d99fab566..0000000000 --- a/experimental/packages/exporter-trace-otlp-http/test/certs/client.csr +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN CERTIFICATE REQUEST----- -MIIErzCCApcCAQAwajELMAkGA1UEBhMCQ0wxCzAJBgNVBAgMAlJNMRowGAYDVQQH -DBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEVGVzdDEPMA0GA1UECwwGQ2xp -ZW50MRIwEAYDVQQDDAlsb2NhbGhvc3QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw -ggIKAoICAQDdaK+xfuePEaVSIHa82JrloCjH1rDuRYYKqRqfsbqFYDDE5WTN4som -qzJwBNBumVTMKgnl5IlBi/UC2rSdUvxztrFi1JFmjw+1+zuJNchrZelLEXK+CvmA -VG7nMX6wkI2lipQXNRjAaw8mP7v65dAiGLtxrXoJ4jehxuqwVwtnvfA1XLUNzK/0 -VwfQ1qjAtiltl/dl/hclqk3xo7/MI0Z4UHQzVzwPzwnpm84Xwi/FZZhuuaw4s1UM -Yk6LUzgpmsVC3Rd9O46KzEyyB2VVdjpwAP7nXg3MSE5ynJLC4kSigIh1FzCD6kRs -TbS19bHQQ/xaENvLK/KOiqO6m97mgOAmYadiOEUfduaGSEsjm82N0Ma5WnzeIIRZ -1pExSWNCvuN3MbWvCt4AJ0F8TfwQDQxMnUtWDPWnamG7dPcHLUlIzKiRxmVp5yFT -oHnfvwxCFvRJsi0jzNQwtbNaMDq4MAV8x0UTV7lBY2Tz6zAvE5AXsTY7GqS465xP -8WuXAfNAyJ7ZDPMrHy1Oqd/TYoTNoZnsiNmEvKLIXhJVxC93c+bzPFs79vKoBT7x -qXWM+nAImxPaifqE+NenVXPvRuotX3AZe1/MPilBlRbEZ37aL8I6Ek6BpXJKoHb9 -U7H+hQQ6UjK6NwWxqIKQ4ZEscv/3lr83o4xwXps9OiodgxpCoZ0/awIDAQABoAAw -DQYJKoZIhvcNAQELBQADggIBAE8wUkuBEsxe96X3U2vjWCfD/hB30cF69UZ2NlR6 -2UIZbjvewIy43ozr2uaCk1+US21NaaXKinNrZ0VElWKLVXWkZidfuoGEz0gY+XDF -qyjlfaYlCTexPUSh14nbpLsT0DXvHa5KI3Kq2ly/sciVB78SlH3sRzmJt/qkoaIN -f6PI2Unoqf8vJ1xvQr9z/ODc06MoX5g+ezM2vShZ+P7773bSVL6bIEVl/9yFFAyu -OHL+uwUdBYBk3NS4xKyXWXhG58AyNvGYWIO0tWTYmIVVuL2JDrNGY4QdIDQBoj+4 -hppmh0mYbvDCXolKjUVFC0wHRACaRCN1WLIKP8heE0vZsvXq/7ssuP3DtCDHRadk -pHn+6CpEwbT4bCNsW4bsci9v82npoY6YJKW8mokR+1dhcari6g1W2R80VCuWmB6E -ntJFZpILjPrCf8QCjs9Act0l87xx3+5K0LpFHQiKHygTbOrzE8++Lds+6yC/uzp/ -QtdLC20/iQMJ5GaOxSCwzBe1dUhC+ABF1/ZN1p9wgKFTFQMR+B/bR5q9l/d2AyMY -1pTorKIX7yg14OHehzL0s1tVq3QEtNl14c84hLh0m4Rf7nmRRcKDP8l6EwDujJVD -nR8cHM8ajiyC9tjjdyiQ32NLgzo+6OGiugctUxfw/ZLp7Qr0mT07IvPLcqBiRAC6 -E+9O ------END CERTIFICATE REQUEST----- diff --git a/experimental/packages/exporter-trace-otlp-http/test/certs/client.key b/experimental/packages/exporter-trace-otlp-http/test/certs/client.key deleted file mode 100644 index 00f82cfeeb..0000000000 --- a/experimental/packages/exporter-trace-otlp-http/test/certs/client.key +++ /dev/null @@ -1,51 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -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 ------END RSA PRIVATE KEY----- diff --git a/experimental/packages/exporter-trace-otlp-http/test/certs/regenerate.sh b/experimental/packages/exporter-trace-otlp-http/test/certs/regenerate.sh deleted file mode 100755 index 9e2e972c99..0000000000 --- a/experimental/packages/exporter-trace-otlp-http/test/certs/regenerate.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env sh -# -# Usage: regenerate.sh -# -# regenerate.sh regenerates certificates that are used to test gRPC with TLS -# Make sure you run it in test/certs directory. -# It also serves as a documentation on how existing certificates were generated. - -rm ca.crt ca.key client.crt client.csr client.key server.crt server.csr server.key - -openssl genrsa -des3 -out ca.key 4096 -openssl req -new -x509 -days 365 -sha256 -key ca.key -out ca.crt -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Root/OU=Test/CN=ca" - -openssl genrsa -des3 -out server.key 4096 -openssl req -new -sha256 -key server.key -out server.csr -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Test/OU=Server/CN=localhost" -openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt -openssl rsa -in server.key -out server.key - -openssl genrsa -des3 -out client.key 4096 -openssl req -new -sha256 -key client.key -out client.csr -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Test/OU=Client/CN=localhost" -openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt -openssl rsa -in client.key -out client.key diff --git a/experimental/packages/exporter-trace-otlp-http/test/certs/server.crt b/experimental/packages/exporter-trace-otlp-http/test/certs/server.crt deleted file mode 100644 index 55f0c3dbb9..0000000000 --- a/experimental/packages/exporter-trace-otlp-http/test/certs/server.crt +++ /dev/null @@ -1,31 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFPzCCAycCAQEwDQYJKoZIhvcNAQELBQAwYTELMAkGA1UEBhMCQ0wxCzAJBgNV -BAgMAlJNMRowGAYDVQQHDBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEUm9v -dDENMAsGA1UECwwEVGVzdDELMAkGA1UEAwwCY2EwHhcNMjEwNjA3MjAxMDExWhcN -MjIwNjA3MjAxMDExWjBqMQswCQYDVQQGEwJDTDELMAkGA1UECAwCUk0xGjAYBgNV -BAcMEU9wZW5UZWxlbWV0cnlUZXN0MQ0wCwYDVQQKDARUZXN0MQ8wDQYDVQQLDAZT -ZXJ2ZXIxEjAQBgNVBAMMCWxvY2FsaG9zdDCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBALaskMk0FpoAZ8eHpOiNYIW2yOeizGsvJ7PsNZujbUFQ/f7/AYTZ -CBQ9Hc8lKz+3YHklZnTsAJW6QLCBKSgsrjPAXA25zBFQazUuKb+QrjoIqeaq8D8w -6iHL7zdHsplbWZjYrnPjLWPqoc1ga6H0p8NsH7eC6hFXJRp2ZilyZXUR4jvyMc3D -2q/MXoI0VvQ3tI/QaLrU2iaN0DZBsyJhr4B/jNzOYzGAuVieEyV52wFnOsUlJDNp -jsT/v1/Q8JrjOXSb+ko/74VlSLTCauoPSsiUb1ra0Tbu3Z0E6b7vlFKeZaOxwUyW -eLi6YT6Z9ZTOEJuiJan/7STprK1NrqL+OPneK1A0Plr10hY76SptAu2fTqgGOFGo -QkxTosnsppiSkCVaDiLKCVr4DQzBm/0CLoSgXk4fJNhiNrIT+b35gX8Xmm3hUq+U -GanZyXhJYfojBUuhPJFAUKpUUjSsiRU8Dj8R7nIZT+cUWvslYmrOG4ZjCnpIXnoo -pAjFlaZkv62/tEGwJmyBkGk2lYzn9Ka1G/aO92IjfzypUlSKXCntTxLD6BzWNF7/ -qjt19XTOWPjChQHQcYXmlTSNUvUQ09HMaRIUe5MCexlWYleX6lVG6XtMwOb06w5O -ynVuMHjiAGfkjLrUkGQqSxHrS2v/af1J7F+CIClNgI+q2pz5dYWYMaCFAgMBAAEw -DQYJKoZIhvcNAQELBQADggIBAAaVSzyc6jFBLORHUcxkP8DheyTl8m2sWIb+x732 -DkM2qp8oEAKwhJ/AWLFGCqsjyW5ep8fgpTHQgT7braEEUKKnGUbIqUPy1IBz+lSf -LoT7qD92eiMGXOrzcHWnV02PRM3mF5cmLMNu5aMUoIArG5dO1LTSxl5/ybx2l4Zy -qXcT7wJtrA6F0EmuXRzwFBIVZdxlLbI+S4SsvfKXernGatB3Mjotivvqi2SeOd8p -1tuqEyQaaIJ1s6u7vyTcAHDd0OIxSqpTu3SwaHAXhkzMi7+TRGgfQUuljkNKkKfj -N02siSNjIuKzE/DSW6yV0OFL/FCNPyvzs8CKTMwfyrrvA0UAspkFCWZFXFlA+uLs -0at4SmPecOsc+O8ATon9nUyXh06anBwtp03aXX6Mr/7UIRRPHF70BY7MDV4OvvQt -PD0osFo0uEHubflCnPBUdMrQN9KbELVJeV7G0Xj2fHTAVoEnCmSpow+LB1ehWGbR -M3U8q9wlpXi4Awhr19kRcSdE/JzI7eu9MqjsazfUdAtCcgg4dHixOre8oXgauhZ5 -jMOv9lUI6Glf61xt8mamicohSf9CFyH5PgZqRM0aSacdJ7jH6EitABOx21ZqwiBp -o4W37lV55oy+N0r7yxaNy/mSUUcjsQo6kGw/4cMpYTSEzRMtfwYPOS1DeTl9zArE -7TBI ------END CERTIFICATE----- diff --git a/experimental/packages/exporter-trace-otlp-http/test/certs/server.csr b/experimental/packages/exporter-trace-otlp-http/test/certs/server.csr deleted file mode 100644 index 0c5e9291bf..0000000000 --- a/experimental/packages/exporter-trace-otlp-http/test/certs/server.csr +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN CERTIFICATE REQUEST----- -MIIErzCCApcCAQAwajELMAkGA1UEBhMCQ0wxCzAJBgNVBAgMAlJNMRowGAYDVQQH -DBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEVGVzdDEPMA0GA1UECwwGU2Vy -dmVyMRIwEAYDVQQDDAlsb2NhbGhvc3QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw -ggIKAoICAQC2rJDJNBaaAGfHh6TojWCFtsjnosxrLyez7DWbo21BUP3+/wGE2QgU -PR3PJSs/t2B5JWZ07ACVukCwgSkoLK4zwFwNucwRUGs1Lim/kK46CKnmqvA/MOoh -y+83R7KZW1mY2K5z4y1j6qHNYGuh9KfDbB+3guoRVyUadmYpcmV1EeI78jHNw9qv -zF6CNFb0N7SP0Gi61NomjdA2QbMiYa+Af4zczmMxgLlYnhMledsBZzrFJSQzaY7E -/79f0PCa4zl0m/pKP++FZUi0wmrqD0rIlG9a2tE27t2dBOm+75RSnmWjscFMlni4 -umE+mfWUzhCboiWp/+0k6aytTa6i/jj53itQND5a9dIWO+kqbQLtn06oBjhRqEJM -U6LJ7KaYkpAlWg4iygla+A0MwZv9Ai6EoF5OHyTYYjayE/m9+YF/F5pt4VKvlBmp -2cl4SWH6IwVLoTyRQFCqVFI0rIkVPA4/Ee5yGU/nFFr7JWJqzhuGYwp6SF56KKQI -xZWmZL+tv7RBsCZsgZBpNpWM5/SmtRv2jvdiI388qVJUilwp7U8Sw+gc1jRe/6o7 -dfV0zlj4woUB0HGF5pU0jVL1ENPRzGkSFHuTAnsZVmJXl+pVRul7TMDm9OsOTsp1 -bjB44gBn5Iy61JBkKksR60tr/2n9SexfgiApTYCPqtqc+XWFmDGghQIDAQABoAAw -DQYJKoZIhvcNAQELBQADggIBAIJ7KMLIZbomgrup1rrizG3aU4bREy6HfHZ9Ylcr -Lo1vdL5/UZH3AHVhoccb0ua3qXDtsc8pDQAXIMzBu8BjfpbwCvrgz7YXsNsBU9zV -el8p394QB20WoPHebYDBUXPiq3JhLfjzOXBS9Ke3MBl1jDamOFmZW8dg8EpowIXv -ODFP8sErFb7Bmq7x2d0EJyX7+HydBiRWRa376oXcZ/VLl/CnNzpJeACFWPI4d0lg -P5nsadtdLyAwXF6cRQx3pOdN0sS5b3llXX3jVwGzm+kNjVTDWJiJmqWfwIF15pPr -bypoUmPpeQ4I9F+oFm9+Ff776PemqBD7NSJdG0iHRndm3oa6o2bTpn9ZypCO1Skv -UWr3ATduFylA3/YeoN6dQwP4Ol+3WJ2UbXzTbmEfoSEzmwMI5MTidOuA62A0afyN -VM0SjHaLvfD1mK4w+3BKdUivYh4TWbcLU7s1SeDwYiEP6DFZHLBPHDcNLz77d6nQ -zgvOgXqeNfk9uI5NdYBMbtdHW/mwGgEfPlDkKbY2KveOJjLlTM1EduGFsYHAXyhI -SiYozrbFeS5ts4f1EZ5tVT73KBv97MiQkKhBoVXtF1CHPUP1LTkGxtH2uoDiVfDi -r1OkRzoO05pHAh2o+4gujThsc0d3T5mmoeSySs56lgqDmC4blXNOS0kBZ4+I2u7A -C2YH ------END CERTIFICATE REQUEST----- diff --git a/experimental/packages/exporter-trace-otlp-http/test/certs/server.key b/experimental/packages/exporter-trace-otlp-http/test/certs/server.key deleted file mode 100644 index 9fa740554a..0000000000 --- a/experimental/packages/exporter-trace-otlp-http/test/certs/server.key +++ /dev/null @@ -1,51 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -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 ------END RSA PRIVATE KEY----- diff --git a/experimental/packages/exporter-trace-otlp-proto/test/certs/ca.crt b/experimental/packages/exporter-trace-otlp-proto/test/certs/ca.crt deleted file mode 100644 index d54d3fc5d3..0000000000 --- a/experimental/packages/exporter-trace-otlp-proto/test/certs/ca.crt +++ /dev/null @@ -1,33 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFozCCA4ugAwIBAgIUJy5SEslTLFkUTocZvXO1+3qd+c8wDQYJKoZIhvcNAQEL -BQAwYTELMAkGA1UEBhMCQ0wxCzAJBgNVBAgMAlJNMRowGAYDVQQHDBFPcGVuVGVs -ZW1ldHJ5VGVzdDENMAsGA1UECgwEUm9vdDENMAsGA1UECwwEVGVzdDELMAkGA1UE -AwwCY2EwHhcNMjEwNjA3MjAyNzUxWhcNMjIwNjA3MjAyNzUxWjBhMQswCQYDVQQG -EwJDTDELMAkGA1UECAwCUk0xGjAYBgNVBAcMEU9wZW5UZWxlbWV0cnlUZXN0MQ0w -CwYDVQQKDARSb290MQ0wCwYDVQQLDARUZXN0MQswCQYDVQQDDAJjYTCCAiIwDQYJ -KoZIhvcNAQEBBQADggIPADCCAgoCggIBALHeRFPaPJhHNCwMkcGZMGNaoskj8Qw6 -Ar2PQVC5YzByrNWaxv4HcPArHxbfsMTHJsV8vZfN2K3AQCNsPNVy/YfBFwYbkr5J -K7KeiFSAw8mDz+Hr2NETvQA5xbxTROaBYlNxQirIUtGc0sl0OXinKEsuO5/CqB0V -aPTCmdY0iMNIKtGywSc10XzWSBIzwpqVXMDIjXGPDrl2AvytAm+vwhDB51TSCKmz -ZKAiK3s4VsMmmAWDPvOqItO8QHvyKTswwb5REKXZ455GBzLWM+6+UDr4VVCKlHXe -PydKjXgKwaap/goxo3/lyGdbsbY/BrNDEvKfOhvSwZWaroXvu8R/R9d53Gjh76v8 -v1pXJEo7OzWhVvMxb18/ZonCoX7F40V8uw8fmcoQlUY9/c9JFo5+UiuhmW6acD1F -JBGMbSwVy0MbqledEAkSpIulgapnJSAf4gFxBq1UXjXC9iJNTDlCafY+DQjrhMSx -pjb9FjZAjqkdFyxWwdfNmE6kaXVPbxuOaYVbUXF+w1DoC+TsAni3E6WmVI6WR89G -rvZOHuAj3EJhiVwZuM/f2HpaVfaFmOHS+pWqYgaF1nFC7bOOl+JPcfgdOpFITuPM -QulBt1P1f6eGS4G8js2uW74UQNed0qXk8bmQ6Gie4NUS5sG38yCf+inK/4ykmLtW -jQYHlLKI+WVtAgMBAAGjUzBRMB0GA1UdDgQWBBTUC1DWnOpOOqICf/lXsL/tZjmf -4zAfBgNVHSMEGDAWgBTUC1DWnOpOOqICf/lXsL/tZjmf4zAPBgNVHRMBAf8EBTAD -AQH/MA0GCSqGSIb3DQEBCwUAA4ICAQBNP5wgbkuM5iUPIhg043xEBnD4kR7iGaZX -bVIyWoLXRbtpjPyCAeBzcDjVgq3i2vs3jGXJ+p2RkEftIDbCrsgdK/SuPQjsXe7t -uxEUf6sNLzwCF3vtxFwoDbeE0EGWJMDgpkzWgGKLOT4mF1VG3tUNQrzEmOVfZXA9 -/WLopGMk4zAuUn45Bbsf49MYzYyWBTZ7I0IBaTFeQ+vFsGD8FphlKIJYX+gv0Lxi -KLPKbNnSAZVXveU12uHrg5p/710tU/BHK7vZiB46R0yuIbT3FJHzr+jGFUsyz3N4 -Ro8x6HlRL8CApNDgTxW5i7hxBRuB3j9iuv1hfB7N5HLAGymwHGzLwJWAb/FbUbEC -sbIvVW6GkUtkDvOREM9VyTfPp2Ix+unnRjGbm984zk1YGF/nq5ztTlwRo3pHrOxh -6BF4XPtSiG6tpA20hokrnMY5cmYbeUNUWQcnQXdwUgpfdvss5r6PRhHUz2UgZmRm -/Jpq4/TE54HCt6j+OWeZyFOHWXwgJDPdco3CgXol3la0wNT7bbNBO8M7ZY3J80Fe -7PkceQyyjcHIym2fSiJECUA0IdrovykMg3LXENDUcX/TuMzLqM7DMHzAnG4i4lot -hzh4MdC8MzLbiyNl/GKiJTsnhn8nzjAqFV0qSdwp6iSo6GdYbMoVewa3x/BPFLQD -gYCn3pHgIg== ------END CERTIFICATE----- diff --git a/experimental/packages/exporter-trace-otlp-proto/test/certs/ca.key b/experimental/packages/exporter-trace-otlp-proto/test/certs/ca.key deleted file mode 100644 index 1a770f08f8..0000000000 --- a/experimental/packages/exporter-trace-otlp-proto/test/certs/ca.key +++ /dev/null @@ -1,54 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -Proc-Type: 4,ENCRYPTED -DEK-Info: DES-EDE3-CBC,356304F34E38896B - -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 ------END RSA PRIVATE KEY----- diff --git a/experimental/packages/exporter-trace-otlp-proto/test/certs/client.crt b/experimental/packages/exporter-trace-otlp-proto/test/certs/client.crt deleted file mode 100644 index f02b0ec199..0000000000 --- a/experimental/packages/exporter-trace-otlp-proto/test/certs/client.crt +++ /dev/null @@ -1,31 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFPzCCAycCAQEwDQYJKoZIhvcNAQELBQAwYTELMAkGA1UEBhMCQ0wxCzAJBgNV -BAgMAlJNMRowGAYDVQQHDBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEUm9v -dDENMAsGA1UECwwEVGVzdDELMAkGA1UEAwwCY2EwHhcNMjEwNjA3MjAyNzUzWhcN -MjIwNjA3MjAyNzUzWjBqMQswCQYDVQQGEwJDTDELMAkGA1UECAwCUk0xGjAYBgNV -BAcMEU9wZW5UZWxlbWV0cnlUZXN0MQ0wCwYDVQQKDARUZXN0MQ8wDQYDVQQLDAZD -bGllbnQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAKbADNm8Jv7nlNpSa3A+wAXr5fMPF2Uxum+7Hujt5XabfUiFOSEQ -Qj5Rd3aXxtjrXB102E5oeWJrnUIzRfn0ICRKGudpOgKRL22iwNlIuy7wYz2qa7Vy -jdwsP+xjn4sfWqiDe8ssGrVzQy8/XunoWy+NXROiCE5F51GPMKDrdtVkvvtKGQFe -ThjBP+RrT6dSOn7JCUclwQS/SPlhKopeGygBRtK3fQY5hb0xcIEvzp/qpRqOjyIk -VknJSvaB3Q52Bm8qVvHePkDa3Jg8Lg11G1E2R9zOG8eIQ2A78Cc8RJh5ltDiHHBv -HE4ToC5r0I4pPdwgZYzqI876fNK/4DXmhznUofSwGLx3ST1d0k4Vj+u8u5NvUGrg -9AE47RS0BAqUFQzqqMOjSDXw3rlYEaC0JMy2T36qil8Ti484cIOPY9+rqityAc1y -pbhbATrtf96UEeDQLdA4ygafUXWsutLMG2zSrrZxt2xW8f3H0ifsnICxNHbxi+fe -vAqCek23+iWH+i2tgflHbe7hPwAIByVaNylk/FLV4D4YQbG1hVZ+svex0APXWxLn -T1Z75vYmGhpBQLctyqtq0Ytj0gczEfwaaEXZBcuh7PMepQmBxEj2J71vfp2edowc -LWTWZ0+aBOUh6xTcVeWdyrmEsqrSetTgZxKYt6PNyXP8S93nVuJMCNupAgMBAAEw -DQYJKoZIhvcNAQELBQADggIBADZwq3V+Wm0PNFy02rJmo/fNpcjSmtVYA3BabQCo -KvayqBvm1QfwVzLpji0caZBnztVWf35nAQ0q51jZ/WjNrFg3/g6j8yzwPp7rX5Nv -88VKD2eekjj1wft93K40in2onxzaCchsLo2Jk6wSAt9AkGWM6yTnyvMSSjM3llu1 -m/5OGrUrEGFvjyBUSewBVJalSlMhXMb2PvnT3dzArYDWku+e1rkVSHff6sWrG3AC -D0xDN8JyeLTCfKoPeTsFgVqIz8GyGwenVERj2XrDMncM3o/o1fjT9clHovUVIBVP -SLM7nRB0oqVsau7Syq4xQJ0BZcCXCMD91w+DAHUi85X75C4fpRkaJcPB0oVqEog2 -ZtcyTE/aAsHJGwC7PEpgsQYOpApb2pnfZnhABb8pTBeK/dldrqIW3OJeRCzthh6w -N0p/pxfPXS2Xg5lDlSUoZNWmNObBOpBVevUlMJ+WhK6oFwfkfTbH7z0+o3k70XMZ -mb0R2nXIjZrbU/baGKOUVw9iqQNoRr5DBoInSFuuriTwyHU+O2MVL/UZCZ7TeY4o -5FyGh5+51eWqjt+uyHbJPBeYMoECj4S1PXbMvZSSqI+MR8RdUrEX0F25r60QjLe/ -ETKhZTeqM6GO8DG9WdlaWPDtZ08ZYrKgx4iIN1mu0ytYi0z8QRRvyJ9jBeLa7Lii -/0ud ------END CERTIFICATE----- diff --git a/experimental/packages/exporter-trace-otlp-proto/test/certs/client.csr b/experimental/packages/exporter-trace-otlp-proto/test/certs/client.csr deleted file mode 100644 index 234045e9ea..0000000000 --- a/experimental/packages/exporter-trace-otlp-proto/test/certs/client.csr +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN CERTIFICATE REQUEST----- -MIIErzCCApcCAQAwajELMAkGA1UEBhMCQ0wxCzAJBgNVBAgMAlJNMRowGAYDVQQH -DBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEVGVzdDEPMA0GA1UECwwGQ2xp -ZW50MRIwEAYDVQQDDAlsb2NhbGhvc3QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw -ggIKAoICAQCmwAzZvCb+55TaUmtwPsAF6+XzDxdlMbpvux7o7eV2m31IhTkhEEI+ -UXd2l8bY61wddNhOaHlia51CM0X59CAkShrnaToCkS9tosDZSLsu8GM9qmu1co3c -LD/sY5+LH1qog3vLLBq1c0MvP17p6FsvjV0ToghORedRjzCg63bVZL77ShkBXk4Y -wT/ka0+nUjp+yQlHJcEEv0j5YSqKXhsoAUbSt30GOYW9MXCBL86f6qUajo8iJFZJ -yUr2gd0OdgZvKlbx3j5A2tyYPC4NdRtRNkfczhvHiENgO/AnPESYeZbQ4hxwbxxO -E6Aua9COKT3cIGWM6iPO+nzSv+A15oc51KH0sBi8d0k9XdJOFY/rvLuTb1Bq4PQB -OO0UtAQKlBUM6qjDo0g18N65WBGgtCTMtk9+qopfE4uPOHCDj2Pfq6orcgHNcqW4 -WwE67X/elBHg0C3QOMoGn1F1rLrSzBts0q62cbdsVvH9x9In7JyAsTR28Yvn3rwK -gnpNt/olh/otrYH5R23u4T8ACAclWjcpZPxS1eA+GEGxtYVWfrL3sdAD11sS509W -e+b2JhoaQUC3LcqratGLY9IHMxH8GmhF2QXLoezzHqUJgcRI9ie9b36dnnaMHC1k -1mdPmgTlIesU3FXlncq5hLKq0nrU4GcSmLejzclz/Evd51biTAjbqQIDAQABoAAw -DQYJKoZIhvcNAQELBQADggIBAKZZVROndJS2TZj/oyaEXjg3+vsVxve7JnlGFiQR -4de+ISUnRTJrTmdN3ocaRRjTp/I7VyIfvQf9chDyyjNz90HSvWI9PntzWkFY/Hk6 -eblj5dPftZHSWhpkNVdjI9tZEl6IOi0uyIzskPDQqm3VX36RApbpO1KglGIANpYx -/DKzt3k4go82u51pKA+KnCaUzI6CqNAsHW1nMBc2zunzBf6hfnlBJ+FEKkz/4Hje -5hR0+QLQr1I8jkvUxN3Qjd7mZJfCLuZiinYejStUs3r8KRA3ZIyPV+4tHqcSTC7J -aE20KCQT8iMYBfMZ3BvMZQYbfheTVeMlQSiOqP5iO9IOoAmgAfX+LNsf0tZ6pBgS -03b+tXZ6GL1qDuAZSRMbb8DmUbBoQI2b1LnP0v2fxe8Cuqm2UJLXBZXY6tOytE8j -ReTSX7Y37AVh17zwNPOOCoJtzUWzEmx6nvizlsB7DBTlbQ/tAKcBubCjTSn2A6yL -ibb0Q9Szjuz3q+zugaYDGEFkK8vjiTzpzpj0wH8VH18q16DcJykBGC1OTTgM66FK -8/toW3ocgAjHPJvd8TxWFaT+hM4VxlFST1Y7/oBnQmSVLtv/6pUGRZsV1ByfPBnD -Bvn7Dqcs8mtZOnw6XX7gQ/qmfMzzE5VQnHh4iPvZ7ULvEgVcz6DbXjjGgEhQQcMq -s7bV ------END CERTIFICATE REQUEST----- diff --git a/experimental/packages/exporter-trace-otlp-proto/test/certs/client.key b/experimental/packages/exporter-trace-otlp-proto/test/certs/client.key deleted file mode 100644 index f5ebbdc625..0000000000 --- a/experimental/packages/exporter-trace-otlp-proto/test/certs/client.key +++ /dev/null @@ -1,51 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -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 ------END RSA PRIVATE KEY----- diff --git a/experimental/packages/exporter-trace-otlp-proto/test/certs/regenerate.sh b/experimental/packages/exporter-trace-otlp-proto/test/certs/regenerate.sh deleted file mode 100755 index 728c0cbfb3..0000000000 --- a/experimental/packages/exporter-trace-otlp-proto/test/certs/regenerate.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env sh -# -# Usage: regenerate.sh -# -# regenerate.sh regenerates certificates that are used to test gRPC with TLS -# Make sure you run it in test/certs directory. -# It also serves as a documentation on how existing certificates were generated. - -rm ca.crt ca.key client.crt client.csr client.key server.crt server.csr server.key - -openssl genrsa -des3 -out ca.key 4096 -openssl req -new -x509 -days 365 -key ca.key -out ca.crt -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Root/OU=Test/CN=ca" - -openssl genrsa -des3 -out server.key 4096 -openssl req -new -key server.key -out server.csr -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Test/OU=Server/CN=localhost" -openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt -openssl rsa -in server.key -out server.key - -openssl genrsa -des3 -out client.key 4096 -openssl req -new -key client.key -out client.csr -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Test/OU=Client/CN=localhost" -openssl x509 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt -openssl rsa -in client.key -out client.key diff --git a/experimental/packages/exporter-trace-otlp-proto/test/certs/server.crt b/experimental/packages/exporter-trace-otlp-proto/test/certs/server.crt deleted file mode 100644 index 8e76b7b4a6..0000000000 --- a/experimental/packages/exporter-trace-otlp-proto/test/certs/server.crt +++ /dev/null @@ -1,31 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFPzCCAycCAQEwDQYJKoZIhvcNAQELBQAwYTELMAkGA1UEBhMCQ0wxCzAJBgNV -BAgMAlJNMRowGAYDVQQHDBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEUm9v -dDENMAsGA1UECwwEVGVzdDELMAkGA1UEAwwCY2EwHhcNMjEwNjA3MjAyNzUyWhcN -MjIwNjA3MjAyNzUyWjBqMQswCQYDVQQGEwJDTDELMAkGA1UECAwCUk0xGjAYBgNV -BAcMEU9wZW5UZWxlbWV0cnlUZXN0MQ0wCwYDVQQKDARUZXN0MQ8wDQYDVQQLDAZT -ZXJ2ZXIxEjAQBgNVBAMMCWxvY2FsaG9zdDCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAJqjWwLE9Q+qc8xBMQnif6D8GoxRNGzHQlW0lxGmx0OK+irwBqNC -gdmpjn9gKh4SkJL179W7r2pyc7zZw0wzl0Up/4rHb+Z7H55shgmMaxI0pxLdUUwf -0OsqOQWE4sUE3ku5QIGX0zw1M9RuS6wDphZXXuvhMH8+1sZXsDQE40eAaTGUln9k -l7ZBKpaHgMOp+sTHSpkncKXW4ZhH8F9jSCgHNrNCY8R2PiEI2nB1iIAO4B4AUHYh -9X8O1Ke4eAxG7AEQL/QskErX0Y99oBsd6YzOliVBHnIrLerCGnjpapHI9QqeCUI9 -ToV1AiexBCS0O7yHYAhHifZ3GTBM2wNpK0A7sIWW3fKBGEKlf3K09kTbxMNjRaeZ -r5cryJubFrOPu5cqqGqzA8UGUyCEEE//p+PP2Csfb9bviHXzS74jC3tD0cdJw+rn -xvXd71FuhDMjJBnkJwyCBXzlrtbcHVF5H0DHfuUmVffE9BvfeIGzkX8B2ZxFtxU7 -40WEml1YU06jfEmIlojBDOq0Py5BoPAvqEvFOHCzECszkJrjQbEdGWepeBBliXPa -YcEWR6K13PhmDqm/c99x2hpVl8dyAWK5dX86DVtTsrIBz6rgitAN4kPrl5eWVmZp -gf1VFwFZfEjS4SOV/qxbkJDls/r+tD6JhlC1dNT+XVooVq/DgON+Zkk1AgMBAAEw -DQYJKoZIhvcNAQELBQADggIBAFmiQCJLSCLoH/sUbjdcZo5R96jGaaqodv4Prktv -aJ0ruWxLi3NJumfKlHoQZ2oZHU3Ujw0U3G8jHtU3V9v5ThIOMsUl/MY6qQJCaO0V -4QvEWvFJ3GwyZvnd/xDFMVGcRCmwehQZqyFpqCTJ2KTTRKIoxkj7O0oboWlwNpVQ -7/pyIWRvdB7AE/ldY1KuHn5Oj+nXMacB23zPcJ++IHAcL8AlHjrKmskYlqpswWON -xuwG5ilWpLYeoZ3WP1fxG/2Xoe+036eKEXhRHECb3fofGDXZ0ElPAqpMSH/hS2/l -1Eif+p6vy8np9zqSsFmEq74uRPZo7TrBKa8FYufCkB5VxOV31SaP8yj1G+nHCVa1 -O1h7uI7IQpSLsrEldf1FFkJSy6F6qx17uremRUpEPkfyi1/t3vjWPB7wZHetAho4 -uVDBbo85CsM9eKPr7ynWJzEEbefLKRxdpKp/cUvxMxDxZeEStGrIENc4qNYQN6aR -fc3WrczAoOsLMicSye21n7j0OApz+TnbSgt5+ane+oSschiBmx1LaJLFkDTiKA5w -h+3sws4I8dL0YTdtdacPZgtuLWSjN0xTdhD7idfqatrQA5bTJjoTnEBmdIUVp8X4 -wOo03t3lf+LQDjIHps41Mo/BVSqZbWuXA53rfxQ49JsGfoUfm3L1domYB4tlTWRq -s2Wb ------END CERTIFICATE----- diff --git a/experimental/packages/exporter-trace-otlp-proto/test/certs/server.csr b/experimental/packages/exporter-trace-otlp-proto/test/certs/server.csr deleted file mode 100644 index 45c77ba43f..0000000000 --- a/experimental/packages/exporter-trace-otlp-proto/test/certs/server.csr +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN CERTIFICATE REQUEST----- -MIIErzCCApcCAQAwajELMAkGA1UEBhMCQ0wxCzAJBgNVBAgMAlJNMRowGAYDVQQH -DBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEVGVzdDEPMA0GA1UECwwGU2Vy -dmVyMRIwEAYDVQQDDAlsb2NhbGhvc3QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw -ggIKAoICAQCao1sCxPUPqnPMQTEJ4n+g/BqMUTRsx0JVtJcRpsdDivoq8AajQoHZ -qY5/YCoeEpCS9e/Vu69qcnO82cNMM5dFKf+Kx2/mex+ebIYJjGsSNKcS3VFMH9Dr -KjkFhOLFBN5LuUCBl9M8NTPUbkusA6YWV17r4TB/PtbGV7A0BONHgGkxlJZ/ZJe2 -QSqWh4DDqfrEx0qZJ3Cl1uGYR/BfY0goBzazQmPEdj4hCNpwdYiADuAeAFB2IfV/ -DtSnuHgMRuwBEC/0LJBK19GPfaAbHemMzpYlQR5yKy3qwhp46WqRyPUKnglCPU6F -dQInsQQktDu8h2AIR4n2dxkwTNsDaStAO7CFlt3ygRhCpX9ytPZE28TDY0Wnma+X -K8ibmxazj7uXKqhqswPFBlMghBBP/6fjz9grH2/W74h180u+Iwt7Q9HHScPq58b1 -3e9RboQzIyQZ5CcMggV85a7W3B1ReR9Ax37lJlX3xPQb33iBs5F/AdmcRbcVO+NF -hJpdWFNOo3xJiJaIwQzqtD8uQaDwL6hLxThwsxArM5Ca40GxHRlnqXgQZYlz2mHB -Fkeitdz4Zg6pv3PfcdoaVZfHcgFiuXV/Og1bU7KyAc+q4IrQDeJD65eXllZmaYH9 -VRcBWXxI0uEjlf6sW5CQ5bP6/rQ+iYZQtXTU/l1aKFavw4DjfmZJNQIDAQABoAAw -DQYJKoZIhvcNAQELBQADggIBAI6upPY4cjckMgAGj5NvhP9vWykUUzQZyWHDK052 -ruSo9PAtqCJiYQwXu//8uOjfrDFcOYiET1cpZVPdyjRpfoGMtNje+ap4969UQsj6 -UXvFYgNTSnjBr7nKySH6SamfBABeu5+TjID/jyqFMpepk++GuWRcYPnM1GHObfGm -hRd+3gYbF3m+KA0qrBIoFbHstLkFaLs84Lf8gzDt48ZoN+9QjQKZZtKZvpZXlsag -6FsYcp9o+h/bFIluUINLs8oTfElml3y1G8IMCyNskEdF4Zi65Ml+QaXIk7SLN29Z -NlSZEwtDNJQJB+hOBtIC31cs53l0s7UtdaX6UjyfwswxWsUkvpPJDRs5beC2IUgM -W+PWwszK0BNFvmzGQ4KKWGDLe4YEf5Ss4grIqM4Kf6tpgicuZVyc6wHkB8secJR9 -JftUHBaHazaJFzd+oaQ677cd+Oj74Ht1qGKFmKykPS5GmQfC1CMMj1AkBmh4BnQg -oEdT8xpvhzEBaygJr7v01LViRAAFtM46vW4VkpCMxNSzIymlX8/sszlVChjWpWdE -lMOtlUQxtigbVqYldDx5AmFgGZyKTSi5GaoB9qVLr0tU8c/FodvgUuuzgAZfr3BD -P12EezgueK1oF2z7RCwfgKeEpjGq8wfNzG6AF/AdJGUiHk/yrlcTTLGORH9beBZh -CH0X ------END CERTIFICATE REQUEST----- diff --git a/experimental/packages/exporter-trace-otlp-proto/test/certs/server.key b/experimental/packages/exporter-trace-otlp-proto/test/certs/server.key deleted file mode 100644 index b00ffb89bf..0000000000 --- a/experimental/packages/exporter-trace-otlp-proto/test/certs/server.key +++ /dev/null @@ -1,51 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -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 ------END RSA PRIVATE KEY----- diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/ca.crt b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/ca.crt index 79e43541a2..c194f04954 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/ca.crt +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/ca.crt @@ -1,33 +1,33 @@ -----BEGIN CERTIFICATE----- -MIIFozCCA4ugAwIBAgIUU/1w3O3wzjXdsiAVROAPaSxeAB8wDQYJKoZIhvcNAQEL +MIIFozCCA4ugAwIBAgIUFA6cfBQ2t0ZOpLTRUIE6VN+kGBkwDQYJKoZIhvcNAQEL BQAwYTELMAkGA1UEBhMCQ0wxCzAJBgNVBAgMAlJNMRowGAYDVQQHDBFPcGVuVGVs ZW1ldHJ5VGVzdDENMAsGA1UECgwEUm9vdDENMAsGA1UECwwEVGVzdDELMAkGA1UE -AwwCY2EwHhcNMjIwNjA4MDkwNDU2WhcNMjMwNjA4MDkwNDU2WjBhMQswCQYDVQQG +AwwCY2EwHhcNMjMwNjA4MTY0NDIzWhcNMjQwNjA3MTY0NDIzWjBhMQswCQYDVQQG EwJDTDELMAkGA1UECAwCUk0xGjAYBgNVBAcMEU9wZW5UZWxlbWV0cnlUZXN0MQ0w CwYDVQQKDARSb290MQ0wCwYDVQQLDARUZXN0MQswCQYDVQQDDAJjYTCCAiIwDQYJ -KoZIhvcNAQEBBQADggIPADCCAgoCggIBAL/YJuxNGNIzwoq1alb4Z/lP4+JRS1iI -LyEJ98Hcw2gfW+nYuIGA0XX7vwVRo7hStCEQRWP4KtdzfJkfNeicWUAnoCTKTf9L -DaxvBr8/4x7DF/7TkYIpK3uuAXadl3kz3R6CA1MueOndbEx9XGtdac174Ad5iIAn -P1fm45svFimFwC0uYPwNliWJ/1yVFyS9rDK0DAIbwxRgFl9FErooyPpVAyAetCvF -AL458EspEN98iM3cFx1LrLJmmalm4YLeYPmcRcn0eKmnP1wGnlk4y4DFEsHe+HNM -7L8/mWLDfinugbXsl/Nspkj8AP3+mebCU5QhO59Uj5XemF4gQeA6nv/bPSQ+72EE -CKuxNt2UA6h2ZKI8ahbNSjjZeVLrFxLRJJHqkUjZCvmhAu4MEtHUcrsDwFkNr2ax -LmQeo/meM8AdPlUTzEi/sl6kUgqU8go41sKroaC4ABe0R/gbMhMz6bRwxdfl3Plt -RYkDyQhOOQfQKQunzI8TLdtciV5KXtxI2bPbdrKdtnYMe3m7YtGvCCVaY/TIZoYW -YbWGFDwmBRx529wp1CgsvuG331wrNBFRe3Gkpafrx3ZTh5PAwI3y7YlvIc5NboQX -aNJ50aItL6tUV2EEAF59di0rTd+JusCmlaLEnJfKW2paDASxqhJ0Y+eYjRis3WdT -axEnv88LeiqBAgMBAAGjUzBRMB0GA1UdDgQWBBQ+c5NiMcl412zrMHGGOBLRiGS0 -ajAfBgNVHSMEGDAWgBQ+c5NiMcl412zrMHGGOBLRiGS0ajAPBgNVHRMBAf8EBTAD -AQH/MA0GCSqGSIb3DQEBCwUAA4ICAQB+T9OpaPs5u9dhFbwBaRi596UpjzSNDscP -Oa3fhfEDM7OQ2FcnXBsFkSdpxLCaXRGxuvYe0eoHCWa7Wna/kdkr3xlnXzRNS/6H -D5oDEPZstPSP4G9L8egNhV1yW10zxr5ZErScwkt9SX71jp+rSa4neRkm3GY0UnX8 -qLWHSIetCSN81T4SkH7xf9fltBcTUyphMegQDmIOw3YHi9tFe7MPqjZhzZXg0UWK -Az6E509HTqpxHMPy9LtjvqVJ1ipiaP7pq3uoIX6M6x/TKsszAR/N9OuFk5KHrNis -X5GXVTm8INgiLQxXBuquuD9AoZn0lEdMAnwfTqwTP87LrVKKAMJzS/PiQORwmEoB -1mz34Fy599wGyCB7Td02g73auSEFG/WDJ+2JTVtFCCzvVmVPzJO9nHvPJQ69iNdJ -2y7IkygdwgIQDPWFcTjuzZo333jJT8C+MnKeBhxdzz3QtYZKaktyW4Zo+Z1DWPVu -ao/mMr3AoXDO4quQRrgUCUGwj4TGTFkFvwwAJAR47o1wQOwsQ5pxq3qnDBUbPrqh -xtKUd0mQWtyW8YnGRGyU1EDKZmZ3qR8zUNzyWOp2enlh1Eig1Uz5Iy6YjKd2lkYf -dOnAKZT3LC/bN3IzUD6SJYyDiGYzk8FLTNJIEIy9gn7ugV4SK/eoXV4k2PDfZhD3 -QXqKvEKERA== +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMm3OXVbMd0t2r4x+Pg4fecPeFhRzsg6 +sp7AM4UYlhb0Xkx8ij3q0E47uQM/OSari6qi7p1Un6nzgaXmhosaNkVXaKV4dQ4g +zKqrvC2+nTYU4lwss4Rx32CQxOKXEvN5FPwLTNo903PP3wqJyVt8syN0CDW953m/ +hUdkNaOe/lXmDJ9TmTTGyuPZFSlNlufbaNsBUM5chVFgBYDQIVy0jls8MiYLfao5 +tfprj+yS+lnTDl54dDTVVyAgV22SY65cnUgvO4bu3nzhS/h2Xg4/6/yAuYaRI7GQ +xvlA4pzx+aLaRDTJKiszRrHbQFv4PY+MmkVxvg2Oka4Vc2XMgDM87H0bd+beO8NH +Tf7UHU5AmIr2j2R27LWeELOqanm1HYn2VK182lD7OwQ5u5yqZZuke8bMMPJQEPUm +EwhIgXMVIlGps2+rDUEalPYkQ/BmAcs2g7fywW3RhIWCacggKoee1x9a6oiUM5yi +oDJ6T/C4WUQzIVebdMC25zBBlxcy8fK4Yus/DFTqM/eXPl4NVzbH/yB5tlU2GU0Q +V4tpGL1jsUy4b7r1bzuYVNfnKrarUGFF5TIHuvDo3voJNGb4hWBH/JdttG/9NaWA +HomZ8CUWR+gNEzyPkwq7upkiblKxJV7HKo79Eex+dlWa+Ru1F3kwYE200Y+a/wOF +Rj4+PfMu7WvpAgMBAAGjUzBRMB0GA1UdDgQWBBSwH/Wk2wTc+MEPAEornj1eGKra +0zAfBgNVHSMEGDAWgBSwH/Wk2wTc+MEPAEornj1eGKra0zAPBgNVHRMBAf8EBTAD +AQH/MA0GCSqGSIb3DQEBCwUAA4ICAQCNkzOjjqH3qeQ0wT/Has5PSoWwRwq+B1JT +gg29bgEMD6dVkLdzgEuRVVkMtc/tCZAkA02pc0VN8+lNLW7ckNU/QhMTQYn+FgMR +cG86vR9loTnwUrxR4dS6Nbx1sQ7hpe2GZkWpTNmjh1duHBNHv9nS2JmMkRypqRne +oAI3/th1Qlrtl/zDn02/+P5/av0YJcMOcnRkULHnI62cbXHa2iPd/nENgH2xC6CA +EuYN/bnmOEUPeKljU1IZS6asjGMLdWLmpLs7oOcHGLD3pax+om69Pmn7rps8Z071 +WsJDHFCftItCUrg4KWwpXr77Vq4WAN2tOBdDHEZsbES6a54+7sc1QKOVSWwPuGEd +ShFHhTzoaB0dpwm6kLdYsEkC8JLIjV+Ikg5X3VTDITjUlHoJf2mxCGOzBiCnUr75 +Am0eBqlVcc/2aVk1tcVS9N7reY/KcMaAJvI314O9I94pYdIIm5jw3UmA9Y6HmpN0 +vYtQUF2sS5W82XoFD8bpOq/bx1o2ib2x32dfPQkVgd4sbmpsyN62Fy1HpHwXtXno +xGVaDzGSWj/7RyYyKhNmp3nfQsU0Tt6iVkM+N30vl2heZqEUgXxCG9qHVzWv9z6x +AJzuafjM8tviROpiHkvzsmq7uDhksGooKCi+m+eoEBJrd0J4gjngAi1NYjTsB2GT +4mvPz05UkA== -----END CERTIFICATE----- diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/ca.key b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/ca.key index b991da8086..00ccb04622 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/ca.key +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/ca.key @@ -1,51 +1,51 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.crt b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.crt index a411611e29..fd05c9c40b 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.crt +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.crt @@ -1,31 +1,31 @@ -----BEGIN CERTIFICATE----- MIIFPzCCAycCAQEwDQYJKoZIhvcNAQELBQAwYTELMAkGA1UEBhMCQ0wxCzAJBgNV BAgMAlJNMRowGAYDVQQHDBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEUm9v -dDENMAsGA1UECwwEVGVzdDELMAkGA1UEAwwCY2EwHhcNMjIwNjA4MDkwNDU3WhcN -MjMwNjA4MDkwNDU3WjBqMQswCQYDVQQGEwJDTDELMAkGA1UECAwCUk0xGjAYBgNV +dDENMAsGA1UECwwEVGVzdDELMAkGA1UEAwwCY2EwHhcNMjMwNjA4MTY0NDI2WhcN +MjQwNjA3MTY0NDI2WjBqMQswCQYDVQQGEwJDTDELMAkGA1UECAwCUk0xGjAYBgNV BAcMEU9wZW5UZWxlbWV0cnlUZXN0MQ0wCwYDVQQKDARUZXN0MQ8wDQYDVQQLDAZD bGllbnQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAKmJw3BpO3T+4AIiOwE6FYCge7+R4F300DAHKKsZfSpZWcoCYEs3 -cwhEuoE0cbupK/wPHc4imhL4cI97w0hMeupIGYEH5nhBRlFz++P9lj99Vya4DUhc -VGYo/5VqS6SJGLXIQX1QVN5u4HxX7zCsYLOxhpS/NkG0MtdHQHnhEiCi+zxINFsX -o2ESme5U7w8YDr/iS6+934Ym60euLRqLTvg3mc2KWEhC/x3L8M6hKBqwPaVI8nR1 -nr6uUnk9DvPX6C+yieYfReqhZm9QHrNFM5ZlZF7gqLjCDgW730Gb2vkmRje2a13Z -aqgFI1NwTZHr3b3eyotLjvCRfgEWSEHJ//MC7lFU1DTDiYvD96DoCDcRif1ZfMTC -EkKs3Y5xxUOZyM0KYud2zg3t3aTP0jD6XCxt52BOSUxE7QwdlaO3/BYMDYH1EiT0 -ksHkIqXONJrrDmZdwt/JzODkT5DWUYoCAJxNjsUhimf5P1ew4Fz0aKj389v8dvKr -6jCl5Q/LCqkMlrSANWCVGVBfjfKLc58HtPKB8HLO6YX9nPJ8e1AWo3uDWWBATMDz -TTOaM6YmSzvWfK1lahVKf3bACgr/HN9F7O1hu98FS0nxNQfHFHSpD0oi/aGOJ7mm -iX1wbJjtqfihEA/u/wDNfJuarwqAKrXMn80ROX2a88BTl50rQlAuNEolAgMBAAEw -DQYJKoZIhvcNAQELBQADggIBAHl20Cqv+gbgc79sQgoX28sJpvkoS3jVWRDCgUZm -pd37c6CoG6qntTV0ljtwWup6ji3L8L2ezNGKCoW9iijnL1vxNMU2ZUTZxu7lOtsr -bNvII8MlzT2cHAGq+ReU7K1SNNM5di5NuoURywcya/YIZpX1ZuyXZUn6/pX0xoG+ -KsLxSypUjWc+FQ56Dywg3q9rtfec7ub4VdUe95mYUv1nj/3/F1K8J2ynLLmIEYZk -JmI3+3WHDqED8M0APPwP1Ar94tq7R9GRYzlppa7qwSkzz5tLrkFccXszr5qKwchv -VR2HqKtxmzewp3Vy5RUvv/4xk0AV0+aSk9DV063dlxEpPQGjueddexNJoP+OZzM3 -1vRlXJedNEHqucReW7KhbQdtOppNPg8kHfFa3gqLyfRGCPNLotTcXJT7wyiTbBKa -uW6oKHLEZWJoQuIFnUYoP2r/+gbYj6HqG4LAhSXc70gI+G6zPdYqREQY8agaAAtm -cbPV46cbGnpV02CchTib+cVpRrwgGAFAomr87eX/ccjiXjZEsy0ln/0Du9dIzJOV -pWBha4puk5mwUr2WyGczdXQsyyHKEwPOs3SeOpv1sK5oG5U2iSn/oonuEZ3rUflm -9KprXBjFSp+2L51dCVufawru8oieK0jU10BtpoVakSNS5OcbJTP8NY3S3IKfNfY1 -gxCH +ADCCAgoCggIBANewSXGnuCUsPcOnXPq7SUFTLaSM62x2FnJrzb6rne8KYQ615l6D +d2Nm7MrttHWJUBQS6iDCsEGlF/AWYO5adVuZ+Xf+S+NoWMXPTUuJYq+5VEeAS8PM +IriksA8Npn0hAMNTDrd/eNXQ5W4zLQOqUWnKcuE0P1M7gI3/rfX9/JXkZfUmkQGK +OSva3qJHOcG7Bc7vqbJnkFebIw87e2iHxNnUf5IoJmrUaOMdFiQyHBBoJyTVJ3wp +Ufr6Q2+d0sIyes9PV33DbB8DyKGdOfbLg4YmKsnAvnypC0p2Xw9yAnHlQX27Ngcq +tfzcOXx3QlNPxQDF3oNHzi8GD7ysex1z7PRIsZlLVQLshAdOfA+naktPezj52R8V +BtWaxgVFI7IA5X21reS25t01k/GXNcyIJxW5KSz00b1h8+mpz0n0R3Mz3HuZybAX +g5bnZ+91jOeQmTt08eMXjwAGClxcOqfrssfDvOnUSZjDpzEGDaVuFGVPA9hR/eKN +Bfo659rv45pYhtxoHLz1LJWoZ1uegmKrGF1w16K05k5mpzwH6fzqDzzbF1xyynGX +yfbIqsvsBniuWGmhMjlfT5+l0VG2GgsD7Yijv6SV0YZrVf85iA5q6XdKTBuKYmin +ZEbneEjw9kc9myMeC5ik7wHuksA/BQcja1TPwB4ZRbPEcfi2iFxbtsSzAgMBAAEw +DQYJKoZIhvcNAQELBQADggIBAGdcqEI2l/dKxu9vPuRC2/VRgjgDBN4UJJCY111T +2A7GsGzd7lRhtxB5ZzClF77UiRJG+cvFai00c9+L3wp8qy4sZWY4MaJIWoKRh72Q +sRiH8AskeIl3uvvvaH86bbmpDo7M48Cs/zXZo9VhLzD8ZuHcS1mdjkOcnQzkbSzR +YeM9ActeuJRmsdQ+gSzCTvFqmGutL6xvM8b9a6PwyY5nPxS+eh0/7KNp+EXBvp0U +MWp6mMfq22nAwAQRLbvh5f+a/4GSwg73By6hwnsgb7tpBBJ6ppnKAIALRf7l5JwS +V0LM5Vnpp4J4JjdYyQzk2xkxi+UGIP1IRigbeWc4K3qgg6BUUkfSf4W9oJD4JCa2 +cOsqnKqFxTwXT4b9j9qsPpg7mUQ2+UtU4Lv3h/7sXpbpx0ldb2Hnaq+JqUz0l/7c +54y3+nzke7I4CWKtLJUSamQiyOC3CBVkRX0YEYUBhMXim6dKAfiOEV6K3bwiU+YZ +aDe0lEeLbzAp87DKRTAvDYhRMIFtD3g2qmYrWpQ4gj8vSEorNAfg3kVHMFRGlk9o +jaFduAz0hKk+QG5SgePXMph5ZRXGRq0FnDbF2gZ7WV+jZiIhsYGJ43+RBWHh4HO4 +P4h9eOWQG8AxpDRmOo2KmyPbV0V/eltC4N0oOAmWz+i0qqulnpG4dOzQKpinRBBr +jPt5 -----END CERTIFICATE----- diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.csr b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.csr index ecca8ff676..b783896725 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.csr +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.csr @@ -2,27 +2,27 @@ MIIErzCCApcCAQAwajELMAkGA1UEBhMCQ0wxCzAJBgNVBAgMAlJNMRowGAYDVQQH DBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEVGVzdDEPMA0GA1UECwwGQ2xp ZW50MRIwEAYDVQQDDAlsb2NhbGhvc3QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw -ggIKAoICAQCpicNwaTt0/uACIjsBOhWAoHu/keBd9NAwByirGX0qWVnKAmBLN3MI -RLqBNHG7qSv8Dx3OIpoS+HCPe8NITHrqSBmBB+Z4QUZRc/vj/ZY/fVcmuA1IXFRm -KP+VakukiRi1yEF9UFTebuB8V+8wrGCzsYaUvzZBtDLXR0B54RIgovs8SDRbF6Nh -EpnuVO8PGA6/4kuvvd+GJutHri0ai074N5nNilhIQv8dy/DOoSgasD2lSPJ0dZ6+ -rlJ5PQ7z1+gvsonmH0XqoWZvUB6zRTOWZWRe4Ki4wg4Fu99Bm9r5JkY3tmtd2Wqo -BSNTcE2R69293sqLS47wkX4BFkhByf/zAu5RVNQ0w4mLw/eg6Ag3EYn9WXzEwhJC -rN2OccVDmcjNCmLnds4N7d2kz9Iw+lwsbedgTklMRO0MHZWjt/wWDA2B9RIk9JLB -5CKlzjSa6w5mXcLfyczg5E+Q1lGKAgCcTY7FIYpn+T9XsOBc9Gio9/Pb/Hbyq+ow -peUPywqpDJa0gDVglRlQX43yi3OfB7TygfByzumF/ZzyfHtQFqN7g1lgQEzA800z -mjOmJks71nytZWoVSn92wAoK/xzfReztYbvfBUtJ8TUHxxR0qQ9KIv2hjie5pol9 -cGyY7an4oRAP7v8AzXybmq8KgCq1zJ/NETl9mvPAU5edK0JQLjRKJQIDAQABoAAw -DQYJKoZIhvcNAQELBQADggIBAIFKW8OGRgWjrW1NWNwTCYeXfdl+GPywWjR1EKco -e7h5KJrlMsRLLpzQyBWQ+8LeqSWHv3KZRxkU9haK8DmZ5M8d8S17DeReX1XeFCsY -C6+4XsS+6Ozz+i+zF/3lSiiVLRg/vhWGSNWdwto3ek0a7Oqcf173gATnnEyKmnSy -/t51+34ZdS8QrOKT0+6RGe6Z0ECW3jPzgDeGSUFRd5HZTSSCDPdvvvTsu20yybNm -r7e65BMDUzCXAdCpaiM9hX2Scj1MRxbISqjKPy5wonqhzy72T50ObkaRBZ7Jou9X -gnqRmp5A4NKfX8DjhWJX+ggn4cP2oV8iuvidOM3A71ZeaZJ70iJQnrWswjJzK6LG -VcbI1nuCGcrWukx9jDFULsWLG1vSprFTSP4WoFWhRYWofHvlZ/wu5Ljkhs1q7hKa -QesXKVHdmDD+YPo6JfJwq8GPDYh/hDZTYKBEAeaFjmToILSXkxOTrfGigDx2PDIQ -bRUx8XDSvUgNdh3ZlW38iORsAixvSBki+zTCpNp5zaSdY0BtDB7DK3k7ivU9u93x -a/oHEHQbEDSUQ6Oiuo/wzsRHKsjHCkOI7BlSyxH3+KjooTSJNgKyTb7dm6aPUdvn -aV8wAA7irnnUbV8iogRaC0Ziry15EfkDbg02dVtxWDWdMIVuP7to3tcMv9gUP+Dd -uEEp +ggIKAoICAQDXsElxp7glLD3Dp1z6u0lBUy2kjOtsdhZya82+q53vCmEOteZeg3dj +ZuzK7bR1iVAUEuogwrBBpRfwFmDuWnVbmfl3/kvjaFjFz01LiWKvuVRHgEvDzCK4 +pLAPDaZ9IQDDUw63f3jV0OVuMy0DqlFpynLhND9TO4CN/631/fyV5GX1JpEBijkr +2t6iRznBuwXO76myZ5BXmyMPO3toh8TZ1H+SKCZq1GjjHRYkMhwQaCck1Sd8KVH6 ++kNvndLCMnrPT1d9w2wfA8ihnTn2y4OGJirJwL58qQtKdl8PcgJx5UF9uzYHKrX8 +3Dl8d0JTT8UAxd6DR84vBg+8rHsdc+z0SLGZS1UC7IQHTnwPp2pLT3s4+dkfFQbV +msYFRSOyAOV9ta3ktubdNZPxlzXMiCcVuSks9NG9YfPpqc9J9EdzM9x7mcmwF4OW +52fvdYznkJk7dPHjF48ABgpcXDqn67LHw7zp1EmYw6cxBg2lbhRlTwPYUf3ijQX6 +Oufa7+OaWIbcaBy89SyVqGdbnoJiqxhdcNeitOZOZqc8B+n86g882xdccspxl8n2 +yKrL7AZ4rlhpoTI5X0+fpdFRthoLA+2Io7+kldGGa1X/OYgOaul3SkwbimJop2RG +53hI8PZHPZsjHguYpO8B7pLAPwUHI2tUz8AeGUWzxHH4tohcW7bEswIDAQABoAAw +DQYJKoZIhvcNAQELBQADggIBACboOarzimaArw3lDm6ET5yiU7NxTWtnWwFUOoSh +qS2cvumnCokUlrDyMSSKoHl2i2biUd9uiHuEqlh0yufNgnTsyAXLg0UiBHAv5Tos +Esc5A+JTV5ehy+Zrjpl3Ayh8difS8hJEBjMhH+7rCN3rhpvwkTSaXDCQTBzWPhQ1 +R0EIho/SNOh5mXQKAUWwhtleI0sEJC/PqezGfN+w+URHnzE7YMwg02bvoMxBEror +YVddG4o0nIyd6CPg++K7TBzYGGOf1CUCrI9S1bBn3jcv2mq5YgZMdLEa0HkA9XzU +J/dTSGz5pJbkoaX9IHv8a3uoc+V1jdNWZRmTUYG/cNoAFISoG+uuJLgesF5l+vxx +GUwkE6wj4bNYR/Pqy5963oDmA3ndBzR1wtCZqIsLX3t3A9fLLtIEgeN/XDSvNDBs +YdwBrx2HTatK7QCJ5e+4ACs6Wc2c1nnDviPddpxUgl0pHKcMbT+xNk7bY5fjl5Qr +wzuBNgvQcsZxNNvI8bs13k/eBmKrKOV2WUP1mHRzSoxPX3gzGRSWCe/7QR51oWlB +Qkb6OGVGLCKPnhIKFeZ6G1Qv8q7/hOOlmWGO4bN7s5fjAKEsm3JV1xrsqSKRofRG +JfdPjQD88jewIAk6xGSMKmc4usQN+y/IfU8yZ57MHSHULccA1Wl/VXfgKCAxS5fK +uXtm -----END CERTIFICATE REQUEST----- diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.key b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.key index 298d5296dd..58414d8d59 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.key +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/client.key @@ -1,51 +1,51 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/regenerate.sh b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/regenerate.sh index e1f1af5b54..84637be753 100755 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/regenerate.sh +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/regenerate.sh @@ -8,15 +8,15 @@ rm ca.crt ca.key client.crt client.csr client.key server.crt server.csr server.key -openssl genrsa -nodes -des3 -out ca.key 4096 -openssl req -nodes -new -x509 -days 365 -key ca.key -out ca.crt -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Root/OU=Test/CN=ca" +openssl genrsa -out ca.key 4096 +openssl req -new -x509 -days 365 -key ca.key -out ca.crt -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Root/OU=Test/CN=ca" -openssl genrsa -nodes -des3 -out server.key 4096 -openssl req -nodes -new -key server.key -out server.csr -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Test/OU=Server/CN=localhost" -openssl x509 -req -nodes -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt -openssl rsa -nodes -in server.key -out server.key +openssl genrsa -out server.key 4096 +openssl req -new -key server.key -out server.csr -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Test/OU=Server/CN=localhost" +openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt +openssl rsa -in server.key -out server.key -openssl genrsa -nodes -des3 -out client.key 4096 -openssl req -nodes -new -key client.key -out client.csr -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Test/OU=Client/CN=localhost" -openssl x509 -nodes -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt -openssl rsa -nodes -in client.key -out client.key +openssl genrsa -out client.key 4096 +openssl req -new -key client.key -out client.csr -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Test/OU=Client/CN=localhost" +openssl x509 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt +openssl rsa -in client.key -out client.key diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.crt b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.crt index 7ef4b0f546..ace156a29e 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.crt +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.crt @@ -1,31 +1,31 @@ -----BEGIN CERTIFICATE----- MIIFPzCCAycCAQEwDQYJKoZIhvcNAQELBQAwYTELMAkGA1UEBhMCQ0wxCzAJBgNV BAgMAlJNMRowGAYDVQQHDBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEUm9v -dDENMAsGA1UECwwEVGVzdDELMAkGA1UEAwwCY2EwHhcNMjIwNjA4MDkwNDU2WhcN -MjMwNjA4MDkwNDU2WjBqMQswCQYDVQQGEwJDTDELMAkGA1UECAwCUk0xGjAYBgNV +dDENMAsGA1UECwwEVGVzdDELMAkGA1UEAwwCY2EwHhcNMjMwNjA4MTY0NDI0WhcN +MjQwNjA3MTY0NDI0WjBqMQswCQYDVQQGEwJDTDELMAkGA1UECAwCUk0xGjAYBgNV BAcMEU9wZW5UZWxlbWV0cnlUZXN0MQ0wCwYDVQQKDARUZXN0MQ8wDQYDVQQLDAZT ZXJ2ZXIxEjAQBgNVBAMMCWxvY2FsaG9zdDCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBANatB0qfIsBhphob6vkEB6sLc9QRs+EGX5ZCk3gWrp6j4Hw54I0v -wIP5HQuJtE8fiDR5xC4dWMWjfzmERfXJ8CYeWbD9zHsEsI15uz+lmlX+hTJKTyzW -PNtFN+IbYme+tzNQZBVxrHq6KxRqEDgKlFvI6L0oq0XjYmVt0AqRnoVRW1jqBoTd -KYfK1tNlWLuf6lEzphKzXZM0XTc9vIUxw+FWlogzJUB8boNbkVPrbwONQk6Cz+me -FD2D71dYMGr4MTypZtK8C0pjU32RwD82FNU2C7DHgSUncptfWKWjT3Xgu4r3vYDk -PDoHtAZaTs6S5YNDjoDUEC+hn42blv00LKgIiSfD22np3Bt/gzyd9XslIilk1dzP -u3uTPi9r/4m0pMeXurMOTlhjM5UTG87AugpQI4DXYen/UF7few26sENZMoOLNfqS -k+2rkvpkzDjRQSCHqNgRhefL79rO9S2Dlv3yadBn/h0Gra13WR4HfrxXZyuI9Fcf -jtXNo59qeeSzo8bQUYZRv2ANguWg1DU1EHR2cFyS0lyYdaCdgaNvuesKsAsxoAGH -lbm32fOSe8kcgVCte/ceMdvTFh9RK9Cq+iaQdub4xo2JYJveRKt/9I8yDpo95md9 -pt1vmuL/ArEG8pD7ykx7GOU7tefhnjOKpQt8FWih1S2KhXbul6xwc+rFAgMBAAEw -DQYJKoZIhvcNAQELBQADggIBAAAWLWmJViBn92u3A5oKA4960vHnTpN8FcJG3Has -gFteNsuU54ByuEjrXAgbqFmjJC36LD0s6S5vIsu4WQdB0n2t0c7TME26Ki9eMSaw -ikykg6a2Q906RvXkATHE+TuibYNeMOUkxVuPdiVRK2P6wvde2TrXgBYK7GVptJtb -Ih7CYdyJAUdqbDZO8NcTUybKgy4qj0dxseptU2Kcr6wc+Q6xRtmxeHS1Rvu9xEbY -VsTGNfdqns+15pNowfYchukIk+ibR5tdK8tpHkUcb+Uugb4pYYl3QwyRySrAtKhV -1ZXCfe3Al72GpcSc759XHzhmT4Ev1vjVn7BBE7seYRFzP0PwaWCw4ytKKr+lT2RM -5tbxiy9hiQgHXPIG1Hm+wJvk+T1eSxlWKPdxXB7Prz8WWiPg6A07bOiLFUGqaUSx -M8jCgZurNW3e0zdrY/ZBesw5GwgXsJqiosDtn15GIk+aGMGQXyM1Tk/Hel/cowLi -RSIZGTNnziFwmZ4wJizzqfZ+NCfAPQ/Jgr/RJnjCL4X2aVK5noS/ZR/4Ibxkw1IE -YyNagnqSXjjQG3CoB1gCkAJWZ37SXj9RE+P7CpI3x55vi/zEkdjQpL9NYzT9O7ON -6lMX+2B3ISCcCRp9NqFIndaXYQctA0qIsdKOMsh62F3jM4tZkeYwefLSTdzhQiaa -YocN +ADCCAgoCggIBAKtVnxPqCZheCuqePfLknxc+6MeyYkf494U8WWeZo+yirYV3zY70 +1KhKZ+M+XDqhrBXc7IQHZd2KKxYBGnrv9yvbllmtZRdnk3hnn8B4eNh3w5gCRKPo +GSTeiNN7WEIRwYZNkr8AWgeoYT1jN8SAMn5+qSqKSd62Z1BPJNi0eQmTVxgLZqzx +92AWBZQl9rOme+1zV6ohKcR22Of3yUl6476L1rYYcX0DXp0QFkhK0TFKNt3cHxqq +WTRuMTnyCj7woWRtwclWTdO2buAkJe8cIde6rcbaUAX9jTdkbAgYAB9MctEKqasO +MqFyMzweS3sG9oUnmd0/GRL9as314xTZuz8fFnfj5l0BN6thVMmvEEYU3rTLQRKf +AKWzI2VrU+5wIxN8O/4ZbriQ5ae13p6TDYilSZ6kMxSzfOM/A00hlA+DKMS0o8g8 +V9Y3wcl3aSSjoZbH7XS/uDEueodudz9V3HxCk7Wc41SpunQPFprmPDWtjiW0jcMD +3kHV819r2F8aidKN94Q+3KI+N/mwn1QdDVsquiCq0wbR54i3CoAkQbi5YeUdEZD6 +/mNLs/BABgzSbANw7Fn1Pd9gY/JIsRhMskcFRqXe9tOqKk8/GxMv/r9MgJn6HHlk +iDa3OZsoOtFbjjOPFoy/Xq9YMi4ODnJkEhe7BSsVl/wkDAUdg7Zfu8XVAgMBAAEw +DQYJKoZIhvcNAQELBQADggIBAEft+R+qGyKffiiJpYWLPn0C9SmpjZiWPK331n57 +Nk3GA8u9gRgD1gyqqLr19r86nLArF8jcB/nChPB1A9ysW3xyTNvpOlAwYvEjxWR2 +tJr8wiDucAd+SnQud6e+5PI5e8LnyxYoeoZ+i6hMbhNV70NthoINHMAQx+5NeSpa +Q0GJ4d0XA3W/8Pu6oK7O0QkVovVut73Koz5DqsF91zFJp7SjVKaCnnjRKyU8wbg5 +uTO0TRheEtx3AeEXNps5Yhq0daLTnmnuFeyaJHm2F1QuBmma1TTwIF3HDclv2wLn +Jp+MWG9yoN9oEJLqS/AvDu1BltPSuvnYgLZr7cl0os+TEqpzxroa4ziE98dEiy0D +K4YQ59UTz6C8Ps0uX0hcs3jsvZOkBWptusvJBfZN59xLJAVmF2igkgIBKoiXvXmv +fXDx0hsOBg2IPe2O8lLHlFKlJZlMc+prH1iD0Xv6HefSP4L1eZHU37zjrRf/GiNX +r6GoEhJR2pKEoZQT81xpYp/w+qjzWcTl/mLD6FEePRzV92h3ubjRWBB36UhLtnEG +LJgp7yq3aGu7rg9rnuz8J6DG8DStE9rNuRjkV1O2C/PvR97XmVoIqbrMlxX9MUQJ +XxLm5dqBz7EVuhDJSyp4zCkDYsOj1y/SLL2O3cTyQQeZg6jlqripNqWnviAdTWe5 +JIPp -----END CERTIFICATE----- diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.csr b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.csr index 8485c97579..b421a7a60c 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.csr +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.csr @@ -2,27 +2,27 @@ MIIErzCCApcCAQAwajELMAkGA1UEBhMCQ0wxCzAJBgNVBAgMAlJNMRowGAYDVQQH DBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEVGVzdDEPMA0GA1UECwwGU2Vy dmVyMRIwEAYDVQQDDAlsb2NhbGhvc3QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw -ggIKAoICAQDWrQdKnyLAYaYaG+r5BAerC3PUEbPhBl+WQpN4Fq6eo+B8OeCNL8CD -+R0LibRPH4g0ecQuHVjFo385hEX1yfAmHlmw/cx7BLCNebs/pZpV/oUySk8s1jzb -RTfiG2JnvrczUGQVcax6uisUahA4CpRbyOi9KKtF42JlbdAKkZ6FUVtY6gaE3SmH -ytbTZVi7n+pRM6YSs12TNF03PbyFMcPhVpaIMyVAfG6DW5FT628DjUJOgs/pnhQ9 -g+9XWDBq+DE8qWbSvAtKY1N9kcA/NhTVNguwx4ElJ3KbX1ilo0914LuK972A5Dw6 -B7QGWk7OkuWDQ46A1BAvoZ+Nm5b9NCyoCIknw9tp6dwbf4M8nfV7JSIpZNXcz7t7 -kz4va/+JtKTHl7qzDk5YYzOVExvOwLoKUCOA12Hp/1Be33sNurBDWTKDizX6kpPt -q5L6ZMw40UEgh6jYEYXny+/azvUtg5b98mnQZ/4dBq2td1keB368V2criPRXH47V -zaOfannks6PG0FGGUb9gDYLloNQ1NRB0dnBcktJcmHWgnYGjb7nrCrALMaABh5W5 -t9nzknvJHIFQrXv3HjHb0xYfUSvQqvomkHbm+MaNiWCb3kSrf/SPMg6aPeZnfabd -b5ri/wKxBvKQ+8pMexjlO7Xn4Z4ziqULfBVoodUtioV27pescHPqxQIDAQABoAAw -DQYJKoZIhvcNAQELBQADggIBAC8troDBxaOg6dnv4xXJqiQxYJxU5YDc6lTb2xp5 -+OsvW3FYs7B3NKXfro4AkkaU5vyQQlSR3VIu5DroUvlm34uhWnkejbl6p7wv+uIu -hRuu1eYT3TdA+iv2JIB8OtBhAPfxYSBcga0hLugcqVydX5WvQTkZuIbi1MsHeq4L -hKMxG5ZlnMNsBo4rNo+UOfbdzkCqtxeuE0s+WcYeDQdeAJC37JlDbefO9hC+tnwT -3hi7UEhCo+pk/ttTy4uUOaph2nU7ZyYyhd8ZTSWBoHmMKb8YewMv21vRiB2gmh1F -1n1PdS+ehbbtleTfucHay41Po/pLrfYJ1p5rDgKYu6kNq7YNoL020G/1ei9DBA5v -RJs2qtL1KEhh5ZzPbtrGN6tkdoZ6miSfE5gcvGqm7hMd86Pzxid4mftQMjrEjj94 -OzVbu+EIPE7//8irP8YcvMvPeVZrl3Uu8eS1h43DkNyjVv5kqDqOsHKnKuJbVgkF -O6GPjcKqrKVqTEttC+0eXasnt0EwnEBEsSLtsKp3Lr5aq2Ez6TtyQbBOunoTOTd/ -h1c6DXcL7zmLMOnPzuVjHYoH3sNmGRD9Xils61e0xfr3dHYZFBt9bu/3wFwAkKrW -NH7kde+GKwMc3UyllVMTXUXq3VTxd93kYtuYZpcC5HmUEvZcakmL91z8eyFWJ3u8 -+WGc +ggIKAoICAQCrVZ8T6gmYXgrqnj3y5J8XPujHsmJH+PeFPFlnmaPsoq2Fd82O9NSo +SmfjPlw6oawV3OyEB2XdiisWARp67/cr25ZZrWUXZ5N4Z5/AeHjYd8OYAkSj6Bkk +3ojTe1hCEcGGTZK/AFoHqGE9YzfEgDJ+fqkqiknetmdQTyTYtHkJk1cYC2as8fdg +FgWUJfazpnvtc1eqISnEdtjn98lJeuO+i9a2GHF9A16dEBZIStExSjbd3B8aqlk0 +bjE58go+8KFkbcHJVk3Ttm7gJCXvHCHXuq3G2lAF/Y03ZGwIGAAfTHLRCqmrDjKh +cjM8Hkt7BvaFJ5ndPxkS/WrN9eMU2bs/HxZ34+ZdATerYVTJrxBGFN60y0ESnwCl +syNla1PucCMTfDv+GW64kOWntd6ekw2IpUmepDMUs3zjPwNNIZQPgyjEtKPIPFfW +N8HJd2kko6GWx+10v7gxLnqHbnc/Vdx8QpO1nONUqbp0Dxaa5jw1rY4ltI3DA95B +1fNfa9hfGonSjfeEPtyiPjf5sJ9UHQ1bKrogqtMG0eeItwqAJEG4uWHlHRGQ+v5j +S7PwQAYM0mwDcOxZ9T3fYGPySLEYTLJHBUal3vbTqipPPxsTL/6/TICZ+hx5ZIg2 +tzmbKDrRW44zjxaMv16vWDIuDg5yZBIXuwUrFZf8JAwFHYO2X7vF1QIDAQABoAAw +DQYJKoZIhvcNAQELBQADggIBAJCMEdjKyklN2izvOhd7+JMXm/ClW3hjowbu+csO +JNz8NqUNLrKJjFyV3yAUGWuyp3z982S+XGfcm3nU7n9AJOjT4DLJId6opOtA6CSp +KTRgVZmeViL6O6UqBLTacz5DDjwMQXxszc+QpU53cMT6Y7VMvIOhQ6AmIvz1v71u +5gaYmlbfXVlmiPHEKRsQG9/DNIPe1mHP0p+S9qYKmCx7Jlpee7IstW/hNjt7alDn +uFaxFjxmCCSdWaMRyMW/qNRks9q3VdhJPan+amFeXceoEG7SOKiFiOc8A7DribSm +iKc2YlOw14xqc+cJutiKBvoBMri2eh1JgCbPT4ufVGFpbDkfYwAJxWx44Eg0X90j +gJUw8IRuHQZkEYss6jwFMFcOqjpe+AqrssOl4GZmu5gcaiUnj8PkSVZLTOrLilPg +sSDjzmoHdv4QcBppTrjj6PyR5Xd6DeGasWkMPvIPjiPN3mOhfxJ3C87atMqOhTLx +em7vFOBegAW6g40J9JD1XMoI/zFnTU8NevZQgCyx/Tq1XNRmUeMA6y/qpfTNKi/f +F7v/7nDWoxBgpOw3J0E9R+6rxD7Cjb2RWZEf20ZGdNBlPE+UG9c9b3HC3IHiwRHb +L9Fi0251w+fkaPX8dojQKErCEknqJ1SCP5S5F5g1QCQby22Y7LQsggMMf94s/wQX +4uMh -----END CERTIFICATE REQUEST----- diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.key b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.key index 2dcd9159c5..80b9cea7bf 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.key +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/certs/server.key @@ -1,51 +1,51 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/experimental/packages/otlp-exporter-base/test/certs/ca.crt b/experimental/packages/otlp-exporter-base/test/certs/ca.crt deleted file mode 100644 index 529ce2f7b8..0000000000 --- a/experimental/packages/otlp-exporter-base/test/certs/ca.crt +++ /dev/null @@ -1,33 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFozCCA4ugAwIBAgIUa6OxgyEYxNjpjac0jTAKn+IkGTYwDQYJKoZIhvcNAQEL -BQAwYTELMAkGA1UEBhMCQ0wxCzAJBgNVBAgMAlJNMRowGAYDVQQHDBFPcGVuVGVs -ZW1ldHJ5VGVzdDENMAsGA1UECgwEUm9vdDENMAsGA1UECwwEVGVzdDELMAkGA1UE -AwwCY2EwHhcNMjEwNjA3MjAxMDExWhcNMjIwNjA3MjAxMDExWjBhMQswCQYDVQQG -EwJDTDELMAkGA1UECAwCUk0xGjAYBgNVBAcMEU9wZW5UZWxlbWV0cnlUZXN0MQ0w -CwYDVQQKDARSb290MQ0wCwYDVQQLDARUZXN0MQswCQYDVQQDDAJjYTCCAiIwDQYJ -KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMbVyp3NCtDwKpGbV+MCML63o+vGVhpd -Dlt3ncpcwz0FMK6UJDXzTe4joKCaezWto3Bmhb28Lezcf8AdzmTdnoENAaqUX2SE -giGVoeaJ/M1hW1IiOffa9zIMkt6cwf8MUUMl5kTRMdAqmpikNqN0rqNpaGuqBYf9 -kvDy3hw+dj19hKEeEXI2zt/HYDOBHYgpalWiOS8qwj0zSfxAUeura+eXKMlx0JOY -h5N25OUH1oLt1flhyuHnwRThKbvyMnL36Ey+G7uCFH0hQSGO0BLhg1LPDWG1PmTn -KzsvqaIgDF/tMCXykvaWcsSxrhvsNeOFFmmkKp1ECVOFgFYsGuK8lJlEvm6Owrvz -4X69L0phCJtaCCaSUFdybqx+G2ZKLZNqTtnMw/3YECp37KyrRd75Gy1UrU031+XC -Fpt4pHw+3isjAOf1bj32F2Ed7aaqVqM2A7m8AgA0m22J/f+jBzmv6UJN/kvfFXzC -0lbX6b1fGj49vU9WEO/o+F3qaH/c50HPf45AB2d4pWbDl5alXZei58ZyEemBndlv -XcGPtVR9S/5rphlX1vAIOT7ePWgUVkAi5fB/rLVGyC1FwA0zYvdyj9CVigJNs29G -yftsvMynF8TL7/qCIGNz72qtW/Pn227OI4WamvYhX6fJwJirXwTEQhAfKXljocI/ -Liqxx15Sfs+3AgMBAAGjUzBRMB0GA1UdDgQWBBSMocah0cTqX4owoPL4+zV1pe5F -QzAfBgNVHSMEGDAWgBSMocah0cTqX4owoPL4+zV1pe5FQzAPBgNVHRMBAf8EBTAD -AQH/MA0GCSqGSIb3DQEBCwUAA4ICAQCIpnaYSMXT+nrdOgw2zKHTk47wANGf6nfK -76VwsQfzVkJm/tzEgq+saEznGRW1ttdQfXHJM3NCfneVhjXDkihrHsxiL4S+5OMq -cusp2tKupGXlxwOt7tsAhH5j4SQLyEUiWMmm/Wvwtx2HWuNO8LZGhoAcUrT7r94f -vqr3tYyb3D06/rBRj2QcybYGJHsQAULEQvmWJvCveh5gqxkRjDJlwmqV/lIarPCt -diKbsZqHJMNaRMbgsxV8hVSvD6RKtBG+K8hpuHF2ZKfzb7Yt1IDPtUGCL811ykzh -2PjumjaQ2JCP6vtYAhTS1r/+cbOi+4v5JzF+kxHxFc9vK/gzBT88174S2MQaqwhF -jQiS3YfElLXkr37E9gxMKLDanbFsxPPiXO96s0RSjNK2mzSbz/gfmsjGqxKNq3t1 -IwAfjePmmx4FJ1O/FwOA5RWE+KRhzNucktjxz39oZrnqtPeTqHnAivNOyK3XB68v -5HRjP79TrzIbLCauyJD/qM5UtCRXW2La1rsH8lIBtcxUcZOkvDnE6Po44D5hH2kQ -swRqF9Vy7PL9MWJPTgn4+WFLNoBe+nMY82y7xstRv7c2ctXpAxSWxIXgBN+B9nXo -3Lqpgg0UkjTiCp13Mejq/7DYAw+/Ou8bxWs3BuCQvFcG2+FBMWh0dL1FxVq3BPyq -oveTgr1sfQ== ------END CERTIFICATE----- diff --git a/experimental/packages/otlp-exporter-base/test/certs/ca.key b/experimental/packages/otlp-exporter-base/test/certs/ca.key deleted file mode 100644 index df94d44c38..0000000000 --- a/experimental/packages/otlp-exporter-base/test/certs/ca.key +++ /dev/null @@ -1,54 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -Proc-Type: 4,ENCRYPTED -DEK-Info: DES-EDE3-CBC,7EE0C188F59416E9 - -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 ------END RSA PRIVATE KEY----- diff --git a/experimental/packages/otlp-exporter-base/test/certs/client.crt b/experimental/packages/otlp-exporter-base/test/certs/client.crt deleted file mode 100644 index b1519dede6..0000000000 --- a/experimental/packages/otlp-exporter-base/test/certs/client.crt +++ /dev/null @@ -1,31 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFPzCCAycCAQEwDQYJKoZIhvcNAQELBQAwYTELMAkGA1UEBhMCQ0wxCzAJBgNV -BAgMAlJNMRowGAYDVQQHDBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEUm9v -dDENMAsGA1UECwwEVGVzdDELMAkGA1UEAwwCY2EwHhcNMjEwNjA3MjAxMDExWhcN -MjIwNjA3MjAxMDExWjBqMQswCQYDVQQGEwJDTDELMAkGA1UECAwCUk0xGjAYBgNV -BAcMEU9wZW5UZWxlbWV0cnlUZXN0MQ0wCwYDVQQKDARUZXN0MQ8wDQYDVQQLDAZD -bGllbnQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAN1or7F+548RpVIgdrzYmuWgKMfWsO5FhgqpGp+xuoVgMMTlZM3i -yiarMnAE0G6ZVMwqCeXkiUGL9QLatJ1S/HO2sWLUkWaPD7X7O4k1yGtl6UsRcr4K -+YBUbucxfrCQjaWKlBc1GMBrDyY/u/rl0CIYu3GtegniN6HG6rBXC2e98DVctQ3M -r/RXB9DWqMC2KW2X92X+FyWqTfGjv8wjRnhQdDNXPA/PCembzhfCL8VlmG65rDiz -VQxiTotTOCmaxULdF307jorMTLIHZVV2OnAA/udeDcxITnKcksLiRKKAiHUXMIPq -RGxNtLX1sdBD/FoQ28sr8o6Ko7qb3uaA4CZhp2I4RR925oZISyObzY3QxrlafN4g -hFnWkTFJY0K+43cxta8K3gAnQXxN/BANDEydS1YM9adqYbt09wctSUjMqJHGZWnn -IVOged+/DEIW9EmyLSPM1DC1s1owOrgwBXzHRRNXuUFjZPPrMC8TkBexNjsapLjr -nE/xa5cB80DIntkM8ysfLU6p39NihM2hmeyI2YS8osheElXEL3dz5vM8Wzv28qgF -PvGpdYz6cAibE9qJ+oT416dVc+9G6i1fcBl7X8w+KUGVFsRnftovwjoSToGlckqg -dv1Tsf6FBDpSMro3BbGogpDhkSxy//eWvzejjHBemz06Kh2DGkKhnT9rAgMBAAEw -DQYJKoZIhvcNAQELBQADggIBAIGWBdgWOoqGIy0fuSbqQgjgrhDrPGBV15TfvB4T -84xfk9YZxdRKkG3J65uLffTnnotZs6gqLx6MfosR6zQYhSK27fTXpJJdRaI55kgT -2e/xNCe867Bz/3nW+vwWIGTuFn6hFq9f8HNLZMpHu3DClj7AB7ga6qp1uFWIn5oq -xC4da8/JTR6FY2srIktyH5Vr64FnhtX9cLSa/U7df7asZjRUm6ndPS49X01G6BJQ -vH0RO1caCCbpDVqPwJnAf3BXD1MkKsNe4hULt25XCxSsyM7v0Ru4KcSSGxiYHowQ -+VzRdJVYe8ytpcg1eVlWutOlDXGLaeGNQ0/u5OEQ8iqZvp1/qiq/LQIRZlxa+ZlL -vsVAgOxolRpm6W01cYCCWX8utsrMq8lKjMIal0SZhj6oP/rwtH8UVRhqhrQyAn6y -K6IYGLGvXGacJYuHpcAFQ0f8LUCCs0kxN/zZOZ98atF0MvgUWKZFNgrvcX5se8iV -kS/7UHH4Ie9ZO6Hv9IvnElOfZY9dnFPNxcbWnA7U0kLa5CWh8CD55ScAGHrvcz3O -JXPW0SHb2xZmXDTfgmS4vMI5PYDyipSCoUDClA3BPr/dkAVssj8SMikJZWhVvDrK -IcKRHpkmrzLJbatxeDNlCtLRSAXeuTheLqqSA2HACReNYkQLPd5V7mY6uRw3d3o6 -3rKe ------END CERTIFICATE----- diff --git a/experimental/packages/otlp-exporter-base/test/certs/client.csr b/experimental/packages/otlp-exporter-base/test/certs/client.csr deleted file mode 100644 index 2d99fab566..0000000000 --- a/experimental/packages/otlp-exporter-base/test/certs/client.csr +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN CERTIFICATE REQUEST----- -MIIErzCCApcCAQAwajELMAkGA1UEBhMCQ0wxCzAJBgNVBAgMAlJNMRowGAYDVQQH -DBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEVGVzdDEPMA0GA1UECwwGQ2xp -ZW50MRIwEAYDVQQDDAlsb2NhbGhvc3QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw -ggIKAoICAQDdaK+xfuePEaVSIHa82JrloCjH1rDuRYYKqRqfsbqFYDDE5WTN4som -qzJwBNBumVTMKgnl5IlBi/UC2rSdUvxztrFi1JFmjw+1+zuJNchrZelLEXK+CvmA -VG7nMX6wkI2lipQXNRjAaw8mP7v65dAiGLtxrXoJ4jehxuqwVwtnvfA1XLUNzK/0 -VwfQ1qjAtiltl/dl/hclqk3xo7/MI0Z4UHQzVzwPzwnpm84Xwi/FZZhuuaw4s1UM -Yk6LUzgpmsVC3Rd9O46KzEyyB2VVdjpwAP7nXg3MSE5ynJLC4kSigIh1FzCD6kRs -TbS19bHQQ/xaENvLK/KOiqO6m97mgOAmYadiOEUfduaGSEsjm82N0Ma5WnzeIIRZ -1pExSWNCvuN3MbWvCt4AJ0F8TfwQDQxMnUtWDPWnamG7dPcHLUlIzKiRxmVp5yFT -oHnfvwxCFvRJsi0jzNQwtbNaMDq4MAV8x0UTV7lBY2Tz6zAvE5AXsTY7GqS465xP -8WuXAfNAyJ7ZDPMrHy1Oqd/TYoTNoZnsiNmEvKLIXhJVxC93c+bzPFs79vKoBT7x -qXWM+nAImxPaifqE+NenVXPvRuotX3AZe1/MPilBlRbEZ37aL8I6Ek6BpXJKoHb9 -U7H+hQQ6UjK6NwWxqIKQ4ZEscv/3lr83o4xwXps9OiodgxpCoZ0/awIDAQABoAAw -DQYJKoZIhvcNAQELBQADggIBAE8wUkuBEsxe96X3U2vjWCfD/hB30cF69UZ2NlR6 -2UIZbjvewIy43ozr2uaCk1+US21NaaXKinNrZ0VElWKLVXWkZidfuoGEz0gY+XDF -qyjlfaYlCTexPUSh14nbpLsT0DXvHa5KI3Kq2ly/sciVB78SlH3sRzmJt/qkoaIN -f6PI2Unoqf8vJ1xvQr9z/ODc06MoX5g+ezM2vShZ+P7773bSVL6bIEVl/9yFFAyu -OHL+uwUdBYBk3NS4xKyXWXhG58AyNvGYWIO0tWTYmIVVuL2JDrNGY4QdIDQBoj+4 -hppmh0mYbvDCXolKjUVFC0wHRACaRCN1WLIKP8heE0vZsvXq/7ssuP3DtCDHRadk -pHn+6CpEwbT4bCNsW4bsci9v82npoY6YJKW8mokR+1dhcari6g1W2R80VCuWmB6E -ntJFZpILjPrCf8QCjs9Act0l87xx3+5K0LpFHQiKHygTbOrzE8++Lds+6yC/uzp/ -QtdLC20/iQMJ5GaOxSCwzBe1dUhC+ABF1/ZN1p9wgKFTFQMR+B/bR5q9l/d2AyMY -1pTorKIX7yg14OHehzL0s1tVq3QEtNl14c84hLh0m4Rf7nmRRcKDP8l6EwDujJVD -nR8cHM8ajiyC9tjjdyiQ32NLgzo+6OGiugctUxfw/ZLp7Qr0mT07IvPLcqBiRAC6 -E+9O ------END CERTIFICATE REQUEST----- diff --git a/experimental/packages/otlp-exporter-base/test/certs/client.key b/experimental/packages/otlp-exporter-base/test/certs/client.key deleted file mode 100644 index 00f82cfeeb..0000000000 --- a/experimental/packages/otlp-exporter-base/test/certs/client.key +++ /dev/null @@ -1,51 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -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 ------END RSA PRIVATE KEY----- diff --git a/experimental/packages/otlp-exporter-base/test/certs/regenerate.sh b/experimental/packages/otlp-exporter-base/test/certs/regenerate.sh deleted file mode 100755 index 9e2e972c99..0000000000 --- a/experimental/packages/otlp-exporter-base/test/certs/regenerate.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env sh -# -# Usage: regenerate.sh -# -# regenerate.sh regenerates certificates that are used to test gRPC with TLS -# Make sure you run it in test/certs directory. -# It also serves as a documentation on how existing certificates were generated. - -rm ca.crt ca.key client.crt client.csr client.key server.crt server.csr server.key - -openssl genrsa -des3 -out ca.key 4096 -openssl req -new -x509 -days 365 -sha256 -key ca.key -out ca.crt -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Root/OU=Test/CN=ca" - -openssl genrsa -des3 -out server.key 4096 -openssl req -new -sha256 -key server.key -out server.csr -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Test/OU=Server/CN=localhost" -openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt -openssl rsa -in server.key -out server.key - -openssl genrsa -des3 -out client.key 4096 -openssl req -new -sha256 -key client.key -out client.csr -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Test/OU=Client/CN=localhost" -openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt -openssl rsa -in client.key -out client.key diff --git a/experimental/packages/otlp-exporter-base/test/certs/server.crt b/experimental/packages/otlp-exporter-base/test/certs/server.crt deleted file mode 100644 index 55f0c3dbb9..0000000000 --- a/experimental/packages/otlp-exporter-base/test/certs/server.crt +++ /dev/null @@ -1,31 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFPzCCAycCAQEwDQYJKoZIhvcNAQELBQAwYTELMAkGA1UEBhMCQ0wxCzAJBgNV -BAgMAlJNMRowGAYDVQQHDBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEUm9v -dDENMAsGA1UECwwEVGVzdDELMAkGA1UEAwwCY2EwHhcNMjEwNjA3MjAxMDExWhcN -MjIwNjA3MjAxMDExWjBqMQswCQYDVQQGEwJDTDELMAkGA1UECAwCUk0xGjAYBgNV -BAcMEU9wZW5UZWxlbWV0cnlUZXN0MQ0wCwYDVQQKDARUZXN0MQ8wDQYDVQQLDAZT -ZXJ2ZXIxEjAQBgNVBAMMCWxvY2FsaG9zdDCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBALaskMk0FpoAZ8eHpOiNYIW2yOeizGsvJ7PsNZujbUFQ/f7/AYTZ -CBQ9Hc8lKz+3YHklZnTsAJW6QLCBKSgsrjPAXA25zBFQazUuKb+QrjoIqeaq8D8w -6iHL7zdHsplbWZjYrnPjLWPqoc1ga6H0p8NsH7eC6hFXJRp2ZilyZXUR4jvyMc3D -2q/MXoI0VvQ3tI/QaLrU2iaN0DZBsyJhr4B/jNzOYzGAuVieEyV52wFnOsUlJDNp -jsT/v1/Q8JrjOXSb+ko/74VlSLTCauoPSsiUb1ra0Tbu3Z0E6b7vlFKeZaOxwUyW -eLi6YT6Z9ZTOEJuiJan/7STprK1NrqL+OPneK1A0Plr10hY76SptAu2fTqgGOFGo -QkxTosnsppiSkCVaDiLKCVr4DQzBm/0CLoSgXk4fJNhiNrIT+b35gX8Xmm3hUq+U -GanZyXhJYfojBUuhPJFAUKpUUjSsiRU8Dj8R7nIZT+cUWvslYmrOG4ZjCnpIXnoo -pAjFlaZkv62/tEGwJmyBkGk2lYzn9Ka1G/aO92IjfzypUlSKXCntTxLD6BzWNF7/ -qjt19XTOWPjChQHQcYXmlTSNUvUQ09HMaRIUe5MCexlWYleX6lVG6XtMwOb06w5O -ynVuMHjiAGfkjLrUkGQqSxHrS2v/af1J7F+CIClNgI+q2pz5dYWYMaCFAgMBAAEw -DQYJKoZIhvcNAQELBQADggIBAAaVSzyc6jFBLORHUcxkP8DheyTl8m2sWIb+x732 -DkM2qp8oEAKwhJ/AWLFGCqsjyW5ep8fgpTHQgT7braEEUKKnGUbIqUPy1IBz+lSf -LoT7qD92eiMGXOrzcHWnV02PRM3mF5cmLMNu5aMUoIArG5dO1LTSxl5/ybx2l4Zy -qXcT7wJtrA6F0EmuXRzwFBIVZdxlLbI+S4SsvfKXernGatB3Mjotivvqi2SeOd8p -1tuqEyQaaIJ1s6u7vyTcAHDd0OIxSqpTu3SwaHAXhkzMi7+TRGgfQUuljkNKkKfj -N02siSNjIuKzE/DSW6yV0OFL/FCNPyvzs8CKTMwfyrrvA0UAspkFCWZFXFlA+uLs -0at4SmPecOsc+O8ATon9nUyXh06anBwtp03aXX6Mr/7UIRRPHF70BY7MDV4OvvQt -PD0osFo0uEHubflCnPBUdMrQN9KbELVJeV7G0Xj2fHTAVoEnCmSpow+LB1ehWGbR -M3U8q9wlpXi4Awhr19kRcSdE/JzI7eu9MqjsazfUdAtCcgg4dHixOre8oXgauhZ5 -jMOv9lUI6Glf61xt8mamicohSf9CFyH5PgZqRM0aSacdJ7jH6EitABOx21ZqwiBp -o4W37lV55oy+N0r7yxaNy/mSUUcjsQo6kGw/4cMpYTSEzRMtfwYPOS1DeTl9zArE -7TBI ------END CERTIFICATE----- diff --git a/experimental/packages/otlp-exporter-base/test/certs/server.csr b/experimental/packages/otlp-exporter-base/test/certs/server.csr deleted file mode 100644 index 0c5e9291bf..0000000000 --- a/experimental/packages/otlp-exporter-base/test/certs/server.csr +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN CERTIFICATE REQUEST----- -MIIErzCCApcCAQAwajELMAkGA1UEBhMCQ0wxCzAJBgNVBAgMAlJNMRowGAYDVQQH -DBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEVGVzdDEPMA0GA1UECwwGU2Vy -dmVyMRIwEAYDVQQDDAlsb2NhbGhvc3QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw -ggIKAoICAQC2rJDJNBaaAGfHh6TojWCFtsjnosxrLyez7DWbo21BUP3+/wGE2QgU -PR3PJSs/t2B5JWZ07ACVukCwgSkoLK4zwFwNucwRUGs1Lim/kK46CKnmqvA/MOoh -y+83R7KZW1mY2K5z4y1j6qHNYGuh9KfDbB+3guoRVyUadmYpcmV1EeI78jHNw9qv -zF6CNFb0N7SP0Gi61NomjdA2QbMiYa+Af4zczmMxgLlYnhMledsBZzrFJSQzaY7E -/79f0PCa4zl0m/pKP++FZUi0wmrqD0rIlG9a2tE27t2dBOm+75RSnmWjscFMlni4 -umE+mfWUzhCboiWp/+0k6aytTa6i/jj53itQND5a9dIWO+kqbQLtn06oBjhRqEJM -U6LJ7KaYkpAlWg4iygla+A0MwZv9Ai6EoF5OHyTYYjayE/m9+YF/F5pt4VKvlBmp -2cl4SWH6IwVLoTyRQFCqVFI0rIkVPA4/Ee5yGU/nFFr7JWJqzhuGYwp6SF56KKQI -xZWmZL+tv7RBsCZsgZBpNpWM5/SmtRv2jvdiI388qVJUilwp7U8Sw+gc1jRe/6o7 -dfV0zlj4woUB0HGF5pU0jVL1ENPRzGkSFHuTAnsZVmJXl+pVRul7TMDm9OsOTsp1 -bjB44gBn5Iy61JBkKksR60tr/2n9SexfgiApTYCPqtqc+XWFmDGghQIDAQABoAAw -DQYJKoZIhvcNAQELBQADggIBAIJ7KMLIZbomgrup1rrizG3aU4bREy6HfHZ9Ylcr -Lo1vdL5/UZH3AHVhoccb0ua3qXDtsc8pDQAXIMzBu8BjfpbwCvrgz7YXsNsBU9zV -el8p394QB20WoPHebYDBUXPiq3JhLfjzOXBS9Ke3MBl1jDamOFmZW8dg8EpowIXv -ODFP8sErFb7Bmq7x2d0EJyX7+HydBiRWRa376oXcZ/VLl/CnNzpJeACFWPI4d0lg -P5nsadtdLyAwXF6cRQx3pOdN0sS5b3llXX3jVwGzm+kNjVTDWJiJmqWfwIF15pPr -bypoUmPpeQ4I9F+oFm9+Ff776PemqBD7NSJdG0iHRndm3oa6o2bTpn9ZypCO1Skv -UWr3ATduFylA3/YeoN6dQwP4Ol+3WJ2UbXzTbmEfoSEzmwMI5MTidOuA62A0afyN -VM0SjHaLvfD1mK4w+3BKdUivYh4TWbcLU7s1SeDwYiEP6DFZHLBPHDcNLz77d6nQ -zgvOgXqeNfk9uI5NdYBMbtdHW/mwGgEfPlDkKbY2KveOJjLlTM1EduGFsYHAXyhI -SiYozrbFeS5ts4f1EZ5tVT73KBv97MiQkKhBoVXtF1CHPUP1LTkGxtH2uoDiVfDi -r1OkRzoO05pHAh2o+4gujThsc0d3T5mmoeSySs56lgqDmC4blXNOS0kBZ4+I2u7A -C2YH ------END CERTIFICATE REQUEST----- diff --git a/experimental/packages/otlp-exporter-base/test/certs/server.key b/experimental/packages/otlp-exporter-base/test/certs/server.key deleted file mode 100644 index 9fa740554a..0000000000 --- a/experimental/packages/otlp-exporter-base/test/certs/server.key +++ /dev/null @@ -1,51 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -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 ------END RSA PRIVATE KEY----- diff --git a/experimental/packages/otlp-grpc-exporter-base/test/certs/ca.crt b/experimental/packages/otlp-grpc-exporter-base/test/certs/ca.crt index b6db7d0dd2..c194f04954 100644 --- a/experimental/packages/otlp-grpc-exporter-base/test/certs/ca.crt +++ b/experimental/packages/otlp-grpc-exporter-base/test/certs/ca.crt @@ -1,33 +1,33 @@ -----BEGIN CERTIFICATE----- -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 -T0JDHso8+A== +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMm3OXVbMd0t2r4x+Pg4fecPeFhRzsg6 +sp7AM4UYlhb0Xkx8ij3q0E47uQM/OSari6qi7p1Un6nzgaXmhosaNkVXaKV4dQ4g +zKqrvC2+nTYU4lwss4Rx32CQxOKXEvN5FPwLTNo903PP3wqJyVt8syN0CDW953m/ +hUdkNaOe/lXmDJ9TmTTGyuPZFSlNlufbaNsBUM5chVFgBYDQIVy0jls8MiYLfao5 +tfprj+yS+lnTDl54dDTVVyAgV22SY65cnUgvO4bu3nzhS/h2Xg4/6/yAuYaRI7GQ +xvlA4pzx+aLaRDTJKiszRrHbQFv4PY+MmkVxvg2Oka4Vc2XMgDM87H0bd+beO8NH +Tf7UHU5AmIr2j2R27LWeELOqanm1HYn2VK182lD7OwQ5u5yqZZuke8bMMPJQEPUm +EwhIgXMVIlGps2+rDUEalPYkQ/BmAcs2g7fywW3RhIWCacggKoee1x9a6oiUM5yi +oDJ6T/C4WUQzIVebdMC25zBBlxcy8fK4Yus/DFTqM/eXPl4NVzbH/yB5tlU2GU0Q +V4tpGL1jsUy4b7r1bzuYVNfnKrarUGFF5TIHuvDo3voJNGb4hWBH/JdttG/9NaWA +HomZ8CUWR+gNEzyPkwq7upkiblKxJV7HKo79Eex+dlWa+Ru1F3kwYE200Y+a/wOF +Rj4+PfMu7WvpAgMBAAGjUzBRMB0GA1UdDgQWBBSwH/Wk2wTc+MEPAEornj1eGKra +0zAfBgNVHSMEGDAWgBSwH/Wk2wTc+MEPAEornj1eGKra0zAPBgNVHRMBAf8EBTAD +AQH/MA0GCSqGSIb3DQEBCwUAA4ICAQCNkzOjjqH3qeQ0wT/Has5PSoWwRwq+B1JT +gg29bgEMD6dVkLdzgEuRVVkMtc/tCZAkA02pc0VN8+lNLW7ckNU/QhMTQYn+FgMR +cG86vR9loTnwUrxR4dS6Nbx1sQ7hpe2GZkWpTNmjh1duHBNHv9nS2JmMkRypqRne +oAI3/th1Qlrtl/zDn02/+P5/av0YJcMOcnRkULHnI62cbXHa2iPd/nENgH2xC6CA +EuYN/bnmOEUPeKljU1IZS6asjGMLdWLmpLs7oOcHGLD3pax+om69Pmn7rps8Z071 +WsJDHFCftItCUrg4KWwpXr77Vq4WAN2tOBdDHEZsbES6a54+7sc1QKOVSWwPuGEd +ShFHhTzoaB0dpwm6kLdYsEkC8JLIjV+Ikg5X3VTDITjUlHoJf2mxCGOzBiCnUr75 +Am0eBqlVcc/2aVk1tcVS9N7reY/KcMaAJvI314O9I94pYdIIm5jw3UmA9Y6HmpN0 +vYtQUF2sS5W82XoFD8bpOq/bx1o2ib2x32dfPQkVgd4sbmpsyN62Fy1HpHwXtXno +xGVaDzGSWj/7RyYyKhNmp3nfQsU0Tt6iVkM+N30vl2heZqEUgXxCG9qHVzWv9z6x +AJzuafjM8tviROpiHkvzsmq7uDhksGooKCi+m+eoEBJrd0J4gjngAi1NYjTsB2GT +4mvPz05UkA== -----END CERTIFICATE----- diff --git a/experimental/packages/otlp-grpc-exporter-base/test/certs/ca.key b/experimental/packages/otlp-grpc-exporter-base/test/certs/ca.key index 3a12f603d4..00ccb04622 100644 --- a/experimental/packages/otlp-grpc-exporter-base/test/certs/ca.key +++ b/experimental/packages/otlp-grpc-exporter-base/test/certs/ca.key @@ -1,54 +1,51 @@ -----BEGIN RSA PRIVATE KEY----- -Proc-Type: 4,ENCRYPTED -DEK-Info: DES-EDE3-CBC,723F7ADBF5E86DF0 - -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 -----END RSA PRIVATE KEY----- diff --git a/experimental/packages/otlp-grpc-exporter-base/test/certs/client.crt b/experimental/packages/otlp-grpc-exporter-base/test/certs/client.crt index cbd324625f..fd05c9c40b 100644 --- a/experimental/packages/otlp-grpc-exporter-base/test/certs/client.crt +++ b/experimental/packages/otlp-grpc-exporter-base/test/certs/client.crt @@ -1,31 +1,31 @@ -----BEGIN CERTIFICATE----- MIIFPzCCAycCAQEwDQYJKoZIhvcNAQELBQAwYTELMAkGA1UEBhMCQ0wxCzAJBgNV BAgMAlJNMRowGAYDVQQHDBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEUm9v -dDENMAsGA1UECwwEVGVzdDELMAkGA1UEAwwCY2EwHhcNMjEwNjA3MjAyNzMzWhcN -MjIwNjA3MjAyNzMzWjBqMQswCQYDVQQGEwJDTDELMAkGA1UECAwCUk0xGjAYBgNV +dDENMAsGA1UECwwEVGVzdDELMAkGA1UEAwwCY2EwHhcNMjMwNjA4MTY0NDI2WhcN +MjQwNjA3MTY0NDI2WjBqMQswCQYDVQQGEwJDTDELMAkGA1UECAwCUk0xGjAYBgNV BAcMEU9wZW5UZWxlbWV0cnlUZXN0MQ0wCwYDVQQKDARUZXN0MQ8wDQYDVQQLDAZD bGllbnQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAMBc1F9O8OcCu8xspnN1MNwccUZCx+lsh1F50T5D0INmxz3rXxin -TkM+QjFsJ09iF8MmgouI+yxmTayMlW733dUc/XQ9cV9GRwWVlF1RnoYp7mXVwMnz -o80s7CGWc+geliqeLUgzGIoq4bGTp1eEeB2KGJ/w8E2bTLs5a6B0pHhQuVXZ+Pq0 -E0Uzl2wPc+WwjeZyGRU4PbWzX6bN+R05Pfxq8PXhJ6Jnt0j8pNoF/XU6mOIYQyQb -THEKR8qB2SXo5+D1JOlRiofWtK4wsRH/wNm7j7tq75UezhOeqp6YU6MwGnea1loa -65K+DDG/rFyvxSlDS/53gjyKGSqYod8pevvytKjtUmw6xX5i5nFnf+wrKmMH6EDe -Hm63LReBv/CqCErYt4kV3NkdIuHmv7ZIdRfhDPdK8Q/kzAlRTX25wK/xWn5CqpSK -KCUwukEzccV266KU4sG63/4byv6zE62z8472P6u+OGSZlDxznL0BBg9iiHFYiopw -shBfFcszPCSOs1SO8XZH+6J5ypKBzBP7aAsyJflPHWGTUBACY9ZCU/7iwIF7YFPb -a/temVMLkg75oYGVow0Dlp55jQvrzMr7IaSBCxFUJEKf5u6GSNotJWmQdHYta5SH -Kj/rryFQV5qp9mBfia5DWnjHijFZTo+c/KLrgkmzfgbT4qVpnuxKahXNAgMBAAEw -DQYJKoZIhvcNAQELBQADggIBAA2nZTbaa9z/LTNJijf0clu4ULPG4RrqHgQ1q/Wh -NbrNemrxTJ+ZAwCR1gTv4oZe9NBd+V1pDXDQBid8mBTbttVrQCHdjgHFpQKNeyiK -nd2OI4awYiTvGbgDCMHAW/yf+XKCocuSkyNRnmfe8PihFD9wx6+kl6XCJuIkF3Vw -MGKEIrW2WLAARtBZeKV2yhtuVhkNm2TNFPfNrNtk2gdGO8TkX0orOllAENopR+GV -uffuLiIi9KWj9XP9T+6bdZbG2eMJX8wUNIIma54/3XN3RMi2iV9ZxW+F0j6d9ryo -j8pJJfpiW4qh6Eqi6HyvrzgdndKhkVYiIwbX5S60mqL+KcaPghX2goWexMW94QlQ -Re3/IvOAzGpu5fLn//y2tAaO9hDUsyoIJtXcFJKLbfM+mK/Bac2niEyBpr9Rzqur -N43Ga2pOsM4P/4YcAO6tvs5htvh2ala6UDXeEZV9Z1Bc5bOHAWNp13BfWE01iLNC -5rIu0XuVo1aa0FeVdJL6IpVeEwnkzDDt/9LKgp2K8w71VAtUSOg23AEYJu+GFr4D -y+0bahUiNETrFaiCsXQYa9HHFrqhA/PGOGpyq6GrBkJxWpzuL3rQQicpHzVIQEmb -3aCcIBdA2RQwQk7Z3YI2EuFMkHAElCXXZBulvxY6kl1n+2UwWRlocDMYZdkzI3+X -Tw8x +ADCCAgoCggIBANewSXGnuCUsPcOnXPq7SUFTLaSM62x2FnJrzb6rne8KYQ615l6D +d2Nm7MrttHWJUBQS6iDCsEGlF/AWYO5adVuZ+Xf+S+NoWMXPTUuJYq+5VEeAS8PM +IriksA8Npn0hAMNTDrd/eNXQ5W4zLQOqUWnKcuE0P1M7gI3/rfX9/JXkZfUmkQGK +OSva3qJHOcG7Bc7vqbJnkFebIw87e2iHxNnUf5IoJmrUaOMdFiQyHBBoJyTVJ3wp +Ufr6Q2+d0sIyes9PV33DbB8DyKGdOfbLg4YmKsnAvnypC0p2Xw9yAnHlQX27Ngcq +tfzcOXx3QlNPxQDF3oNHzi8GD7ysex1z7PRIsZlLVQLshAdOfA+naktPezj52R8V +BtWaxgVFI7IA5X21reS25t01k/GXNcyIJxW5KSz00b1h8+mpz0n0R3Mz3HuZybAX +g5bnZ+91jOeQmTt08eMXjwAGClxcOqfrssfDvOnUSZjDpzEGDaVuFGVPA9hR/eKN +Bfo659rv45pYhtxoHLz1LJWoZ1uegmKrGF1w16K05k5mpzwH6fzqDzzbF1xyynGX +yfbIqsvsBniuWGmhMjlfT5+l0VG2GgsD7Yijv6SV0YZrVf85iA5q6XdKTBuKYmin +ZEbneEjw9kc9myMeC5ik7wHuksA/BQcja1TPwB4ZRbPEcfi2iFxbtsSzAgMBAAEw +DQYJKoZIhvcNAQELBQADggIBAGdcqEI2l/dKxu9vPuRC2/VRgjgDBN4UJJCY111T +2A7GsGzd7lRhtxB5ZzClF77UiRJG+cvFai00c9+L3wp8qy4sZWY4MaJIWoKRh72Q +sRiH8AskeIl3uvvvaH86bbmpDo7M48Cs/zXZo9VhLzD8ZuHcS1mdjkOcnQzkbSzR +YeM9ActeuJRmsdQ+gSzCTvFqmGutL6xvM8b9a6PwyY5nPxS+eh0/7KNp+EXBvp0U +MWp6mMfq22nAwAQRLbvh5f+a/4GSwg73By6hwnsgb7tpBBJ6ppnKAIALRf7l5JwS +V0LM5Vnpp4J4JjdYyQzk2xkxi+UGIP1IRigbeWc4K3qgg6BUUkfSf4W9oJD4JCa2 +cOsqnKqFxTwXT4b9j9qsPpg7mUQ2+UtU4Lv3h/7sXpbpx0ldb2Hnaq+JqUz0l/7c +54y3+nzke7I4CWKtLJUSamQiyOC3CBVkRX0YEYUBhMXim6dKAfiOEV6K3bwiU+YZ +aDe0lEeLbzAp87DKRTAvDYhRMIFtD3g2qmYrWpQ4gj8vSEorNAfg3kVHMFRGlk9o +jaFduAz0hKk+QG5SgePXMph5ZRXGRq0FnDbF2gZ7WV+jZiIhsYGJ43+RBWHh4HO4 +P4h9eOWQG8AxpDRmOo2KmyPbV0V/eltC4N0oOAmWz+i0qqulnpG4dOzQKpinRBBr +jPt5 -----END CERTIFICATE----- diff --git a/experimental/packages/otlp-grpc-exporter-base/test/certs/client.csr b/experimental/packages/otlp-grpc-exporter-base/test/certs/client.csr index e5de7b1912..b783896725 100644 --- a/experimental/packages/otlp-grpc-exporter-base/test/certs/client.csr +++ b/experimental/packages/otlp-grpc-exporter-base/test/certs/client.csr @@ -2,27 +2,27 @@ MIIErzCCApcCAQAwajELMAkGA1UEBhMCQ0wxCzAJBgNVBAgMAlJNMRowGAYDVQQH DBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEVGVzdDEPMA0GA1UECwwGQ2xp ZW50MRIwEAYDVQQDDAlsb2NhbGhvc3QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw -ggIKAoICAQDAXNRfTvDnArvMbKZzdTDcHHFGQsfpbIdRedE+Q9CDZsc9618Yp05D -PkIxbCdPYhfDJoKLiPssZk2sjJVu993VHP10PXFfRkcFlZRdUZ6GKe5l1cDJ86PN -LOwhlnPoHpYqni1IMxiKKuGxk6dXhHgdihif8PBNm0y7OWugdKR4ULlV2fj6tBNF -M5dsD3PlsI3mchkVOD21s1+mzfkdOT38avD14SeiZ7dI/KTaBf11OpjiGEMkG0xx -CkfKgdkl6Ofg9STpUYqH1rSuMLER/8DZu4+7au+VHs4TnqqemFOjMBp3mtZaGuuS -vgwxv6xcr8UpQ0v+d4I8ihkqmKHfKXr78rSo7VJsOsV+YuZxZ3/sKypjB+hA3h5u -ty0Xgb/wqghK2LeJFdzZHSLh5r+2SHUX4Qz3SvEP5MwJUU19ucCv8Vp+QqqUiigl -MLpBM3HFduuilOLBut/+G8r+sxOts/OO9j+rvjhkmZQ8c5y9AQYPYohxWIqKcLIQ -XxXLMzwkjrNUjvF2R/uiecqSgcwT+2gLMiX5Tx1hk1AQAmPWQlP+4sCBe2BT22v7 -XplTC5IO+aGBlaMNA5aeeY0L68zK+yGkgQsRVCRCn+buhkjaLSVpkHR2LWuUhyo/ -668hUFeaqfZgX4muQ1p4x4oxWU6PnPyi64JJs34G0+KlaZ7sSmoVzQIDAQABoAAw -DQYJKoZIhvcNAQELBQADggIBAAtbvw2rrtnO5EeOF1Z+mJc9o3036liNbmCQTaC7 -Pf2yqo3Zk44L80R99sX5rDoq79MKEr//ED5C410EiCvzX42w330p7dasuoYRAwLw -YB0UwWnrKhm4SU20SC8zpnCUBL6K9lmXF2PJtkoMgFAnB8tIEc+DAr4hBIqh45vD -VgZ06GHH94/G6tIW3qNvi1mmvUYV0i6D3xBhcNAu6R/zopEYM3png24ZE2IlzZCX -x8hbYuMAqeQXSHQM9sKhXeb60GT8ns7d3P17S/TfpkTI7zRMkPhzsHC/Vp97xN/n -ojEEBY3MZJBPZj/q/buDfbp5x6H7/YxYdOKQKaGVWECGabISBcsg8NxaY++GKc+u -10C8O9KILRCJKGh8ze7chXx5n5+BPEoVVwhLn58eV7sOODvb4kZySUJHvFBb0ZM/ -7626K3443e5ZRkGXydvDIwPZgoiJ3L1L9+olL1cJ5rsRE6L5k6vPuJOeZITm4au2 -pE0THMHx/RjCMA1Lb/0BiDqbBHSh8hh+mHU7YXTq1Fxi2dSas0wAxcTBRs8TULsV -o57TmJqF+byiqwQvugyN7tndvWg9c+LDJHqitA5QC1GDXEi/bdjd7YeHRiL+ciVM -ZXXU9GT1O78O+84wbIDebahn8cifdGa7Kft7GftS3pCIyAjU9+eMXyT1JG3nssLr -4/ht +ggIKAoICAQDXsElxp7glLD3Dp1z6u0lBUy2kjOtsdhZya82+q53vCmEOteZeg3dj +ZuzK7bR1iVAUEuogwrBBpRfwFmDuWnVbmfl3/kvjaFjFz01LiWKvuVRHgEvDzCK4 +pLAPDaZ9IQDDUw63f3jV0OVuMy0DqlFpynLhND9TO4CN/631/fyV5GX1JpEBijkr +2t6iRznBuwXO76myZ5BXmyMPO3toh8TZ1H+SKCZq1GjjHRYkMhwQaCck1Sd8KVH6 ++kNvndLCMnrPT1d9w2wfA8ihnTn2y4OGJirJwL58qQtKdl8PcgJx5UF9uzYHKrX8 +3Dl8d0JTT8UAxd6DR84vBg+8rHsdc+z0SLGZS1UC7IQHTnwPp2pLT3s4+dkfFQbV +msYFRSOyAOV9ta3ktubdNZPxlzXMiCcVuSks9NG9YfPpqc9J9EdzM9x7mcmwF4OW +52fvdYznkJk7dPHjF48ABgpcXDqn67LHw7zp1EmYw6cxBg2lbhRlTwPYUf3ijQX6 +Oufa7+OaWIbcaBy89SyVqGdbnoJiqxhdcNeitOZOZqc8B+n86g882xdccspxl8n2 +yKrL7AZ4rlhpoTI5X0+fpdFRthoLA+2Io7+kldGGa1X/OYgOaul3SkwbimJop2RG +53hI8PZHPZsjHguYpO8B7pLAPwUHI2tUz8AeGUWzxHH4tohcW7bEswIDAQABoAAw +DQYJKoZIhvcNAQELBQADggIBACboOarzimaArw3lDm6ET5yiU7NxTWtnWwFUOoSh +qS2cvumnCokUlrDyMSSKoHl2i2biUd9uiHuEqlh0yufNgnTsyAXLg0UiBHAv5Tos +Esc5A+JTV5ehy+Zrjpl3Ayh8difS8hJEBjMhH+7rCN3rhpvwkTSaXDCQTBzWPhQ1 +R0EIho/SNOh5mXQKAUWwhtleI0sEJC/PqezGfN+w+URHnzE7YMwg02bvoMxBEror +YVddG4o0nIyd6CPg++K7TBzYGGOf1CUCrI9S1bBn3jcv2mq5YgZMdLEa0HkA9XzU +J/dTSGz5pJbkoaX9IHv8a3uoc+V1jdNWZRmTUYG/cNoAFISoG+uuJLgesF5l+vxx +GUwkE6wj4bNYR/Pqy5963oDmA3ndBzR1wtCZqIsLX3t3A9fLLtIEgeN/XDSvNDBs +YdwBrx2HTatK7QCJ5e+4ACs6Wc2c1nnDviPddpxUgl0pHKcMbT+xNk7bY5fjl5Qr +wzuBNgvQcsZxNNvI8bs13k/eBmKrKOV2WUP1mHRzSoxPX3gzGRSWCe/7QR51oWlB +Qkb6OGVGLCKPnhIKFeZ6G1Qv8q7/hOOlmWGO4bN7s5fjAKEsm3JV1xrsqSKRofRG +JfdPjQD88jewIAk6xGSMKmc4usQN+y/IfU8yZ57MHSHULccA1Wl/VXfgKCAxS5fK +uXtm -----END CERTIFICATE REQUEST----- diff --git a/experimental/packages/otlp-grpc-exporter-base/test/certs/client.key b/experimental/packages/otlp-grpc-exporter-base/test/certs/client.key index 9219944ca4..58414d8d59 100644 --- a/experimental/packages/otlp-grpc-exporter-base/test/certs/client.key +++ b/experimental/packages/otlp-grpc-exporter-base/test/certs/client.key @@ -1,51 +1,51 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/experimental/packages/otlp-grpc-exporter-base/test/certs/regenerate.sh b/experimental/packages/otlp-grpc-exporter-base/test/certs/regenerate.sh index e1f1af5b54..84637be753 100755 --- a/experimental/packages/otlp-grpc-exporter-base/test/certs/regenerate.sh +++ b/experimental/packages/otlp-grpc-exporter-base/test/certs/regenerate.sh @@ -8,15 +8,15 @@ rm ca.crt ca.key client.crt client.csr client.key server.crt server.csr server.key -openssl genrsa -nodes -des3 -out ca.key 4096 -openssl req -nodes -new -x509 -days 365 -key ca.key -out ca.crt -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Root/OU=Test/CN=ca" +openssl genrsa -out ca.key 4096 +openssl req -new -x509 -days 365 -key ca.key -out ca.crt -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Root/OU=Test/CN=ca" -openssl genrsa -nodes -des3 -out server.key 4096 -openssl req -nodes -new -key server.key -out server.csr -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Test/OU=Server/CN=localhost" -openssl x509 -req -nodes -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt -openssl rsa -nodes -in server.key -out server.key +openssl genrsa -out server.key 4096 +openssl req -new -key server.key -out server.csr -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Test/OU=Server/CN=localhost" +openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt +openssl rsa -in server.key -out server.key -openssl genrsa -nodes -des3 -out client.key 4096 -openssl req -nodes -new -key client.key -out client.csr -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Test/OU=Client/CN=localhost" -openssl x509 -nodes -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt -openssl rsa -nodes -in client.key -out client.key +openssl genrsa -out client.key 4096 +openssl req -new -key client.key -out client.csr -subj "/C=CL/ST=RM/L=OpenTelemetryTest/O=Test/OU=Client/CN=localhost" +openssl x509 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt +openssl rsa -in client.key -out client.key diff --git a/experimental/packages/otlp-grpc-exporter-base/test/certs/server.crt b/experimental/packages/otlp-grpc-exporter-base/test/certs/server.crt index 09094e4526..ace156a29e 100644 --- a/experimental/packages/otlp-grpc-exporter-base/test/certs/server.crt +++ b/experimental/packages/otlp-grpc-exporter-base/test/certs/server.crt @@ -1,31 +1,31 @@ -----BEGIN CERTIFICATE----- MIIFPzCCAycCAQEwDQYJKoZIhvcNAQELBQAwYTELMAkGA1UEBhMCQ0wxCzAJBgNV BAgMAlJNMRowGAYDVQQHDBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEUm9v -dDENMAsGA1UECwwEVGVzdDELMAkGA1UEAwwCY2EwHhcNMjEwNjA3MjAyNzMyWhcN -MjIwNjA3MjAyNzMyWjBqMQswCQYDVQQGEwJDTDELMAkGA1UECAwCUk0xGjAYBgNV +dDENMAsGA1UECwwEVGVzdDELMAkGA1UEAwwCY2EwHhcNMjMwNjA4MTY0NDI0WhcN +MjQwNjA3MTY0NDI0WjBqMQswCQYDVQQGEwJDTDELMAkGA1UECAwCUk0xGjAYBgNV BAcMEU9wZW5UZWxlbWV0cnlUZXN0MQ0wCwYDVQQKDARUZXN0MQ8wDQYDVQQLDAZT ZXJ2ZXIxEjAQBgNVBAMMCWxvY2FsaG9zdDCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBANaRv7jpdEedG0CQ/LoJEXuE32eZXzar45u05wq5CzqnUlYdHyx8 -cgCJJ44KThFXiOzgELFiiwjxmPo1CDLqGp8vEDHntvhxLhw/mFy/aa7YrCv1/1eX -0+cEvNUyoikjHKXECI7sV1ZVMrimGKXQNqRfub1JbJ+IzL+kp6MRtdA6GzxsU0Dg -Wwf7IQxtCQ4Tw3onJ3P3NZAkgz6zCVhOVkR7DuqGulzTQDa//mWwKQJie5wscURj -vLsJ0prS16Tc/5yXijwRjwx8ZEoDrJ5KszoMQwKIoLN7wHBo2r8/8RQsOGTVMJ1I -9kOkH3s9clswxCrnpzdNNmyIwTWaQ6CqpQpp0unGimF3VokanHhOhcpkWfzDArmU -jL4PIFBQBJvHIEKbuhZ4pUYL/6RtgEg2f3xVPe8s0hn/DzwJTgXqEX+TY7WvIKmH -0sMGZ9TZzWe9W64LM2/427+6pfgQOAJDHNLSYpmaa14R+630IMocdY6sj2hoZ9TK -8Ridqn+q+5kIpG/pP7bbzbzsotdzjNb6h7GBlsuyycoOfiP+C6Zs/yUZAAZEsSm0 -e4dXFCccurkXRL7cZJHC/agQhkkvcEP1TpmaygjbucME+h6H0G0St8yzBQwEJdkn -wNmfEhIdjmiX6u/fvPO6VJ5HBxgA5gONJlk+4EbiZTfl2rYauBFhloHzAgMBAAEw -DQYJKoZIhvcNAQELBQADggIBACIJLqVoH8oh8W0/0IF3sxH8LFsGByi0CUPo1JEB -1t3+FqyC7eFC9rDW12LfOKgiZl273OBpCHT8bx3OkoGZ4KwZsbsznyJv/X5OVYFH -5y5Lo8QNGWWMzXoK2JLlYJXZHMaJr5tTFOGqoIvC9C8ibLSAbL0MhtB9L5SvSxAm -mUOKZ/en7ZBepRex/s/rfCWYYTw2Ah02HZc8+H/J/aF3tvChI7Gx0anaSQxS48Ru -3eCaiaBEfoSGQvN9Jc+k1QJgJ4vZ8yi7ndl8pwW97YXo8Sg305ritqpnon+vemsV -rYoqHN+WV2/D0nqNu1AX8PldDvUYTfBtLfS7T5goN7abEIJCaTNmzU2ji0SqI9vJ -j4t9E9KcCKMshbciDrD7RPEPk3vogEDD3uygFwcPwUQfpCUFbRJOnTSH1oB/aUC4 -x9DnYSHBdDvaBmu0pBpoddJ+0pbw02P7YL9kPz5OnOAN06JP4McIYz5ytKoSt/m8 -Z7cUnvn7TRVNLuiapwpB0gtRmb9JY1q3pd63+X0SCaBEtUH+PWcRcS7eDsgMwEym -0CyANhCQYJjcKugIWLYtN/0/p2bIKcRmcH3iJiN2zZtP1AF6G7a4mp+21OynvFOc -3+ojTDGJxxD3uPtKEhJXRgYMOmfAEn3rgtoln1kkNYcd7f2EIulckwB2yeM1IMud -0le7 +ADCCAgoCggIBAKtVnxPqCZheCuqePfLknxc+6MeyYkf494U8WWeZo+yirYV3zY70 +1KhKZ+M+XDqhrBXc7IQHZd2KKxYBGnrv9yvbllmtZRdnk3hnn8B4eNh3w5gCRKPo +GSTeiNN7WEIRwYZNkr8AWgeoYT1jN8SAMn5+qSqKSd62Z1BPJNi0eQmTVxgLZqzx +92AWBZQl9rOme+1zV6ohKcR22Of3yUl6476L1rYYcX0DXp0QFkhK0TFKNt3cHxqq +WTRuMTnyCj7woWRtwclWTdO2buAkJe8cIde6rcbaUAX9jTdkbAgYAB9MctEKqasO +MqFyMzweS3sG9oUnmd0/GRL9as314xTZuz8fFnfj5l0BN6thVMmvEEYU3rTLQRKf +AKWzI2VrU+5wIxN8O/4ZbriQ5ae13p6TDYilSZ6kMxSzfOM/A00hlA+DKMS0o8g8 +V9Y3wcl3aSSjoZbH7XS/uDEueodudz9V3HxCk7Wc41SpunQPFprmPDWtjiW0jcMD +3kHV819r2F8aidKN94Q+3KI+N/mwn1QdDVsquiCq0wbR54i3CoAkQbi5YeUdEZD6 +/mNLs/BABgzSbANw7Fn1Pd9gY/JIsRhMskcFRqXe9tOqKk8/GxMv/r9MgJn6HHlk +iDa3OZsoOtFbjjOPFoy/Xq9YMi4ODnJkEhe7BSsVl/wkDAUdg7Zfu8XVAgMBAAEw +DQYJKoZIhvcNAQELBQADggIBAEft+R+qGyKffiiJpYWLPn0C9SmpjZiWPK331n57 +Nk3GA8u9gRgD1gyqqLr19r86nLArF8jcB/nChPB1A9ysW3xyTNvpOlAwYvEjxWR2 +tJr8wiDucAd+SnQud6e+5PI5e8LnyxYoeoZ+i6hMbhNV70NthoINHMAQx+5NeSpa +Q0GJ4d0XA3W/8Pu6oK7O0QkVovVut73Koz5DqsF91zFJp7SjVKaCnnjRKyU8wbg5 +uTO0TRheEtx3AeEXNps5Yhq0daLTnmnuFeyaJHm2F1QuBmma1TTwIF3HDclv2wLn +Jp+MWG9yoN9oEJLqS/AvDu1BltPSuvnYgLZr7cl0os+TEqpzxroa4ziE98dEiy0D +K4YQ59UTz6C8Ps0uX0hcs3jsvZOkBWptusvJBfZN59xLJAVmF2igkgIBKoiXvXmv +fXDx0hsOBg2IPe2O8lLHlFKlJZlMc+prH1iD0Xv6HefSP4L1eZHU37zjrRf/GiNX +r6GoEhJR2pKEoZQT81xpYp/w+qjzWcTl/mLD6FEePRzV92h3ubjRWBB36UhLtnEG +LJgp7yq3aGu7rg9rnuz8J6DG8DStE9rNuRjkV1O2C/PvR97XmVoIqbrMlxX9MUQJ +XxLm5dqBz7EVuhDJSyp4zCkDYsOj1y/SLL2O3cTyQQeZg6jlqripNqWnviAdTWe5 +JIPp -----END CERTIFICATE----- diff --git a/experimental/packages/otlp-grpc-exporter-base/test/certs/server.csr b/experimental/packages/otlp-grpc-exporter-base/test/certs/server.csr index bb61322340..b421a7a60c 100644 --- a/experimental/packages/otlp-grpc-exporter-base/test/certs/server.csr +++ b/experimental/packages/otlp-grpc-exporter-base/test/certs/server.csr @@ -2,27 +2,27 @@ MIIErzCCApcCAQAwajELMAkGA1UEBhMCQ0wxCzAJBgNVBAgMAlJNMRowGAYDVQQH DBFPcGVuVGVsZW1ldHJ5VGVzdDENMAsGA1UECgwEVGVzdDEPMA0GA1UECwwGU2Vy dmVyMRIwEAYDVQQDDAlsb2NhbGhvc3QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw -ggIKAoICAQDWkb+46XRHnRtAkPy6CRF7hN9nmV82q+ObtOcKuQs6p1JWHR8sfHIA -iSeOCk4RV4js4BCxYosI8Zj6NQgy6hqfLxAx57b4cS4cP5hcv2mu2Kwr9f9Xl9Pn -BLzVMqIpIxylxAiO7FdWVTK4phil0DakX7m9SWyfiMy/pKejEbXQOhs8bFNA4FsH -+yEMbQkOE8N6Jydz9zWQJIM+swlYTlZEew7qhrpc00A2v/5lsCkCYnucLHFEY7y7 -CdKa0tek3P+cl4o8EY8MfGRKA6yeSrM6DEMCiKCze8BwaNq/P/EULDhk1TCdSPZD -pB97PXJbMMQq56c3TTZsiME1mkOgqqUKadLpxophd1aJGpx4ToXKZFn8wwK5lIy+ -DyBQUASbxyBCm7oWeKVGC/+kbYBINn98VT3vLNIZ/w88CU4F6hF/k2O1ryCph9LD -BmfU2c1nvVuuCzNv+Nu/uqX4EDgCQxzS0mKZmmteEfut9CDKHHWOrI9oaGfUyvEY -nap/qvuZCKRv6T+228287KLXc4zW+oexgZbLssnKDn4j/gumbP8lGQAGRLEptHuH -VxQnHLq5F0S+3GSRwv2oEIZJL3BD9U6ZmsoI27nDBPoeh9BtErfMswUMBCXZJ8DZ -nxISHY5ol+rv37zzulSeRwcYAOYDjSZZPuBG4mU35dq2GrgRYZaB8wIDAQABoAAw -DQYJKoZIhvcNAQELBQADggIBALQRbWtd7VIT7PI0g2TJY2nyFDZ+iNLlsqtlTQ+3 -9tDUNf911AyXGFBH2OaIg49UEl3Dn3ErAH6nZluZhRNjZRUYfE2dSEVYoeAA3SmE -FElARM1CX4dQUDnV++RLLRIKKGfcnwU+vSEWN4QfXs9qjI2UK80CBr6kPEt+bMfR -wUIax5HT1XLECoLph1rNza0h3WNk5ndEJMAt51U0JNAi6PwDF04ZfnX5E2RtiEjV -+3DPW1HYlX2hepkXVJPB568bbpmWLrmJsHjVZy4vmDoQi2bzS/QPsepgQ3aXxNel -vTxh0Or5SdIRRfNnP/Ov/aYjBxzkcKY83ADh7h1aqMOlUyFenHoMfTWnMYkeNY+1 -dOoLUS/ZNA6IH54UO7uY0uOcwCfRPYZzDxZI0IkjogX0aizixSs5duQx0ux3sUOo -a4zxMNPd89ppbCMZDS7biC7cOAsdDYXKcE5ijpc5CQXVo4/dA2xyfisRT7WUq9ay -vmQoYfMCAkGv47BVYhzASyPIXuFP2/HDbtnBvZ2aeSuMAwhHzj3vX9js2HGy7t2V -kj36LymQv+YBp9mV9/crSqy0DNFAYOWOuig0mQX/SPedGa4jf9v4OhANi+kzgxtQ -hBTcA0OtJyrVxesVGGK0YwaQIIZ8jwhsK3ljlZpOfVUflHl2/etME1DXtU37U9xA -fuw0 +ggIKAoICAQCrVZ8T6gmYXgrqnj3y5J8XPujHsmJH+PeFPFlnmaPsoq2Fd82O9NSo +SmfjPlw6oawV3OyEB2XdiisWARp67/cr25ZZrWUXZ5N4Z5/AeHjYd8OYAkSj6Bkk +3ojTe1hCEcGGTZK/AFoHqGE9YzfEgDJ+fqkqiknetmdQTyTYtHkJk1cYC2as8fdg +FgWUJfazpnvtc1eqISnEdtjn98lJeuO+i9a2GHF9A16dEBZIStExSjbd3B8aqlk0 +bjE58go+8KFkbcHJVk3Ttm7gJCXvHCHXuq3G2lAF/Y03ZGwIGAAfTHLRCqmrDjKh +cjM8Hkt7BvaFJ5ndPxkS/WrN9eMU2bs/HxZ34+ZdATerYVTJrxBGFN60y0ESnwCl +syNla1PucCMTfDv+GW64kOWntd6ekw2IpUmepDMUs3zjPwNNIZQPgyjEtKPIPFfW +N8HJd2kko6GWx+10v7gxLnqHbnc/Vdx8QpO1nONUqbp0Dxaa5jw1rY4ltI3DA95B +1fNfa9hfGonSjfeEPtyiPjf5sJ9UHQ1bKrogqtMG0eeItwqAJEG4uWHlHRGQ+v5j +S7PwQAYM0mwDcOxZ9T3fYGPySLEYTLJHBUal3vbTqipPPxsTL/6/TICZ+hx5ZIg2 +tzmbKDrRW44zjxaMv16vWDIuDg5yZBIXuwUrFZf8JAwFHYO2X7vF1QIDAQABoAAw +DQYJKoZIhvcNAQELBQADggIBAJCMEdjKyklN2izvOhd7+JMXm/ClW3hjowbu+csO +JNz8NqUNLrKJjFyV3yAUGWuyp3z982S+XGfcm3nU7n9AJOjT4DLJId6opOtA6CSp +KTRgVZmeViL6O6UqBLTacz5DDjwMQXxszc+QpU53cMT6Y7VMvIOhQ6AmIvz1v71u +5gaYmlbfXVlmiPHEKRsQG9/DNIPe1mHP0p+S9qYKmCx7Jlpee7IstW/hNjt7alDn +uFaxFjxmCCSdWaMRyMW/qNRks9q3VdhJPan+amFeXceoEG7SOKiFiOc8A7DribSm +iKc2YlOw14xqc+cJutiKBvoBMri2eh1JgCbPT4ufVGFpbDkfYwAJxWx44Eg0X90j +gJUw8IRuHQZkEYss6jwFMFcOqjpe+AqrssOl4GZmu5gcaiUnj8PkSVZLTOrLilPg +sSDjzmoHdv4QcBppTrjj6PyR5Xd6DeGasWkMPvIPjiPN3mOhfxJ3C87atMqOhTLx +em7vFOBegAW6g40J9JD1XMoI/zFnTU8NevZQgCyx/Tq1XNRmUeMA6y/qpfTNKi/f +F7v/7nDWoxBgpOw3J0E9R+6rxD7Cjb2RWZEf20ZGdNBlPE+UG9c9b3HC3IHiwRHb +L9Fi0251w+fkaPX8dojQKErCEknqJ1SCP5S5F5g1QCQby22Y7LQsggMMf94s/wQX +4uMh -----END CERTIFICATE REQUEST----- diff --git a/experimental/packages/otlp-grpc-exporter-base/test/certs/server.key b/experimental/packages/otlp-grpc-exporter-base/test/certs/server.key index ddac188c23..80b9cea7bf 100644 --- a/experimental/packages/otlp-grpc-exporter-base/test/certs/server.key +++ b/experimental/packages/otlp-grpc-exporter-base/test/certs/server.key @@ -1,51 +1,51 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- From 4a7091f2b4a4347eeab32ab455d5b73f68059a07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=B2=92=E7=B2=92=E6=A9=99?= Date: Sun, 11 Jun 2023 01:22:09 +0800 Subject: [PATCH 10/71] fix(npm-scripts): support windows platform using `cross-var` (#3857) --- api/package.json | 3 ++- experimental/packages/api-events/package.json | 3 ++- experimental/packages/api-logs/package.json | 3 ++- experimental/packages/exporter-logs-otlp-grpc/package.json | 3 ++- experimental/packages/exporter-logs-otlp-http/package.json | 3 ++- experimental/packages/exporter-logs-otlp-proto/package.json | 3 ++- experimental/packages/exporter-trace-otlp-grpc/package.json | 3 ++- experimental/packages/exporter-trace-otlp-http/package.json | 3 ++- experimental/packages/exporter-trace-otlp-proto/package.json | 3 ++- .../packages/opentelemetry-browser-detector/package.json | 3 ++- .../opentelemetry-exporter-metrics-otlp-grpc/package.json | 3 ++- .../opentelemetry-exporter-metrics-otlp-http/package.json | 3 ++- .../opentelemetry-exporter-metrics-otlp-proto/package.json | 3 ++- .../packages/opentelemetry-exporter-prometheus/package.json | 3 ++- .../packages/opentelemetry-instrumentation-fetch/package.json | 3 ++- .../packages/opentelemetry-instrumentation-grpc/package.json | 3 ++- .../packages/opentelemetry-instrumentation-http/package.json | 3 ++- .../package.json | 3 ++- .../packages/opentelemetry-instrumentation/package.json | 3 ++- experimental/packages/opentelemetry-sdk-node/package.json | 3 ++- experimental/packages/otlp-exporter-base/package.json | 3 ++- experimental/packages/otlp-grpc-exporter-base/package.json | 3 ++- experimental/packages/otlp-proto-exporter-base/package.json | 3 ++- experimental/packages/otlp-transformer/package.json | 3 +++ experimental/packages/sdk-logs/package.json | 3 ++- experimental/packages/shim-opencensus/package.json | 3 ++- packages/opentelemetry-context-async-hooks/package.json | 3 ++- packages/opentelemetry-context-zone-peer-dep/package.json | 3 ++- packages/opentelemetry-context-zone/package.json | 3 ++- packages/opentelemetry-core/package.json | 3 ++- packages/opentelemetry-exporter-jaeger/package.json | 3 ++- packages/opentelemetry-exporter-zipkin/package.json | 3 ++- packages/opentelemetry-propagator-b3/package.json | 3 ++- packages/opentelemetry-propagator-jaeger/package.json | 3 ++- packages/opentelemetry-resources/package.json | 3 ++- packages/opentelemetry-sdk-trace-base/package.json | 3 ++- packages/opentelemetry-sdk-trace-node/package.json | 3 ++- packages/opentelemetry-sdk-trace-web/package.json | 3 ++- packages/opentelemetry-semantic-conventions/package.json | 3 ++- packages/opentelemetry-shim-opentracing/package.json | 3 ++- packages/sdk-metrics/package.json | 3 ++- packages/template/package.json | 3 ++- 42 files changed, 85 insertions(+), 41 deletions(-) diff --git a/api/package.json b/api/package.json index f5f3d0e2e6..5100e4f82e 100644 --- a/api/package.json +++ b/api/package.json @@ -16,7 +16,7 @@ "codecov:browser": "nyc report --reporter=json && codecov -f coverage/*.json -p ../", "codecov:webworker": "nyc report --reporter=json && codecov -f coverage/*.json -p ../", "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "docs": "typedoc", "docs:deploy": "gh-pages --dist docs/out", @@ -66,6 +66,7 @@ "@types/webpack": "4.41.33", "@types/webpack-env": "1.16.3", "codecov": "3.8.3", + "cross-var": "1.1.0", "dpdm": "3.10.0", "istanbul-instrumenter-loader": "3.0.1", "karma": "6.3.16", diff --git a/experimental/packages/api-events/package.json b/experimental/packages/api-events/package.json index 934a5f152e..2c93e18c36 100644 --- a/experimental/packages/api-events/package.json +++ b/experimental/packages/api-events/package.json @@ -26,7 +26,7 @@ "lint:fix": "eslint . --ext .ts --fix", "version": "node ../../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "node ../../../scripts/version-update.js" }, "keywords": [ @@ -68,6 +68,7 @@ "@types/node": "18.6.5", "@types/webpack-env": "1.16.3", "codecov": "3.8.3", + "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", diff --git a/experimental/packages/api-logs/package.json b/experimental/packages/api-logs/package.json index 0fe84f8740..eabcfc00fb 100644 --- a/experimental/packages/api-logs/package.json +++ b/experimental/packages/api-logs/package.json @@ -26,7 +26,7 @@ "lint:fix": "eslint . --ext .ts --fix", "version": "node ../../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "node ../../../scripts/version-update.js" }, "keywords": [ @@ -68,6 +68,7 @@ "@types/node": "18.6.5", "@types/webpack-env": "1.16.3", "codecov": "3.8.3", + "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", diff --git a/experimental/packages/exporter-logs-otlp-grpc/package.json b/experimental/packages/exporter-logs-otlp-grpc/package.json index 699788e84d..cdb76c11f4 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/package.json +++ b/experimental/packages/exporter-logs-otlp-grpc/package.json @@ -15,7 +15,7 @@ "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'", "version": "node ../../../scripts/version-update.js", "watch": "tsc --watch --build", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../../scripts/peer-api-check.js", "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../" @@ -59,6 +59,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cpx": "1.5.0", + "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index 6986bcca30..ef21270a4e 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -41,7 +41,7 @@ "test:browser": "nyc karma start --single-run", "version": "node ../../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../../scripts/peer-api-check.js", "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../" @@ -80,6 +80,7 @@ "babel-loader": "8.2.3", "codecov": "3.8.3", "cpx": "1.5.0", + "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", diff --git a/experimental/packages/exporter-logs-otlp-proto/package.json b/experimental/packages/exporter-logs-otlp-proto/package.json index bf66f69e65..079e27e7ef 100644 --- a/experimental/packages/exporter-logs-otlp-proto/package.json +++ b/experimental/packages/exporter-logs-otlp-proto/package.json @@ -24,7 +24,7 @@ "test:browser": "nyc karma start --single-run", "version": "node ../../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../../scripts/peer-api-check.js", "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../" @@ -70,6 +70,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cpx": "1.5.0", + "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", diff --git a/experimental/packages/exporter-trace-otlp-grpc/package.json b/experimental/packages/exporter-trace-otlp-grpc/package.json index 362e0934d3..543b18b5d5 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/package.json +++ b/experimental/packages/exporter-trace-otlp-grpc/package.json @@ -15,7 +15,7 @@ "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'", "version": "node ../../../scripts/version-update.js", "watch": "tsc --watch --build", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../../scripts/peer-api-check.js", "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../" @@ -56,6 +56,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cpx": "1.5.0", + "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", diff --git a/experimental/packages/exporter-trace-otlp-http/package.json b/experimental/packages/exporter-trace-otlp-http/package.json index fb9eec5a93..808972e1bf 100644 --- a/experimental/packages/exporter-trace-otlp-http/package.json +++ b/experimental/packages/exporter-trace-otlp-http/package.json @@ -26,7 +26,7 @@ "test:browser": "nyc karma start --single-run", "version": "node ../../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../../scripts/peer-api-check.js", "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../" @@ -72,6 +72,7 @@ "babel-loader": "8.2.3", "codecov": "3.8.3", "cpx": "1.5.0", + "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", diff --git a/experimental/packages/exporter-trace-otlp-proto/package.json b/experimental/packages/exporter-trace-otlp-proto/package.json index 10c2b03cf5..72d7b5cf46 100644 --- a/experimental/packages/exporter-trace-otlp-proto/package.json +++ b/experimental/packages/exporter-trace-otlp-proto/package.json @@ -24,7 +24,7 @@ "test:browser": "nyc karma start --single-run", "version": "node ../../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../../scripts/peer-api-check.js", "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../" @@ -69,6 +69,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cpx": "1.5.0", + "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", diff --git a/experimental/packages/opentelemetry-browser-detector/package.json b/experimental/packages/opentelemetry-browser-detector/package.json index 0c2d09c3d7..723281cf4e 100644 --- a/experimental/packages/opentelemetry-browser-detector/package.json +++ b/experimental/packages/opentelemetry-browser-detector/package.json @@ -20,7 +20,7 @@ "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../", "version": "node ../../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../../scripts/peer-api-check.js" }, @@ -59,6 +59,7 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.15", "codecov": "3.8.3", + "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index d2d2d9ffd4..170e9b79cb 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -15,7 +15,7 @@ "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'", "version": "node ../../../scripts/version-update.js", "watch": "tsc -w", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../../scripts/peer-api-check.js", "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../" @@ -55,6 +55,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cpx": "1.5.0", + "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index ad0a4100b4..e7f7496c01 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -26,7 +26,7 @@ "test:browser": "nyc karma start --single-run", "version": "node ../../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../../scripts/peer-api-check.js", "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../" @@ -72,6 +72,7 @@ "babel-loader": "8.2.3", "codecov": "3.8.3", "cpx": "1.5.0", + "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index 35d5b14f96..6e5003df88 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -15,7 +15,7 @@ "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'", "version": "node ../../../scripts/version-update.js", "watch": "tsc -w", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../../scripts/peer-api-check.js", "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../" @@ -54,6 +54,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cpx": "1.5.0", + "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", diff --git a/experimental/packages/opentelemetry-exporter-prometheus/package.json b/experimental/packages/opentelemetry-exporter-prometheus/package.json index 0102ede2e7..232bf2e80a 100644 --- a/experimental/packages/opentelemetry-exporter-prometheus/package.json +++ b/experimental/packages/opentelemetry-exporter-prometheus/package.json @@ -16,7 +16,7 @@ "lint:fix": "eslint . --ext .ts --fix", "version": "node ../../../scripts/version-update.js", "watch": "tsc --build --watch", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../../scripts/peer-api-check.js" }, @@ -49,6 +49,7 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.15", "codecov": "3.8.3", + "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index a8f6213a70..5d97cef370 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -18,7 +18,7 @@ "tdd": "karma start", "test:browser": "nyc karma start --single-run", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "node ../../../scripts/version-update.js", "peer-api-check": "node ../../../scripts/peer-api-check.js" }, @@ -65,6 +65,7 @@ "@types/webpack-env": "1.16.3", "babel-loader": "8.2.3", "codecov": "3.8.3", + "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/package.json b/experimental/packages/opentelemetry-instrumentation-grpc/package.json index 20b06eb4f5..7bbfdb8b1d 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/package.json +++ b/experimental/packages/opentelemetry-instrumentation-grpc/package.json @@ -16,7 +16,7 @@ "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../", "version": "node ../../../scripts/version-update.js", "watch": "tsc --build --watch", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "node ../../../scripts/version-update.js", "peer-api-check": "node ../../../scripts/peer-api-check.js", "postinstall": "node -e \"console.log(\\\"\\x1b[95m%s\\x1b[0m\\\", \\\"@opentelemetry/instrumentation-grpc - warning: The package 'grpc' (https://www.npmjs.com/package/grpc) is deprecated. It will no longer be instrumented in the next release of '@opentelemetry/instrumentation-grpc'. Please migrate to '@grpc/grpc-js' (https://www.npmjs.com/package/@grpc/grpc-js) to continue receiving telemetry.\\\");\"" @@ -58,6 +58,7 @@ "@types/semver": "7.3.9", "@types/sinon": "10.0.15", "codecov": "3.8.3", + "cross-var": "1.1.0", "grpc": "1.24.11", "mocha": "10.2.0", "node-pre-gyp": "0.17.0", diff --git a/experimental/packages/opentelemetry-instrumentation-http/package.json b/experimental/packages/opentelemetry-instrumentation-http/package.json index d0f9cd3914..591911e5ae 100644 --- a/experimental/packages/opentelemetry-instrumentation-http/package.json +++ b/experimental/packages/opentelemetry-instrumentation-http/package.json @@ -16,7 +16,7 @@ "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../", "version": "node ../../../scripts/version-update.js", "watch": "tsc --build --watch", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "node ../../../scripts/version-update.js", "peer-api-check": "node ../../../scripts/peer-api-check.js" }, @@ -58,6 +58,7 @@ "@types/superagent": "4.1.18", "axios": "1.4.0", "codecov": "3.8.3", + "cross-var": "1.1.0", "mocha": "10.2.0", "nock": "13.0.11", "nyc": "15.1.0", diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json index 29f36e0c18..c63a7f76c6 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json @@ -18,7 +18,7 @@ "tdd": "karma start", "test:browser": "nyc karma start --single-run", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "node ../../../scripts/version-update.js", "peer-api-check": "node ../../../scripts/peer-api-check.js" }, @@ -65,6 +65,7 @@ "@types/webpack-env": "1.16.3", "babel-loader": "8.2.3", "codecov": "3.8.3", + "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index aed1782f4f..a95ef56eac 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -54,7 +54,7 @@ "test:browser": "nyc karma start --single-run", "version": "node ../../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "node ../../../scripts/version-update.js", "peer-api-check": "node ../../../scripts/peer-api-check.js" }, @@ -92,6 +92,7 @@ "babel-loader": "8.2.3", "codecov": "3.8.3", "cpx": "1.5.0", + "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json index 0372de64f7..b0842de637 100644 --- a/experimental/packages/opentelemetry-sdk-node/package.json +++ b/experimental/packages/opentelemetry-sdk-node/package.json @@ -15,7 +15,7 @@ "lint:fix": "eslint . --ext .ts --fix", "version": "node ../../../scripts/version-update.js", "watch": "tsc --build --watch", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../../scripts/peer-api-check.js" }, @@ -68,6 +68,7 @@ "@types/semver": "7.3.9", "@types/sinon": "10.0.15", "codecov": "3.8.3", + "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/experimental/packages/otlp-exporter-base/package.json b/experimental/packages/otlp-exporter-base/package.json index 96356cd4d9..6eb78d97da 100644 --- a/experimental/packages/otlp-exporter-base/package.json +++ b/experimental/packages/otlp-exporter-base/package.json @@ -27,7 +27,7 @@ "test:browser": "nyc karma start --single-run", "version": "node ../../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile" }, "keywords": [ @@ -69,6 +69,7 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.15", "codecov": "3.8.3", + "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", "mocha": "10.2.0", "nock": "13.0.11", diff --git a/experimental/packages/otlp-grpc-exporter-base/package.json b/experimental/packages/otlp-grpc-exporter-base/package.json index b10279fa56..9b67a57094 100644 --- a/experimental/packages/otlp-grpc-exporter-base/package.json +++ b/experimental/packages/otlp-grpc-exporter-base/package.json @@ -19,7 +19,7 @@ "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'", "version": "node ../../../scripts/version-update.js", "watch": "npm run protos && tsc -w", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile" }, "keywords": [ @@ -58,6 +58,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cpx": "1.5.0", + "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", "protobufjs-cli": "1.0.2", diff --git a/experimental/packages/otlp-proto-exporter-base/package.json b/experimental/packages/otlp-proto-exporter-base/package.json index 0818a4a844..5560b8b436 100644 --- a/experimental/packages/otlp-proto-exporter-base/package.json +++ b/experimental/packages/otlp-proto-exporter-base/package.json @@ -24,7 +24,7 @@ "submodule": "git submodule sync --recursive && git submodule update --init --recursive", "version": "node ../../../scripts/version-update.js", "watch": "npm run protos && tsc -w tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile" }, "keywords": [ @@ -65,6 +65,7 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.15", "codecov": "3.8.3", + "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", "protobufjs-cli": "1.0.2", diff --git a/experimental/packages/otlp-transformer/package.json b/experimental/packages/otlp-transformer/package.json index 86359693ae..9e1af19e88 100644 --- a/experimental/packages/otlp-transformer/package.json +++ b/experimental/packages/otlp-transformer/package.json @@ -13,6 +13,7 @@ "repository": "open-telemetry/opentelemetry-js", "scripts": { "prepublishOnly": "npm run compile", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "lint": "eslint . --ext .ts", @@ -20,6 +21,7 @@ "tdd": "npm run test -- --watch-extensions ts --watch", "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'", "test:browser": "nyc karma start --single-run", + "prewatch": "node ../../../scripts/version-update.js", "watch": "tsc --build -w tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "peer-api-check": "node ../../../scripts/peer-api-check.js", "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../" @@ -61,6 +63,7 @@ "@types/mocha": "10.0.1", "@types/webpack-env": "1.16.3", "codecov": "3.8.3", + "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", diff --git a/experimental/packages/sdk-logs/package.json b/experimental/packages/sdk-logs/package.json index 540d337f13..c93f570590 100644 --- a/experimental/packages/sdk-logs/package.json +++ b/experimental/packages/sdk-logs/package.json @@ -41,7 +41,7 @@ "lint:fix": "eslint . --ext .ts --fix", "version": "node ../../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "node ../../../scripts/version-update.js", "peer-api-check": "node ../../../scripts/peer-api-check.js" }, @@ -78,6 +78,7 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.15", "codecov": "3.8.3", + "cross-var": "1.1.0", "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", diff --git a/experimental/packages/shim-opencensus/package.json b/experimental/packages/shim-opencensus/package.json index ec3c5dafed..d88d4a6927 100644 --- a/experimental/packages/shim-opencensus/package.json +++ b/experimental/packages/shim-opencensus/package.json @@ -16,7 +16,7 @@ "lint:fix": "eslint . --ext .ts --fix", "version": "node ../../../scripts/version-update.js", "watch": "tsc --build --watch", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../../scripts/peer-api-check.js" }, @@ -52,6 +52,7 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.15", "codecov": "3.8.3", + "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", diff --git a/packages/opentelemetry-context-async-hooks/package.json b/packages/opentelemetry-context-async-hooks/package.json index a227e9ce27..699ccc0bd7 100644 --- a/packages/opentelemetry-context-async-hooks/package.json +++ b/packages/opentelemetry-context-async-hooks/package.json @@ -15,7 +15,7 @@ "lint": "eslint . --ext .ts", "lint:fix": "eslint . --ext .ts --fix", "version": "node ../../scripts/version-update.js", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../scripts/peer-api-check.js" }, @@ -48,6 +48,7 @@ "@types/mocha": "10.0.1", "@types/node": "18.6.5", "codecov": "3.8.3", + "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", "ts-mocha": "10.0.0", diff --git a/packages/opentelemetry-context-zone-peer-dep/package.json b/packages/opentelemetry-context-zone-peer-dep/package.json index a930cb8484..d44609131a 100644 --- a/packages/opentelemetry-context-zone-peer-dep/package.json +++ b/packages/opentelemetry-context-zone-peer-dep/package.json @@ -18,7 +18,7 @@ "tdd": "karma start", "test:browser": "nyc karma start --single-run", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../scripts/peer-api-check.js" }, @@ -62,6 +62,7 @@ "@types/zone.js": "0.5.12", "babel-loader": "8.2.3", "codecov": "3.8.3", + "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", diff --git a/packages/opentelemetry-context-zone/package.json b/packages/opentelemetry-context-zone/package.json index e79a867835..1625d76e65 100644 --- a/packages/opentelemetry-context-zone/package.json +++ b/packages/opentelemetry-context-zone/package.json @@ -15,7 +15,7 @@ "lint:fix": "eslint . --ext .ts --fix", "version": "node ../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../scripts/peer-api-check.js" }, @@ -57,6 +57,7 @@ "@types/webpack-env": "1.16.3", "babel-loader": "8.2.3", "codecov": "3.8.3", + "cross-var": "1.1.0", "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", "karma-mocha": "2.0.1", diff --git a/packages/opentelemetry-core/package.json b/packages/opentelemetry-core/package.json index 89e1b0acab..349a5cc19b 100644 --- a/packages/opentelemetry-core/package.json +++ b/packages/opentelemetry-core/package.json @@ -28,7 +28,7 @@ "lint:fix": "eslint . --ext .ts --fix", "version": "node ../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../scripts/peer-api-check.js" }, @@ -70,6 +70,7 @@ "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "codecov": "3.8.3", + "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", diff --git a/packages/opentelemetry-exporter-jaeger/package.json b/packages/opentelemetry-exporter-jaeger/package.json index 030eba5f6e..b3d1375878 100644 --- a/packages/opentelemetry-exporter-jaeger/package.json +++ b/packages/opentelemetry-exporter-jaeger/package.json @@ -16,7 +16,7 @@ "lint:fix": "eslint . --ext .ts --fix", "version": "node ../../scripts/version-update.js", "watch": "tsc --build --watch", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../scripts/peer-api-check.js" }, @@ -50,6 +50,7 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.15", "codecov": "3.8.3", + "cross-var": "1.1.0", "mocha": "10.2.0", "nock": "13.0.11", "nyc": "15.1.0", diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index 70f71e4603..5671faa25f 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -26,7 +26,7 @@ "test:browser": "nyc karma start --single-run", "version": "node ../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../scripts/peer-api-check.js" }, @@ -68,6 +68,7 @@ "@types/webpack-env": "1.16.3", "babel-loader": "8.2.3", "codecov": "3.8.3", + "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", diff --git a/packages/opentelemetry-propagator-b3/package.json b/packages/opentelemetry-propagator-b3/package.json index 7f21ce7603..b2e782672c 100644 --- a/packages/opentelemetry-propagator-b3/package.json +++ b/packages/opentelemetry-propagator-b3/package.json @@ -17,7 +17,7 @@ "lint:fix": "eslint . --ext .ts --fix", "version": "node ../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../scripts/peer-api-check.js" }, @@ -61,6 +61,7 @@ "@types/mocha": "10.0.1", "@types/node": "18.6.5", "codecov": "3.8.3", + "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/packages/opentelemetry-propagator-jaeger/package.json b/packages/opentelemetry-propagator-jaeger/package.json index a6d01b7a4d..77a8e9c356 100644 --- a/packages/opentelemetry-propagator-jaeger/package.json +++ b/packages/opentelemetry-propagator-jaeger/package.json @@ -20,7 +20,7 @@ "lint:fix": "eslint . --ext .ts --fix", "version": "node ../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../scripts/peer-api-check.js" }, @@ -60,6 +60,7 @@ "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "codecov": "3.8.3", + "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", diff --git a/packages/opentelemetry-resources/package.json b/packages/opentelemetry-resources/package.json index b2655b10a9..e24c87d07b 100644 --- a/packages/opentelemetry-resources/package.json +++ b/packages/opentelemetry-resources/package.json @@ -27,7 +27,7 @@ "tdd": "npm run test -- --watch-extensions ts --watch", "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../", "version": "node ../../scripts/version-update.js", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../scripts/peer-api-check.js" }, @@ -68,6 +68,7 @@ "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "codecov": "3.8.3", + "cross-var": "1.1.0", "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", diff --git a/packages/opentelemetry-sdk-trace-base/package.json b/packages/opentelemetry-sdk-trace-base/package.json index 40c985ee97..93f9df8662 100644 --- a/packages/opentelemetry-sdk-trace-base/package.json +++ b/packages/opentelemetry-sdk-trace-base/package.json @@ -29,7 +29,7 @@ "codecov:webworker": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../", "version": "node ../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../scripts/peer-api-check.js" }, @@ -71,6 +71,7 @@ "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "codecov": "3.8.3", + "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", diff --git a/packages/opentelemetry-sdk-trace-node/package.json b/packages/opentelemetry-sdk-trace-node/package.json index 5286d4dd42..2495523d02 100644 --- a/packages/opentelemetry-sdk-trace-node/package.json +++ b/packages/opentelemetry-sdk-trace-node/package.json @@ -16,7 +16,7 @@ "lint:fix": "eslint . --ext .ts --fix", "version": "node ../../scripts/version-update.js", "watch": "tsc --build --watch", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../scripts/peer-api-check.js" }, @@ -53,6 +53,7 @@ "@types/semver": "7.3.9", "@types/sinon": "10.0.15", "codecov": "3.8.3", + "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", diff --git a/packages/opentelemetry-sdk-trace-web/package.json b/packages/opentelemetry-sdk-trace-web/package.json index d63b1ebc75..c3e0e5906f 100644 --- a/packages/opentelemetry-sdk-trace-web/package.json +++ b/packages/opentelemetry-sdk-trace-web/package.json @@ -20,7 +20,7 @@ "test:browser": "nyc karma start --single-run", "test:webworker": "nyc karma start karma.worker.js --single-run", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../scripts/peer-api-check.js" }, @@ -67,6 +67,7 @@ "@types/webpack-env": "1.16.3", "babel-loader": "8.2.3", "codecov": "3.8.3", + "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", diff --git a/packages/opentelemetry-semantic-conventions/package.json b/packages/opentelemetry-semantic-conventions/package.json index d918b90ab0..a22d16b5df 100644 --- a/packages/opentelemetry-semantic-conventions/package.json +++ b/packages/opentelemetry-semantic-conventions/package.json @@ -15,7 +15,7 @@ "lint:fix": "eslint . --ext .ts --fix", "version": "node ../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../scripts/peer-api-check.js" }, @@ -53,6 +53,7 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.15", "codecov": "3.8.3", + "cross-var": "1.1.0", "mocha": "10.2.0", "nock": "13.0.11", "nyc": "15.1.0", diff --git a/packages/opentelemetry-shim-opentracing/package.json b/packages/opentelemetry-shim-opentracing/package.json index 5e84c89124..0a4c56882a 100644 --- a/packages/opentelemetry-shim-opentracing/package.json +++ b/packages/opentelemetry-shim-opentracing/package.json @@ -15,7 +15,7 @@ "lint": "eslint . --ext .ts", "lint:fix": "eslint . --ext .ts --fix", "version": "node ../../scripts/version-update.js", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../scripts/peer-api-check.js" }, @@ -49,6 +49,7 @@ "@types/mocha": "10.0.1", "@types/node": "18.6.5", "codecov": "3.8.3", + "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", "ts-mocha": "10.0.0", diff --git a/packages/sdk-metrics/package.json b/packages/sdk-metrics/package.json index 193ada1af0..988f4ebca7 100644 --- a/packages/sdk-metrics/package.json +++ b/packages/sdk-metrics/package.json @@ -20,7 +20,7 @@ "lint:fix": "eslint . --ext .ts --fix", "version": "node ../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "node ../../scripts/version-update.js", "peer-api-check": "node ../../scripts/peer-api-check.js" }, @@ -60,6 +60,7 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.15", "codecov": "3.8.3", + "cross-var": "1.1.0", "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", diff --git a/packages/template/package.json b/packages/template/package.json index 2138d90be5..979c49fc32 100644 --- a/packages/template/package.json +++ b/packages/template/package.json @@ -30,7 +30,7 @@ "compile": "tsc --build", "version": "node ../../scripts/version-update.js", "clean": "tsc --build --clean", - "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies", + "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", "peer-api-check": "node ../../scripts/peer-api-check.js" }, @@ -79,6 +79,7 @@ ], "devDependencies": { "@types/node": "18.6.5", + "cross-var": "1.1.0", "typescript": "4.4.4" }, "Add these to devDependencies for testing": { From e8540c5016c64b60756128bd3b3103d64f8faf73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=B2=92=E7=B2=92=E6=A9=99?= Date: Mon, 12 Jun 2023 19:10:12 +0800 Subject: [PATCH 11/71] chore(instrumentation-grpc): drop support for `grpc` (#3807) Co-authored-by: Daniel Dyla --- examples/grpc/README.md | 71 --- examples/grpc/client.js | 46 -- examples/grpc/helloworld_grpc_pb.js | 64 --- examples/grpc/helloworld_pb.js | 332 --------------- examples/grpc/images/jaeger.png | Bin 534713 -> 0 bytes examples/grpc/images/zipkin.png | Bin 110330 -> 0 bytes examples/grpc/package.json | 48 --- examples/grpc/server.js | 38 -- examples/grpc/tracer.js | 41 -- experimental/CHANGELOG.md | 2 + .../README.md | 12 +- .../package.json | 4 +- .../src/grpc-js/clientUtils.ts | 4 +- .../src/grpc-js/index.ts | 2 +- .../src/grpc/clientUtils.ts | 202 --------- .../src/grpc/index.ts | 403 ------------------ .../src/grpc/serverUtils.ts | 136 ------ .../src/grpc/types.ts | 53 --- .../src/instrumentation.ts | 12 - .../src/internal-types.ts | 9 +- .../src/utils.ts | 9 +- .../test/grpc.test.ts | 28 -- .../test/helper.ts | 39 +- .../test/utils/assertionUtils.ts | 5 +- 24 files changed, 36 insertions(+), 1524 deletions(-) delete mode 100644 examples/grpc/README.md delete mode 100644 examples/grpc/client.js delete mode 100644 examples/grpc/helloworld_grpc_pb.js delete mode 100644 examples/grpc/helloworld_pb.js delete mode 100644 examples/grpc/images/jaeger.png delete mode 100644 examples/grpc/images/zipkin.png delete mode 100644 examples/grpc/package.json delete mode 100644 examples/grpc/server.js delete mode 100644 examples/grpc/tracer.js delete mode 100644 experimental/packages/opentelemetry-instrumentation-grpc/src/grpc/clientUtils.ts delete mode 100644 experimental/packages/opentelemetry-instrumentation-grpc/src/grpc/index.ts delete mode 100644 experimental/packages/opentelemetry-instrumentation-grpc/src/grpc/serverUtils.ts delete mode 100644 experimental/packages/opentelemetry-instrumentation-grpc/src/grpc/types.ts delete mode 100644 experimental/packages/opentelemetry-instrumentation-grpc/test/grpc.test.ts diff --git a/examples/grpc/README.md b/examples/grpc/README.md deleted file mode 100644 index 1ec7a42a0e..0000000000 --- a/examples/grpc/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# Overview - -OpenTelemetry gRPC 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. - -## 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 - -- Run the server - - ```sh - # from this directory - npm run zipkin:server - ``` - -- Run the client - - ```sh - # from this directory - npm run zipkin:client - ``` - -#### 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 - -- Run the server - - ```sh - # from this directory - npm run jaeger:server - ``` - -- Run the client - - ```sh - # from this directory - npm run jaeger:client - ``` - -#### 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/grpc/client.js b/examples/grpc/client.js deleted file mode 100644 index 18c7cf7354..0000000000 --- a/examples/grpc/client.js +++ /dev/null @@ -1,46 +0,0 @@ -'use strict'; - -const api = require('@opentelemetry/api'); -const tracer = require('./tracer')('example-grpc-client'); -const grpc = require('grpc'); -const messages = require('./helloworld_pb'); -const services = require('./helloworld_grpc_pb'); - -const PORT = 50051; - -/** A function which makes requests and handles response. */ -function main() { - // span corresponds to outgoing requests. Here, we have manually created - // the span, which is created to track work that happens outside of the - // request lifecycle entirely. - const span = tracer.startSpan('client.js:main()'); - api.context.with(api.trace.setSpan(api.context.active(), span), () => { - console.log('Client traceId ', span.spanContext().traceId); - const client = new services.GreeterClient( - `localhost:${PORT}`, - grpc.credentials.createInsecure(), - ); - const request = new messages.HelloRequest(); - let user; - if (process.argv.length >= 3) { - // eslint-disable-next-line prefer-destructuring - user = process.argv[2]; - } else { - user = 'world'; - } - request.setName(user); - client.sayHello(request, (err, response) => { - span.end(); - if (err) throw err; - console.log('Greeting:', response.getMessage()); - }); - }); - - // 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); -} - -main(); diff --git a/examples/grpc/helloworld_grpc_pb.js b/examples/grpc/helloworld_grpc_pb.js deleted file mode 100644 index 1e39a0f46a..0000000000 --- a/examples/grpc/helloworld_grpc_pb.js +++ /dev/null @@ -1,64 +0,0 @@ -// GENERATED CODE -- DO NOT EDIT! - -// Original file comments: -// Copyright 2015 gRPC 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. -// - -'use strict'; - -const grpc = require('grpc'); -const helloworld_pb = require('./helloworld_pb.js'); - -function serialize_HelloReply(arg) { - if (!(arg instanceof helloworld_pb.HelloReply)) { - throw new Error('Expected argument of type HelloReply'); - } - return Buffer.from(arg.serializeBinary()); -} - -function deserialize_HelloReply(buffer_arg) { - return helloworld_pb.HelloReply.deserializeBinary(new Uint8Array(buffer_arg)); -} - -function serialize_HelloRequest(arg) { - if (!(arg instanceof helloworld_pb.HelloRequest)) { - throw new Error('Expected argument of type HelloRequest'); - } - return Buffer.from(arg.serializeBinary()); -} - -function deserialize_HelloRequest(buffer_arg) { - return helloworld_pb.HelloRequest.deserializeBinary( - new Uint8Array(buffer_arg), - ); -} - -// The greeting service definition. -const GreeterService = (exports.GreeterService = { - // Sends a greeting - sayHello: { - path: '/helloworld.Greeter/SayHello', - requestStream: false, - responseStream: false, - requestType: helloworld_pb.HelloRequest, - responseType: helloworld_pb.HelloReply, - requestSerialize: serialize_HelloRequest, - requestDeserialize: deserialize_HelloRequest, - responseSerialize: serialize_HelloReply, - responseDeserialize: deserialize_HelloReply, - }, -}); - -exports.GreeterClient = grpc.makeGenericClientConstructor(GreeterService); diff --git a/examples/grpc/helloworld_pb.js b/examples/grpc/helloworld_pb.js deleted file mode 100644 index 066acd68e8..0000000000 --- a/examples/grpc/helloworld_pb.js +++ /dev/null @@ -1,332 +0,0 @@ -/** - * @fileoverview - * @enhanceable - * @public - */ -// GENERATED CODE -- DO NOT EDIT! - -const jspb = require('google-protobuf'); - -const goog = jspb; -const global = Function('return this')(); - -goog.exportSymbol('proto.helloworld.HelloReply', null, global); -goog.exportSymbol('proto.helloworld.HelloRequest', null, global); - -/** - * Generated by JsPbCodeGenerator. - * @param {Array=} opt_data Optional initial data array, typically from a - * server response, or constructed directly in Javascript. The array is used - * in place and becomes part of the constructed object. It is not cloned. - * If no data is provided, the constructed object will be empty, but still - * valid. - * @extends {jspb.Message} - * @constructor - */ -proto.helloworld.HelloRequest = function (opt_data) { - jspb.Message.initialize(this, opt_data, 0, -1, null, null); -}; -goog.inherits(proto.helloworld.HelloRequest, jspb.Message); -if (goog.DEBUG && !COMPILED) { - proto.helloworld.HelloRequest.displayName = 'proto.helloworld.HelloRequest'; -} - -if (jspb.Message.GENERATE_TO_OBJECT) { - /** - * Creates an object representation of this proto suitable for use in Soy templates. - * Field names that are reserved in JavaScript and will be renamed to pb_name. - * To access a reserved field use, foo.pb_, eg, foo.pb_default. - * For the list of reserved names please see: - * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS. - * @param {boolean=} opt_includeInstance Whether to include the JSPB instance - * for transitional soy proto support: http://goto/soy-param-migration - * @return {!Object} - */ - proto.helloworld.HelloRequest.prototype.toObject = function ( - opt_includeInstance, - ) { - return proto.helloworld.HelloRequest.toObject(opt_includeInstance, this); - }; - - /** - * Static version of the {@see toObject} method. - * @param {boolean|undefined} includeInstance Whether to include the JSPB - * instance for transitional soy proto support: - * http://goto/soy-param-migration - * @param {!proto.helloworld.HelloRequest} msg The msg instance to transform. - * @return {!Object} - */ - proto.helloworld.HelloRequest.toObject = function (includeInstance, msg) { - let f; - - const obj = { - name: msg.getName(), - }; - - if (includeInstance) { - obj.$jspbMessageInstance = msg; - } - return obj; - }; -} - -/** - * Deserializes binary data (in protobuf wire format). - * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.helloworld.HelloRequest} - */ -proto.helloworld.HelloRequest.deserializeBinary = function (bytes) { - const reader = new jspb.BinaryReader(bytes); - const msg = new proto.helloworld.HelloRequest(); - return proto.helloworld.HelloRequest.deserializeBinaryFromReader(msg, reader); -}; - -/** - * Deserializes binary data (in protobuf wire format) from the - * given reader into the given message object. - * @param {!proto.helloworld.HelloRequest} msg The message object to deserialize into. - * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.helloworld.HelloRequest} - */ -proto.helloworld.HelloRequest.deserializeBinaryFromReader = function ( - msg, - reader, -) { - while (reader.nextField()) { - if (reader.isEndGroup()) { - break; - } - const field = reader.getFieldNumber(); - switch (field) { - case 1: - var value = /** @type {string} */ (reader.readString()); - msg.setName(value); - break; - default: - reader.skipField(); - break; - } - } - return msg; -}; - -/** - * Class method variant: serializes the given message to binary data - * (in protobuf wire format), writing to the given BinaryWriter. - * @param {!proto.helloworld.HelloRequest} message - * @param {!jspb.BinaryWriter} writer - */ -proto.helloworld.HelloRequest.serializeBinaryToWriter = function ( - message, - writer, -) { - message.serializeBinaryToWriter(writer); -}; - -/** - * Serializes the message to binary data (in protobuf wire format). - * @return {!Uint8Array} - */ -proto.helloworld.HelloRequest.prototype.serializeBinary = function () { - const writer = new jspb.BinaryWriter(); - this.serializeBinaryToWriter(writer); - return writer.getResultBuffer(); -}; - -/** - * Serializes the message to binary data (in protobuf wire format), - * writing to the given BinaryWriter. - * @param {!jspb.BinaryWriter} writer - */ -proto.helloworld.HelloRequest.prototype.serializeBinaryToWriter = function ( - writer, -) { - let f; - f = this.getName(); - if (f.length > 0) { - writer.writeString(1, f); - } -}; - -/** - * Creates a deep clone of this proto. No data is shared with the original. - * @return {!proto.helloworld.HelloRequest} The clone. - */ -proto.helloworld.HelloRequest.prototype.cloneMessage = function () { - return /** @type {!proto.helloworld.HelloRequest} */ (jspb.Message.cloneMessage( - this, - )); -}; - -/** - * optional string name = 1; - * @return {string} - */ -proto.helloworld.HelloRequest.prototype.getName = function () { - return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, '')); -}; - -/** @param {string} value */ -proto.helloworld.HelloRequest.prototype.setName = function (value) { - jspb.Message.setField(this, 1, value); -}; - -/** - * Generated by JsPbCodeGenerator. - * @param {Array=} opt_data Optional initial data array, typically from a - * server response, or constructed directly in Javascript. The array is used - * in place and becomes part of the constructed object. It is not cloned. - * If no data is provided, the constructed object will be empty, but still - * valid. - * @extends {jspb.Message} - * @constructor - */ -proto.helloworld.HelloReply = function (opt_data) { - jspb.Message.initialize(this, opt_data, 0, -1, null, null); -}; -goog.inherits(proto.helloworld.HelloReply, jspb.Message); -if (goog.DEBUG && !COMPILED) { - proto.helloworld.HelloReply.displayName = 'proto.helloworld.HelloReply'; -} - -if (jspb.Message.GENERATE_TO_OBJECT) { - /** - * Creates an object representation of this proto suitable for use in Soy templates. - * Field names that are reserved in JavaScript and will be renamed to pb_name. - * To access a reserved field use, foo.pb_, eg, foo.pb_default. - * For the list of reserved names please see: - * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS. - * @param {boolean=} opt_includeInstance Whether to include the JSPB instance - * for transitional soy proto support: http://goto/soy-param-migration - * @return {!Object} - */ - proto.helloworld.HelloReply.prototype.toObject = function ( - opt_includeInstance, - ) { - return proto.helloworld.HelloReply.toObject(opt_includeInstance, this); - }; - - /** - * Static version of the {@see toObject} method. - * @param {boolean|undefined} includeInstance Whether to include the JSPB - * instance for transitional soy proto support: - * http://goto/soy-param-migration - * @param {!proto.helloworld.HelloReply} msg The msg instance to transform. - * @return {!Object} - */ - proto.helloworld.HelloReply.toObject = function (includeInstance, msg) { - let f; - - const obj = { - message: msg.getMessage(), - }; - - if (includeInstance) { - obj.$jspbMessageInstance = msg; - } - return obj; - }; -} - -/** - * Deserializes binary data (in protobuf wire format). - * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.helloworld.HelloReply} - */ -proto.helloworld.HelloReply.deserializeBinary = function (bytes) { - const reader = new jspb.BinaryReader(bytes); - const msg = new proto.helloworld.HelloReply(); - return proto.helloworld.HelloReply.deserializeBinaryFromReader(msg, reader); -}; - -/** - * Deserializes binary data (in protobuf wire format) from the - * given reader into the given message object. - * @param {!proto.helloworld.HelloReply} msg The message object to deserialize into. - * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.helloworld.HelloReply} - */ -proto.helloworld.HelloReply.deserializeBinaryFromReader = function ( - msg, - reader, -) { - while (reader.nextField()) { - if (reader.isEndGroup()) { - break; - } - const field = reader.getFieldNumber(); - switch (field) { - case 1: - var value = /** @type {string} */ (reader.readString()); - msg.setMessage(value); - break; - default: - reader.skipField(); - break; - } - } - return msg; -}; - -/** - * Class method variant: serializes the given message to binary data - * (in protobuf wire format), writing to the given BinaryWriter. - * @param {!proto.helloworld.HelloReply} message - * @param {!jspb.BinaryWriter} writer - */ -proto.helloworld.HelloReply.serializeBinaryToWriter = function ( - message, - writer, -) { - message.serializeBinaryToWriter(writer); -}; - -/** - * Serializes the message to binary data (in protobuf wire format). - * @return {!Uint8Array} - */ -proto.helloworld.HelloReply.prototype.serializeBinary = function () { - const writer = new jspb.BinaryWriter(); - this.serializeBinaryToWriter(writer); - return writer.getResultBuffer(); -}; - -/** - * Serializes the message to binary data (in protobuf wire format), - * writing to the given BinaryWriter. - * @param {!jspb.BinaryWriter} writer - */ -proto.helloworld.HelloReply.prototype.serializeBinaryToWriter = function ( - writer, -) { - let f; - f = this.getMessage(); - if (f.length > 0) { - writer.writeString(1, f); - } -}; - -/** - * Creates a deep clone of this proto. No data is shared with the original. - * @return {!proto.helloworld.HelloReply} The clone. - */ -proto.helloworld.HelloReply.prototype.cloneMessage = function () { - return /** @type {!proto.helloworld.HelloReply} */ (jspb.Message.cloneMessage( - this, - )); -}; - -/** - * optional string message = 1; - * @return {string} - */ -proto.helloworld.HelloReply.prototype.getMessage = function () { - return /** @type {string} */ (jspb.Message.getFieldProto3(this, 1, '')); -}; - -/** @param {string} value */ -proto.helloworld.HelloReply.prototype.setMessage = function (value) { - jspb.Message.setField(this, 1, value); -}; - -goog.object.extend(exports, proto.helloworld); diff --git a/examples/grpc/images/jaeger.png b/examples/grpc/images/jaeger.png deleted file mode 100644 index 20eead3ba3377dadbe0b6d7b0204e5a917c4782c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 534713 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

Q-@$O99S>b`kSSyWR&nly>;wgQ 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%0A{pd-eX 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

i9$U#@N ztKPibVKB5+vC^v8v`d}r5W7y<>gj8oYtFgXPNrO3g@%1(la)SJ?C~E|*PX0bF?{=` z?p+k`f45LSErYV4`Tf~ui42&7hO*7XFPVdA zPywAZJaY9Qg|P17ClC9brPaKTraxGCTKt^LKm|MX5jEDz*)uMlw+$Hg(EX6ILLWNK z8<=4U-9vpAMd8->U6w8&J=uQ-hvj97z}7-Zd2LXqZFFAV>AfLoYQ2>i%;|d$&>$_u z6qX>dCu4O>>yIWJM&9*DDt#Ctus*Z|K}=M+g%dNEySb7Z5Vf~ROKteDyXeUEiJpY# zd?TZCGbgS$k(3Qd+<#J4O`xerZt#2sl)1L-MVHClcXqLO^mN7Jt!i#A7!po*5nAJC zT<|^~<8dXB-8$Nm79zvzH7=nh5`Th=!7VfUBIa(!cdg{a$7dUA?Jg=qk1e-tR|pXs z#4o4saT*;POQ=xIcRy33)-b}P%EzK-W4_Bkax=bhlfLE5v)w!0MmP-404v*&^XV`% zrBPix;lwLjgy|qUDr&~GK^*GT`U+hBQRYwsXRq;Hw#7N&*MQ%34*zkAQcUFH^W7%X zlGoKlwSX6FJi{F7l2)#!v2p2O#w*h51f#t;?6mbkmbfmbruTN}Kif~Hp@zMe*9j5G z4wISnxw@|&#auo(aQBm8H&8FsIJrjrX;E-A)}{G_S*2z}?L7z@#RZCtr;UG3X%g0a zCQlX+zdM1wk(|4tc@Wy>tCe)C)eiVpPoaSvet2&>i6fjL%vWRE@L6r6x2rCIk&IZGFJI|uqe)fy`gNiO9k0R^s}iuHl-$#Ia|8d1_TFN(JpELuo85;7gq{e{ z1Rxd@Ffpbs}=rxvC?pDSO7{9!|C*#s4Yx=ktL1{-(R{h|{ z4h_1v;WhCjBB~de7niwJ^qk6?_F!l*mW#T!+eJvc0V-Fn1Tm2Qz;f=J;p8OPiu=_R zvE>Xy%_XvI>bJH*FL-lEgjVqCM9RKqL@h;!N2a0(vS-{BC!TTbcd=K9 z113DOtyR0U1~FpJWBF&>>UqS3F*@T%7NV-WOQ_G;mzxH=zvnELL#ePKJ#qEawT%sd zKxN$PdVeLyJAjrDr@xkScu21_rg>pDhiVeWG?bmPmwM)tAT zv3fsoL`QxVqCz6sFs$~}l9D=Omfn47FyKtx$ZPpq8oIj;Bc?^vSrHjF{E!}y(Jf%Y z?21^>PW;CnqMC(FOLk(&KxGhyyI&@m$0 zakoZD+ePWv06OWDBbT)1qol;np#o20Gc?hoefgnmD|9%+9?{fW30$V(40bVq(2SL$ zPI%^|qldXm%5-waEf)Oh?y&9})B3}OvK>bj=%P%i$tP~{xSqb2D!F^F@TUj8>ZEDJ ztH54+V*6E-mE?LLK|KduEl);nNbTX2bkQTzw6C0sy)1eHXS$CE8vBz^WsB@gVWYzm zr(EHfZ2*4R@@#;pKx^7jL5tQTyRhC`G+jwcIZP-U_To(`jXSV`Q_yg3<*BOBrg`&M zUo;hKANZGCk;JmRHxNHCQaJ7WZ1!j%^T}kwn0-$N3-ZSMz8*I&RaywBJXwwf#lRx^ z&dW63Zao`=x5V)|hHZp!;+I6J-@kZZto&M_-@p7(ccrD)iN<-;Rfc;1v7zWGSxj1t z@j4uSodm;FCu}<5#KhhuI`S~ruN~{+Mt79@Z{`nV-=PwzXQwn_j-*l7EkAQeNEoFL*8cyj9Kb#VT=1Fqb54$WS`az znPAi>rH_4_#)WuN-UlDkHXvpKM_0QeY04}+Ll}$Hiwbaj=#bVnNDTzZW%x0tRD2%D z7c`D{7!tJY<4n+l#NF1x}ManffzExXg-%+b&^B~;>5=AiK ztQuX6$?~+Mw454&--9#!5A2~vPeuuJhwLY;8v9+pV{1&xsS|mAp2`jK;r@ZI9aMRA z9CajM^gIQPhmIUtK6WV-av*NW(Qez_7P^W|a}=RoLPt!laVpQ%N#bWdi@M0y$P;)h z`vxbC+?#urqJ07{H3ybz1ZO6*Z|UJ@5n8nfJxaurY$_onSI_&rrg$_p$M&S};+gWj z=)-GSR3wNw8E?&UTBM^IfkJzjTT88`6b^-%nH}PU;GfQ1v3HPbK8D0e`;2cq2}^pV(?W%7jODyomXaurv%v($hwCM9vH8~DixSu z?l$3ty_ho@*1Z%r{kVu6GZf82TIb?Vj@5S#t>>zvy8C2sG+leM}Yp*Zlh;uzN;J$qS8KcF3gFU^sfw0lrN zF8<9S83BOk+v@Mh zS!;L*Pb!9f!Wvg9ree{O%_yXu;rU!XyEH^`bTlwT@6&2f5q>9 zcBDodFpm|*t^*N|tZ3F!>dw7d>f^J%rB8pcxC*d>p~tL6Tx^xrrS-pR|s0$k=Df{M|!6*8o&lQ%}oFJ z9XRopMbS>wLXkL38>wC@a)oF(H-ItISXVfyK#Wr5G4SfuIV!8gcEfm|#-)8JtPc6W z-xYkxs`lVsorqdeg6gh-&1Gi!wk%_Qh7!ryh$g-;8SKoAwXO^E)r|{I=<58fzySz6e&X z=unkoWw2bQ*$QU>{9o+7Wmr~Q+b(>As2~kWrwAw@-7N?hq?B|?cXufvjUpgjN_R+i zNrQC9EunNb>@i)BxZZES`#9F~{@eR|{<#)9x$imW7~{Im>x@XPyB}|RM}Pc6gaaB0 z{m=K~)8Ka9YNR-ffxY8)O$O7YCQs5;12U@O9TGhOb^JMGa;*1)cht7%v#L}e97~5m z6O~T{U0*B_WGR&Ci@h#hko_^%QKu-%t027~A~Bv>CB{KNfh|G8@`>(w&Mjf8?L>ks zxW-0bF8@-+IcV@ZA_a7LYN9joMB%SrD2$DPveafjj`eMm?}JcNcHV8Q!Dp@m0vjy+s=IRvf}zeYHRG#;sj$Az#@UdywcC>I zI?LVg=LH(L_yxE7(aQVtBBX-YsT6BXr|4WwT>5bLri*XLH0yws8xnntc2~Be3If$g z7#3PBzIgX>UBIURenySc=x+oB8%Jti6Yiu9llnX5C4gVa4zKO5tNAS-BT45_q*~QH-lFVwp~i*Asn${UT3_*8z+TIl?#EwV|OWCo!uiT_rjsC zjMKuV#WHG2GHCUM!Yw*WuQtm`b<|}8Uv-&f0~bl+5a*c9Yvf15!JVS{_*SGJOm8mk zI9UVjdtb_@qjkHl!KC~wzZeI-_W&GDgCp^4B?YGlpJ6O-TIxArsh3@C27hs6Tv&bp z!`XN~%N;#4F3M!&%l?$8-Z99kv3jC=01c*?)4%n`x?~HDPn6bxmr26(4$MR`AcN?a zHp)g~`=!NnAsUD5`Wt4P5IT&htR(S$qKnm1?7FwT6?se4;g7KV+rs965UMl014TeC zNF)W%SF`J+<-b!$ z?o$ShCuPE>o*U06QO_xe*$>E1cX1P^V8t|txa z5Drn69!8bdP(wg+z|Xrr9GzG)8nF8#GK=Wh->f8fM6?!dV*H*d#4{C{WiyM>+B1r* zmkvr7W!{c7A!uaHLThzyV1dHtiIGBh~< zLQNc}xhh5#vtahQtiC^;vZScCcaR~HjnO(_f|E7xpa}IJou!FjBjBuM-D-)(SN+j! zI0@9IiS3(!3md{rhJReqfRAp7_<8_2SXHmfe7u zDJinti;l215AibmCi1g>aq1N0I2I{Bgk*5yvOqFc$wVPN=S{~+zey$$>uo|#P@}q$ zJuLoumxn>ZmwqY3I@H?CC?QcIUIv_l>iOSWDy89@W8XU>N(dX{q@z13d8X>DyMLj# z$2H3()n|3X3=O!7b=)#ti!D34Z%Of!$J?PkqkeXb^T1!$tOhg9Wf)iy` zpUkUs&kOOKso@ecGUT$p_-gJ8SMiG5w`Sud8jbmB(c2!Duu6wUj&~5UJseHc zcRc;xl!M(v?Q^W$*}?3`%pI@Q#3Ikg=m{4SSmr|-T9dngkc1MP_G@Qpd;Ax$!7}go z`S&pm4F3UZiiY@@unHYvTa;!#NCo|}Py+PWcR%gE3v;_Cx+8?qtY|+kF;NURBczzO zP_Xj~YunY2QlUx2AOxycUXQ3q9zV&K{PX_H$QrptZA2l}^SDp$etfJ)>ugtkg`_Yh-H*oiL)u)JvJJ1|u8)AzThV}wFfMDdhwpgW}ij3>wph_8NxJ9ojb z=DC|5>Qn7K8e>KjpDGLOa~9DCaSRTLrD%06HH)0scLVyyooaa*KyhP7l`G0kLxezr zi0Q+}9SzTat-p^wbBYw#DPFMydBLY4b79A)mJ!2%)-niZnJX_|D9mXwDbu1!UN8*$k$Le+^@ctVss+N3W5mju z!7!N~yD(^^hqcRGkH@|}c-uz>Mc0~))UN*#n?~jm+ne3sY(9H*;@<0mn1v4~q2P)$ z!8BbZg^8e1lol+k4C{CNp(vijRO~IT34xCWp543<7ei)36lT$=Zf1oI^%OA*$)M1S z+22F#u_Ky0?>hZBvhG?i?G6r@{11ayOXi#sixgAWH2c!?4xIFgxpV7G)GH3J&C**v zV)2H>^cNKrSOTyJ30ajp!|1awHUX=%rp+=L5c6Lx#4-%Ofx?z3M;DLG-(g{KaWBy5 z=fYRg!g_-im!6%8KZm3|M5}tL7KmS2D;b-lq6H6%!Z`BR1%PY%vADc*8^$I0RFoeh zFab-D-KUxM*Q(KDz^ZRPKAj{WM^?V#AC^7<3r#9hQ)a{%+2~%g(AuQY4X^v<7rsnx zlo2nA(iLyMqDf`rcRUIkp@Z##&w%lxfozuhV_LRHVpFFM?{JPw~M@ zF3~ywW}YCa^O{d1dFhf09e2ps7+Uc%mYetp+(i;Lys)WO>rp-=QWQka>xb4$5f{kB zsZt?=LkfPouay4Zm+h?T05@P)@AY*ByZ~7oox&YYnyjkZcNmCJSLYDCAE*L2&+HNH zhRG@otcA6L*$Vi^e+C#=j&)ITm06-~?>yEW`#Jy*q=V$JREuw4+UA>l!yOLt)F~eM z7w=q~N9KhOcEY3y`Gbz*u6t!KE0qI$gmwuJTjU2INvM0B7Hyp#;0=Nlir?zLhk zvwUg-@b*WD-Cd!lEaocMezp;M=TKUd+&iESU~xw~M*BpB64IwUGLQ=#Sc;oucmy7i zAqwa(;`Qp)@o(`Ig5ohcf{RR|-D7GiZTPxYQ@EA7n>dz7DjgZ)(a^f6N|}EjIoNBW5+g5-zIUZ{F4ejJvDl{R*?(@<}Tbd)d(`Kcn*hfCn3yg zo-nX&RPk{6PnM72Gk(}D&mMQBPN!P40b;?$puwId;YFS z8IZ39(CH5>#4nWyAhy)t;h#IJ-+1AyY3_Cy2)N}7+zvLmd?+yc)0rT1QVS!P5jUmQ zpE3P&iVO1lU$W17?ziz=@zZV}`NO#KgBmdFxok`FDhNk}(oHVq$`L5&n%mJyjs+6e zvrR$AnZ5dJe74G>E;=XfI#40qYTs5Yhj0$Yx_zV8a2Kl4)U+2bG>+byx>yggS=6*~ z^jmxI?(^&ma{5{7SLA}>{P%>j8 zcBf5o5?6+w<$L=Sz)6u;6qdu5L5ZEP&q|)qk+$cmg76kgLcyH}3|5Ird-OEc(Z&lh zZ3awSvcvjgYV(VNp;BGhP@BNp*G82NRhHUY+<*EgiIaD)Eo^gfuZOIJRL(hh?MZLg zk==^L@KJKgt~>iiO&M6{kUpQ$vBl6$gLxTFe(99<^SaQAL^ws%pve>3pPAhXey?Ws z^Bq5Lx^KF&^*m#y$>#0ZTcD>}!6F})%pU9yNP^)m6P`K(2$Q|{-Nz{RWV)Nf>J=3Y z30g)=<2nF00#mG@@i7FYSxV`UWDQmb$%MPDn%r-6C2 z1TWxTm`uf`E=b%`O(o!PT zjnRkqdbkM=b_(C{ejNI|Qgdb#DF1qrIBLYHsXa?8W}+Mf;ApEgmm3*OASr8rvQ6@U-5Pf22O&LP^k-k*xk!MIckic{jD6G~^rN-_la z^YFPYkB@#Dx}!A1moZ()DCX<3V?1qhk33o5j=ORm>~?#Ixv^u+Itklreg)%H4%FF2 zeEQ3|uc!X?OlDm3B}V$0G;P>ls7hPI>*I3E(H1^zk}d@_5G&$jok&p4iNM0dIZ}3X zoshg12)+lzo{7pv*XxyzjaY=)(;_5u`%Twe#;tXR4*&-rtD`HcffZNpBXoMsp}%8= zw+ZMP&<`sHhCp)Lk2cgZ&AMSFHI78b-Q-CaR{eAvdS*T_aCVERsoDqkH$QG$?bUdN z%1edvv;dTh)0JYK7bKoZn~%LSDa2JvZ^?NKMwXl&m*0t+!N5Ikd3BE* zpeKPm?$8M_v{eK(N)0dnh4YU{H0@sz_tsGeU?zRWL+M0}NVn$+5s}WUx~9X$Q$q}3 zZ^>OMPd(XrtG{8_slY8{?1n-|7+~z`nHgxXB8Kc^EFzQPPGQ7Jt8Y(f7dys14&EGq zbO;)EP&Rdk#ho`NBpcnzK1+&=Dn_3}x6{CqcZ=&U-F?a|sfX>R0%ZA3*U0PFZO>l_b20 zO`KnzXPRh!|@|OwOm*i0|N4P>7`ATu-6~5M%-F z{C%Q3R22j-%<~W-c;Wt`zEY^8eRZ`n8D#?S(BoPMmRV&%b8J4SFG{O`>|PdmT2YOm zTCog&DIgh{5{F;6PH9p>LpcZ9L~`HC_sZkL0&Q;>&0AmA>oI}mp=cK}{P z+#7j@0yD*%7dKwy`H!q|Z>bWx8PmcPq-BPgHeQc`-h*U#Fcutrr-~Myd|k9JzaIEo z^X)QA#Y-%DD1!E$p(H^MZ~4J&?U9-ir-%U3HzWJVCSBED#ca8v^U`8o%*gLYBsAel z<~6g<1>ZUkG5U@@9&deUTfRMr!@5}gO2di8tqL7x?+Tp*t(*?K7kyaGXL>Lr0t&4w zlav!lh!|!tjzIZ0PTD0_1+Z7!-F#y$O0F3bnaz3m(&ibcB`V&@PK|}Hrr>MX$yI)( z3W7Ce2D*LA)sCQ7wks-(0VlO_Yk!^7W@sB-PMk%9ueW% zTbG5n&?pZm$#yVvyxYUt^{GD)kc*1Y4Wz_bQ{90PS=3IQ2UH7+iQR4zPC8#R+%+Ht zX?#DvN67SsRaOfsTCE6cj#jt|-LXks<4-t3LA9Ge*1`%;mg}J86&-!(ABYEmUU2FQ ziIDzYK=_LB%w6_n?H~GBxZ_1WllB5FA(5(LNDAnVKWdBX-^!*F8%`K&v%#&nkEL`b zD`Vt`(c42b2sv^b>(lK&ZpcE53RZxvKm{ZvtC9mqzFoBaY*Eea2|1{?dDu(|fN%>brl;1=#2cIw+6+-{SW2h(}J0Z@yn1~2P&}kp~?C-*Br=t z>xz`(UN$JRCx!)PQz7wWk_=_b`BGXIYB!`{n6 z-H(inLLOIQqHAX**m3vTjbN5VvOCIuR1s+#)s{eW-0OusZ&atI&=(6M}PH{g)do3nfTrX8--X-b?=e z?fU#%SUO4OU&d)T*)V~1&Es|}-V4qgL#~bw5jeuE_^lmqqd= zP+d+FrTOJJ{d%bzx&akwn&5e>mx0blli_=~?&>8Rx6@7p50s?Tf73eLMxR9Ed{L zCl4~#9cGae9~W-WYaKtsfXz#0m?Azx;>ylbgc$)o6qS8V&g68@E;J7P0jAqsB{)QI zUD+~7TOFdU3?3Kn0mS^{L6+6vj5JAA#it~m$#9FZGBfHyq>vPCeSpYu)|1H>T9gl7 z6v);LCnd7VeA)>?!@g34%|1e5Nxw?q6j^?Z^(LDDK*1>9&%drdn(6 z!f!vq6TsqNQ_AwTpMVN^KM%M|hm8It!!iiz>vy;&%s_h(knN+ul5I+IQ-mE!Ez@Ig z-Fb)(^uetDd%bXt{XS2~6(B1F zO=tc;W729E{?RNbcRBLQ7PcXB-Yjz9ESW^MJs3WfJLWHbJCds2IC*BK1%_d{Z-|+# z-FKmEW4NDok%iw`e&_1hmuV?B*icC9t`FGM|3$j)$3)!biwCsw<^e0>D_Z$H#3Zt0 zH<158Nx_+_JWn1aFaahlg@!;9*_oh}c8}k&omRauY;>6O1p-CX^VU1BQSES;)D+YL zt@Y<#gXH5t>1DgpFmZxpv=!zHkY?IVYD3i^VtfqTN%#zY7(HqKu_IwacSHh&&H*LDvgDx8e>c|;}cHgh^IWLt1eRs+|L&p`UjEz^EEC+GfJ z79npGa~w7VRy!5O3250dJO7LPw_0a$Fu z_D%IO97N#AVo0CIpI^}ZJ|AFLZDMCTwYUY*%cp?4kwCA?k;BM|15Tq*s5!8hb)9FK z0^S@}B6az{i;}%)Ks|q(w{Z9%?)Qpep1FP$VhXlaDRqf-Yj?nN8#Ya#njbQTy`6mx z7gtcf3^XO``SN)bA^E4vao+pcY=}aUo{2Wp>!1{k+o$FBs;wtM(~TyPS0UNl8^u;i z+LqzqaJALE@4L@m!0VpuUr;RB-Rdi!Qf(x#P(mmSnDFjUQbb8LBv0~Tp_iKjzL~Bo zgk#x_s2HM;v-6JOAl@~@Nr|Dv?RH{)kC6P5^A75Yk+k6tC}c9Ew_=+&ArR$3WC)+g zfN`bSKv7KZAqgLEY;?%ED)1`nk|Pzk0H(Hy*Z5d)5fULf4UbndY3<68v?3ba#bdsm zuT-`ur%t_Lo6v-Wzen^-TxhF0NwUpNgv@VAx31ZdgpHVknkl@ccT%MJM9+(3 zb>{~ch7rfyGSFzV6!K9GM~YqY%;ckEQ-2_6Y68$+S>$E9SyJ7DblmH z-YBdyNMc*uPJ4lML!bCBl9)}L!J@SSt_~sOqVF-=avUg+MC~Mii1v#(2Phwek@USo zz7LVDtUVsXbqR)BkEZ6>-lFPa3hc>x#9*8Qvlvs!*v`2wh=1SA0?d=OFq*fVMH{@@ zT;q4&wJl>L>9B_qBjBo*BT)2`Hu?JmBFAAF>8Uwk+Hwhvi0zXT;ZrIDqldE!#v>f> z5U>_@cnWwfjpM^=Xpuiz=|t?3)2gbB(}sQA#%%Wue1ILO!=LgY^P@QT7GxPIsi|h4 zF=??RK^wwKmm;cb~xpIQ9VJr1#BywxU6K+%r{u{4@1Sum*rHf{p;1@UERob zX4VX1@b#O*1*(sSh;0!;3ATfS(G>N;v0Ny@J!M-E)G_j9w>tlQ>ji&1k zce>3%(~^mPkM=Ls36P$gJV`#w^Y1CXCPGe1!X@@w2_osW`iwTg?uF(h;Cn|2f)P4e zCCktginJu(A4vXJJ$!BRRllAM# zmseVTm{h+vYWl6K?*blcb{rda$B3F)=VI|2Nrd4AY5g#N-Cx61VW#VUQ3O60cU`qq z;?jV0_f_S#C z>!pBx%|!~76(ND-EPaqa(*Y1`P(Dg=%H#b`KnltpQE^9Nm@cK=cP74Az+ESo)&lnI z{tWdeJ{awGMC2PzEVFzw+o5~so1UIeIKnJMS%=p%1vB&nB0o+T+ev5O3MFiIi4R9H zxy_>meJDCskJv$9txJN? zUsYc)Z6=z-{4}?|*LxJ18e7^V!yX5w>#SfxRjTANlIIU9O$#JHaFP_|vLeZso3&x% zQIX*0#qGYmB@gB8GTg=N+N~PY|H5nV5mdeQJnD~)Dix`|9)mnzv>2a5_RGjk85)W$ z{8@VBYdc&y{G5xfvBxNP#9+B-T`irR**uam$Wd5wWg(AYZ}lBqpuW54%wop1dsG?} zJfZIguUI7KR8YSW6jg#KEBjj@>}^fguz9{cxd6CZ(O@=WX@9R#3NZ;tp!hLIx&3m8 zpi{&&UA;V2&e{Wb{z2%>U=C=($tnqnLuP5aR!xc?o@w@koK<+V_Y5Ctd>K60Db0Y` z?yP!WekAn%+=HuX>&EJBKm6vSd=5XEtyr>J{?%xli2QY?)NzwoTuI8Ab3u8g6VTR< z1YX};D!c+9EPVV22=J5!_ePnl=Ta83UN;8d-!s76Q>42_tH3+g{&E6pHKyK0wRg)a z@o1}$g8{>xUy-y^0UvwE!h|lIc#QMkH-YFF`vw#cnpuq#ERR9Nmul>y`Q zPcoh-gFhe@L$C>27u*_x&!6Fh;QKoZbNI@*|CA5OLLL}Wq%)G->b#a6f~CX*=6WWF zaa*_A!G7WJ@rT3->pfB0jd>BnVf%6y>HB`!3=sWw{Z)L9-Nni^rUUW~m?fsKY;XK1#B`fU?DB?54|y`+S)o4}k&ul3$SqirMOz8!vJ}*ijFJ7U$f83+_sk^J8G=VE zp0v5f_NDB+RzcF@_Mh2_D*xU=1?KpW0znVk`KyhJ;G_$mZIB4^O4WW?5m)hx zkq=+m`!V3M8L`k_!TJ(sw=I0v*EYtsl;}z0yPvFX8@Pq@B-Ag(w%(8Qda#hnW>E)`zPqi?xn1Isw4qYNA&1itk*|KWFoFGoOriOS&)WrEPQ@F?8w#TfQ*gJ1 z>ZdtMH*T&9cJcCz0F)Abdo~AI+*UIRA%84gde)U?)=Ko6a5Ktr)$b~jlD9~) zix76})^8;>v-EX{+qgu0S#%0kpL*A-v}E%k?L|=A=4+^4_vkFH$REkJCxT4?|AN6t zWz87;j{W?qILpY@RdCptazP%VyV+wmva!u;w%d$>M(4S@;nGrAaGG4%*^s6ggiiYk{%=QQV)p=0m*-r~PCH3R!A{ow}o_~3ffDJPtD+6`?rwacdoZmJZP(ESpP(V{mFi3oBUt@u}hr6epvZ%&SM@Cf@m@V)^O zgXv>8Lyz9}DiaL7%KG(uSJ1tm+tmDs?>h|*WM$9Jeym8>MBmeNUoi*R-=_Ei+95*{ zR|Kt0@1xY8{5^?-&WXDr$46m(g##9DGex9G65N|8$f0`*~NM(q{$=K+d7|>x;9#!*>k$SyCNoaKr#}E zq{bRrmL;K3(mIm%d6JKbOiMlmM`SJA0d2F!7vi`WxfcR+o2>v>N}_cKmU7c__qn2G z*9+tHrhin4@6;N?GUeSfuI6iPN)W25w51j&^{?XOHbEcaR5yM8^HTU080_kNl{$7I zge{z)jJ8$;5OPVvtJbV$XI<{V792G!J`m_+7$~Vbwz1`la>ZFx0IctPmi@dV?uE;7 z>pac={x$=%PA|K43dgsW<7nc(TN~BTt1Fyz3rGN(-91+admKxynrLfUFjSi&-8ms8 zTZdsOYI7eOO=TtieAqJqkpbx=ws<3{G6{yHOz~hp4ODso=2}t?OK8dB6a&tm>n8Na zTRh@ojM?q7V(HUL_%IVk%?wDWoQ>$FBmk(!qS>5^8QaIRpaXHHxjNw9P(ue?&fftw z?V4LwX_SbZ>t7&2&ksHF)0cWXfS|+%o#w~K_`n@&_|eEmX28%n1XWStkQ=DyGI7gYgu#4Y0>15ce{% z1)N?-$S?jIw7Kwe;1AF4rE{UPEgyM|!}^Z|FE(obwW*;cLe1*K@@pc0)9L?mB-w91 z!!&|^?~%-7fcw0C&&_1sC+*wL=7uzF^NA(~Tm`GMHq^8dxMEV*cY)0GA@jP2rtgqt(poA zRz|-FbmLfvAZNj`3h;X6?TEs*6=q(7c$jYhbs|ZdAbW8h{PPjiZA^e_V_T??+6qVj%#UFQ7Kn?N;`+WNjnB|vJvVL+X#DoYvi`O7GuDNP{)VMr;Jw|n z_V8TYgn$3@T2am&mjBIk0nHB-oQ>Sl0<)b(AU;D{Du$IB%x;99Lt;m0*z@g|4!-FY z{r5}F%ahRz$T+t4r(!{1M>QFws1CrwG6(W588BnAAMLUc|Gg@Oy&G}BvV7Uzm3QSm z2jp5${u?`lf9}MfM+p0Q+*|p_r{3EdVlPZ3AtL_kU2O1zgxh0g|6`LLU=i~TCfgUF z;r)BnB{vX2T5VA`Hpqu^`CD7 zw(tKxzRv$oKKOp*zufdN+i0pIYq4IQEt;w_9u(jznI2a$U43KF)$}2v*4Qb>nl7N8 z*92Hx0qR%Ou&eX^FBJU0{%08?lVlRTK>eJ!agz^<@oR)+)ii6iZ?OIfo}rD*-NoSN@0W%W$~O?6mRK@$kDw|IhZ?X^p@A_TL4~|M9DNKf-g;IZ^-7xU4J*Ow}_Hk{=0% zQ|CZk<^9mw#qxKfMY>8n+d)IhgOj^Q>KHbv@ zz51BKLbtGBsdxBf>TA5fBH$m#*FIvubfKA|x68I{TN+NeV^Fns^k3+a%>^tdG z4)@7?Y_h_NtdC_AL=*A#Gb(j7(QSQo8+u25oV$)sE9pn4*q&5TJf_yne#9m!@~X-6 z%+<24FV|4ObiJf+-MM#{Z*y~XpMN>t9VGN_9s&m(_qx^7V@8xG!iYHGUP$*S5dP60 z&r$Bfe)gF#KBI%h1`Vz~diMLDdsk8?!;CCsYHu?BvnyTwR&7OGSy*Yd%2zUJA4H&qaDdSxj#2g+X4ALEH=S*KJnkYr8wcjo`|=+PD)~f-rw?C zT3~k#|8s9Fz%PuQl;8Az{`*G%!@K)(7<~P_pMzY-3Cb{b=k$^LfBqpeANW~MZ>5#Y zKYi?1A1GM};kxj-N{`sn>%z9yu>w!7-Wuj|=%VXchYeRZ`XAoiTods1mG*zco%Pbg zV)^AwKm7TJA4$Q_43^a^Xs5`idu3oF9C~(nAfqk-yfAgZ=ic-P|{n>)< z5wp(Mg(D12LjLwxN<_iW*5XkQA79;*f4aU-z`in+G_3wX0mhD>G5+SyYi0W!Ty!eY z1ylXsyl6u<4cO%rlj=G)YY>w=*viEJJQnY9O7Js>USHR{SNG(fuCM=WtN+f2!60C#qFcBtSf>XNTC1u@G0g2XeE^EgMno$+NJ}SpuQi&bI5O zTCOSamiL$+AVLFmTM*pyFnhzHyjr6KWTP{xj_l6^4^lG_tXuqLdS*qO%LHN!8UQZs zs%q=zKP#`a(WyXThR&A)CksVPwnnL{`%|DcFn}VFz01(h;Shv;x=y}Ns2=aJ7=cXF zo<|k$JzD?9RS_(_yanm`*wg4)R@r$9V!?BvYBm!5%$my29(3IPLj+QxN-O<9* zVg04MTiKQiFchsHw;PlqZh2ff3Pb@0^VQDIyWk>~l>o9x_?0fw|rMj4B?$Ho5c=ABm)yXkTDIOD2Jyvj4f}&ikbg^3p1=f9hbm zzT5?`vs=fGASxL!hUJR)pGrKPTILLM?$+CB?b?B+*K#nYgfkzpw9lwMWe+^9kJLbfyX ziv)(1mqe#-LfZi{W*8v-*#KBClU3(C=fJkXO42A>DI5iZu^Z{T+SHV7fF?D#WSexV z{%h4?BN}A7^x7tt7>(a2hjQ3&AS}g=@s!FJdo@t-W}xzs8XCj^eHo0 zQqp*XI2XIUv@$<_(wc%?q0hWqXvj|aUh4iu(A=|f?3&ITZ(tgc#oDR z$=TVjH>`SfH_T%%?V$Xza?GPy>w-zQ-JZD1^Vv&t#+t3BFWmLdIcJ>Uk8)1V!;yY@ zEcXCgrI9o6o|p!l33-NO*i1l%%LWCt2eHqlO-(-UGQeC~=`{!3KyInJjfoI&d1fN|NRep* z*{i&;n7S_GIx!e~4l;_TOblGyuM2~hx5~T9_HPY6&P#nHWYsgE6r3^T)Hf)fhDPJC zABqkiQLCQ|-$mhJemx0{%cFfa-KfCg(Z)lmS=HDy0X*6QhKVw+nt627-1|C22&a(8 zK`h83bH{GZ$Luba7Rdqef)*XY8yc&5ew!C(%R*d8u6m=j8}`v_J2f-3Ou#5(31Xn^ z0zr4hulPzabu51YpuM()-v5AGo5%}-U@DIH#dquk_zS8Zkyv6Cgz#RJ0TVv?yoJs zI$2U%^SZFIhP|R~pX-b*%IzD0&;Xu^!La{36!;kj5dd{mPW*CThq-;HiUVP;9_Z2z zH{v^L#6}t+PtzW-kTyz>-v5%X#DNV`5FDfrP;bK?z*OZYirXpwwj+8+(pc>eE0;Is zBOUE?AmSWLJy$v#Hrgc`t0C%(JY_&YIg12`#Jbdc5pLE=982Gey$JPVdmUw{reNx4HXH)#xZ6Sb`GkDt99MlbB zMHuUcZ>d7x>WbDD_Z7G;()+6#O40E@MCkvNlmbcKd}C$^^oZ_FeLUcS^0$W}|6~iU z=A+wi#paKQ$vQ?MT2Z_9V0U83UIE779(-@UrTTiFdLe)Kr*3~0n<<3MP4jvPp(>RK+tK3c4oT}NdFE9mqzgoNP)I()WXZ_vyWe`5Cnf0c@i(~k&r!)Db zo%-)jXOYGV#J+O9V!~AOJl~JwoBko)(_`te>!9QXiAT`ABW8hDJf42D#Mv8UBfR2> z_PRrN>XJ)B!}tL_#~aCYLkzSCD7p6lgb5$)yDkiUs7aNFsRjnKN5FJ>a?Y{G&@-hQ zp6(YV%#)4I;x1tPlZH17jTn|Jb(zUw4EOnk>dTpFH_e;!`le`KpkGb!X@s)`n3B9 z75xP%0q<;hngTgoyP*)&N=21D<`%f* z%02XtY`Tksu=|}rP5Nqht(uPxK-{$6kSGnku{2BIr(773npgM;*YnK`?7}2eFW?@tTP-*O2XQCaqYv7={uyI27x$i1E%kHCAlc8p-X z4^lHKSNL19Z+X3L`L3BUkR%Bwbdkb^*(W?|YhVP_(=W(Ruaj-Rm9V>GSr6xDRU3su zIGA%HM@sn#$j>0h{dk}$dLBN6BrF6p)p5-jd}dFb+o-YiG{8yHS{F9n_XX%OsaGTM z?!)NhVy21-@av#5UlZ32!n8KsJ$gvyp#%vMoHsfHw(tesAYfOOQcwt1F zHpZNqsMC2cjX#CaXatJtAJr2?@{Fv6pAo%`$w|i5I+~tQTyyXGbRD=_?okbC6;Ghi z$~bq*$6mwWPA={2@3MN4UXuOkPPp%S9(XbP5s@p_YY%6{n1JFyI8=lHzGS~xXC!4aZ|wP7)f|Q>)|rn*!yb^ z-havuaELMAL4*{zc=~}efY-=(K6vE)wJxLp?^mVcIt3?_ALsh3Aof0{W)AT>*SRj- zFLCC5c_)d-kLeP0P2Xh&&mCF`Pr1OWrdQ23JPpeEnZbCV!w>qh4S9+7$OB6X&Zqc# zgGi(8lK17Xtg-a6+}90-PF3iu>Og2gEEM!GJZyqUF(Qi0{k0C%giP3obI(22^vL;) zhB*#SK}9y`wi4)B4i;+0>@s| zy{OvB>5UN*Ajv7~d8lfUREFH%A_T^H+~0;ZQV^4e-7ltG|CHC>7KkM@u)BIfF;Woc zoRfRu8~GAaE^h8=xIh0V5UpW8agA>^w}j~Rlswhk1p=m10}k!(gN*q1c&4*#)aU4y zPR$1bB59azbJuzx*FiD1+h<+%XU}&((F$ZyrVWF*jhf6*z@IBcVL>A#vv#1mR{_NQ z_)^o|brJh-&hN^9&lI`&TE8RvdKy&xncpBleAjGM^Il~K>c>S3H%g0ZT3Fg0oTUt5 zRX}DJ2MH|Joqbf+;52b&-wY&lgdmv#7gUK4(z(=MLOpWv1@s6G;vb(Q%~@2;`}JsS zx{Ue>8-6^*4n?Q>NtkZ7?q$VmePLuu@;sLGgPyk1t@x*hRim{NdMN%cvIK7!)PdKM z;rJFyTk_liIDF#rt}$rEa83+6Sp9^AGRG$7+Sk^TyP!yo@=&JHJ)q*uYHmuU;kiw8$K~V@ks;lIA=9h)IhaZy#yuLj3H9ApszJUCkvS}cl3gr z4gaf#pgL0?Bw-NAyc!Fs9@n>*FMoNNSAw@AiD_d$1|cCDR8XzOP}LDtO4^HRW>XEq zGNyCuFHY8VZ=e!Nrb?y9eB|bePn#l8_#|VX9WbspCO&~_HIwBDwDT4#j^Z3hHz0M^ z8LM0g+XGaG{>cdwA(6;cOIOJE+zB=kagb~X_ z%0n;8Lv1JSp2wSr9&Us7&lqR2ueuF2-rLUIY~Bj6qh6&r3Km+s!Bz1{w1KgH`Yyo- zJ>*#_wfo2IoZL4KghIV}w+`QvR)<{@Ut-j+kCD}po>f?B*H?SUZ@VVJTaO+FZ|W() zx#t4IB87a^*M#b*58l|mx#Z+<+kD54=Fv#s*|O<&5HTC}>eh1n-MeoHW44>QH4l>X z&HQaqP~FbfZk`Iq2)0=&g!&4d^_3F#{fI_oiUX`yz5skS(SbY#}Vc(T+~$x&?Rr zi~2~|PPM8JR+OKad+q<~U7%)nG9ALd9D@B9n~6s8JVYjN^(;s*;Rf;eXBS63r}yO3 z$PS|6EnMOnB;=l@ldTk@Iha^zD6r0(MU8a+^4A6NJ2egXy8z=!$Vvp zG(_3i9HxJ(+mVvyr28<7;KBzEwZsL_Wsv(`Qm+Ma4&{u<3O^-zHoFP~GH$-hLSkEIU8ktnsXIO7M#(omLmvB^Ql=ARZFYWR@ z_fS*%g-t^B!n(HphcIPU z!fj<7k2!5Ig)NYaRN)M;0_+^Sx&`(oIj;z30=UE(w2?t06CwdU}Le ze{kQa54Hk{S(kvbb60(~#}a{&8n?kS@yXBbOEow!8U`wWgrC#$XAJ`SPuO11!of?)cXbfI@Ney&?_AH7s-Vn;IP}#MmO} zL{|6nx>)1uz;SaPsAXHbI7?YUS4Mjhl=o#KyEaj4H+J;)s$Nv8RlEek*!)KUU?!+5 zw@ly2DLESY#+CqhQVEWHi4$D4s%1%z#IQ(TrBtWH(tVkRDUtbt4H2;-jAd-9{Q{(H zlsSV!X;kI*0KvJL#Z+3%`ZAEOnhBl^ge_^6Cz&Er-1v&M@EwhSf_}L5I5lMHhGA63 z8x!Z4Gd6STSw?-Vj=Na&grk_|m_=&F)8BX*;1eRulIdMj1a`uuvBYn_x^JTFB_QQ~ z2+lRY-g;cGf+JAy9Zh)9D5vWI>~8WLD7Z9tijebaSdS?y~k3Emg{ln0bUUY0NzH6bv+`D%ae(ydo?7N3~SLeD% zEHfgJe9^5A`U`R61R5>WmloHNn;K978=}!t7BQIKg)mYeuTdL2F@pme#zW8IYtX$q!G_> zkG{3mGe&<)lOwEcgijYQU&n0Ak=PH(1-;H4-2cigy%WPo^{z8nCBj&_8&5D;>+=_> z38r?D_a7OllI=hTmGedP_0dxdQEkhfE$b!<%o-9ufyPFp#`J@1?(eG0h(a-xI&b`0N@S&ZoI8%6cI8EXtRh-SQez+l_v0X$C9xrF4BmQ60BtpY*NAz!Xd znbg;Wy@hyP>6N{HWi7B+>Bt83PY~}o6K9U9Lg8B8( z)0wv{G+)HAEZ03&9%^y*_0(Ry_p_;s$06m`Qjtr>qYjj0@-D1{Hrj#IOPr?MUvy5|%0?#S-) zCTo_)ZV2Q;Y^9%+Q1fNFT22?SU;|05wznr21w$#`E{7D>Fr_3|$;^>?y-a--+_xj? zx8i%M(lIsyb+)>9nP0CwP2|k%d9NPss)O9{e3DRq{IC7mR_2v@N*C7mPkJfp?NgX0 zedBWYeNM*$v8GY3L1y@8^o4rJkose1TYvtEs`QrV~EZi__ zkN3%8gkTg4TVgGte-6v1K1vnK^<$mSN!#t%uz^0-{0Jg<&mZMC%-LjKK9R(*hD8(# zx+`UEx&c68vW=l-v(in=>B1GDQiGxP!ycY3=bRg@#-#MqhM!MgxE8=N#SNsR0m?s! zyQyGS5HWCn-@2{n{Iw<=70gRhscSeCgzMokN$pVFV?8-}30R0rP^*kdn;r0&PZ zf~>Mn+AakB;KYscvlN>(y)R@v{ug2I84g#Ywha#kBN;IWW}=NAy>~|MT@pc*FiOg6O>yM2{{ah~7)SWk27u_q*Re?@vdLBR^Q{T-SBB%giQqL>On3 zcGtUSK|W%djxljVYD0X#;v&kOf*_QD;_!}(yDQG9IY9OFe@BeGO9IOdw#v4Oga*|(*wWy@v^8s~WAgm4_E_;4Td7sV5WrIO zvna8$fc}Yeo_kwgal3M;h^x~dXu$h9FqM41nw`;(CKLV{rR}k z5ooZKdm?5d6+*+|Pd|{V#zEq-BsnW8_~Ombd(ew?Cr@A@fKCd!%&|BV|H*&)hd<)W zR{_`LN%yq>T4~D`Kg74xO_^S&SM6xzzK-vu#|G@^i1Aa zot&Yaj;5Xr0kTWqSfG7Vy!atZA#J>H#%jN;Bf-9ky~2Wk9*b%6?bKK%(oStYU;Dx2 z;8;oFQsS#|cmR{1t?5mL#}9qv3!a$ehOWPHckX>c-^YOos?Y~s?QimUG_$?PvJ&xu z@#3~Lt4+g}w*hYAU1vZC4O8>M)wDQah8dHGCh?+i1f!)mngDaTCU@xvFh;DNC73y9 z^kR=sbO7hjij1~@vE)CX2+v1y_pXI+Hp-7Owd6sap7F6golST6$r$fn6rq%<@4BuR z0c@~WgLGKEi2~*avA~5#_o^yQnz0L73id%)>xz6U5&X3{ADhFXLQh4FLLNN(X z1E%;5(u}p3(~>t2n_ps|{FXe=>fL^7+U@`L1l0?ZEs(D_`c*}+Be>Y(j@$C4-X;sD zh@?ii4uhK`e75%b#s8tP3~@n%;8%zza9znafCvM&PpMohJXS`&)H;h#rah5H1RiKI z`p|-XR`1hH!BaViUMYWirGMO6ORAfXcx~y^_&z_Zb<FspZGCbA12vG1ZBME z7MF6uWU5>)6FPG)tD4A86twh4wQ%5@Fz}aVUv6wj zId$o(btMbN+%BF8NalxX>6Lb;Z3T>KJ{87+$z#WE1YCg4e5}RJ4>|!4NwG+>MLb`ZtpQi#<cd{bY^0ixL8unPVoGjAI(kAFJXu=@w3XR=6hQT#jUvdyEpW4{blP+~S z&I~?);lAa;fwkD_0EOLF16q>47s}L56E`SZ0^i@7cu8t-C73llxZw8s+6p>jkMJJ& zg`P~0n$0F(jLh}Wz=0YhNEM|&fT5i$ZMsJW`aa1?6l8C$F|fbBGN2iq#;*-XA0FRY zPj9R7GlU{VM52mjq!1EK81$sS+7yPMN0JTZL(J+?8gQV~JFp6#iu zYpT(N{*B&>Y8{%FS0o=Gty?Qz`8w;6O&gesX8!7jav)gs8pI?So3UNfHJe?0(H{-q z0i}1=2t;~i(2W<}vd%IwpodLZ7fri8ABd45suUCE#yxjxdaCx@(%@Xko9?f$yv!eW$Iyxz z4-teS>TF@$wIz|-)AHye4d?MU%KffFK@a4aHMNDK1MrQLpYfCN=CP2`|2XnNMyD&& z1Pdta8I%`W)qb1OAyM8a^_E4TxNJOj$9*`*HB^byYM_35Qu$mzUD9U=j|M206gky$7@=5l>BcJ3h?*g77(1YV6 zA6i=iVcuJfIP!!dZ++kvtMHNjrcb-J&z$Ot_Dhj=j3qVG(u3_HSO}!@yVy4i6<(4qEVoS znd(<(y!e;OKN{cHVC7QZGnn)eN*uU}#kiXBcc}Ft;OnlxV2(18Tt@(`iM@3xUCnt% zKUX2M$(ehPU|YRAhaqN*Cq``9^`9)@;9oumW%74LS%3gv&S8FJJ#|wR3XK!!y384j z6#J*ID8*RoxuSu7CO?Y;jeJhvkV_c9=WA!N>ql>2_+dw6+uUdzHPvK(&8}Z9$8`kH zS)2AeA_IATr&x>zC!jDmJN?>9 zLrLUUF_gd}Ye|z2V}-WJ%FxSt=*kDd}Rwj~=f350Pr! zBS(_n1#VM#oJEz*@G`7+Rs3pT#vzFo(O;39)4A3MT89n zHCu<KdWA;oC~GKdfpyM5kZPKZzKir z21s_E> z6`Gy{Jyv*XNHV$fPjwLj5jl(yDzp6UWk)8hpf>)MzxO((;GVFFCSW%0dfH^Bf%s|^ zkMO#6_0(?Q-y75>pHt(cQwAxPKMZ&{OJ-C}6v1;YE3R|aYNv7LA@(-&aN>+O3eFNH z2{!(TOWD7g5<=8giqXj%{Mg(Uk1K#Q zfF8~K+R|ok0%G5NDpyX|a=!m8Ke!>WYXgBM4+YDL`{KesUUz$uTI=yZvFg8LbN$_$ z`9ms*D7B(@Pl2Aka90@A6{jcp0h<2o{c7X7d~!9{t{on*)~)`-ve!Sg?EcAgd<0fb zubievAP}`PmeP~)BkZN<*UjEG;pb36#5&k0y=aY$r^< zqY6yvE5_~ggZ`qzHf9}E(XLu!*p1|OmV0vUSat3n8}B1(w@{IFg!De}o8MmnJ#yc5 zIcZ-X_e;mYwbp5{061p@{orW-XxHS6;cMOv!6_dJ5tYT+B${Z?aN!GIzoK(#9RALn ziodA2S)e|Fih|l2z?9E!`);!`dDIV&S^P$tB5mm|7|F7}`?Vd_W5nCDcYdB;0(y#< z6TL=Oxx&M^lb(9nl-*xCk3OiqHqXs=b$W13bSczl`{K6-_E~-HYV*J=3t*pG3EBJT zF{FF1;<|n#d#u>-9&@Hu>{*>z&n*amH#O#lYJ$ z=HlFw&4ITB9V@qL%fm>Ey6{8WE{`nK?%T~OKwmluy`-)>*mpF3*Jk0DWF&xKW965x z-t>^!T(w)R8UvO@17CW6wL3xfVLu(~adX5am+4CX{jQ}7;&QTsR#b#SNoqjW0m#+I zZS^7idwol|p)8@ejlhPw{}E0|JEycAS?X1c7Ve>aAFdpeYv%b%pY6DfhwW z(R>wFHAdtQZ~3KKxy(d@YcrtfacIAXelaRa{a8!g1QzO;?^F&g6vGpMLf*IzixqBy zjQx5zwee|m>c59^Obmh8@II36X;HVy$<=<+*A>CTfRzeEUptn0IkWNO!Hh2Kt8DmG zgF~qbeZkACLY;l7I{aB~ZF&?__ydUQ)-KHuHFo|yvvj0hoff-KJ4NZ| z&a`C!z2E)nR#u^mL|TfML02k>32<|>kSFb~!?F(SqnXF{RS%(LG)qrmA!VE(^3|As+f1)4g|-vHT3Xwkn1}`SYt&A}Ah!A=Tu}wAnB0_J7q%6X6E+W# zkac+^P$|iup;7&$fAmWWQ0`M~rt+ySAx+mMCY-eH{iz;}#viL5aq6C~259jrh8xl2 z3EXSqwnBY`PLYQ0+7+~Tm=a8-DY4ba_wOCHuaQGe_1WvfDfzBtqE(}x9*ioDJetub-1UPGXWZc z=^bHP6!fJ(Eh@h)F=6;@#r1BA$KruCy!GeRPi5cdFh1d71vOA&a@xdYI_QP?>~A4p zMc_d$lprwmKUeDCoODPh`99XdXvzpg2Jgi;_>m3j~73VJ58r;$=QUihqwq;uB_ z_i+bX=c&*01)!A6B$G6yGD7C8Byyknz6@vg$%xo0=0y50#F%-Sk9g@F@4mZ|EL&vF zw3+?+jV=jFpqO%+<|es_&>Y%hR4G+1j$1swPD4GX6=+-NnH6xcc^9V)T%STlmcRbi zC$^lK#08!F;p!D~mGTVFZHozHiQSJ?3BM@%$c%Z;g^PXsnrAthgm)NSJmQVx1Z8s7 zo@F&u9%TzCoKTlX*fgp7Q`()&?W*Y}T{`cRUf79w6e1ZdFZQKE2a|$}N%d(LyP}w)nb3UozJ`b`;v?U+Ee0 zZ`t(hPSyGIR3|Mt6Y1`Q;p zr?Md}tFODMVp`nlp}{?KfUV2xXTD#?Sr_6R^;9r-#IZSL4K+okbujRS-< ze56^T90W@Vi<~Z&T1`1gvj%3o#PxGYiXRmiTe0lIUsLrXdzxu?@3O0G6O8bF zoGte^Py=Nu~sPvo#U)HKZqcB>lFTt)k@j6z(N?!3SUb1oQSOvgUg%mE2 zP1z@aQ;b<25wLf-DlQ;Uu(hAvsvCfOd&vHmj?FInQ{1-Kxh8J~UE7vvj0u54Z*M&H zNHUY==f*Daj+m8!l;(r^7;8|#g9Vo{ z4TR&shFfO0WuU5YX%(yzaG|XkV2Z6l*t+OeMz2?+aFG{+VN#o|%G+qIv!Gwm?&-F_ z-W@m8zWYVCZw>bsirLlA_$brVBmIX|iK`dUpf9?(`W$H;Nw}5NUvNw+^q7n+MKQj{>;0tYr`uuM ziJo=FppYH(&rq(i@6tJk0D6N4akefVabha)hc61>ps2!t39Lf9 z50EYC0MFA?MiCyA_j4)_8k|ZBj)oA?gKo6nqn}$*Y>4^}jmc{F=gkZ{Y#o`Jkx?fK z_&%b?CGpezw2Y2i(`3;jvVOEL*Wj!Mm&0YeI;m#>Gr`4$hgpa;`8xSGxwxviufXR% z7E&x!p0Hk3OG;crjeru5jK-cR)jfKHJB(I75$&n2cVwPE(Ct07$bYVsy3*4}jCDs9 z;3{18cT}?VievdB74_m_Ma%(hBs5jdOPt8QNAR65LIDbkaU%u_Gkc@}icJZik|(~X z0|BYcJix?plG09 zFyJftO<)HkC}O9GC3TH1afCI^IcCwZX1cK2Wak=ytj(D`=6~3hEhQAV=2ReQY>`V6 z1FQ7%F4CO-2GOPsQY*kzlmGbVSrah+q0Z?V{xkmJ-Hw0%;1?xC7qX^DJZeX(+Y!7u z3oyii1-FT9AEa62qRd<;){VASe8XsjEi@9_+TNVyB_indNruNJV1aAn1&7k1Jy0o6 z#9S^7UR8b4^qMt+|1ds_Ub6?yzG>s6jqvOJcjk@E)RfxzVTgMECGxcMgWVOuN8aRl z+0=M?K1)73^D&&DcAsYwi-U}9&$p3<+-W5;( z0CBTXPV}Jfi|O`EdG{JF#w@98f2-X`RTb;<#uVs>*LwKZ>XG9JJWr9ZHY(EqO|S*E zlz||GRCu-Z-l6`j2+h$;I!h3#5rmY}%(y9b^%@6$<4@6bj+D^Gf zL`MVkrvSNDA44n?qV3tjPq9KUXhPAdLI+CYUa}sJCzNIVSww?)>Ymf*0oa6|`6sQl z_PQd#9jfbe0v{GWjU{WDrYjSUf4*=Euw(qPldq5!tRdSS!Y554TZVp%r%9LO*LFO$ z(Z@uXT-u-A$NG1&RR{Pl%_7y*T+}Iht9O*7BjnwBUiQ7+zP_^ELC2}+8lYo zdTvYx;(q!pD;c0Z>ex{GkxH7IgJxa0Q(RU#@$Tk##+IAIdrkivmkeZZ{1m}|<2Av0 zx)G);y{d-oT=-xHEKsaZ+}vNT|J=>5#{tZDkPVW;-FL$oMapTWe~|p0gM!N8<5EM- zwI7rllY{bmT6e#d8WGP%-TiwOJ@T@?+(Il5XT9R4sH{FN6tpw@GO&~1N1ofS&lDFK z!bz%{RLqQN4NSUtj+P!K4et5W1;wlWBGpHN+PE#><3{cIKaE2-2vpG`_uBRlEvvM< zsx3Utg;J}K>I$JW^5*zQI?^?D+SoUwR;B=3Qc>va$LfQNB*U)=yfR}elI9{_>D;A~ z|8N$N`jjj(Z1K|sfqt{zOLmA*vxd1sqcS#3NA&b#fwhm$+)+`_xA?oUM2Z>jvb=(Esg_-UL}8|}3_q!j(5ZeuUa zmDWaTTL2sz@#OsDE{`;?M~Td@uYheZv{rmj&|~7e3h2JI&w6tRGP{Dh`)TSA0@CO9 zz^{BoDWa-q#{NDizB9og$7*x?Lv_`yJK%9~)-h|h{3D!EU>2f!b&>uCfRrL8D!QrP zLn$Pj`kGVp`6C=eLGX-~8Oa)beVlI0VP|)!O-1G#6sL6QtS`Q-uz-7m3C?I{wl~SM ze_L7yiGq{JK+7Iode18TL_+it$;;1I3BCK&8L4O}g*l0&4=RP@At7W0xUTKQl{|8U zZ72M{`f|WVH0~XJ8nuj-toH;$77mN;ibF>~-B*<=YCgJrFfisQxcR!V3_nFMDA`7` zJ@|3@dW8Q5{K8PnF-(lb(|%&u>67UZ_dCJ(;Jo+CilszC2L}+--u^V|(2!59kz5Ww z1(cI=^T}WE&RpsA(X!l&+B{}RP)_29>icUk5wSRH^9P5Sf!F|^9kxZLoBpzEfC)De zLO5<#Hsd1U>nk6NQU+D*S{1oQ%)f$}0FjK8S)W{-&u|}TaOPXgX8}AAoh)yP`%DQOKV{n%bGbltOi!#FVQlv}U)q#wlHE;nmHm#6ov zur^b(EFVdexg{lu%+Vlzd!4h@!1@o@akMZ$$y^?7Ql%(UxnfZgwULd6APH$P&gyzO zpflFb{;mcbI1!1sY2MCD=O1Ff&w{teVDay2FDC2||1pf-hGS}p;vyoAxFGh>j<-tf zgaJ%^ap4Dj)%ECOBzene9wZTRyp0PxQP!`VfMv$#yns_HffTRLI4&;e_DV?a)8Xch z6{~k_yGK~7cC(MXt zO2%Cnzux(+G3J(!JVVDyd#TNZO#!C%w9*DXJlI`Ci)HP3h#|xlsS`=6v=w$pPPMDqX80np$udU-r0iE-`HLq&Hvne zO9A?p3{MzL0OcKz^^nsi#>kL&v~#`qIQ{T;5mKa&@5xE*yv&~&QWf(CvX8v8*Qq!W zZ>mOZxo7M93Grnq_zoKkaYh@nePaI)L?FCH1kx8-l7Em3wq6-xf>28s#-!2$EbDK( zQ-m)dSk#GBqelmkZiog?*Do`-`n=^&HGWXM^|fq5j?Y~z=A5Qm)(#SFIa6K+C~bHH zR$sO&(?=Pp!k4OB5gE_yPEr~*{cKF9H)B99SE4`1Dh=j zis#iCQ_~F}Qb_2MFa}ig{_{8>(SeIi23RcIA`y6sRvTPIlexR>B^yA%@;}*8)#oCRxJHf;{(W|S zY7hF`6UCH6fBLr{T*at%iA@N;P!95V2Ch%YWTXK7SRxR8co8#xtSYNeZUqlvh*<~1 zFc$8>p_rO?`$`*vE>mFHGx`PCbi@{QaHOXwGSpyc`P<6YUu`z%W-YSFb_p2>t!t6%0{e2kvW zWm&MJ4P7XdF9RTfCsNhz@4`b|i_dxql^On=Sm`aLv1; z2}*_b=>Br5CA2pv3U4}!>Cs_DLl|a>SM`rhBRnh%nvy6%{7h0K_uy*Hs*`Vy*OTeo z`%6l!LjH=0*28%JQOOyY?#vD95a@C6G-WBeoLpX3fjg`qEEy^TujyWYiVv50-_9Ob6IYIS9mfbx<#q z2h(1IB41PhAHNY-(<&n%QO5;R-^JrR$6&KBkFJ5xiD8P7S-s5uWyI-G)m1YSYlv;9 z--Sc6SW)N75hk4HxNwuN?gf-GB}R*ppZ|9brdG@)dBuLTG-y=D8Mko@n}*j@2? zK3G-^7e=+FJZi6Y_CDp^NIufOnOYeXrocNAMtWQb49gI~og-RsLG$dO)Ml}e)k?46 zaK)dT=RW;hZ<9LlA>42eYAYxo`TeYCJRphXF!HEStd%&F&D%`nCJkqBzD*;|KFsMcT3|rk# zxLBX*MKLR=f9^>!w&jEZ z5v zt8J#sC_RE;W9N>jdAOq-&3kIx1`n9n-+A-1le|}D9-g;;TsTTPq>da{cgjiRdb^}f)vb9{*iS6*r zy2EuKfv%+)R!A3v23qh44NOIkWRedPPoBcjre>ssKhc)edKV+r()?fjQG$L?M*}wJ zquok0|M^kSBlY`Ijc~h){^Ok>7%rJ1ZMWv{+d2rpZEmX%v3JZJIIK1~LH$Z)CR5Cx z26kPy;Z;Fe3ZTv=8Lj?Ke}U3VeB=zZO=Ax>s;fA-5zB%D^GEZaW(Y0C?W)en2$pRQQ{tQ>&O)xbV*kJ)wsIW7mB^hIQ4D z05I7kp+;PG#-|SFvy5M7c@YKa%b7IOZB-3YXB=|3jesgl~k+wYe77-XAfHz!#uQvWBLf|0%@mY@A~ZGggUdW*l>M=H_3SsifJ;BmfKw)3zfb(= zRfw)i@R<@!`D@bm2-wbVL)4TkReFuFo->8O(YgA1K-O!Ddy}xMA5V&Bo$sguon;JA zi^jnLGuN+&-Y7xVuRLt@5*&7Zr`HAPFG zmCMTd-vWf|@FUw-j&E_6-`6oU$4&uuRZ>Vi$w|-2YRzO%&*^I8n2p$Q`jT5_!?@=N zkke#AIB86Iq=1STo(jKRq12CgJo}vBBDaFXT6Bz8J3v7_$gOjUAm&kM`f>% z+{K!|VsNH!W3F9{P%b7fE8R%0C>9(e*Dgm3z{&^`l;h2Ry^LKzJB&b&qH8cIz@(L% zAmq(5_hUHL%9V?#7@z>$YQNh-f^Kb5HF%-on4^Hyz^9j*d^k8(^~YI}+~y-A|2AUW zP7tjJWU8SriICgWOX)VPKfizj*cB<6`&)YzhaIK($zN_3?d|h3fvh32%yof)-A_%Y zJy5m#5ExV2oR$RV^0ZHwz5wLs;{0udi7M(9zK9?vNAuV6x2U5JPAjB-PrxrM2Y+_l zOkgA|S*>vEzW{C<<8L2QRtfvAqrp+Px0K%v-@W;&Uzrc=>5!a)==JWwJ$995l`~lL z@P_oRj~4h(cLSzu4QGQ{urD+_?Km9a_f|OIG!P)EOsZ#3=3cg_(sb6N2j75=KE-Qc z5wF#85+GSGw(6G?w7VosWcVosf%)TFr)<|R!>_=9gHh6NDT20r#e2p5;-U(BT`U&| zQ%1TmFCvs^$d5gm#>~doxJ?dyRwP1%)O4xj8;eL}$eZP^7JLLg>StI=D+U0LXrss9 zqHq{zhKqW7kGowx5Id+@*+lC5)iRO)W+CeSXsjgbZP6-$I%{J79sw0LCevJMKYvwq zj5%=I961!lbiQm}#H9 zFQ@&NJM7HTPWtFFAN^sz+7^^M@{r|RUQ;2*H{xbGC7nSLGxIlBlLL;i&cA)FF@0;1 zS9>o>)MX`#cq9EY!$1&oU#X8uP1V63UV>p?d*}oGd>1hSjVI#C)qYdA`9`}-+EawY ziGLg@VxvJUndgI)^$J24M|af8n6)i-pWUX8-RMH{t!-Z_yQ@L=zQ*O??TQeQdoF#y z+wepXkZYA%Nb6EyRInC@hXd|({6t4D{jdwvA9-wYIj#w4YDSE;0XE~vsI7AA363sR zmiQI$GflP!iP68mQG=xa+C_q*>KMNWLB#)-9@SGmm%@M`g^HU!Ud>JEs?1s94CaML z^&*_O!N0(H=o%;f7n85b>#KLvxHUo(J`Mv<5=`y8jc9~Z%!N8@i4gip^r;wb4seCj zK0X0;BAm6!o=p6jW#EMv=U63FBEKqUN%wWH0^QhBqE56NfugmcnqQBjkk}?fy_+cc z0Uiumx8yf_>*6Y#J+=B`5hp5KN|gDxKHl|i@Bp8|s;bT4ZQ;S)C%_9{ulvH{&9;^~ zjxKlkP1dfT?QYtqX`!mfM4ObfL{NldbOgEk7Fk-JH6rnY^moj4q3KV9--Pfm4*dH^ zq)eoc_g^;rGCl^NfZ_sbn-PXX?l!{lNd z>KU2ha6RD$2}-Ui(N+M3J=_9nDgpzHXK%6s0^pLseXQBw4}P@SriWZZJ_worwl;F= z1m&@i)+r&W0y3{et(sH7_5o{5^hSm>Z7pE6)r`C5cdM?H8DrkG2l^&Vk+w~IgajR= zkxyeGr7DfO>L-uLLF<=Fpn%^Q8nH|zOvI%?VZ+iZ4#qd{^F3jj*&`-q#)Z2ASH}59 zT6?Z5qRLk7#Y{Dw!U>ch($3gAX51F>dsh}`r(P@BBm2t(z%qAS|!ZM>_ZK>=6=}fP^l01+t$uDp3`?9AKa$rzYR(a ziUqg8apr)HCybM2(bF;IsZBtC7sc72szidZ9VNll*apF zZvBo|*cke~AHe>!?B#V)P2&{JA9TyKM7D6)II9mZfmh*=M_i)W3C-K zmjTKfQX&`#@ON}pjME-}jYcCjghQ$iMI^Md0Is91jDIqXRm^f*fJ(5SY6oe?HN>n; zd-kgXSU~wDrTitk{qxr{ettb#Xx{*ya@1}2%F*1BZS3obkCa3b(>8_|nQcw)!6y6$ zS$7^9=mY0}cUd+hdE@xgUnX>l&Hb3DL zDT@98bC#soJx}O^(kSVSbu9q~aDHx)gMZ<}936lU_Z$Iy@O?IzJR$5$GNQ$htcBH^ zxp(TVIBxiq)^Eh!c;21uIy3#m)Xs4P>`)1j6But?j z%?L_Q0%(oYvD4crVJNvreQm^-gzbEs9mUI>|p*}s||iH17f-VSN@o{`~w3w*Q3`}a&@GqM(trHz!Y2%=^psI&6pP=@5E06nulv~x z@4s8>)v4kmdngwqZ~l>F&3G1Yx=|@6Z#J0X<^Z>j>r!3gBz&}=2c^o9hj6(m6hC<# z9_7aC)29*D(?|o56po+Afmvw2$I-h!Uw-!L>#S`yNgrRv+<5j$b#9Ib?}qJvQx(=k zOJ5mY@N5J1INBLfOai7o2i`2mY>-XJUOQx($%UjtrWGS)0SwR`A#qH}`;wG;3K6I= z47mF z_uJG5F=UtRF9pToatH=O`OcdtA|-)yXq3NbkCV*y-Ph!XZbKvhvQ$K80C#3f7T>hK zf|Eafu!B6oX`vRZ31hHgFciZzLyODv-au5Pf#`iypB`*-@A_dkrr%C7=bnv(%2KFI zs6(*qya|^=2(q#ZefD8IC@`567DNB~`grQ4ErX2+i6YS_{?96B>dF)#J^GD3;HHr3 zXESdd+xW`k_EWzp=FpgtklT)d8g@Uy%i>q`95e(o7pLA!?n-KlI1qdsy#Z?Cw^A!{Z zAn`+{rD|Y4@lad_%?oP&ep>fI{<|$D;S`|gSzGQx&ZKIy4bC3~O+R2GDBN{R`MUO*XK|a~mxamjs1D7#Vc%7>pZjDeH$x}AJKkV>D#1ZbfH@W_>fSRn$ z2qARQScHkS3vZ1vpN~^F6@h|#p^>rqroU4%ucBQ1&iiA)cL*odmFc~>6O@{CM^4T; z;)JnE=f-r?UCTp&9bjznpb^O!xdRKud-)Q-PGME+z*J(t1DxRU3t}oO6XK+>?)6Hy z0S`@W9j3`S5VUCQWFM0n#U;7Wpo4f@e&+sxJdV5|92$O{E*#;xdJ+9v*@xvBO(>&b z$u1)-h^sCXvqWRVnM+(y3lwQp=O*@ArUs-mm(j8z6g5s`JbsK_mO3m0iB%J^9^ne* ziO8k6R@Mtzf+;u`2E;-T0~7l>$pXsdLO|2r@O?=&iZ*KOZB3^>{V;p1Wi+d(cJz3w z>hMAX>kzUvCSBrnkL`y+Ap^(~$w!ewaQ6>WzOS>N`D>OAfhx6i<-bXb4u=8(|KYiA zHzJ!*keajVQrrWa=ipMtY=)&+&@-D4LkUK4svvU{I8Mveum)ZM(3FJ!ofiXf#CWQP zleYZ>to%InYwtxy#eT0PEsB9vQi?gt#j*Gi$G41PGT{nAK%py*1vsoKOK2|*t%>)Z z{Vv|k9y{OXJ)lE|;z>1T-@L#xZj`B0&S&pudlcS6oJZ*MuMocy3R|0WslDXIb%1}KhZS7%S59cR`n@pvW8h96m-Bm(th*_>$eZ!h>(J+c@2S4` zcS~$?4(@X+K7%Lw8&kV^w*T9xoSo{ zAo-j$>TBntrp;H?yxrU#Etvst&q5KJ?R5eBo>ovV?1k?XKRW9c?=HP$?ui@DYqR~mlnN8ABpJ-1 zJ3f@Yax-6M2FpsNAfq51DW+R+YGqntA=CFxxS&4};7I z2@byOp?j&c{{P|&GhZy&Kpmv$1IB`-`mSG&}4LoeY&L4G1nvU zJmwy_zhTuhzzr5YKbYN^ZblXq6wg3r?u=bupbC>Ffp7G#}0&3R`a;z_UM`lw^ zr=RMnj3A#*oZKyWqQ`rUP9Ng(FW3?RSPtZQeGQ{-2^L+586sXLrUIeo2z%0`iduh7a+=0{sd+RyJ?Mr14)>LTkEQlAO zTK=yhlWQ-QrxDtcd>{Y$lm-GQbHc_$f%n0#C z$m=wNtk@xbdP-A%OJAe}@2!Qm2DOf&J{U^wHo8*_Wliz}pTFZ}@^-cnL#4jGWBv>! z)BwL=xk}DuIb-5`K1<-XF|8OiX`~*^XpKO@1~3iNZ;^dDGLq@%>(JR01(xlWpTY5d zI($5W!yCAt{Y+7ZzBFyR%xH_5@@*qFOsh)>w?^`vq=Vi1m|x^T!z;;}IfYD$cgk!l z@Lp|$B3 z!X0Xekf0v@c^YA&-rW?U==@x^{ZJW*F(HD{_&2cyIuVNxj06-H zU-g^-F=BphbINUNd<1yIi-0Q6oX=&=4YY^73A{fq>9F-wj7J#TI78I%7Ld@K#;Tzd zHmdG)iTn!nMy)govI_hGo8Wz6&R--v9>tfYwmNvG5P}~1%I;=T;x4B zfZ1?gs_wcns%I{aJ$|9n`FHQDZCp~e>swM#^tdhe7tjkJ;v}~bx{EG;ila+!?5?W} zuo#(EB>y=DGsyohkHr}?xqqKFuuz)~bJ{FF7m0Zfj2IEcI_Jpec38u3rikL}{MIp{ zoGiyD{M5R}RG~ffp^Vokf1Rbu!BSesz|i!2`oy!s?5t*F{w?XKq`phUk2^NxxR?sS_Y)*~S%5E7Ac|bf<=A;;{5e z$Zc8U5KswJ{(@q*7pN6#EH4&Xy%YMG=9P2JjHkMMt|1lSYdfzuXDELbSddrzGxj(? zKr^jzAa@<_W5b%z{!)*{Ar#6D#R90YxpHz1NaoNRnOkpkB{Aiwh^upqCG^i!SbBcI z^GqP+N2PJuhui}?!LVjub$m5LO$;ODlmuMgd;=mOlhE-+eI0BwYb}ubD)JgZ>xKlk zqm<_cLLHXk?q$Yu0?r%P1-Fj21r;f|zuL;f^S>mGvI)r7tktoIBbKEiE350TK)L7l z?8`BXgk!?i>(PK!D_&xbd+9h4a-doHK6r61cBCYh&nX{YcHp}~Aq$A(2cbC0xx0FR z^Vo>gMp9T+q8j#e%+rte-y_~_McyC}j?F!>%k8R+0p6BIcQzsp=7{>OSInq80V*q0 z9OqkkCzy+yO$jnKvlw25bChD=l$B^2U zQ?Hc22}VF{N(W~1=^k0jJkXxVI~g1(g)6mhH}O8Kg4ZA8-?pKm&lEB(`om+~pbpF= zFuZZ|xH6=tB1!Qf&=x!JInqJB9fBK46vxZr!yqUfoVWcbWqC>h;IS!je;rmvU{Wn` z>G$)X9|!{2I~j%1+hI#yAr2bdKApBuBfLSbVFza)>Loa^6NzqgDc=kVcllUkmar}@U$mQdd&>c07hGI?>0!NyJM1OaTjQFT{hceI*2l5Q0#S?xE47lwxY39BD$b~jw zStj0c^G|?ant$H1jPev)rC*&hXgDa#TjmMvI5)2&n`uJdSrvQVGbXPH)%3LNSVuKJnL{VQi(COsm(Vr+N;v zPaBm6dpS8oHwg9(BZ}JK<{0_e>fBF z|J6Mex*-2eoUtY-#6`+kFf#J0ag{dX>-;*;&d<79wd`(xKG6%_S&|S28x{?$Dd5TQ zHR1rx0*T89Hw_r{Y8t9#N*fqqs&tquKJVPEVEe=;{sVQ5cMa|qv}Q*zF6Ikzt*b%K zP?-HnRmOfnMfPuNT+*vO0Vy^v%#jXLhr%ZHJmNpc++nNBgC6O_NUFKdk*~)VVR~Mf zsCSEnJ{U4|vD9f{w{&zK;U`j=*5iZ+r@#GdzA2DMS1%iO7&MGTUH?CoU|YJQ96}00 zPe?Ayi`oIWiPd%bEuQ&%18sYPqoj)Bnf+E9>@&ALm3+FmSfGoy^l|Z2tsy<3kC??+ zlncQGf#;Z;>23-je<9TeBNG4I#lr=UoDg}J4VAVc`P;57{FS5=cc0a2fJ1YBR>b-{ zIyPUt2D+DP1rHMM@Wq*se_Jj>*G9`JcPsW6bm!1{k_gN`opPk90ofBc^u3?yIRVnP z;aiMf-k;e4uqAe-J|i-t;@#Q$xOrsLHnX<|nvifG^o?Xx+08;@`>v$~frkCed9KNY zdV%q8u4C@RjA{@>#m{b1kmkbb!#0{lj^-K?Gx+PS!_Hf-yqd!-=dU7L6xY&KFV}$- zW>T2b=Ia`xkGLl^O->>R+Z2UAWaP7r`}T?k2q|hr z5jPB{6fgaEZTs^A2yCzOrFn=w(=-VKBsdL>Kcy&K6N)rUTNDBJ>k$S|`0TxK`e9@= z+`Rg^Cq+Y-qlXVu7P;Cwa^I5CulZ^{Bt(slx49CyT>Mfm3EaxC)L(KRYI1@V(#Xh5281$se2m!x`o~|6o3VLUEuLBKf2msZS0o)@5G_@k#SI?KWO@(kI{wb0 z&$UD4>4E`T`F3Z~tHvAid1`Oew}uWX#a^wNadLihE~G7&DLL$xj%`NGlJ2-nUn*h! z(URZ()E6dSFqS^`yNC!pLupY?+ERBUekl2-QmF$z9B4jM^S%s$sRL z*Jt7asIdptv;QA^Zy8tB)~^jON>W0kq(KFwL159KluC*qAdP^4NJ+OKpp-~AihzW4 zcY`$2-5m?0`x$dT_g3~f``l;WU*Grnh)OF)Bzi?8vcm}o8=Rx^i$A4G_xzJr$y->8uA&8h)=IxoA+47T&tF9qF&B>B#RFMlA@r(Ti_|UTg|-_dqeJvXA0pFan~j=vE@zslvzgT3P}q^FXOzCO zNuEd}t7|5J(SH4o;Cvap{|uy6C-ugg+giv|KX}wLd<}OmAdPkZH#`o$7&xD3hYVi< z#q26_E^Aw|GuE+I1W#5Uz~}9S8FOWs2YZU3%6VOBeyRa0)HDxYx|2_}s7m-MTtYTw zEj#lnUEKUpGIQ-)G8lhaVc>WIh?Dr9*Ysaj-i18jbQdr_V4gu0k3y6VqkFfvo>(>n zkRBo_uW_G zdDEQ~v9Vnj5Z3yc6Eb#n+)kl+nV(F6p*d!OTma$pQ+<1|-kSCaa1-sB0WS>wE5fPt zZr~g)`Zrdq!FZT#2ZAK7VOfAh~6GtFlL}od3z5)EsOn3vKeuxl^TpQST zJW7x8q0t;{4jQ5|+PtdBdV)97is6)_6{$3}1O#_^xiwtas_ZuIn~W(*N5XS?y_&4CfaXaK z=5@X)mmO6cwYJYPc1p*dA2B$Bs%`^1^Ubf-&r{CXSf3K6Nst|fLI9vnpogu6V=67{ z%ZO^#N5i~_vO9K*mR5WVwE;v41cXC#Ueu@4`b5tWqd+D3JvYt5EG-v&qxxjC$p(d5 zg0-k49@tB0Ht4*%MXcllNI9aUcVj6EO2Q;OA<4M06TE_vFdRLCA(`*^bzfR|gJ6Eq zolvP(GWNk+UjORlLq$UO<~taAD*zf2?A-WSGN(`--fLv$s_w-874yN@>r^SuR8!lU z$U{G5g~U{HQlHT1bxB_0>na{E=vnO z(T|*n1W_;!i=s1)^a-nYs8hFc-T%TC`~0uj>`fX^lWR2F*W3(UTGIi=y2K3saC)j{ zJ-qD)jfE-F1;c@mow~+{u5Mk+xG{li9G1 z%F&oDde)W>Hq;P88HK^x#M60(PCnovvq+eDC}DeH=9$s|ELPkHLHgq6R{Wg4D(uY! zS=cF%nQs|-^fFYA*97S19~3E%rs;I$gVz7^eYDXB-$_46N;G#cmy|ZK#xQ4>e&z=% z)vvNB0VYmN$UG#YkAaNfY6~->y>Z>8`<#opjb`myTP|BcE`F_hi{ND5w^c~D zb0^TkCE14f`l$T_&4M^&8oOfR@h@#7)LJqN$~N*+GropCs4 z$nLDJQrpU62lOuYKbl+BBr7BZ_EB5PKc-!Vl8;45ZusM#K2p6*7t$GKi|<$OwMsi3 z#!eA*zD?n>D#%6!|Ng*wJvRGG(FRE63cB!8is@=uWY{>vSaKH zFn;NKmPvME4Sz6qrkBpLf1i*fyM9B5k=23%uWL3q<-cNOLU& z!GF0eS$qEc@y&1206|BDOfUrCPpVz5SO{O>XCs32O8Zw2QbsoeRaFDlh{J?>h43!_ zdxF>MSk+ogNIi@#wJ#ZHJz9qtEFtM%HYx*cyPl%A2y1jzx!)FB}kh)cnQXY*rdAJclorw7|4f1|NX9{~`SbtB-t zk>y(T;s|PEX>+%*Xr%v~0qWf*`;*Ry*%BbpThElxovJdPM@s@4{*7$A(XKCAwOEN0 zePDi9X>l{-PiBK&v#iG$`jWk?2Fm(C8yLZyEo^l4PAC4ot2~}k+JbK$bG4^7pL36m zm-@gLAZSAYkWymLFnxm51H#>bN`Si3dO|`CNlpfZkwvOEFPq&q-*x4XKn=T5kWHH# z?X#Wr2E%{otqQ`P_DL^1+sqw*fr56s-)kiq!}_ZD-2mgeK1()XX_%g$DAMuTwBO>G{veIo$5YN@ONb!j0hU_%*~?P|jkYAeZ0>1mSrxY^8Wcsb>>^ywpg>@W`${UR?ya%f+=%i@akm z``(L5O>{r-_gI$ZuXZuw+ebj~RO7ZAdu}4jq|xE4&3x5XMQY#h{E4(rXGuy5=$e+Y zhtvsRautxI464B~Th5RGAF#5HZvm z(dw%%4;+!hl@9!(r;dcln{m1h-S7S?p8v~hmoykM3_1K}WyTECn3GROzxlhk^8r5! z4M}mmD@k4YGX+v5hEHp$wAcdFa6B}fu>}?Oj@F++_La%Br6oC>9*5vQ@&tAiwDC|v zDE<&ycON*4-rz99Qok@Oz5z<6f;d2Ke~70rRBr=#Q<*~s2&<+Ieoj72v9CTvd&mQ! zF4e|RHpC8k`e9zG@QSZ>{3$K!ijJoO*hGSRx}=f8HAhYTLPWq0}XDSlpx`Vajc ze-aUH-C$CyDD{qe-dkU#&)oOBP&H#dmrr%-Thb!EVf3T%dryaoib}-ehwYCnh4$nc z(RHHhR!EVhdI27#5(G-Td^cx5dOQ>(Cb~&$ib{xo6)6EWdrwSEE&!t~v1Bg#qU_AJ zd$(hET+n7oxO>M{xKB$x5IUuV85c&?II2KXJV&7YfZf)hj5qkY2;R3g7gbO!(0dp?NW=8!|C`O$>s4F5j6+_p&yqF0-h zFF`x|KvMtldgV?R8gu#-uywdoU{#BRejOg63Y11qG|C?8h|~bPsfC;cV+mZy@Jbb~ zW3T^V%j-2Y=xR$=J{fGP<4<_^RTo&^m|^{Jpb9}=soE@GyV1~y=8d`z|MeK<3!oiz#Re2*6jLyOKV`k6n?K*e3q~+__(FubJcsRLOHz z30+Q+-x_AG(wr;v)9eyCS@$$&njLjo`_@hw%nR}ZxC#YOu3W%Xu!7nutn#3WdZGsKRP$dE=#?RG!V$iPmxGa zrYMCm=#!V@wwJk3+S{MVvsbqrkO*7=4c&*OC>l(QcB{_p#ONmb zbkzOW&o!@NP&n-N#*mhWYR+ww#R46>d!?zhTwUhu8_mKD2Jq_#F)1@=R;#&j2L}4+ zgN5>kZHKhhUa4EYx@Nlv&>YN=*A-g#4EATaMRk>Aw$o{JQ8mjLky&u;YFcJ*KEgm5 z>C6uN5YBbqqw`edpUm&uk7&;2L6kdLvYVs6vZ>;Ph*_r(bd7<$>lc4;n*XYIh#}8i zi{eG<$vsN9Nn*gYn^UtLQ1K1Swm1|=PAZL_z=9g;k2`iDWUf$W7c0gCs9iVa{iMX5IlFu{<4v)`n5KErKwEq)(j^jdj`@RCTSfY$5$1CA`&pj}f zL6^tsh@!eLZ6^RSfV+OCXwj0V1CC6?abVw()AjVSf{4{k6RLvi6mV0sdx%aC#tGC7H!DgBosP=OQaWYrF zSbTO1VLv|uphu?mSgthT0_Po z&R*1k7J<0LT z2C*YxKp}q=|MdxggGAIm#`3`BpZ_om@)=Ff3E)boEwmHetvTbe*9gL0706s>psy(t za9s2+&JJ{DPD>d;*6^t3!k|5pV1vbqAv-QurKr1uLX%z84J(|Bpxm(V_ z4lD}`8-o$1;nBc;>6h9Aps_(kuhDp?O_2YSXpUJnTqQSwbOD;cgHm-q`w}XD2l6`_ zHJgij0=tVVjQCUNCh6fc@DjZf1ne_s=R*~;weQpvoZ#)y{kNp(($lzfxe69^#u8VF zF%Y^i?~S$k^BvseAVH0I40{bAZzQ1fEX}$E*}gRa+KM6wK5?7CzWX!_?5$0Z$d!mYw5&sG0>W+2UV;R%3Gh4A zHJw&cnxITqg9AE&fh($XzxK|T-zVx{pX8-U1};yj0p?;5MBvw9thF;Fzs67FX(*-3 zgeI1B3i#rRzHvtp2!PN-B z4z0K@UV`WhyLw9XCBB`FTJw=av2~F zzM6C^V(uH3M}$Fo48!jMd;am&GA&SHZ1xP{?(RalS_&L;h|sAVbn}4kC64V>t|t-f z>Z6XWKVQ#tWOGz8c85Cb_fQPgl#!VoW3gB8Z@&N1itGo@lTT0#6BL+WF-t%AeyXQHWeX9rAcSB&-$a~emjY(%aeWPBMfDQA_@;L4{d|33RkKE3oaqmCsFwEK zg+o;x*S%Q~gIIv@&1}B!63mMkf0+SR4y=20D6Cs)(dv!<;glaG0Jf_^edFGbVR!i? z&82=l2^~+-7l$O9R&Vb`XKgVrrPpAzmDPY zJ5k|ygzEM)H1Rs$xaEDoV>$hN2pG`X;83P)0zG+6Az**YItU!j)Z5;h{JC&15q|&s zB?l3h&vKHSvI=zIUj_B3YnR^YCZ=pA?CVL~jpTp!S}wgI76z~jMJSuteIP*-qZGS~ zb?MKh-vS}6seiLKCkY!c`eyu_NBL`| zyMn*EiegN~4%Sl3W4_-sFI_kANlaosZ`$P>`?p)fzrHVm5Nwt0>30QN{gIP!X>Ppz z{Z4B8uK^3+B1wb#OQZj1mq`%l&2_qC4ydi|sI4wuqW=5=hf^M0{Eg`UCwC55Y}RyO zD)NULp*t$U`jI4(FWp^~2AEN)#V=%|evkgwL;LqnWEXfje#MJ(tOVAerW{CkHC!TCl18?C-L@Qo;7GlU5D*? zatB8OmtTYQ*x#6Y4pG#Ihp=7XY5dxaCRX`Bo&PoxxZSLi>i{0FkMSbqr5pKYmp!szX>pV1$bJBG9P5!e> z&*~c1>g(%cI=bG~m*p`k>uqH|#A_$UmH`zZQz; zK9~zd#yljnAVQPmjD7Iyv2v7vPyQOTUAn=4cgZaWMk7n2bMOwxbPFpR{I-g^7DWXu zuQV3fcmMJ7Dr5l5OE|L(BOUgF?fr=CueIb^2AwRg{3io`t+@a3A^vs!MVWxn7?mHE zD^wyUZAM={@M?D<({W)#y@&to?Ogi9Ny1>q+EDM5ltB}-QR*=IZ6V&l3O=!UwrliP zdDQ=Xrq;>=qvpGPO+&7;L@?X#e$rn-g$HV?FPKm(OxVhF|M0GVf87R{QKsFdZ1?WK zV*K@aLx0UE-B-|D8~e;R_v=TOZt&k-8pVLoM6*?I5(4KM=hSA#--F^11{3PP1RK9U z{dW`U+6x7+_?=a42p%K#XkIUf{yn2?pj~jBxQgt*_9y?hzs%7GP4Cy+wuugCViVjv zQoklXjpquqUpuwchy7Y6|Jz^tbM#_R8a7%G z){mE9rP0|Dv2pOD0tN6jBkcEW{@>jI6vzLs-c7&e2Vi0S z)C$58pp(wFLCNzesHkt_+mk*)ZXh@W2m#G;KssKKgNo@;NdSjPyxJXLM3|sL!KY0G z*VZ2;C95VP!!Y+PbazG29tvLOI)2v(OcnQZnjpL3SqM+kI948HM96fH9wdBHG+;U- z-?a#-y-ra2vyItb=i+$C@O_j8Cqg58AIJw5mmV#~`h(`oH#M719)<+Dla_b%`$(*q zmY`A=U9rz46nJ|gE6xb~L zBU};AhVENXQCtlwBTtz^u9L*>KN;K~L#Ui4;Z3XHYP_Q+b~hzWP*67{U6cXBb&^wC zRv}AT&KpJBMW?RjeR6yot_NO!b6$l)2PBuKF)#4+<$m`1_N90x2@MzZ(_e`C$)gPYw?-X40^FWbb?yk5%jNJ8{5Csp|9Mc8IXkoDn z#xQlKojRQ#F!vN}lb!DOGnl`LqaN`I&xWksV2)$Jhj?0i@c^qf z4!bZ5PKfbGDcm^DN{Va;>H_E^styurl_PlDz#SLCfh8!mL?BBCelr~l%d71yW8q9S zFazga8@H&NEcx@}va2TkP^Z1on@_*hY2j7?KR=v9U-U1lg+yxXskRUo=ZGdqEJ9n8 z8h9_f4_DPlKd9Pl2;`eoqX30WwAoL&e<;8N32u_=2>;sfe($~@!bjcTWwtOC26 zdCR!`(xEV)38uewL)+$o4QEKdI=L&BF9xt3I5ag;;|G zpkR=Hn{>#U))L63g$q6pNvr{G;r&PMW!Kjyj-rTKh77$c`?7$UZsN)}({oVIEpZrb zpc*teB^W8GIop^8etr*+Y(XiG8G34^^H%RLS&WhJE1tP6-=|*PQw+XfJ9gS%r#rrFO9{@K>HxVw zRdnxA4^3)J2^|+mXr2bR zeGm(-h4zlf3T(@JNQ!vv`G*|LK{@Tn`>0&ophc5k3YxHOQ4CD5<23iyAT-=)%k5DXoEyi$qT~^J@9+0W@nxGm01cY!3L>h9>yA z0^r{gvccVcP7AFr04Y0hgf!wjdg!T-TJ-_cfbr|p#lFQw@$@L9o@6bZgvQWv$c4QT zx6V2UuZ(hSBW+sz*8TxjL3Z9bbt-4o$uqQT-IA@-AqXHa=#drYc{>YG+es62DA6iV zCxBO0RW7u#)XDn|#BcckOs$YnNmAtwUi~Og+$cVv5dE7Fn?oI%v+eea`oL@0M$+ib zr8(cDB*K1vJSzk`U(zX|O`&XSm4E6P~RyC2H zDuqs@1!h1bH=5Yo_A^|2_NPcafUuwp^>eD|GB!`QYc5V|nxsX3h9J}04?9opB+LRR zu!Rfd2^>6jeStMW64Hu?ffRMt#4y)s6zb)7E|AX0B!AMb>AN-3^2E-UX z_zeiq^XFIVRfX*)Q=ffZe+K#5A8fksW$I|X1ZPAQ!tHm;_bZ>%{Rw4b3EQ&5;viWk zihOseFiHBc7T5u{Uc)_rU;^)%b1JQsB!PJr;2_mJ^IVlA(R$*tUy!I}=?0yQ+Q5{U z1x}&^NLwe3(!tlFFg&fm?0nGg7b0H(djXJ0Yq89rhPUltC6BqhTj7H3_IFPe!lJzi zKg>%LT3~7dfZ2+BRucf3gw|Cyll6$S-p;U~NAwPCHKQ<1Fk#^itlskiAl6puL;(1{!E!=E}5#e%Ih5Ds1VhWl8os zs_KT}lV#<29VqxHE%JJP7@#42KzwvC#*0itoGCEtNAI+QnIP!|AWQ}2El&RhAO@9M zJTakUNxZaxvDX_T7RlGN;!VtSs|MgWe`pac$TI`5a<@O!(dlTQKI^3>f*P6rzC!b~C>Jtk;4!5_ z8^ZgG)9wqF?5h3IS-guaJby@I>yK{0IIs|B1_;VxYx|E5`=G(10rdw0bE@bCDO@j3 zrq~@Yn;jPcw8pTGx^hU{yFOO*5gm#h(4N&{ZtTb}o=F0>^U8ix!7>+_GU7 z?|d4sO~uU}y!G(!lK_(W-Wl+%7L3nZ75H_xGzRxv^oJHuovPA0Rxj;_?^Z`{YOXq1h!8!Mnt@hMPAhtX_RqsFZ= zdvj*`K6xrz-{1ojb0LI=WcO%A?U zH6LxDMZsTvD655QSIAjvb#c6wqqAQ`knQA6RR1)<%2TBcT72P0shuIbc1$#E%|YT_ za=U_-^z6CG)L(KKM0W*u&23d%YRtzNC>)zbK%;o~^Axy!tma!R$BC0oOouT0X329U zw}2cB7c%zgL+H*@I7r?4r#M#0Z5e~hEUR~aJZdlRUV@A4~gr3CXq*SBSn*DRdVJ6>X;c`S7S`k)Mm96g0V} z+U*LNMjvh^CDzUaZ~Jw3I}H}JaRmrTQV98;%sh%Ws+=t=oYQM#I7XhOPNCi~OkG4d zyJI78tg%YF-N*2wIT~d#9`~ova=XsCwR-ovk7c$2+go4UR5xnQ*J`ki(GsLUUg3x*tXU6v?i02YzJiUUk84IR0F-+)FXTk5zXs)PTWiCoUUgfa4H(I|KYcXjrw1&F;A*2={irifhY<3@0@Nx=(;n}06 zm9#`{ZKpy^DPrj;by)c~l7bWC^*oAuS<$!X|7`)bgy%u-|Xq_5U~xViG%@#M7`-xZR% z1ifIbju7d1=EcGvI*R*+w#V4VLTzu(g9LhjACK@2!|JHM{HR3sKO-;d2kwpXqH;DG z$4C@MoXsadOS9@!Xw%()r0c<2?%Wv1oTZU?)t7I5K4gd$t(H*WPPPHGW8AAcUq+l;Ub6Lh`3b9+(!NVxFEQx^vI zUTN-h|gO{w~=dq_4H$Agu}C5B)Q5jSOd-_R2Fn^Z< zuaSDyf`GLZFrW|b^L1&-;l44@C39HIMW%_vR{*T)A9_hT^QU=-3+(QWc|e?e@XB29 z0kr30Q*f-UM|Zmzt+YCxA1xiQ?X);;es9Lgg;>kZ?q9lwelDd6Z{a>ydQ^E$>+iRkfIpvBg&<)NA%uU!Zo}|JUk}f5F(R4Fzlkec;o@`1GPt{Th8Y9MdOM!IA4sdZY?++OFGXMPrIz zkmp|rODHg}ZZ`f=4G=sLnZdqZEk?yHL_OygBLk-sWZQwaxBRU-Of&6CjbIa?m})ls zKS!VR6t9p&bfJi$i(Q3_LQQo64CK9KtNrojqMKSJL#2+d$tnZZ{RteVLJ z&ty=)RMXM4lrpS3Y35K_#RbOiS=acgWy`zNo?&Q+0F-54?Vx&~ ztO+{2L*BnP$Yh7KYt=6<4g~NQq0W_w=}I%M<4W9G&v|oT8T_ma`;TwU-S6xN=FAe0yw7!nQcbZH!{rBRXEH}%RB7(;N z9HRZ`WnV#bB)7Ic2S1QRjD3S^>y|gl|L%sJ3%MP|B3U8zDi)&TEMO{=bmzXVkZj^T zoq7wNVFRk2sGq{Qr;m52>#=@#b51TDq$(X($4K`lw3*yY6p93=Zh%|()J%+>^Gv+Q zl*S7KIUkPbBgH*emhM0YhUacu-5?w*>g_2e$fnVrEeT8IM5^Pf@f;xgY`*AM={!hg z!{~7OJ@NFx#KJB9r$k#Ew?8!N1vrv#Ft2+P$}h7X_A0;{>nZ%Oy?AUk`6_3w2G#^h zoKjs%eEzJ!M^S*}Gt@vZl#>}2^If02_g6$OhRllD@fqkvuohup_`WR`gt;yWPOb3Y zDQ1cIF~g)P9qepb?|^WgBG-9For#=OUU=Xi@ER)92ovCE1`P5)XN`biSP=%rpW(Ei zQgGI*-xR!SgoIy@g32^gN@z8R=`lN+MBhbii%S3n$`6-DZu|CAu**AvLd}j7F3*uh z-xAAoUHU1+L3)z}x1Q#>MvP0BTYo%3O$Vb;Rx^xMkv}1mU&Qdw;BEcHQ?G0{qv=Q3 zbQjZuF7T)o_gWU0KPw3mK6A|66JKs4@=QYOT;+#$xd;+GLEW<^ozo_)%m>mF$q974 zrq@KJ#xaIs;y%;iSW&+25f@gXSt@`r)?XE%8*JDXrI?}<>RL%W?oV@K?rS+Jr?;hK z*bLm%-s68}w_hK94&~cB3q&G)ym-R9JqZRDsA9u1{8G;EcLwNJl5jHRjqBXQiWB2) zGQ0f|wtKg;Sr-Y=A5b)A8i?~;&B~@c(-B4Lfv|Jg_Yx5~K%#Q(Ol0o)5d_&=Ql!)~ zN$c=Eem6kJBHhMq=kR^0<%pu=HWN&L!D>_j!#egy`}@T_dI?eRY-uE{MwUr3kds`h zri_~zIR}aBhTDct>JbT|G<+q zXSI0%MB-GI1O^Hh5b&B=)UlL6!6Admwo)?pq#I$y8M=b?+$EA6d_cW^a>>yoft`?K zNCe1l>=Q*baj&G|$H;lPf>@PxM?u3OINjOe-RmFn(S+W#;~lt*R&HT)`n$pK2xTdA zD2iZRWNm=25%S$@_Gc^q+G#-SXYUh@{hAhbqe$mvc-|EH>SqgtezwfX^MefWdsjck zk2%G|UW^~ja-5dqJaP`?$2S-cviJ9h!SOr*Y?$+(Ty&@QfHNZ}?kiA3x)FyO$W?t+ z5LY=3*c~Ypx?Qx-#_Ju2v1EU@>i4v`1{Bv0285G0HRb8wZ1HXcpc!QB=r!9k&+$qL zLbp(*i_>P4d`k7>IyEA&L-I=C1

#rsc>mPv8`spdTkcb*l2p1mC+g6;E8`Y2FHo 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 z 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 z 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⁢)=*==ZkeoK%p$wR$Y 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" - }, - "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": "^1.0.1", - "@opentelemetry/exporter-zipkin": "^1.0.1", - "@opentelemetry/instrumentation": "^0.27.0", - "@opentelemetry/instrumentation-grpc": "^0.27.0", - "@opentelemetry/resources": "^1.0.1", - "@opentelemetry/semantic-conventions": "^1.0.1", - "@opentelemetry/sdk-trace-base": "^1.0.1", - "@opentelemetry/sdk-trace-node": "^1.0.1", - "google-protobuf": "^3.9.2", - "grpc": "^1.23.3", - "node-pre-gyp": "0.14.0" - }, - "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/grpc", - "devDependencies": { - "cross-env": "^6.0.0" - } -} diff --git a/examples/grpc/server.js b/examples/grpc/server.js deleted file mode 100644 index 6cb34dee5e..0000000000 --- a/examples/grpc/server.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; - -const api = require('@opentelemetry/api'); -const tracer = require('./tracer')(('example-grpc-server')); -const grpc = require('grpc'); - -const messages = require('./helloworld_pb'); -const services = require('./helloworld_grpc_pb'); - -const PORT = 50051; - -/** Starts a gRPC server that receives requests on sample server port. */ -function startServer() { - // Creates a server - const server = new grpc.Server(); - server.addService(services.GreeterService, { sayHello }); - server.bind(`0.0.0.0:${PORT}`, grpc.ServerCredentials.createInsecure()); - console.log(`binding server on 0.0.0.0:${PORT}`); - server.start(); -} - -function sayHello(call, callback) { - const currentSpan = api.trace.getSpan(api.context.active()); - // display traceid in the terminal - console.log(`traceid: ${currentSpan.spanContext().traceId}`); - const span = tracer.startSpan('server.js:sayHello()', { - parent: currentSpan, - kind: 1, // server - attributes: { key: 'value' }, - }); - span.addEvent(`invoking sayHello() to ${call.request.getName()}`); - const reply = new messages.HelloReply(); - reply.setMessage(`Hello ${call.request.getName()}`); - callback(null, reply); - span.end(); -} - -startServer(); diff --git a/examples/grpc/tracer.js b/examples/grpc/tracer.js deleted file mode 100644 index 3dd3adddc7..0000000000 --- a/examples/grpc/tracer.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; - -const opentelemetry = require('@opentelemetry/api'); -const { registerInstrumentations } = require('@opentelemetry/instrumentation'); -const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); -const { Resource } = require('@opentelemetry/resources'); -const { SemanticResourceAttributes } = require('@opentelemetry/semantic-conventions'); -const { SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base'); -const { JaegerExporter } = require('@opentelemetry/exporter-jaeger'); -const { ZipkinExporter } = require('@opentelemetry/exporter-zipkin'); -const { GrpcInstrumentation } = require('@opentelemetry/instrumentation-grpc'); - -const EXPORTER = process.env.EXPORTER || ''; - -module.exports = (serviceName) => { - const provider = new NodeTracerProvider({ - resource: new Resource({ - [SemanticResourceAttributes.SERVICE_NAME]: serviceName, - }), - }); - - let exporter; - if (EXPORTER.toLowerCase().startsWith('z')) { - exporter = new ZipkinExporter(); - } else { - exporter = new JaegerExporter(); - } - - provider.addSpanProcessor(new SimpleSpanProcessor(exporter)); - - // Initialize the OpenTelemetry APIs to use the NodeTracerProvider bindings - provider.register(); - - registerInstrumentations({ - instrumentations: [ - new GrpcInstrumentation(), - ], - }); - - return opentelemetry.trace.getTracer('grpc-example'); -}; diff --git a/experimental/CHANGELOG.md b/experimental/CHANGELOG.md index ff64e920fd..4d7da0576e 100644 --- a/experimental/CHANGELOG.md +++ b/experimental/CHANGELOG.md @@ -6,6 +6,8 @@ All notable changes to experimental packages in this project will be documented ### :boom: Breaking Change +* chore(instrumentation-grpc): Drop support for package `grpc`. [#3807](https://github.com/open-telemetry/opentelemetry-js/pull/3807) @llc1123 + ### :rocket: (Enhancement) ### :bug: (Bug Fix) diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/README.md b/experimental/packages/opentelemetry-instrumentation-grpc/README.md index 2aa6038c03..8916054eb4 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/README.md +++ b/experimental/packages/opentelemetry-instrumentation-grpc/README.md @@ -5,7 +5,7 @@ **Note: This is an experimental package under active development. New releases may include breaking changes.** -This module provides automatic instrumentation for [`grpc`](https://grpc.github.io/grpc/node/) and [`@grpc/grpc-js`](https://grpc.io/blog/grpc-js-1.0/). Currently, version [`1.x`](https://www.npmjs.com/package/grpc?activeTab=versions) of `grpc` and version [`1.x`](https://www.npmjs.com/package/@grpc/grpc-js?activeTab=versions) of `@grpc/grpc-js` is supported. +This module provides automatic instrumentation for [`@grpc/grpc-js`](https://grpc.io/blog/grpc-js-1.0/). Currently, version [`1.x`](https://www.npmjs.com/package/@grpc/grpc-js?activeTab=versions) of `@grpc/grpc-js` is supported. For automatic instrumentation see the [@opentelemetry/sdk-trace-node](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package. @@ -18,7 +18,7 @@ npm install --save @opentelemetry/instrumentation-grpc ## Usage -OpenTelemetry gRPC Instrumentation allows the user to automatically collect trace data and export them to the backend of choice, to give observability to distributed systems when working with [gRPC](https://www.npmjs.com/package/grpc) or ([grpc-js](https://www.npmjs.com/package/@grpc/grpc-js)). +OpenTelemetry gRPC Instrumentation allows the user to automatically collect trace data and export them to the backend of choice, to give observability to distributed systems when working with ([grpc-js](https://www.npmjs.com/package/@grpc/grpc-js)). To load a specific instrumentation (**gRPC** in this case), specify it in the Node Tracer's configuration. @@ -38,15 +38,15 @@ registerInstrumentations({ ``` -See [examples/grpc](https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/grpc) or [examples/grpc-js](https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/grpc-js) for examples. +See [examples/grpc-js](https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/grpc-js) for examples. ### gRPC Instrumentation Options gRPC instrumentation accepts the following configuration: -| Options | Type | Description | -|----------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [`ignoreGrpcMethods`](https://github.com/open-telemetry/opentelemetry-js/blob/main/experimental/packages/opentelemetry-instrumentation-grpc/src/types.ts#L25) | `IgnoreMatcher[]` | gRPC instrumentation will not trace any methods that match anything in this list. You may pass a string (case-insensitive match), a `RegExp` object, or a filter function. | +| Options | Type | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| [`ignoreGrpcMethods`](https://github.com/open-telemetry/opentelemetry-js/blob/main/experimental/packages/opentelemetry-instrumentation-grpc/src/types.ts#L25) | `IgnoreMatcher[]` | gRPC instrumentation will not trace any methods that match anything in this list. You may pass a string (case-insensitive match), a `RegExp` object, or a filter function. | | [`metadataToSpanAttributes`](https://github.com/open-telemetry/opentelemetry-js/blob/main/experimental/packages/opentelemetry-instrumentation-grpc/src/types.ts#L27) | `object` | List of case insensitive metadata to convert to span attributes. Client and server (outgoing requests, incoming responses) metadata attributes will be converted to span attributes in the form of `rpc.{request\response}.metadata.metadata_key`, e.g. `rpc.response.metadata.date` | ## Useful links diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/package.json b/experimental/packages/opentelemetry-instrumentation-grpc/package.json index 7bbfdb8b1d..3bba4ddee3 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/package.json +++ b/experimental/packages/opentelemetry-instrumentation-grpc/package.json @@ -18,8 +18,7 @@ "watch": "tsc --build --watch", "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "node ../../../scripts/version-update.js", - "peer-api-check": "node ../../../scripts/peer-api-check.js", - "postinstall": "node -e \"console.log(\\\"\\x1b[95m%s\\x1b[0m\\\", \\\"@opentelemetry/instrumentation-grpc - warning: The package 'grpc' (https://www.npmjs.com/package/grpc) is deprecated. It will no longer be instrumented in the next release of '@opentelemetry/instrumentation-grpc'. Please migrate to '@grpc/grpc-js' (https://www.npmjs.com/package/@grpc/grpc-js) to continue receiving telemetry.\\\");\"" + "peer-api-check": "node ../../../scripts/peer-api-check.js" }, "keywords": [ "opentelemetry", @@ -59,7 +58,6 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "grpc": "1.24.11", "mocha": "10.2.0", "node-pre-gyp": "0.17.0", "nyc": "15.1.0", diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc-js/clientUtils.ts b/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc-js/clientUtils.ts index 8c98a10936..1ffaab39bb 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc-js/clientUtils.ts +++ b/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc-js/clientUtils.ts @@ -87,7 +87,7 @@ export function makeGrpcClientRemoteCall( ) { const wrappedFn: SendUnaryDataCallback = ( err: grpcJs.ServiceError | null, - res: any + res?: ResponseType ) => { if (err) { if (err.code) { @@ -226,6 +226,6 @@ export function getMetadata( */ export function setSpanContext(metadata: grpcJs.Metadata): void { propagation.inject(context.active(), metadata, { - set: (metadata, k, v) => metadata.set(k, v as grpcJs.MetadataValue), + set: (meta, k, v) => meta.set(k, v), }); } diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc-js/index.ts b/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc-js/index.ts index 6608521bd6..eaae47c8ef 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc-js/index.ts +++ b/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc-js/index.ts @@ -80,7 +80,7 @@ export class GrpcJsInstrumentation extends InstrumentationBase { this._wrap( moduleExports.Server.prototype, 'register', - this._patchServer() as any + this._patchServer() ); // Patch Client methods if (isWrapped(moduleExports.makeGenericClientConstructor)) { diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc/clientUtils.ts b/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc/clientUtils.ts deleted file mode 100644 index af56330a85..0000000000 --- a/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc/clientUtils.ts +++ /dev/null @@ -1,202 +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 type * as grpcTypes from 'grpc'; -import type * as events from 'events'; -import { SendUnaryDataCallback, GrpcClientFunc } from './types'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; -import { context, Span, SpanStatusCode, propagation } from '@opentelemetry/api'; -import { - _grpcStatusCodeToSpanStatus, - _grpcStatusCodeToOpenTelemetryStatusCode, - findIndex, -} from '../utils'; -import { AttributeNames } from '../enums/AttributeNames'; -import { metadataCaptureType } from '../internal-types'; -import { GRPC_STATUS_CODE_OK } from '../status-code'; - -/** - * This method handles the client remote call - */ -export const makeGrpcClientRemoteCall = function ( - metadataCapture: metadataCaptureType, - original: GrpcClientFunc, - args: any[], - metadata: grpcTypes.Metadata, - self: grpcTypes.Client -) { - /** - * Patches a callback so that the current span for this trace is also ended - * when the callback is invoked. - */ - function patchedCallback( - span: Span, - callback: SendUnaryDataCallback, - _metadata: grpcTypes.Metadata - ) { - const wrappedFn = (err: grpcTypes.ServiceError, res: any) => { - if (err) { - if (err.code) { - span.setStatus(_grpcStatusCodeToSpanStatus(err.code)); - span.setAttribute(SemanticAttributes.RPC_GRPC_STATUS_CODE, err.code); - } - span.setAttributes({ - [AttributeNames.GRPC_ERROR_NAME]: err.name, - [AttributeNames.GRPC_ERROR_MESSAGE]: err.message, - }); - } else { - span.setStatus({ code: SpanStatusCode.UNSET }); - span.setAttribute( - SemanticAttributes.RPC_GRPC_STATUS_CODE, - GRPC_STATUS_CODE_OK - ); - } - - span.end(); - callback(err, res); - }; - return context.bind(context.active(), wrappedFn); - } - - return (span: Span) => { - if (!span) { - return original.apply(self, args); - } - - // if unary or clientStream - if (!original.responseStream) { - const callbackFuncIndex = findIndex(args, arg => { - return typeof arg === 'function'; - }); - if (callbackFuncIndex !== -1) { - args[callbackFuncIndex] = patchedCallback( - span, - args[callbackFuncIndex], - metadata - ); - } - } - - span.addEvent('sent'); - - setSpanContext(metadata); - const call = original.apply(self, args); - - (call as unknown as events.EventEmitter).on( - 'metadata', - responseMetadata => { - metadataCapture.client.captureResponseMetadata(span, responseMetadata); - } - ); - - // if server stream or bidi - if (original.responseStream) { - // Both error and status events can be emitted - // the first one emitted set spanEnded to true - let spanEnded = false; - const endSpan = () => { - if (!spanEnded) { - span.end(); - spanEnded = true; - } - }; - context.bind(context.active(), call); - (call as unknown as events.EventEmitter).on( - 'error', - (err: grpcTypes.ServiceError) => { - span.setStatus({ - code: _grpcStatusCodeToOpenTelemetryStatusCode(err.code), - message: err.message, - }); - span.setAttributes({ - [AttributeNames.GRPC_ERROR_NAME]: err.name, - [AttributeNames.GRPC_ERROR_MESSAGE]: err.message, - }); - if (err.code != null) { - span.setAttribute( - SemanticAttributes.RPC_GRPC_STATUS_CODE, - err.code - ); - } - endSpan(); - } - ); - - (call as unknown as events.EventEmitter).on( - 'status', - (status: grpcTypes.StatusObject) => { - span.setStatus({ code: SpanStatusCode.UNSET }); - span.setAttribute( - SemanticAttributes.RPC_GRPC_STATUS_CODE, - status.code - ); - endSpan(); - } - ); - } - return call; - }; -}; - -export const getMetadata = function ( - grpcClient: typeof grpcTypes, - original: GrpcClientFunc, - args: any[] -): grpcTypes.Metadata { - let metadata: grpcTypes.Metadata; - - // This finds an instance of Metadata among the arguments. - // A possible issue that could occur is if the 'options' parameter from - // the user contains an '_internal_repr' as well as a 'getMap' function, - // but this is an extremely rare case. - let metadataIndex = findIndex(args, (arg: any) => { - return ( - arg && - typeof arg === 'object' && - arg._internal_repr && - typeof arg.getMap === 'function' - ); - }); - if (metadataIndex === -1) { - metadata = new grpcClient.Metadata(); - if (!original.requestStream) { - // unary or server stream - if (args.length === 0) { - // No argument (for the gRPC call) was provided, so we will have to - // provide one, since metadata cannot be the first argument. - // The internal representation of argument defaults to undefined - // in its non-presence. - // Note that we can't pass null instead of undefined because the - // serializer within gRPC doesn't accept it. - args.push(undefined); - } - metadataIndex = 1; - } else { - // client stream or bidi - metadataIndex = 0; - } - args.splice(metadataIndex, 0, metadata); - } else { - metadata = args[metadataIndex]; - } - return metadata; -}; - -const setSpanContext = function (metadata: grpcTypes.Metadata): void { - propagation.inject(context.active(), metadata, { - set: (metadata, k, v) => metadata.set(k, v as grpcTypes.MetadataValue), - }); -}; diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc/index.ts b/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc/index.ts deleted file mode 100644 index fbeac0395e..0000000000 --- a/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc/index.ts +++ /dev/null @@ -1,403 +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 type * as grpcTypes from 'grpc'; -import { - InstrumentationNodeModuleDefinition, - InstrumentationNodeModuleFile, - InstrumentationBase, - isWrapped, -} from '@opentelemetry/instrumentation'; -import { - GrpcInternalClientTypes, - ServerCallWithMeta, - SendUnaryDataCallback, - GrpcClientFunc, -} from './types'; -import { GrpcInstrumentationConfig } from '../types'; -import { metadataCaptureType } from '../internal-types'; -import { - context, - propagation, - SpanOptions, - SpanKind, - trace, -} from '@opentelemetry/api'; -import { - clientStreamAndUnaryHandler, - shouldNotTraceServerCall, - serverStreamAndBidiHandler, -} from './serverUtils'; -import { makeGrpcClientRemoteCall, getMetadata } from './clientUtils'; -import { - _extractMethodAndService, - _methodIsIgnored, - metadataCapture, - URI_REGEX, -} from '../utils'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; -import { AttributeValues } from '../enums/AttributeValues'; - -/** - * Holding reference to grpc module here to access constant of grpc modules - * instead of just requiring it avoid directly depending on grpc itself. - */ -let grpcClient: typeof grpcTypes; - -export class GrpcNativeInstrumentation extends InstrumentationBase< - typeof grpcTypes -> { - private _metadataCapture: metadataCaptureType; - - constructor( - name: string, - version: string, - config?: GrpcInstrumentationConfig - ) { - super(name, version, config); - this._metadataCapture = this._createMetadataCapture(); - } - - init() { - return [ - new InstrumentationNodeModuleDefinition( - 'grpc', - ['1.*'], - (moduleExports, version) => { - this._diag.debug(`Applying patch for grpc@${version}`); - grpcClient = moduleExports; - - if (isWrapped(moduleExports.Server.prototype.register)) { - this._unwrap(moduleExports.Server.prototype, 'register'); - } - this._wrap( - moduleExports.Server.prototype, - 'register', - this._patchServer() as any - ); - // Wrap the externally exported client constructor - if (isWrapped(moduleExports.makeGenericClientConstructor)) { - this._unwrap(moduleExports, 'makeGenericClientConstructor'); - } - this._wrap( - moduleExports, - 'makeGenericClientConstructor', - this._patchClient() - ); - return moduleExports; - }, - (moduleExports, version) => { - if (moduleExports === undefined) return; - this._diag.debug(`Removing patch for grpc@${version}`); - - this._unwrap(moduleExports.Server.prototype, 'register'); - }, - this._getInternalPatchs() - ), - ]; - } - - override getConfig(): GrpcInstrumentationConfig { - return super.getConfig(); - } - - override setConfig(config?: GrpcInstrumentationConfig): void { - super.setConfig(config); - this._metadataCapture = this._createMetadataCapture(); - } - - private _getInternalPatchs() { - const onPatch = ( - moduleExports: GrpcInternalClientTypes, - version?: string - ) => { - this._diag.debug(`Applying internal patch for grpc@${version}`); - if (isWrapped(moduleExports.makeClientConstructor)) { - this._unwrap(moduleExports, 'makeClientConstructor'); - } - this._wrap(moduleExports, 'makeClientConstructor', this._patchClient()); - return moduleExports; - }; - const onUnPatch = ( - moduleExports?: GrpcInternalClientTypes, - version?: string - ) => { - if (moduleExports === undefined) return; - this._diag.debug(`Removing internal patch for grpc@${version}`); - this._unwrap(moduleExports, 'makeClientConstructor'); - }; - return [ - new InstrumentationNodeModuleFile( - 'grpc/src/node/src/client.js', - ['0.13 - 1.6'], - onPatch, - onUnPatch - ), - new InstrumentationNodeModuleFile( - 'grpc/src/client.js', - ['^1.7'], - onPatch, - onUnPatch - ), - ]; - } - - private _patchServer() { - const instrumentation = this; - return (originalRegister: typeof grpcTypes.Server.prototype.register) => { - instrumentation._diag.debug('patched gRPC server'); - - return function register( - this: grpcTypes.Server & { handlers: any }, - name: string, - handler: grpcTypes.handleCall, - serialize: grpcTypes.serialize, - deserialize: grpcTypes.deserialize, - type: string - ) { - const originalResult = originalRegister.apply(this, arguments as any); - const handlerSet = this.handlers[name]; - - instrumentation._wrap( - handlerSet, - 'func', - (originalFunc: grpcTypes.handleCall) => { - return function func( - this: typeof handlerSet, - call: ServerCallWithMeta, - callback: SendUnaryDataCallback - ) { - const self = this; - if (shouldNotTraceServerCall.call(instrumentation, call, name)) { - switch (type) { - case 'unary': - case 'client_stream': - return (originalFunc as Function).call( - self, - call, - callback - ); - case 'server_stream': - case 'bidi': - return (originalFunc as Function).call(self, call); - default: - return originalResult; - } - } - const spanName = `grpc.${name.replace('/', '')}`; - const spanOptions: SpanOptions = { - kind: SpanKind.SERVER, - }; - - instrumentation._diag.debug( - `patch func: ${JSON.stringify(spanOptions)}` - ); - - context.with( - propagation.extract(context.active(), call.metadata, { - get: (metadata, key) => metadata.get(key).map(String), - keys: metadata => Object.keys(metadata.getMap()), - }), - () => { - const { service, method } = _extractMethodAndService(name); - - const span = instrumentation.tracer - .startSpan(spanName, spanOptions) - .setAttributes({ - [SemanticAttributes.RPC_SYSTEM]: - AttributeValues.RPC_SYSTEM, - [SemanticAttributes.RPC_METHOD]: method, - [SemanticAttributes.RPC_SERVICE]: service, - }); - - instrumentation._metadataCapture.server.captureRequestMetadata( - span, - call.metadata - ); - - instrumentation._wrap( - call as any, - 'sendMetadata', - originalSendMetadata => - (responseMetadata: grpcTypes.Metadata) => { - instrumentation._metadataCapture.server.captureResponseMetadata( - span, - responseMetadata - ); - originalSendMetadata.call(call, responseMetadata); - } - ); - - context.with(trace.setSpan(context.active(), span), () => { - switch (type) { - case 'unary': - case 'client_stream': - return clientStreamAndUnaryHandler( - span, - call, - callback, - originalFunc, - self - ); - case 'server_stream': - case 'bidi': - return serverStreamAndBidiHandler( - span, - call, - originalFunc, - self - ); - default: - break; - } - }); - } - ); - }; - } - ); - - return originalResult; - }; - }; - } - - private _patchClient() { - const instrumentation = this; - return (original: typeof grpcTypes.makeGenericClientConstructor): never => { - instrumentation._diag.debug('patching client'); - return function makeClientConstructor( - this: typeof grpcTypes.Client, - methods: { [key: string]: { originalName?: string } }, - _serviceName: string, - _options: grpcTypes.GenericClientOptions - ) { - const client = original.apply(this, arguments as any); - instrumentation._massWrap( - client.prototype as never, - instrumentation._getMethodsToWrap(client, methods) as never[], - instrumentation._getPatchedClientMethods() as any - ); - return client; - } as never; - }; - } - - private _getMethodsToWrap( - client: typeof grpcTypes.Client, - methods: { [key: string]: { originalName?: string } } - ): string[] { - const methodList: string[] = []; - - // For a method defined in .proto as "UnaryMethod" - Object.entries(methods).forEach(([name, { originalName }]) => { - if (!_methodIsIgnored(name, this.getConfig().ignoreGrpcMethods)) { - methodList.push(name); // adds camel case method name: "unaryMethod" - if ( - originalName && - // eslint-disable-next-line no-prototype-builtins - client.prototype.hasOwnProperty(originalName) && - name !== originalName // do not add duplicates - ) { - // adds original method name: "UnaryMethod", - methodList.push(originalName); - } - } - }); - return methodList; - } - - private _getPatchedClientMethods() { - const instrumentation = this; - return (original: GrpcClientFunc) => { - instrumentation._diag.debug('patch all client methods'); - function clientMethodTrace(this: grpcTypes.Client) { - const name = `grpc.${(original.path as string | undefined)?.replace( - '/', - '' - )}`; - const args = Array.prototype.slice.call(arguments); - const metadata = getMetadata(grpcClient, original, args); - const { service, method } = _extractMethodAndService(original.path); - const span = instrumentation.tracer - .startSpan(name, { - kind: SpanKind.CLIENT, - }) - .setAttributes({ - [SemanticAttributes.RPC_SYSTEM]: AttributeValues.RPC_SYSTEM, - [SemanticAttributes.RPC_METHOD]: method, - [SemanticAttributes.RPC_SERVICE]: service, - }); - // set net.peer.* from target (e.g., "dns:otel-productcatalogservice:8080") as a hint to APMs - const parsedUri = URI_REGEX.exec(this.getChannel().getTarget()); - if (parsedUri != null && parsedUri.groups != null) { - span.setAttribute( - SemanticAttributes.NET_PEER_NAME, - parsedUri.groups['name'] - ); - span.setAttribute( - SemanticAttributes.NET_PEER_PORT, - parseInt(parsedUri.groups['port']) - ); - } - - instrumentation._metadataCapture.client.captureRequestMetadata( - span, - metadata - ); - - return context.with(trace.setSpan(context.active(), span), () => - makeGrpcClientRemoteCall( - instrumentation._metadataCapture, - original, - args, - metadata, - this - )(span) - ); - } - Object.assign(clientMethodTrace, original); - return clientMethodTrace; - }; - } - - private _createMetadataCapture(): metadataCaptureType { - const config = this.getConfig(); - - return { - client: { - captureRequestMetadata: metadataCapture( - 'request', - config.metadataToSpanAttributes?.client?.requestMetadata ?? [] - ), - captureResponseMetadata: metadataCapture( - 'response', - config.metadataToSpanAttributes?.client?.responseMetadata ?? [] - ), - }, - server: { - captureRequestMetadata: metadataCapture( - 'request', - config.metadataToSpanAttributes?.server?.requestMetadata ?? [] - ), - captureResponseMetadata: metadataCapture( - 'response', - config.metadataToSpanAttributes?.server?.responseMetadata ?? [] - ), - }, - }; - } -} diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc/serverUtils.ts b/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc/serverUtils.ts deleted file mode 100644 index d97a947443..0000000000 --- a/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc/serverUtils.ts +++ /dev/null @@ -1,136 +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 type * as grpcTypes from 'grpc'; -import { SendUnaryDataCallback, ServerCallWithMeta } from './types'; -import { GrpcNativeInstrumentation } from './'; -import { context, Span, SpanStatusCode } from '@opentelemetry/api'; -import { - _grpcStatusCodeToOpenTelemetryStatusCode, - _grpcStatusCodeToSpanStatus, - _methodIsIgnored, -} from '../utils'; -import { AttributeNames } from '../enums/AttributeNames'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; -import { GRPC_STATUS_CODE_OK } from '../status-code'; - -export const clientStreamAndUnaryHandler = function ( - span: Span, - call: ServerCallWithMeta, - callback: SendUnaryDataCallback, - original: - | grpcTypes.handleCall - | grpcTypes.ClientReadableStream, - self: {} -) { - function patchedCallback( - err: grpcTypes.ServiceError, - value: any, - trailer: grpcTypes.Metadata, - flags: grpcTypes.writeFlags - ) { - if (err) { - if (err.code) { - span.setStatus({ - code: _grpcStatusCodeToOpenTelemetryStatusCode(err.code), - message: err.message, - }); - span.setAttribute(SemanticAttributes.RPC_GRPC_STATUS_CODE, err.code); - } - span.setAttributes({ - [AttributeNames.GRPC_ERROR_NAME]: err.name, - [AttributeNames.GRPC_ERROR_MESSAGE]: err.message, - }); - } else { - span.setStatus({ code: SpanStatusCode.UNSET }); - span.setAttribute( - SemanticAttributes.RPC_GRPC_STATUS_CODE, - GRPC_STATUS_CODE_OK - ); - } - span.addEvent('received'); - - // end the span - span.end(); - return callback(err, value, trailer, flags); - } - - context.bind(context.active(), call); - return (original as Function).call(self, call, patchedCallback); -}; - -export const serverStreamAndBidiHandler = function ( - span: Span, - call: ServerCallWithMeta, - original: grpcTypes.handleCall, - self: {} -) { - let spanEnded = false; - const endSpan = () => { - if (!spanEnded) { - spanEnded = true; - span.end(); - } - }; - - context.bind(context.active(), call); - call.on('finish', () => { - span.setStatus(_grpcStatusCodeToSpanStatus(call.status.code)); - span.setAttribute( - SemanticAttributes.RPC_GRPC_STATUS_CODE, - call.status.code - ); - - // if there is an error, span will be ended on error event, otherwise end it here - if (call.status.code === 0) { - span.addEvent('finished'); - endSpan(); - } - }); - - call.on('error', (err: grpcTypes.ServiceError) => { - span.setStatus({ - code: _grpcStatusCodeToOpenTelemetryStatusCode(err.code), - message: err.message, - }); - span.addEvent('finished with error'); - span.setAttributes({ - [AttributeNames.GRPC_ERROR_NAME]: err.name, - [AttributeNames.GRPC_ERROR_MESSAGE]: err.message, - }); - if (err.code != null) { - span.setAttribute(SemanticAttributes.RPC_GRPC_STATUS_CODE, err.code); - } - endSpan(); - }); - - return (original as any).call(self, call); -}; - -/** - * Returns true if the server call should not be traced. - */ -export const shouldNotTraceServerCall = function ( - this: GrpcNativeInstrumentation, - call: ServerCallWithMeta, - name: string -): boolean { - const parsedName = name.split('/'); - return _methodIsIgnored( - parsedName[parsedName.length - 1] || name, - this.getConfig().ignoreGrpcMethods - ); -}; diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc/types.ts b/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc/types.ts deleted file mode 100644 index ef3e4ef9bb..0000000000 --- a/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc/types.ts +++ /dev/null @@ -1,53 +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 type * as grpcTypes from 'grpc'; -import * as events from 'events'; - -export type SendUnaryDataCallback = ( - error: grpcTypes.ServiceError | null, - value?: any, - trailer?: grpcTypes.Metadata, - flags?: grpcTypes.writeFlags -) => void; - -interface GrpcStatus { - code: number; - details: string; - metadata: grpcTypes.Metadata; -} - -export type ServerCall = - | typeof grpcTypes.ServerUnaryCall - | typeof grpcTypes.ServerReadableStream - | typeof grpcTypes.ServerWritableStream - | typeof grpcTypes.ServerDuplexStream; - -export type ServerCallWithMeta = ServerCall & { - metadata: grpcTypes.Metadata; - status: GrpcStatus; - request?: unknown; -} & events.EventEmitter; - -export type GrpcClientFunc = typeof Function & { - path: string; - requestStream: boolean; - responseStream: boolean; -}; - -export type GrpcInternalClientTypes = { - makeClientConstructor: typeof grpcTypes.makeGenericClientConstructor; -}; diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/src/instrumentation.ts b/experimental/packages/opentelemetry-instrumentation-grpc/src/instrumentation.ts index c2a8946f97..d597beaae2 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/src/instrumentation.ts +++ b/experimental/packages/opentelemetry-instrumentation-grpc/src/instrumentation.ts @@ -16,7 +16,6 @@ import { GrpcInstrumentationConfig } from './types'; import { VERSION } from './version'; -import { GrpcNativeInstrumentation } from './grpc'; import { GrpcJsInstrumentation } from './grpc-js'; import * as api from '@opentelemetry/api'; @@ -24,7 +23,6 @@ import * as api from '@opentelemetry/api'; export const GRPC_TRACE_KEY = 'grpc-trace-bin'; export class GrpcInstrumentation { - private _grpcNativeInstrumentation: GrpcNativeInstrumentation; private _grpcJsInstrumentation: GrpcJsInstrumentation; public readonly instrumentationName: string = @@ -37,16 +35,10 @@ export class GrpcInstrumentation { this.instrumentationVersion, config ); - this._grpcNativeInstrumentation = new GrpcNativeInstrumentation( - this.instrumentationName, - this.instrumentationVersion, - config - ); } public setConfig(config?: GrpcInstrumentationConfig) { this._grpcJsInstrumentation.setConfig(config); - this._grpcNativeInstrumentation.setConfig(config); } /** @@ -66,12 +58,10 @@ export class GrpcInstrumentation { enable() { this._grpcJsInstrumentation.enable(); - this._grpcNativeInstrumentation.enable(); } disable() { this._grpcJsInstrumentation.disable(); - this._grpcNativeInstrumentation.disable(); } /** @@ -80,7 +70,6 @@ export class GrpcInstrumentation { */ public setMeterProvider(meterProvider: api.MeterProvider) { this._grpcJsInstrumentation.setMeterProvider(meterProvider); - this._grpcNativeInstrumentation.setMeterProvider(meterProvider); } /** @@ -89,6 +78,5 @@ export class GrpcInstrumentation { */ public setTracerProvider(tracerProvider: api.TracerProvider) { this._grpcJsInstrumentation.setTracerProvider(tracerProvider); - this._grpcNativeInstrumentation.setTracerProvider(tracerProvider); } } diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/src/internal-types.ts b/experimental/packages/opentelemetry-instrumentation-grpc/src/internal-types.ts index ebc17ae1d4..594ad7ce0a 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/src/internal-types.ts +++ b/experimental/packages/opentelemetry-instrumentation-grpc/src/internal-types.ts @@ -16,27 +16,26 @@ import { Span } from '@opentelemetry/api'; import type * as grpcJsTypes from '@grpc/grpc-js'; -import type * as grpcTypes from 'grpc'; export type metadataCaptureType = { client: { captureRequestMetadata: ( span: Span, - metadata: grpcJsTypes.Metadata | grpcTypes.Metadata + metadata: grpcJsTypes.Metadata ) => void; captureResponseMetadata: ( span: Span, - metadata: grpcJsTypes.Metadata | grpcTypes.Metadata + metadata: grpcJsTypes.Metadata ) => void; }; server: { captureRequestMetadata: ( span: Span, - metadata: grpcJsTypes.Metadata | grpcTypes.Metadata + metadata: grpcJsTypes.Metadata ) => void; captureResponseMetadata: ( span: Span, - metadata: grpcJsTypes.Metadata | grpcTypes.Metadata + metadata: grpcJsTypes.Metadata ) => void; }; }; diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/src/utils.ts b/experimental/packages/opentelemetry-instrumentation-grpc/src/utils.ts index 8d031107dd..d9e542f509 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/src/utils.ts +++ b/experimental/packages/opentelemetry-instrumentation-grpc/src/utils.ts @@ -15,7 +15,6 @@ */ import { SpanStatusCode, SpanStatus, Span } from '@opentelemetry/api'; -import type * as grpcTypes from 'grpc'; import type * as grpcJsTypes from '@grpc/grpc-js'; import { IgnoreMatcher } from './types'; @@ -26,7 +25,7 @@ export const URI_REGEX = // Equivalent to lodash _.findIndex export const findIndex: (args: T[], fn: (arg: T) => boolean) => number = ( args, - fn: Function + fn ) => { let index = -1; for (const arg of args) { @@ -43,7 +42,7 @@ export const findIndex: (args: T[], fn: (arg: T) => boolean) => number = ( * @param status */ export const _grpcStatusCodeToOpenTelemetryStatusCode = ( - status?: grpcTypes.status | grpcJsTypes.status + status?: grpcJsTypes.status ): SpanStatusCode => { if (status !== undefined && status === 0) { return SpanStatusCode.UNSET; @@ -128,7 +127,7 @@ export function metadataCapture( ]) ); - return (span: Span, metadata: grpcJsTypes.Metadata | grpcTypes.Metadata) => { + return (span: Span, metadata: grpcJsTypes.Metadata) => { for (const [ capturedMetadata, normalizedMetadata, @@ -137,7 +136,7 @@ export function metadataCapture( .get(capturedMetadata) .flatMap(value => (typeof value === 'string' ? value.toString() : [])); - if (metadataValues === undefined || metadataValues === []) { + if (metadataValues === undefined || metadataValues.length === 0) { continue; } diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/test/grpc.test.ts b/experimental/packages/opentelemetry-instrumentation-grpc/test/grpc.test.ts deleted file mode 100644 index 453c6d6ef9..0000000000 --- a/experimental/packages/opentelemetry-instrumentation-grpc/test/grpc.test.ts +++ /dev/null @@ -1,28 +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 { runTests } from './helper'; -import { GrpcInstrumentation } from '../src/instrumentation'; - -const instrumentation = new GrpcInstrumentation(); -instrumentation.enable(); -instrumentation.disable(); - -import * as grpc from 'grpc'; - -describe('#grpc', () => { - runTests(instrumentation, 'grpc', grpc, 12345); -}); diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/test/helper.ts b/experimental/packages/opentelemetry-instrumentation-grpc/test/helper.ts index 58855a6a5f..661b309e90 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/test/helper.ts +++ b/experimental/packages/opentelemetry-instrumentation-grpc/test/helper.ts @@ -32,7 +32,6 @@ import { } from '@opentelemetry/sdk-trace-base'; import * as assert from 'assert'; import * as protoLoader from '@grpc/proto-loader'; -import type * as grpcNapi from 'grpc'; import type * as grpcJs from '@grpc/grpc-js'; import { assertPropagation, assertSpan } from './utils/assertionUtils'; import { promisify } from 'util'; @@ -54,25 +53,17 @@ interface TestRequestResponse { num: number; } -type ServiceError = grpcNapi.ServiceError | grpcJs.ServiceError; -type Client = grpcNapi.Client | grpcJs.Client; -type Server = grpcNapi.Server | grpcJs.Server; -type ServerUnaryCall = - | grpcNapi.ServerUnaryCall - | grpcJs.ServerUnaryCall; +type ServiceError = grpcJs.ServiceError; +type Client = grpcJs.Client; +type Server = grpcJs.Server; +type ServerUnaryCall = grpcJs.ServerUnaryCall; type RequestCallback = grpcJs.requestCallback; -type ServerReadableStream = - | grpcNapi.ServerReadableStream - | grpcJs.ServerReadableStream; -type ServerWriteableStream = - | grpcNapi.ServerWriteableStream - | grpcJs.ServerWritableStream; -type ServerDuplexStream = - | grpcNapi.ServerDuplexStream - | grpcJs.ServerDuplexStream; -type Metadata = grpcNapi.Metadata | grpcJs.Metadata; - -type TestGrpcClient = (typeof grpcJs | typeof grpcNapi)['Client'] & { +type ServerReadableStream = grpcJs.ServerReadableStream; +type ServerWriteableStream = grpcJs.ServerWritableStream; +type ServerDuplexStream = grpcJs.ServerDuplexStream; +type Metadata = grpcJs.Metadata; + +type TestGrpcClient = typeof grpcJs['Client'] & { unaryMethodWithMetadata: any; unaryMethod: any; UnaryMethod: any; @@ -117,7 +108,7 @@ const checkEqual = export const runTests = ( plugin: GrpcInstrumentation, moduleName: string, - grpc: typeof grpcNapi | typeof grpcJs, + grpc: typeof grpcJs, grpcPort: number ) => { const MAX_ERROR_STATUS = grpc.status.UNAUTHENTICATED; @@ -289,10 +280,7 @@ export const runTests = ( return result; }; - async function startServer( - grpc: typeof grpcJs | typeof grpcNapi, - proto: any - ) { + async function startServer(grpc: typeof grpcJs, proto: any) { const server = new grpc.Server(); function getError(msg: string, code: number): ServiceError | null { @@ -302,6 +290,7 @@ export const runTests = ( message: msg, code, details: msg, + metadata: new grpc.Metadata(), }; return err; } @@ -422,7 +411,7 @@ export const runTests = ( return server; } - function createClient(grpc: typeof grpcJs | typeof grpcNapi, proto: any) { + function createClient(grpc: typeof grpcJs, proto: any) { return new proto.GrpcTester( 'localhost:' + grpcPort, grpc.credentials.createInsecure() diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/test/utils/assertionUtils.ts b/experimental/packages/opentelemetry-instrumentation-grpc/test/utils/assertionUtils.ts index 24d4bf7af8..fcdd546b32 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/test/utils/assertionUtils.ts +++ b/experimental/packages/opentelemetry-instrumentation-grpc/test/utils/assertionUtils.ts @@ -16,7 +16,6 @@ import { SpanKind, SpanStatusCode } from '@opentelemetry/api'; import * as assert from 'assert'; -import type * as grpc from 'grpc'; import type * as grpcJs from '@grpc/grpc-js'; import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; import { @@ -26,7 +25,7 @@ import { import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; export const grpcStatusCodeToOpenTelemetryStatusCode = ( - status: grpc.status | grpcJs.status + status: grpcJs.status ): SpanStatusCode => { if (status !== undefined && status === 0) { return SpanStatusCode.UNSET; @@ -40,7 +39,7 @@ export const assertSpan = ( kind: SpanKind, validations: { name: string; - status: grpc.status | grpcJs.status; + status: grpcJs.status; netPeerName?: string; netPeerPort?: number; } From 3b387d8f370a1d2a6ac613d799249757433c15fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=B2=92=E7=B2=92=E6=A9=99?= Date: Mon, 12 Jun 2023 19:20:02 +0800 Subject: [PATCH 12/71] fix: align dependency versions (#3847) Co-authored-by: Marc Pichler --- experimental/packages/exporter-logs-otlp-http/package.json | 2 +- .../packages/opentelemetry-instrumentation-grpc/package.json | 2 +- .../packages/opentelemetry-instrumentation-http/package.json | 2 +- .../packages/opentelemetry-instrumentation/package.json | 4 ++-- experimental/packages/opentelemetry-sdk-node/package.json | 2 +- experimental/packages/otlp-grpc-exporter-base/package.json | 2 +- experimental/packages/otlp-proto-exporter-base/package.json | 2 +- experimental/packages/sdk-logs/package.json | 2 +- experimental/packages/shim-opencensus/package.json | 4 ++-- package.json | 2 +- packages/opentelemetry-sdk-trace-node/package.json | 2 +- packages/sdk-metrics/package.json | 2 +- packages/template/package.json | 2 +- 13 files changed, 15 insertions(+), 15 deletions(-) diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index ef21270a4e..217a113377 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -90,7 +90,7 @@ "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "14.0.2", + "sinon": "15.0.0", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4", diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/package.json b/experimental/packages/opentelemetry-instrumentation-grpc/package.json index 3bba4ddee3..840b58b8b6 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/package.json +++ b/experimental/packages/opentelemetry-instrumentation-grpc/package.json @@ -61,7 +61,7 @@ "mocha": "10.2.0", "node-pre-gyp": "0.17.0", "nyc": "15.1.0", - "semver": "7.3.5", + "semver": "7.5.1", "sinon": "15.0.0", "ts-mocha": "10.0.0", "typescript": "4.4.4" diff --git a/experimental/packages/opentelemetry-instrumentation-http/package.json b/experimental/packages/opentelemetry-instrumentation-http/package.json index 591911e5ae..dbb6797e36 100644 --- a/experimental/packages/opentelemetry-instrumentation-http/package.json +++ b/experimental/packages/opentelemetry-instrumentation-http/package.json @@ -76,7 +76,7 @@ "@opentelemetry/core": "1.14.0", "@opentelemetry/instrumentation": "0.40.0", "@opentelemetry/semantic-conventions": "1.14.0", - "semver": "^7.3.5" + "semver": "^7.5.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-http", "sideEffects": false diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index a95ef56eac..a72bf1af41 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -73,8 +73,8 @@ "dependencies": { "@types/shimmer": "^1.0.2", "import-in-the-middle": "1.3.5", - "require-in-the-middle": "^7.1.0", - "semver": "^7.3.2", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.1", "shimmer": "^1.2.1" }, "peerDependencies": { diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json index b0842de637..5b55e3eb27 100644 --- a/experimental/packages/opentelemetry-sdk-node/package.json +++ b/experimental/packages/opentelemetry-sdk-node/package.json @@ -72,7 +72,7 @@ "istanbul-instrumenter-loader": "3.0.1", "mocha": "10.2.0", "nyc": "15.1.0", - "semver": "7.3.5", + "semver": "7.5.1", "sinon": "15.0.0", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", diff --git a/experimental/packages/otlp-grpc-exporter-base/package.json b/experimental/packages/otlp-grpc-exporter-base/package.json index 9b67a57094..0c0056c4a1 100644 --- a/experimental/packages/otlp-grpc-exporter-base/package.json +++ b/experimental/packages/otlp-grpc-exporter-base/package.json @@ -74,7 +74,7 @@ "@grpc/grpc-js": "^1.7.1", "@opentelemetry/core": "1.14.0", "@opentelemetry/otlp-exporter-base": "0.40.0", - "protobufjs": "^7.2.2" + "protobufjs": "^7.2.3" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/otlp-grpc-exporter-base", "sideEffects": false diff --git a/experimental/packages/otlp-proto-exporter-base/package.json b/experimental/packages/otlp-proto-exporter-base/package.json index 5560b8b436..f3fd5276e9 100644 --- a/experimental/packages/otlp-proto-exporter-base/package.json +++ b/experimental/packages/otlp-proto-exporter-base/package.json @@ -80,7 +80,7 @@ "dependencies": { "@opentelemetry/core": "1.14.0", "@opentelemetry/otlp-exporter-base": "0.40.0", - "protobufjs": "^7.1.2" + "protobufjs": "^7.2.3" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/otlp-proto-exporter-base", "sideEffects": false diff --git a/experimental/packages/sdk-logs/package.json b/experimental/packages/sdk-logs/package.json index c93f570590..9e2a86ea2e 100644 --- a/experimental/packages/sdk-logs/package.json +++ b/experimental/packages/sdk-logs/package.json @@ -87,7 +87,7 @@ "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "14.0.2", + "sinon": "15.0.0", "ts-mocha": "10.0.0", "typescript": "4.4.4" }, diff --git a/experimental/packages/shim-opencensus/package.json b/experimental/packages/shim-opencensus/package.json index d88d4a6927..2b92913dce 100644 --- a/experimental/packages/shim-opencensus/package.json +++ b/experimental/packages/shim-opencensus/package.json @@ -65,8 +65,8 @@ }, "dependencies": { "@opentelemetry/core": "1.14.0", - "require-in-the-middle": "^7.0.0", - "semver": "^7.3.5" + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/shim-opencensus", "sideEffects": false diff --git a/package.json b/package.json index 93302e80ef..7f8357c48c 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ "linkinator": "5.0.1", "markdownlint-cli": "0.32.2", "prettier": "2.8.0", - "semver": "7.3.5", + "semver": "7.5.1", "typedoc": "0.22.18", "typedoc-plugin-missing-exports": "1.0.0", "typedoc-plugin-resolve-crossmodule-references": "0.2.2", diff --git a/packages/opentelemetry-sdk-trace-node/package.json b/packages/opentelemetry-sdk-trace-node/package.json index 2495523d02..b8b41989e6 100644 --- a/packages/opentelemetry-sdk-trace-node/package.json +++ b/packages/opentelemetry-sdk-trace-node/package.json @@ -69,7 +69,7 @@ "@opentelemetry/propagator-b3": "1.14.0", "@opentelemetry/propagator-jaeger": "1.14.0", "@opentelemetry/sdk-trace-base": "1.14.0", - "semver": "^7.3.5" + "semver": "^7.5.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node", "sideEffects": false diff --git a/packages/sdk-metrics/package.json b/packages/sdk-metrics/package.json index 988f4ebca7..046cede520 100644 --- a/packages/sdk-metrics/package.json +++ b/packages/sdk-metrics/package.json @@ -79,7 +79,7 @@ "dependencies": { "@opentelemetry/core": "1.14.0", "@opentelemetry/resources": "1.14.0", - "lodash.merge": "4.6.2" + "lodash.merge": "^4.6.2" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/sdk-metrics", "sideEffects": false diff --git a/packages/template/package.json b/packages/template/package.json index 979c49fc32..9ff7db8db0 100644 --- a/packages/template/package.json +++ b/packages/template/package.json @@ -88,7 +88,7 @@ "codecov": "3.8.3", "mocha": "10.0.0", "nyc": "15.1.0", - "sinon": "14.0.0", + "sinon": "15.0.0", "ts-mocha": "10.0.0" }, "Add these to devDependencies if browser is targeted": { From 630e0da2dc370c8d735e0c1d2064beb8664d09a0 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 12 Jun 2023 14:05:04 +0200 Subject: [PATCH 13/71] chore(deps): update dependency nock to v13.3.1 (#3884) --- .../packages/opentelemetry-instrumentation-http/package.json | 2 +- experimental/packages/otlp-exporter-base/package.json | 2 +- packages/opentelemetry-exporter-jaeger/package.json | 2 +- packages/opentelemetry-exporter-zipkin/package.json | 2 +- packages/opentelemetry-resources/package.json | 2 +- packages/opentelemetry-semantic-conventions/package.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/experimental/packages/opentelemetry-instrumentation-http/package.json b/experimental/packages/opentelemetry-instrumentation-http/package.json index dbb6797e36..dfee40b273 100644 --- a/experimental/packages/opentelemetry-instrumentation-http/package.json +++ b/experimental/packages/opentelemetry-instrumentation-http/package.json @@ -60,7 +60,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "mocha": "10.2.0", - "nock": "13.0.11", + "nock": "13.3.1", "nyc": "15.1.0", "request": "2.88.2", "request-promise-native": "1.0.9", diff --git a/experimental/packages/otlp-exporter-base/package.json b/experimental/packages/otlp-exporter-base/package.json index 6eb78d97da..627c5064a7 100644 --- a/experimental/packages/otlp-exporter-base/package.json +++ b/experimental/packages/otlp-exporter-base/package.json @@ -72,7 +72,7 @@ "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", "mocha": "10.2.0", - "nock": "13.0.11", + "nock": "13.3.1", "nyc": "15.1.0", "sinon": "15.0.0", "ts-loader": "8.4.0", diff --git a/packages/opentelemetry-exporter-jaeger/package.json b/packages/opentelemetry-exporter-jaeger/package.json index b3d1375878..c9ebda34a5 100644 --- a/packages/opentelemetry-exporter-jaeger/package.json +++ b/packages/opentelemetry-exporter-jaeger/package.json @@ -52,7 +52,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "mocha": "10.2.0", - "nock": "13.0.11", + "nock": "13.3.1", "nyc": "15.1.0", "sinon": "15.0.0", "ts-mocha": "10.0.0", diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index 5671faa25f..d705d28ce2 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -77,7 +77,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", "mocha": "10.2.0", - "nock": "13.0.11", + "nock": "13.3.1", "nyc": "15.1.0", "sinon": "15.0.0", "ts-loader": "8.4.0", diff --git a/packages/opentelemetry-resources/package.json b/packages/opentelemetry-resources/package.json index e24c87d07b..0e784875a1 100644 --- a/packages/opentelemetry-resources/package.json +++ b/packages/opentelemetry-resources/package.json @@ -77,7 +77,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", "mocha": "10.2.0", - "nock": "13.0.11", + "nock": "13.3.1", "nyc": "15.1.0", "sinon": "15.0.0", "ts-mocha": "10.0.0", diff --git a/packages/opentelemetry-semantic-conventions/package.json b/packages/opentelemetry-semantic-conventions/package.json index a22d16b5df..f214247df8 100644 --- a/packages/opentelemetry-semantic-conventions/package.json +++ b/packages/opentelemetry-semantic-conventions/package.json @@ -55,7 +55,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "mocha": "10.2.0", - "nock": "13.0.11", + "nock": "13.3.1", "nyc": "15.1.0", "sinon": "15.0.0", "ts-mocha": "10.0.0", From 7fc17e5c45b72775067665d3f9bc4cc94c2564eb Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 12 Jun 2023 14:36:31 +0200 Subject: [PATCH 14/71] chore(deps): update actions/checkout action to v3.5.3 (#3883) --- .github/workflows/unit-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 6c61133e69..e326aa822e 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -143,7 +143,7 @@ jobs: NPM_CONFIG_UNSAFE_PERM: true steps: - name: Checkout - uses: actions/checkout@v3.0.2 + uses: actions/checkout@v3.5.3 - uses: actions/setup-node@v3 with: node-version: 16 From 2f472adb9306b4944c5db050ba8d3b37266e5058 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 13 Jun 2023 06:55:03 +0200 Subject: [PATCH 15/71] chore(deps): update dependency chromedriver to v114 (#3849) --- selenium-tests/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selenium-tests/package.json b/selenium-tests/package.json index 0203ef7a0c..e3abf66275 100644 --- a/selenium-tests/package.json +++ b/selenium-tests/package.json @@ -40,7 +40,7 @@ "babel-loader": "8.2.3", "babel-polyfill": "6.26.0", "browserstack-local": "1.4.8", - "chromedriver": "113.0.0", + "chromedriver": "114.0.2", "dotenv": "16.0.0", "fast-safe-stringify": "2.1.1", "geckodriver": "3.0.1", From f606404cd704bd787cb8de96253b8a5c8c660773 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 13 Jun 2023 07:27:15 +0200 Subject: [PATCH 16/71] chore(deps): update dependency memfs to v3.5.3 (#3888) --- api/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/package.json b/api/package.json index 5100e4f82e..9cc7a83230 100644 --- a/api/package.json +++ b/api/package.json @@ -76,7 +76,7 @@ "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "memfs": "3.4.9", + "memfs": "3.5.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.0.0", From 75691c92cd85abadc9dc2fac513335c487124d99 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 13 Jun 2023 07:50:32 +0200 Subject: [PATCH 17/71] chore(deps): update dependency protobufjs-cli to v1.1.1 (#3889) --- experimental/packages/otlp-grpc-exporter-base/package.json | 2 +- experimental/packages/otlp-proto-exporter-base/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/experimental/packages/otlp-grpc-exporter-base/package.json b/experimental/packages/otlp-grpc-exporter-base/package.json index 0c0056c4a1..f2c97113ad 100644 --- a/experimental/packages/otlp-grpc-exporter-base/package.json +++ b/experimental/packages/otlp-grpc-exporter-base/package.json @@ -61,7 +61,7 @@ "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", - "protobufjs-cli": "1.0.2", + "protobufjs-cli": "1.1.1", "sinon": "15.0.0", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", diff --git a/experimental/packages/otlp-proto-exporter-base/package.json b/experimental/packages/otlp-proto-exporter-base/package.json index f3fd5276e9..af5c1299f8 100644 --- a/experimental/packages/otlp-proto-exporter-base/package.json +++ b/experimental/packages/otlp-proto-exporter-base/package.json @@ -68,7 +68,7 @@ "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", - "protobufjs-cli": "1.0.2", + "protobufjs-cli": "1.1.1", "sinon": "15.0.0", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", From 95a5e0cadaea6fc0faf1fab113a5cdb0c6c9976b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 13 Jun 2023 08:16:47 +0200 Subject: [PATCH 18/71] chore(deps): update dependency unionfs to v4.5.1 (#3890) --- api/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/package.json b/api/package.json index 9cc7a83230..726262a6d8 100644 --- a/api/package.json +++ b/api/package.json @@ -83,7 +83,7 @@ "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4", - "unionfs": "4.4.0", + "unionfs": "4.5.1", "webpack": "4.46.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/api", From 5a1cd99bae4eaa0c254e4849c69cd35c35faeef9 Mon Sep 17 00:00:00 2001 From: Chi Ma Date: Tue, 13 Jun 2023 21:44:43 +0700 Subject: [PATCH 19/71] fix(sdk-metrics): Update default Histogram's boundary to match OTEL's spec (#3893) --- CHANGELOG.md | 2 + .../test/PrometheusExporter.test.ts | 5 +++ packages/sdk-metrics/src/view/Aggregation.ts | 2 +- packages/sdk-metrics/test/Instruments.test.ts | 42 +++++++++++++------ .../sdk-metrics/test/view/Aggregation.test.ts | 5 ++- 5 files changed, 42 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bab1ea9942..1bd4e35ac0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,8 @@ For experimental package changes, see the [experimental CHANGELOG](experimental/ ### :bug: (Bug Fix) +* fix(sdk-metrics): Update default Histogram's boundary to match OTEL's spec [#3893](https://github.com/open-telemetry/opentelemetry-js/pull/3893/) @chigia001 + ### :books: (Refine Doc) ### :house: (Internal) diff --git a/experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusExporter.test.ts b/experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusExporter.test.ts index 55061be083..292ad3db1e 100644 --- a/experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusExporter.test.ts @@ -514,7 +514,12 @@ describe('PrometheusExporter', () => { `test_histogram_bucket{key1="attributeValue1",le="100"} 1 ${mockedHrTimeMs}`, `test_histogram_bucket{key1="attributeValue1",le="250"} 1 ${mockedHrTimeMs}`, `test_histogram_bucket{key1="attributeValue1",le="500"} 1 ${mockedHrTimeMs}`, + `test_histogram_bucket{key1="attributeValue1",le="750"} 1 ${mockedHrTimeMs}`, `test_histogram_bucket{key1="attributeValue1",le="1000"} 1 ${mockedHrTimeMs}`, + `test_histogram_bucket{key1="attributeValue1",le="2500"} 1 ${mockedHrTimeMs}`, + `test_histogram_bucket{key1="attributeValue1",le="5000"} 1 ${mockedHrTimeMs}`, + `test_histogram_bucket{key1="attributeValue1",le="7500"} 1 ${mockedHrTimeMs}`, + `test_histogram_bucket{key1="attributeValue1",le="10000"} 1 ${mockedHrTimeMs}`, `test_histogram_bucket{key1="attributeValue1",le="+Inf"} 1 ${mockedHrTimeMs}`, '', ]); diff --git a/packages/sdk-metrics/src/view/Aggregation.ts b/packages/sdk-metrics/src/view/Aggregation.ts index 755cd17531..f36394c5bc 100644 --- a/packages/sdk-metrics/src/view/Aggregation.ts +++ b/packages/sdk-metrics/src/view/Aggregation.ts @@ -107,7 +107,7 @@ export class LastValueAggregation extends Aggregation { */ export class HistogramAggregation extends Aggregation { private static DEFAULT_INSTANCE = new HistogramAggregator( - [0, 5, 10, 25, 50, 75, 100, 250, 500, 1000], + [0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000], true ); createAggregator(_instrument: InstrumentDescriptor) { diff --git a/packages/sdk-metrics/test/Instruments.test.ts b/packages/sdk-metrics/test/Instruments.test.ts index ba0f86bdd4..8651643fa3 100644 --- a/packages/sdk-metrics/test/Instruments.test.ts +++ b/packages/sdk-metrics/test/Instruments.test.ts @@ -297,8 +297,11 @@ describe('Instruments', () => { attributes: {}, value: { buckets: { - boundaries: [0, 5, 10, 25, 50, 75, 100, 250, 500, 1000], - counts: [0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0], + boundaries: [ + 0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, + 7500, 10000, + ], + counts: [0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], }, count: 2, sum: 10, @@ -310,8 +313,11 @@ describe('Instruments', () => { attributes: { foo: 'bar' }, value: { buckets: { - boundaries: [0, 5, 10, 25, 50, 75, 100, 250, 500, 1000], - counts: [0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0], + boundaries: [ + 0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, + 7500, 10000, + ], + counts: [0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], }, count: 2, sum: 100, @@ -352,8 +358,11 @@ describe('Instruments', () => { attributes: {}, value: { buckets: { - boundaries: [0, 5, 10, 25, 50, 75, 100, 250, 500, 1000], - counts: [0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0], + boundaries: [ + 0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, + 7500, 10000, + ], + counts: [0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], }, count: 2, sum: 110, @@ -379,8 +388,11 @@ describe('Instruments', () => { attributes: {}, value: { buckets: { - boundaries: [0, 5, 10, 25, 50, 75, 100, 250, 500, 1000], - counts: [0, 0, 0, 2, 0, 0, 1, 1, 0, 0, 0], + boundaries: [ + 0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, + 7500, 10000, + ], + counts: [0, 0, 0, 2, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0], }, count: 4, sum: 220, @@ -422,8 +434,11 @@ describe('Instruments', () => { attributes: {}, value: { buckets: { - boundaries: [0, 5, 10, 25, 50, 75, 100, 250, 500, 1000], - counts: [0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0], + boundaries: [ + 0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, + 7500, 10000, + ], + counts: [0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], }, count: 2, sum: 10.1, @@ -435,8 +450,11 @@ describe('Instruments', () => { attributes: { foo: 'bar' }, value: { buckets: { - boundaries: [0, 5, 10, 25, 50, 75, 100, 250, 500, 1000], - counts: [0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0], + boundaries: [ + 0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, + 7500, 10000, + ], + counts: [0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], }, count: 2, sum: 100.1, diff --git a/packages/sdk-metrics/test/view/Aggregation.test.ts b/packages/sdk-metrics/test/view/Aggregation.test.ts index e4ef18f52c..0da2c09bee 100644 --- a/packages/sdk-metrics/test/view/Aggregation.test.ts +++ b/packages/sdk-metrics/test/view/Aggregation.test.ts @@ -135,7 +135,10 @@ describe('HistogramAggregator', () => { assert(aggregator instanceof HistogramAggregator); assert.deepStrictEqual( aggregator['_boundaries'], - [0, 5, 10, 25, 50, 75, 100, 250, 500, 1000] + [ + 0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, + 10000, + ] ); }); }); From 65fa45fdefcfea68d4a8db0286aa6bed1c69edf5 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 14 Jun 2023 07:10:12 +0200 Subject: [PATCH 20/71] chore(deps): update babel monorepo (#3891) --- .../packages/exporter-logs-otlp-grpc/package.json | 2 +- .../packages/exporter-logs-otlp-http/package.json | 2 +- .../packages/exporter-logs-otlp-proto/package.json | 2 +- .../packages/exporter-trace-otlp-grpc/package.json | 2 +- .../packages/exporter-trace-otlp-http/package.json | 2 +- .../packages/exporter-trace-otlp-proto/package.json | 2 +- .../opentelemetry-browser-detector/package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../opentelemetry-instrumentation-fetch/package.json | 2 +- .../package.json | 2 +- .../opentelemetry-instrumentation/package.json | 2 +- .../packages/otlp-grpc-exporter-base/package.json | 2 +- .../packages/otlp-proto-exporter-base/package.json | 2 +- .../opentelemetry-context-zone-peer-dep/package.json | 2 +- packages/opentelemetry-context-zone/package.json | 2 +- packages/opentelemetry-exporter-zipkin/package.json | 2 +- packages/opentelemetry-sdk-trace-web/package.json | 2 +- selenium-tests/package.json | 10 +++++----- 20 files changed, 24 insertions(+), 24 deletions(-) diff --git a/experimental/packages/exporter-logs-otlp-grpc/package.json b/experimental/packages/exporter-logs-otlp-grpc/package.json index cdb76c11f4..05d378fb39 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/package.json +++ b/experimental/packages/exporter-logs-otlp-grpc/package.json @@ -48,7 +48,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.16.0", + "@babel/core": "7.22.5", "@grpc/proto-loader": "^0.7.3", "@opentelemetry/api": "1.4.1", "@opentelemetry/api-logs": "0.40.0", diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index 217a113377..c8cd5ab0bb 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -71,7 +71,7 @@ ], "sideEffects": false, "devDependencies": { - "@babel/core": "7.16.0", + "@babel/core": "7.22.5", "@opentelemetry/api-logs": "0.40.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", diff --git a/experimental/packages/exporter-logs-otlp-proto/package.json b/experimental/packages/exporter-logs-otlp-proto/package.json index 079e27e7ef..ab9887ded1 100644 --- a/experimental/packages/exporter-logs-otlp-proto/package.json +++ b/experimental/packages/exporter-logs-otlp-proto/package.json @@ -63,7 +63,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.16.0", + "@babel/core": "7.22.5", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", diff --git a/experimental/packages/exporter-trace-otlp-grpc/package.json b/experimental/packages/exporter-trace-otlp-grpc/package.json index 543b18b5d5..7a5537c098 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/package.json +++ b/experimental/packages/exporter-trace-otlp-grpc/package.json @@ -47,7 +47,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.16.0", + "@babel/core": "7.22.5", "@grpc/proto-loader": "^0.7.3", "@opentelemetry/api": "1.4.1", "@opentelemetry/otlp-exporter-base": "0.40.0", diff --git a/experimental/packages/exporter-trace-otlp-http/package.json b/experimental/packages/exporter-trace-otlp-http/package.json index 808972e1bf..73b1a08e7d 100644 --- a/experimental/packages/exporter-trace-otlp-http/package.json +++ b/experimental/packages/exporter-trace-otlp-http/package.json @@ -63,7 +63,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.16.0", + "@babel/core": "7.22.5", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", diff --git a/experimental/packages/exporter-trace-otlp-proto/package.json b/experimental/packages/exporter-trace-otlp-proto/package.json index 72d7b5cf46..e186566138 100644 --- a/experimental/packages/exporter-trace-otlp-proto/package.json +++ b/experimental/packages/exporter-trace-otlp-proto/package.json @@ -62,7 +62,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.16.0", + "@babel/core": "7.22.5", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", diff --git a/experimental/packages/opentelemetry-browser-detector/package.json b/experimental/packages/opentelemetry-browser-detector/package.json index 723281cf4e..665ffe6db1 100644 --- a/experimental/packages/opentelemetry-browser-detector/package.json +++ b/experimental/packages/opentelemetry-browser-detector/package.json @@ -53,7 +53,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.16.0", + "@babel/core": "7.22.5", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index 170e9b79cb..46fdd8d3d7 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -47,7 +47,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.16.0", + "@babel/core": "7.22.5", "@grpc/proto-loader": "^0.7.3", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index e7f7496c01..ce38ae9d51 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -63,7 +63,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.16.0", + "@babel/core": "7.22.5", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index 6e5003df88..d683df2010 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -47,7 +47,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.16.0", + "@babel/core": "7.22.5", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index 5d97cef370..9e7089b886 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -54,7 +54,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.16.0", + "@babel/core": "7.22.5", "@opentelemetry/api": "1.4.1", "@opentelemetry/context-zone": "1.14.0", "@opentelemetry/propagator-b3": "1.14.0", diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json index c63a7f76c6..8b9b5720d3 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json @@ -54,7 +54,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.16.0", + "@babel/core": "7.22.5", "@opentelemetry/api": "1.4.1", "@opentelemetry/context-zone": "1.14.0", "@opentelemetry/propagator-b3": "1.14.0", diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index a72bf1af41..d93af14dab 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -81,7 +81,7 @@ "@opentelemetry/api": "^1.3.0" }, "devDependencies": { - "@babel/core": "7.16.0", + "@babel/core": "7.22.5", "@opentelemetry/api": "1.4.1", "@opentelemetry/sdk-metrics": "1.14.0", "@types/mocha": "10.0.1", diff --git a/experimental/packages/otlp-grpc-exporter-base/package.json b/experimental/packages/otlp-grpc-exporter-base/package.json index f2c97113ad..38dec01f55 100644 --- a/experimental/packages/otlp-grpc-exporter-base/package.json +++ b/experimental/packages/otlp-grpc-exporter-base/package.json @@ -48,7 +48,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.16.0", + "@babel/core": "7.22.5", "@opentelemetry/api": "1.4.1", "@opentelemetry/otlp-transformer": "0.40.0", "@opentelemetry/resources": "1.14.0", diff --git a/experimental/packages/otlp-proto-exporter-base/package.json b/experimental/packages/otlp-proto-exporter-base/package.json index af5c1299f8..3d2b6abb7e 100644 --- a/experimental/packages/otlp-proto-exporter-base/package.json +++ b/experimental/packages/otlp-proto-exporter-base/package.json @@ -59,7 +59,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.16.0", + "@babel/core": "7.22.5", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", diff --git a/packages/opentelemetry-context-zone-peer-dep/package.json b/packages/opentelemetry-context-zone-peer-dep/package.json index d44609131a..2b221808d5 100644 --- a/packages/opentelemetry-context-zone-peer-dep/package.json +++ b/packages/opentelemetry-context-zone-peer-dep/package.json @@ -53,7 +53,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.16.0", + "@babel/core": "7.22.5", "@opentelemetry/api": ">=1.0.0 <1.5.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", diff --git a/packages/opentelemetry-context-zone/package.json b/packages/opentelemetry-context-zone/package.json index 1625d76e65..d6df8a28f0 100644 --- a/packages/opentelemetry-context-zone/package.json +++ b/packages/opentelemetry-context-zone/package.json @@ -50,7 +50,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.16.0", + "@babel/core": "7.22.5", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index d705d28ce2..7ea3cf21eb 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -60,7 +60,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.16.0", + "@babel/core": "7.22.5", "@opentelemetry/api": "^1.0.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", diff --git a/packages/opentelemetry-sdk-trace-web/package.json b/packages/opentelemetry-sdk-trace-web/package.json index c3e0e5906f..8842e0cd89 100644 --- a/packages/opentelemetry-sdk-trace-web/package.json +++ b/packages/opentelemetry-sdk-trace-web/package.json @@ -55,7 +55,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.16.0", + "@babel/core": "7.22.5", "@opentelemetry/api": ">=1.0.0 <1.5.0", "@opentelemetry/context-zone": "1.14.0", "@opentelemetry/propagator-b3": "1.14.0", diff --git a/selenium-tests/package.json b/selenium-tests/package.json index e3abf66275..3e0ccd11c1 100644 --- a/selenium-tests/package.json +++ b/selenium-tests/package.json @@ -31,11 +31,11 @@ "access": "restricted" }, "devDependencies": { - "@babel/core": "7.16.0", - "@babel/plugin-proposal-class-properties": "7.16.0", - "@babel/plugin-proposal-decorators": "7.16.4", - "@babel/plugin-transform-runtime": "7.16.4", - "@babel/preset-env": "7.16.4", + "@babel/core": "7.22.5", + "@babel/plugin-proposal-class-properties": "7.18.6", + "@babel/plugin-proposal-decorators": "7.22.5", + "@babel/plugin-transform-runtime": "7.22.5", + "@babel/preset-env": "7.22.5", "@opentelemetry/api": "^1.0.0", "babel-loader": "8.2.3", "babel-polyfill": "6.26.0", From 863c8a40811510ee4c5e3dd0ae4f97f582ac63f3 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 14 Jun 2023 07:55:54 +0200 Subject: [PATCH 21/71] chore(deps): update dependency @types/semver to v7.5.0 (#3895) --- .../packages/opentelemetry-instrumentation-grpc/package.json | 2 +- .../packages/opentelemetry-instrumentation-http/package.json | 2 +- .../packages/opentelemetry-instrumentation/package.json | 2 +- experimental/packages/opentelemetry-sdk-node/package.json | 2 +- packages/opentelemetry-sdk-trace-node/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/package.json b/experimental/packages/opentelemetry-instrumentation-grpc/package.json index 840b58b8b6..fcf06cafa1 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/package.json +++ b/experimental/packages/opentelemetry-instrumentation-grpc/package.json @@ -54,7 +54,7 @@ "@opentelemetry/sdk-trace-node": "1.14.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/semver": "7.3.9", + "@types/semver": "7.5.0", "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", diff --git a/experimental/packages/opentelemetry-instrumentation-http/package.json b/experimental/packages/opentelemetry-instrumentation-http/package.json index dfee40b273..43c3904b44 100644 --- a/experimental/packages/opentelemetry-instrumentation-http/package.json +++ b/experimental/packages/opentelemetry-instrumentation-http/package.json @@ -53,7 +53,7 @@ "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/request-promise-native": "1.0.18", - "@types/semver": "7.3.9", + "@types/semver": "7.5.0", "@types/sinon": "10.0.15", "@types/superagent": "4.1.18", "axios": "1.4.0", diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index d93af14dab..db903ad81b 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -86,7 +86,7 @@ "@opentelemetry/sdk-metrics": "1.14.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/semver": "7.3.9", + "@types/semver": "7.5.0", "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "babel-loader": "8.2.3", diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json index 5b55e3eb27..a02536d4bd 100644 --- a/experimental/packages/opentelemetry-sdk-node/package.json +++ b/experimental/packages/opentelemetry-sdk-node/package.json @@ -65,7 +65,7 @@ "@opentelemetry/context-async-hooks": "1.14.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/semver": "7.3.9", + "@types/semver": "7.5.0", "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", diff --git a/packages/opentelemetry-sdk-trace-node/package.json b/packages/opentelemetry-sdk-trace-node/package.json index b8b41989e6..dd89a9475d 100644 --- a/packages/opentelemetry-sdk-trace-node/package.json +++ b/packages/opentelemetry-sdk-trace-node/package.json @@ -50,7 +50,7 @@ "@opentelemetry/semantic-conventions": "1.14.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", - "@types/semver": "7.3.9", + "@types/semver": "7.5.0", "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", From 4f440aa3425d149ccd1d30922b185fdb63417db6 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 14 Jun 2023 08:12:00 +0200 Subject: [PATCH 22/71] chore(deps): update dependency babel-loader to v8.3.0 (#3897) --- experimental/packages/exporter-logs-otlp-http/package.json | 2 +- experimental/packages/exporter-trace-otlp-http/package.json | 2 +- .../opentelemetry-exporter-metrics-otlp-http/package.json | 2 +- .../packages/opentelemetry-instrumentation-fetch/package.json | 2 +- .../opentelemetry-instrumentation-xml-http-request/package.json | 2 +- .../packages/opentelemetry-instrumentation/package.json | 2 +- packages/opentelemetry-context-zone-peer-dep/package.json | 2 +- packages/opentelemetry-context-zone/package.json | 2 +- packages/opentelemetry-exporter-zipkin/package.json | 2 +- packages/opentelemetry-sdk-trace-web/package.json | 2 +- selenium-tests/package.json | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index c8cd5ab0bb..8aaaf19b12 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -77,7 +77,7 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", - "babel-loader": "8.2.3", + "babel-loader": "8.3.0", "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", diff --git a/experimental/packages/exporter-trace-otlp-http/package.json b/experimental/packages/exporter-trace-otlp-http/package.json index 73b1a08e7d..11766e727e 100644 --- a/experimental/packages/exporter-trace-otlp-http/package.json +++ b/experimental/packages/exporter-trace-otlp-http/package.json @@ -69,7 +69,7 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", - "babel-loader": "8.2.3", + "babel-loader": "8.3.0", "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index ce38ae9d51..b79b814276 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -69,7 +69,7 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", - "babel-loader": "8.2.3", + "babel-loader": "8.3.0", "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index 9e7089b886..b827af3b2c 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -63,7 +63,7 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", - "babel-loader": "8.2.3", + "babel-loader": "8.3.0", "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json index 8b9b5720d3..566ad8ac48 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json @@ -63,7 +63,7 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", - "babel-loader": "8.2.3", + "babel-loader": "8.3.0", "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index db903ad81b..9fcaa3bd9e 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -89,7 +89,7 @@ "@types/semver": "7.5.0", "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", - "babel-loader": "8.2.3", + "babel-loader": "8.3.0", "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", diff --git a/packages/opentelemetry-context-zone-peer-dep/package.json b/packages/opentelemetry-context-zone-peer-dep/package.json index 2b221808d5..bca589b088 100644 --- a/packages/opentelemetry-context-zone-peer-dep/package.json +++ b/packages/opentelemetry-context-zone-peer-dep/package.json @@ -60,7 +60,7 @@ "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "@types/zone.js": "0.5.12", - "babel-loader": "8.2.3", + "babel-loader": "8.3.0", "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", diff --git a/packages/opentelemetry-context-zone/package.json b/packages/opentelemetry-context-zone/package.json index d6df8a28f0..683f1ac37a 100644 --- a/packages/opentelemetry-context-zone/package.json +++ b/packages/opentelemetry-context-zone/package.json @@ -55,7 +55,7 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", - "babel-loader": "8.2.3", + "babel-loader": "8.3.0", "codecov": "3.8.3", "cross-var": "1.1.0", "karma": "6.3.16", diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index 7ea3cf21eb..58ff5d0f4c 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -66,7 +66,7 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", - "babel-loader": "8.2.3", + "babel-loader": "8.3.0", "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", diff --git a/packages/opentelemetry-sdk-trace-web/package.json b/packages/opentelemetry-sdk-trace-web/package.json index 8842e0cd89..e21f54bbb7 100644 --- a/packages/opentelemetry-sdk-trace-web/package.json +++ b/packages/opentelemetry-sdk-trace-web/package.json @@ -65,7 +65,7 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", - "babel-loader": "8.2.3", + "babel-loader": "8.3.0", "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", diff --git a/selenium-tests/package.json b/selenium-tests/package.json index 3e0ccd11c1..44fe0423d8 100644 --- a/selenium-tests/package.json +++ b/selenium-tests/package.json @@ -37,7 +37,7 @@ "@babel/plugin-transform-runtime": "7.22.5", "@babel/preset-env": "7.22.5", "@opentelemetry/api": "^1.0.0", - "babel-loader": "8.2.3", + "babel-loader": "8.3.0", "babel-polyfill": "6.26.0", "browserstack-local": "1.4.8", "chromedriver": "114.0.2", From 4bed3c92fffe707ee90ad9effad77d3def08e012 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 14 Jun 2023 08:41:02 +0200 Subject: [PATCH 23/71] chore(deps): update dependency dpdm to v3.13.1 (#3898) --- api/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/package.json b/api/package.json index 726262a6d8..bf9c516dda 100644 --- a/api/package.json +++ b/api/package.json @@ -67,7 +67,7 @@ "@types/webpack-env": "1.16.3", "codecov": "3.8.3", "cross-var": "1.1.0", - "dpdm": "3.10.0", + "dpdm": "3.13.1", "istanbul-instrumenter-loader": "3.0.1", "karma": "6.3.16", "karma-chrome-launcher": "3.1.0", From 5288753c211820de90550fd2e5f65c44950dff6d Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 14 Jun 2023 09:06:07 +0200 Subject: [PATCH 24/71] chore(deps): update dependency sinon to v15.1.2 (#3900) --- api/package.json | 2 +- experimental/packages/exporter-logs-otlp-grpc/package.json | 2 +- experimental/packages/exporter-logs-otlp-http/package.json | 2 +- experimental/packages/exporter-logs-otlp-proto/package.json | 2 +- experimental/packages/exporter-trace-otlp-grpc/package.json | 2 +- experimental/packages/exporter-trace-otlp-http/package.json | 2 +- experimental/packages/exporter-trace-otlp-proto/package.json | 2 +- .../packages/opentelemetry-browser-detector/package.json | 2 +- .../opentelemetry-exporter-metrics-otlp-grpc/package.json | 2 +- .../opentelemetry-exporter-metrics-otlp-http/package.json | 2 +- .../opentelemetry-exporter-metrics-otlp-proto/package.json | 2 +- .../packages/opentelemetry-exporter-prometheus/package.json | 2 +- .../packages/opentelemetry-instrumentation-fetch/package.json | 2 +- .../packages/opentelemetry-instrumentation-grpc/package.json | 2 +- .../packages/opentelemetry-instrumentation-http/package.json | 2 +- .../opentelemetry-instrumentation-xml-http-request/package.json | 2 +- .../packages/opentelemetry-instrumentation/package.json | 2 +- experimental/packages/opentelemetry-sdk-node/package.json | 2 +- experimental/packages/otlp-exporter-base/package.json | 2 +- experimental/packages/otlp-grpc-exporter-base/package.json | 2 +- experimental/packages/otlp-proto-exporter-base/package.json | 2 +- experimental/packages/sdk-logs/package.json | 2 +- experimental/packages/shim-opencensus/package.json | 2 +- packages/opentelemetry-context-zone-peer-dep/package.json | 2 +- packages/opentelemetry-context-zone/package.json | 2 +- packages/opentelemetry-core/package.json | 2 +- packages/opentelemetry-exporter-jaeger/package.json | 2 +- packages/opentelemetry-exporter-zipkin/package.json | 2 +- packages/opentelemetry-propagator-jaeger/package.json | 2 +- packages/opentelemetry-resources/package.json | 2 +- packages/opentelemetry-sdk-trace-base/package.json | 2 +- packages/opentelemetry-sdk-trace-node/package.json | 2 +- packages/opentelemetry-sdk-trace-web/package.json | 2 +- packages/opentelemetry-semantic-conventions/package.json | 2 +- packages/sdk-metrics/package.json | 2 +- 35 files changed, 35 insertions(+), 35 deletions(-) diff --git a/api/package.json b/api/package.json index bf9c516dda..3e51ca7bd0 100644 --- a/api/package.json +++ b/api/package.json @@ -79,7 +79,7 @@ "memfs": "3.5.3", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4", diff --git a/experimental/packages/exporter-logs-otlp-grpc/package.json b/experimental/packages/exporter-logs-otlp-grpc/package.json index 05d378fb39..75cb057c8c 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/package.json +++ b/experimental/packages/exporter-logs-otlp-grpc/package.json @@ -62,7 +62,7 @@ "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4" diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index 8aaaf19b12..7ae3f3dbe6 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -90,7 +90,7 @@ "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4", diff --git a/experimental/packages/exporter-logs-otlp-proto/package.json b/experimental/packages/exporter-logs-otlp-proto/package.json index ab9887ded1..9287bafde0 100644 --- a/experimental/packages/exporter-logs-otlp-proto/package.json +++ b/experimental/packages/exporter-logs-otlp-proto/package.json @@ -73,7 +73,7 @@ "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4" diff --git a/experimental/packages/exporter-trace-otlp-grpc/package.json b/experimental/packages/exporter-trace-otlp-grpc/package.json index 7a5537c098..7f4ce27a27 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/package.json +++ b/experimental/packages/exporter-trace-otlp-grpc/package.json @@ -59,7 +59,7 @@ "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4" diff --git a/experimental/packages/exporter-trace-otlp-http/package.json b/experimental/packages/exporter-trace-otlp-http/package.json index 11766e727e..5c40dbd8dd 100644 --- a/experimental/packages/exporter-trace-otlp-http/package.json +++ b/experimental/packages/exporter-trace-otlp-http/package.json @@ -82,7 +82,7 @@ "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4", diff --git a/experimental/packages/exporter-trace-otlp-proto/package.json b/experimental/packages/exporter-trace-otlp-proto/package.json index e186566138..fb37df438b 100644 --- a/experimental/packages/exporter-trace-otlp-proto/package.json +++ b/experimental/packages/exporter-trace-otlp-proto/package.json @@ -72,7 +72,7 @@ "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4" diff --git a/experimental/packages/opentelemetry-browser-detector/package.json b/experimental/packages/opentelemetry-browser-detector/package.json index 665ffe6db1..a63c9f58c6 100644 --- a/experimental/packages/opentelemetry-browser-detector/package.json +++ b/experimental/packages/opentelemetry-browser-detector/package.json @@ -62,7 +62,7 @@ "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4" diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index 46fdd8d3d7..5773a233c3 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -58,7 +58,7 @@ "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4" diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index b79b814276..9384eadd73 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -82,7 +82,7 @@ "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index d683df2010..e4b75b7bb2 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -57,7 +57,7 @@ "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4" diff --git a/experimental/packages/opentelemetry-exporter-prometheus/package.json b/experimental/packages/opentelemetry-exporter-prometheus/package.json index 232bf2e80a..1bd383b8d5 100644 --- a/experimental/packages/opentelemetry-exporter-prometheus/package.json +++ b/experimental/packages/opentelemetry-exporter-prometheus/package.json @@ -52,7 +52,7 @@ "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-mocha": "10.0.0", "typescript": "4.4.4" }, diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index b827af3b2c..cf6564df24 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -75,7 +75,7 @@ "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4", diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/package.json b/experimental/packages/opentelemetry-instrumentation-grpc/package.json index fcf06cafa1..ec5ddd50af 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/package.json +++ b/experimental/packages/opentelemetry-instrumentation-grpc/package.json @@ -62,7 +62,7 @@ "node-pre-gyp": "0.17.0", "nyc": "15.1.0", "semver": "7.5.1", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-mocha": "10.0.0", "typescript": "4.4.4" }, diff --git a/experimental/packages/opentelemetry-instrumentation-http/package.json b/experimental/packages/opentelemetry-instrumentation-http/package.json index 43c3904b44..2c25b4abd3 100644 --- a/experimental/packages/opentelemetry-instrumentation-http/package.json +++ b/experimental/packages/opentelemetry-instrumentation-http/package.json @@ -64,7 +64,7 @@ "nyc": "15.1.0", "request": "2.88.2", "request-promise-native": "1.0.9", - "sinon": "15.0.0", + "sinon": "15.1.2", "superagent": "8.0.9", "ts-mocha": "10.0.0", "typescript": "4.4.4" diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json index 566ad8ac48..7814452535 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json @@ -75,7 +75,7 @@ "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4", diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index 9fcaa3bd9e..e5e07041a7 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -102,7 +102,7 @@ "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4", diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json index a02536d4bd..aafb3e13e6 100644 --- a/experimental/packages/opentelemetry-sdk-node/package.json +++ b/experimental/packages/opentelemetry-sdk-node/package.json @@ -73,7 +73,7 @@ "mocha": "10.2.0", "nyc": "15.1.0", "semver": "7.5.1", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4" diff --git a/experimental/packages/otlp-exporter-base/package.json b/experimental/packages/otlp-exporter-base/package.json index 627c5064a7..e5047d16a9 100644 --- a/experimental/packages/otlp-exporter-base/package.json +++ b/experimental/packages/otlp-exporter-base/package.json @@ -74,7 +74,7 @@ "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4" diff --git a/experimental/packages/otlp-grpc-exporter-base/package.json b/experimental/packages/otlp-grpc-exporter-base/package.json index 38dec01f55..7cef192d65 100644 --- a/experimental/packages/otlp-grpc-exporter-base/package.json +++ b/experimental/packages/otlp-grpc-exporter-base/package.json @@ -62,7 +62,7 @@ "mocha": "10.2.0", "nyc": "15.1.0", "protobufjs-cli": "1.1.1", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4" diff --git a/experimental/packages/otlp-proto-exporter-base/package.json b/experimental/packages/otlp-proto-exporter-base/package.json index 3d2b6abb7e..34e6d171dc 100644 --- a/experimental/packages/otlp-proto-exporter-base/package.json +++ b/experimental/packages/otlp-proto-exporter-base/package.json @@ -69,7 +69,7 @@ "mocha": "10.2.0", "nyc": "15.1.0", "protobufjs-cli": "1.1.1", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4" diff --git a/experimental/packages/sdk-logs/package.json b/experimental/packages/sdk-logs/package.json index 9e2a86ea2e..a08a034964 100644 --- a/experimental/packages/sdk-logs/package.json +++ b/experimental/packages/sdk-logs/package.json @@ -87,7 +87,7 @@ "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-mocha": "10.0.0", "typescript": "4.4.4" }, diff --git a/experimental/packages/shim-opencensus/package.json b/experimental/packages/shim-opencensus/package.json index 2b92913dce..f0b4581a82 100644 --- a/experimental/packages/shim-opencensus/package.json +++ b/experimental/packages/shim-opencensus/package.json @@ -55,7 +55,7 @@ "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-mocha": "10.0.0", "typescript": "4.4.4" }, diff --git a/packages/opentelemetry-context-zone-peer-dep/package.json b/packages/opentelemetry-context-zone-peer-dep/package.json index bca589b088..1836cc1d59 100644 --- a/packages/opentelemetry-context-zone-peer-dep/package.json +++ b/packages/opentelemetry-context-zone-peer-dep/package.json @@ -72,7 +72,7 @@ "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4", diff --git a/packages/opentelemetry-context-zone/package.json b/packages/opentelemetry-context-zone/package.json index 683f1ac37a..508ee1b2e9 100644 --- a/packages/opentelemetry-context-zone/package.json +++ b/packages/opentelemetry-context-zone/package.json @@ -65,7 +65,7 @@ "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4", diff --git a/packages/opentelemetry-core/package.json b/packages/opentelemetry-core/package.json index 349a5cc19b..9596497acc 100644 --- a/packages/opentelemetry-core/package.json +++ b/packages/opentelemetry-core/package.json @@ -81,7 +81,7 @@ "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4", diff --git a/packages/opentelemetry-exporter-jaeger/package.json b/packages/opentelemetry-exporter-jaeger/package.json index c9ebda34a5..bdd9ab1e9d 100644 --- a/packages/opentelemetry-exporter-jaeger/package.json +++ b/packages/opentelemetry-exporter-jaeger/package.json @@ -54,7 +54,7 @@ "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-mocha": "10.0.0", "typescript": "4.4.4" }, diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index 58ff5d0f4c..8066527c03 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -79,7 +79,7 @@ "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4", diff --git a/packages/opentelemetry-propagator-jaeger/package.json b/packages/opentelemetry-propagator-jaeger/package.json index 77a8e9c356..ec76269552 100644 --- a/packages/opentelemetry-propagator-jaeger/package.json +++ b/packages/opentelemetry-propagator-jaeger/package.json @@ -70,7 +70,7 @@ "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4", diff --git a/packages/opentelemetry-resources/package.json b/packages/opentelemetry-resources/package.json index 0e784875a1..587123643f 100644 --- a/packages/opentelemetry-resources/package.json +++ b/packages/opentelemetry-resources/package.json @@ -79,7 +79,7 @@ "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-mocha": "10.0.0", "typescript": "4.4.4", "webpack": "4.46.0", diff --git a/packages/opentelemetry-sdk-trace-base/package.json b/packages/opentelemetry-sdk-trace-base/package.json index 93f9df8662..44ac5857dc 100644 --- a/packages/opentelemetry-sdk-trace-base/package.json +++ b/packages/opentelemetry-sdk-trace-base/package.json @@ -82,7 +82,7 @@ "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4", diff --git a/packages/opentelemetry-sdk-trace-node/package.json b/packages/opentelemetry-sdk-trace-node/package.json index dd89a9475d..35e83895c6 100644 --- a/packages/opentelemetry-sdk-trace-node/package.json +++ b/packages/opentelemetry-sdk-trace-node/package.json @@ -56,7 +56,7 @@ "cross-var": "1.1.0", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-mocha": "10.0.0", "typescript": "4.4.4" }, diff --git a/packages/opentelemetry-sdk-trace-web/package.json b/packages/opentelemetry-sdk-trace-web/package.json index e21f54bbb7..375232a81b 100644 --- a/packages/opentelemetry-sdk-trace-web/package.json +++ b/packages/opentelemetry-sdk-trace-web/package.json @@ -79,7 +79,7 @@ "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", "typescript": "4.4.4", diff --git a/packages/opentelemetry-semantic-conventions/package.json b/packages/opentelemetry-semantic-conventions/package.json index f214247df8..4296ed1c2e 100644 --- a/packages/opentelemetry-semantic-conventions/package.json +++ b/packages/opentelemetry-semantic-conventions/package.json @@ -57,7 +57,7 @@ "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-mocha": "10.0.0", "typescript": "4.4.4" }, diff --git a/packages/sdk-metrics/package.json b/packages/sdk-metrics/package.json index 046cede520..778a9ff859 100644 --- a/packages/sdk-metrics/package.json +++ b/packages/sdk-metrics/package.json @@ -69,7 +69,7 @@ "karma-webpack": "4.0.2", "mocha": "10.2.0", "nyc": "15.1.0", - "sinon": "15.0.0", + "sinon": "15.1.2", "ts-mocha": "10.0.0", "typescript": "4.4.4" }, From fbb7d72febf993a4ebd1f9017ae396acb4f8f898 Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Wed, 14 Jun 2023 14:18:20 +0200 Subject: [PATCH 25/71] chore(deps): update dependency prettier to v2.8.8 (#3905) Co-authored-by: Renovate Bot --- .../test/helper.ts | 14 +++++----- .../src/types_internal.ts | 2 +- .../otlp-grpc-exporter-base/.eslintignore | 1 + package.json | 2 +- .../src/utils/environment.ts | 6 ++--- .../resource/SemanticResourceAttributes.ts | 13 ++++----- .../src/trace/SemanticAttributes.ts | 27 ++++++++++--------- 7 files changed, 34 insertions(+), 31 deletions(-) diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/test/helper.ts b/experimental/packages/opentelemetry-instrumentation-grpc/test/helper.ts index 661b309e90..7cdc85d268 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/test/helper.ts +++ b/experimental/packages/opentelemetry-instrumentation-grpc/test/helper.ts @@ -63,7 +63,7 @@ type ServerWriteableStream = grpcJs.ServerWritableStream; type ServerDuplexStream = grpcJs.ServerDuplexStream; type Metadata = grpcJs.Metadata; -type TestGrpcClient = typeof grpcJs['Client'] & { +type TestGrpcClient = (typeof grpcJs)['Client'] & { unaryMethodWithMetadata: any; unaryMethod: any; UnaryMethod: any; @@ -533,7 +533,7 @@ export const runTests = ( }; const ClientServerValidationTest = ( - method: typeof methodList[0], + method: (typeof methodList)[0], provider: NodeTracerProvider, checkSpans = true, attributesValidation?: { @@ -577,7 +577,7 @@ export const runTests = ( }; const ErrorValidationTest = ( - method: typeof methodList[0], + method: (typeof methodList)[0], provider: NodeTracerProvider, checkSpans = true, attributesValidation?: { @@ -635,7 +635,7 @@ export const runTests = ( }; const runTestWithAttributeValidation = ( - method: typeof methodList[0], + method: (typeof methodList)[0], provider: NodeTracerProvider, checkSpans = true, attributesValidation: { @@ -653,7 +653,7 @@ export const runTests = ( }; const runTest = ( - method: typeof methodList[0], + method: (typeof methodList)[0], provider: NodeTracerProvider, checkSpans = true ) => { @@ -667,7 +667,7 @@ export const runTests = ( request instanceof Array ? [{ num: code }, ...request] : { num: code }; const runErrorTest = ( - method: typeof methodList[0], + method: (typeof methodList)[0], key: string, errorCode: number, provider: NodeTracerProvider @@ -750,7 +750,7 @@ export const runTests = ( }); }; - const runClientMethodTest = (method: typeof methodList[0]) => { + const runClientMethodTest = (method: (typeof methodList)[0]) => { it(`should assign original properties for grpc remote method ${method.methodName}`, async () => { const patchedClientMethod = (client as any)[method.methodName]; const properties = Object.keys(patchedClientMethod); diff --git a/experimental/packages/opentelemetry-instrumentation/src/types_internal.ts b/experimental/packages/opentelemetry-instrumentation/src/types_internal.ts index 016be0ad36..2cff387711 100644 --- a/experimental/packages/opentelemetry-instrumentation/src/types_internal.ts +++ b/experimental/packages/opentelemetry-instrumentation/src/types_internal.ts @@ -20,7 +20,7 @@ import { Instrumentation } from './types'; export type InstrumentationOption = | typeof InstrumentationBase - | typeof InstrumentationBase[] + | (typeof InstrumentationBase)[] | Instrumentation | Instrumentation[]; diff --git a/experimental/packages/otlp-grpc-exporter-base/.eslintignore b/experimental/packages/otlp-grpc-exporter-base/.eslintignore index 378eac25d3..345f1a599e 100644 --- a/experimental/packages/otlp-grpc-exporter-base/.eslintignore +++ b/experimental/packages/otlp-grpc-exporter-base/.eslintignore @@ -1 +1,2 @@ build +src/generated diff --git a/package.json b/package.json index 7f8357c48c..3c2b15e771 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "lerna": "6.0.3", "linkinator": "5.0.1", "markdownlint-cli": "0.32.2", - "prettier": "2.8.0", + "prettier": "2.8.8", "semver": "7.5.1", "typedoc": "0.22.18", "typedoc-plugin-missing-exports": "1.0.0", diff --git a/packages/opentelemetry-core/src/utils/environment.ts b/packages/opentelemetry-core/src/utils/environment.ts index 1ab79176da..fda6e103b7 100644 --- a/packages/opentelemetry-core/src/utils/environment.ts +++ b/packages/opentelemetry-core/src/utils/environment.ts @@ -27,7 +27,7 @@ const DEFAULT_LIST_SEPARATOR = ','; const ENVIRONMENT_BOOLEAN_KEYS = ['OTEL_SDK_DISABLED'] as const; type ENVIRONMENT_BOOLEANS = { - [K in typeof ENVIRONMENT_BOOLEAN_KEYS[number]]?: boolean; + [K in (typeof ENVIRONMENT_BOOLEAN_KEYS)[number]]?: boolean; }; function isEnvVarABoolean(key: unknown): key is keyof ENVIRONMENT_BOOLEANS { @@ -63,7 +63,7 @@ const ENVIRONMENT_NUMBERS_KEYS = [ ] as const; type ENVIRONMENT_NUMBERS = { - [K in typeof ENVIRONMENT_NUMBERS_KEYS[number]]?: number; + [K in (typeof ENVIRONMENT_NUMBERS_KEYS)[number]]?: number; }; function isEnvVarANumber(key: unknown): key is keyof ENVIRONMENT_NUMBERS { @@ -78,7 +78,7 @@ const ENVIRONMENT_LISTS_KEYS = [ ] as const; type ENVIRONMENT_LISTS = { - [K in typeof ENVIRONMENT_LISTS_KEYS[number]]?: string[]; + [K in (typeof ENVIRONMENT_LISTS_KEYS)[number]]?: string[]; }; function isEnvVarAList(key: unknown): key is keyof ENVIRONMENT_LISTS { diff --git a/packages/opentelemetry-semantic-conventions/src/resource/SemanticResourceAttributes.ts b/packages/opentelemetry-semantic-conventions/src/resource/SemanticResourceAttributes.ts index e57e4d959c..e123c3513e 100644 --- a/packages/opentelemetry-semantic-conventions/src/resource/SemanticResourceAttributes.ts +++ b/packages/opentelemetry-semantic-conventions/src/resource/SemanticResourceAttributes.ts @@ -486,7 +486,7 @@ export const CloudProviderValues = { GCP: 'gcp', } as const; export type CloudProviderValues = - typeof CloudProviderValues[keyof typeof CloudProviderValues]; + (typeof CloudProviderValues)[keyof typeof CloudProviderValues]; export const CloudPlatformValues = { /** Alibaba Cloud Elastic Compute Service. */ @@ -525,7 +525,7 @@ export const CloudPlatformValues = { GCP_APP_ENGINE: 'gcp_app_engine', } as const; export type CloudPlatformValues = - typeof CloudPlatformValues[keyof typeof CloudPlatformValues]; + (typeof CloudPlatformValues)[keyof typeof CloudPlatformValues]; export const AwsEcsLaunchtypeValues = { /** ec2. */ @@ -534,7 +534,7 @@ export const AwsEcsLaunchtypeValues = { FARGATE: 'fargate', } as const; export type AwsEcsLaunchtypeValues = - typeof AwsEcsLaunchtypeValues[keyof typeof AwsEcsLaunchtypeValues]; + (typeof AwsEcsLaunchtypeValues)[keyof typeof AwsEcsLaunchtypeValues]; export const HostArchValues = { /** AMD64. */ @@ -552,7 +552,8 @@ export const HostArchValues = { /** 32-bit x86. */ X86: 'x86', } as const; -export type HostArchValues = typeof HostArchValues[keyof typeof HostArchValues]; +export type HostArchValues = + (typeof HostArchValues)[keyof typeof HostArchValues]; export const OsTypeValues = { /** Microsoft Windows. */ @@ -578,7 +579,7 @@ export const OsTypeValues = { /** IBM z/OS. */ Z_OS: 'z_os', } as const; -export type OsTypeValues = typeof OsTypeValues[keyof typeof OsTypeValues]; +export type OsTypeValues = (typeof OsTypeValues)[keyof typeof OsTypeValues]; export const TelemetrySdkLanguageValues = { /** cpp. */ @@ -603,4 +604,4 @@ export const TelemetrySdkLanguageValues = { WEBJS: 'webjs', } as const; export type TelemetrySdkLanguageValues = - typeof TelemetrySdkLanguageValues[keyof typeof TelemetrySdkLanguageValues]; + (typeof TelemetrySdkLanguageValues)[keyof typeof TelemetrySdkLanguageValues]; diff --git a/packages/opentelemetry-semantic-conventions/src/trace/SemanticAttributes.ts b/packages/opentelemetry-semantic-conventions/src/trace/SemanticAttributes.ts index 8bfc4a141d..6d12b0f89a 100644 --- a/packages/opentelemetry-semantic-conventions/src/trace/SemanticAttributes.ts +++ b/packages/opentelemetry-semantic-conventions/src/trace/SemanticAttributes.ts @@ -826,7 +826,8 @@ export const DbSystemValues = { /** CockroachDB. */ COCKROACHDB: 'cockroachdb', } as const; -export type DbSystemValues = typeof DbSystemValues[keyof typeof DbSystemValues]; +export type DbSystemValues = + (typeof DbSystemValues)[keyof typeof DbSystemValues]; export const DbCassandraConsistencyLevelValues = { /** all. */ @@ -853,7 +854,7 @@ export const DbCassandraConsistencyLevelValues = { LOCAL_SERIAL: 'local_serial', } as const; export type DbCassandraConsistencyLevelValues = - typeof DbCassandraConsistencyLevelValues[keyof typeof DbCassandraConsistencyLevelValues]; + (typeof DbCassandraConsistencyLevelValues)[keyof typeof DbCassandraConsistencyLevelValues]; export const FaasTriggerValues = { /** A response to some data source operation such as a database or filesystem read/write. */ @@ -868,7 +869,7 @@ export const FaasTriggerValues = { OTHER: 'other', } as const; export type FaasTriggerValues = - typeof FaasTriggerValues[keyof typeof FaasTriggerValues]; + (typeof FaasTriggerValues)[keyof typeof FaasTriggerValues]; export const FaasDocumentOperationValues = { /** When a new object is created. */ @@ -879,7 +880,7 @@ export const FaasDocumentOperationValues = { DELETE: 'delete', } as const; export type FaasDocumentOperationValues = - typeof FaasDocumentOperationValues[keyof typeof FaasDocumentOperationValues]; + (typeof FaasDocumentOperationValues)[keyof typeof FaasDocumentOperationValues]; export const FaasInvokedProviderValues = { /** Alibaba Cloud. */ @@ -892,7 +893,7 @@ export const FaasInvokedProviderValues = { GCP: 'gcp', } as const; export type FaasInvokedProviderValues = - typeof FaasInvokedProviderValues[keyof typeof FaasInvokedProviderValues]; + (typeof FaasInvokedProviderValues)[keyof typeof FaasInvokedProviderValues]; export const NetTransportValues = { /** ip_tcp. */ @@ -911,7 +912,7 @@ export const NetTransportValues = { OTHER: 'other', } as const; export type NetTransportValues = - typeof NetTransportValues[keyof typeof NetTransportValues]; + (typeof NetTransportValues)[keyof typeof NetTransportValues]; export const NetHostConnectionTypeValues = { /** wifi. */ @@ -926,7 +927,7 @@ export const NetHostConnectionTypeValues = { UNKNOWN: 'unknown', } as const; export type NetHostConnectionTypeValues = - typeof NetHostConnectionTypeValues[keyof typeof NetHostConnectionTypeValues]; + (typeof NetHostConnectionTypeValues)[keyof typeof NetHostConnectionTypeValues]; export const NetHostConnectionSubtypeValues = { /** GPRS. */ @@ -973,7 +974,7 @@ export const NetHostConnectionSubtypeValues = { LTE_CA: 'lte_ca', } as const; export type NetHostConnectionSubtypeValues = - typeof NetHostConnectionSubtypeValues[keyof typeof NetHostConnectionSubtypeValues]; + (typeof NetHostConnectionSubtypeValues)[keyof typeof NetHostConnectionSubtypeValues]; export const HttpFlavorValues = { /** HTTP 1.0. */ @@ -988,7 +989,7 @@ export const HttpFlavorValues = { QUIC: 'QUIC', } as const; export type HttpFlavorValues = - typeof HttpFlavorValues[keyof typeof HttpFlavorValues]; + (typeof HttpFlavorValues)[keyof typeof HttpFlavorValues]; export const MessagingDestinationKindValues = { /** A message sent to a queue. */ @@ -997,7 +998,7 @@ export const MessagingDestinationKindValues = { TOPIC: 'topic', } as const; export type MessagingDestinationKindValues = - typeof MessagingDestinationKindValues[keyof typeof MessagingDestinationKindValues]; + (typeof MessagingDestinationKindValues)[keyof typeof MessagingDestinationKindValues]; export const MessagingOperationValues = { /** receive. */ @@ -1006,7 +1007,7 @@ export const MessagingOperationValues = { PROCESS: 'process', } as const; export type MessagingOperationValues = - typeof MessagingOperationValues[keyof typeof MessagingOperationValues]; + (typeof MessagingOperationValues)[keyof typeof MessagingOperationValues]; export const RpcGrpcStatusCodeValues = { /** OK. */ @@ -1045,7 +1046,7 @@ export const RpcGrpcStatusCodeValues = { UNAUTHENTICATED: 16, } as const; export type RpcGrpcStatusCodeValues = - typeof RpcGrpcStatusCodeValues[keyof typeof RpcGrpcStatusCodeValues]; + (typeof RpcGrpcStatusCodeValues)[keyof typeof RpcGrpcStatusCodeValues]; export const MessageTypeValues = { /** sent. */ @@ -1054,4 +1055,4 @@ export const MessageTypeValues = { RECEIVED: 'RECEIVED', } as const; export type MessageTypeValues = - typeof MessageTypeValues[keyof typeof MessageTypeValues]; + (typeof MessageTypeValues)[keyof typeof MessageTypeValues]; From b7d2fac77d7595f9267baad3ddf1f0bd4d4f0c5c Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 14 Jun 2023 15:12:09 +0200 Subject: [PATCH 26/71] chore(deps): update dependency webpack-merge to v5.9.0 (#3904) --- experimental/packages/exporter-logs-otlp-http/package.json | 2 +- experimental/packages/exporter-trace-otlp-http/package.json | 2 +- .../opentelemetry-exporter-metrics-otlp-http/package.json | 2 +- .../packages/opentelemetry-instrumentation-fetch/package.json | 2 +- .../opentelemetry-instrumentation-xml-http-request/package.json | 2 +- .../packages/opentelemetry-instrumentation/package.json | 2 +- packages/opentelemetry-context-zone/package.json | 2 +- packages/opentelemetry-exporter-zipkin/package.json | 2 +- packages/opentelemetry-resources/package.json | 2 +- packages/opentelemetry-sdk-trace-web/package.json | 2 +- selenium-tests/package.json | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index 7ae3f3dbe6..8e1de3460d 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -96,7 +96,7 @@ "typescript": "4.4.4", "webpack": "4.46.0", "webpack-cli": "4.9.1", - "webpack-merge": "5.8.0" + "webpack-merge": "5.9.0" }, "peerDependencies": { "@opentelemetry/api-logs": ">=0.38.0" diff --git a/experimental/packages/exporter-trace-otlp-http/package.json b/experimental/packages/exporter-trace-otlp-http/package.json index 5c40dbd8dd..dd9520c163 100644 --- a/experimental/packages/exporter-trace-otlp-http/package.json +++ b/experimental/packages/exporter-trace-otlp-http/package.json @@ -88,7 +88,7 @@ "typescript": "4.4.4", "webpack": "4.46.0", "webpack-cli": "4.9.1", - "webpack-merge": "5.8.0" + "webpack-merge": "5.9.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index 9384eadd73..077dc558bb 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -88,7 +88,7 @@ "typescript": "4.4.4", "webpack": "4.46.0", "webpack-cli": "4.9.1", - "webpack-merge": "5.8.0" + "webpack-merge": "5.9.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index cf6564df24..6d2856e07e 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -81,7 +81,7 @@ "typescript": "4.4.4", "webpack": "4.46.0", "webpack-cli": "4.9.1", - "webpack-merge": "5.8.0" + "webpack-merge": "5.9.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json index 7814452535..317304b9a5 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json @@ -81,7 +81,7 @@ "typescript": "4.4.4", "webpack": "4.46.0", "webpack-cli": "4.9.1", - "webpack-merge": "5.8.0" + "webpack-merge": "5.9.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index e5e07041a7..6be8d48953 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -108,7 +108,7 @@ "typescript": "4.4.4", "webpack": "4.46.0", "webpack-cli": "4.9.1", - "webpack-merge": "5.8.0" + "webpack-merge": "5.9.0" }, "engines": { "node": ">=14" diff --git a/packages/opentelemetry-context-zone/package.json b/packages/opentelemetry-context-zone/package.json index 508ee1b2e9..7540e42216 100644 --- a/packages/opentelemetry-context-zone/package.json +++ b/packages/opentelemetry-context-zone/package.json @@ -71,7 +71,7 @@ "typescript": "4.4.4", "webpack": "4.46.0", "webpack-cli": "4.9.1", - "webpack-merge": "5.8.0" + "webpack-merge": "5.9.0" }, "dependencies": { "@opentelemetry/context-zone-peer-dep": "1.14.0", diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index 8066527c03..eb01400782 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -85,7 +85,7 @@ "typescript": "4.4.4", "webpack": "4.46.0", "webpack-cli": "4.9.1", - "webpack-merge": "5.8.0" + "webpack-merge": "5.9.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" diff --git a/packages/opentelemetry-resources/package.json b/packages/opentelemetry-resources/package.json index 587123643f..6539303c0b 100644 --- a/packages/opentelemetry-resources/package.json +++ b/packages/opentelemetry-resources/package.json @@ -84,7 +84,7 @@ "typescript": "4.4.4", "webpack": "4.46.0", "webpack-cli": "4.9.1", - "webpack-merge": "5.8.0" + "webpack-merge": "5.9.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.5.0" diff --git a/packages/opentelemetry-sdk-trace-web/package.json b/packages/opentelemetry-sdk-trace-web/package.json index 375232a81b..17fa9c9466 100644 --- a/packages/opentelemetry-sdk-trace-web/package.json +++ b/packages/opentelemetry-sdk-trace-web/package.json @@ -85,7 +85,7 @@ "typescript": "4.4.4", "webpack": "4.46.0", "webpack-cli": "4.9.1", - "webpack-merge": "5.8.0" + "webpack-merge": "5.9.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.5.0" diff --git a/selenium-tests/package.json b/selenium-tests/package.json index 44fe0423d8..fd93de9a1f 100644 --- a/selenium-tests/package.json +++ b/selenium-tests/package.json @@ -50,7 +50,7 @@ "webpack": "4.46.0", "webpack-cli": "4.9.1", "webpack-dev-server": "4.5.0", - "webpack-merge": "5.8.0" + "webpack-merge": "5.9.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" From 591250104367e751ff561cc8287e0ef19fa363d7 Mon Sep 17 00:00:00 2001 From: Aaron Abbott Date: Wed, 14 Jun 2023 10:39:12 -0400 Subject: [PATCH 27/71] docs(opencensus-shim) add an example showing how to use the opencensus shim (#3778) Co-authored-by: Marc Pichler --- .../examples/opencensus-shim/README.md | 75 ++++++++++++++++++ .../examples/opencensus-shim/client.js | 54 +++++++++++++ .../opencensus-shim/images/jaeger-trace.png | Bin 0 -> 500393 bytes .../examples/opencensus-shim/package.json | 41 ++++++++++ .../examples/opencensus-shim/server.js | 39 +++++++++ .../examples/opencensus-shim/setup.js | 51 ++++++++++++ .../examples/opencensus-shim/utils.js | 22 +++++ .../packages/shim-opencensus/README.md | 59 +++++++++++++- .../packages/shim-opencensus/package.json | 4 + .../packages/shim-opencensus/src/index.ts | 1 + 10 files changed, 345 insertions(+), 1 deletion(-) create mode 100644 experimental/examples/opencensus-shim/README.md create mode 100644 experimental/examples/opencensus-shim/client.js create mode 100644 experimental/examples/opencensus-shim/images/jaeger-trace.png create mode 100644 experimental/examples/opencensus-shim/package.json create mode 100644 experimental/examples/opencensus-shim/server.js create mode 100644 experimental/examples/opencensus-shim/setup.js create mode 100644 experimental/examples/opencensus-shim/utils.js diff --git a/experimental/examples/opencensus-shim/README.md b/experimental/examples/opencensus-shim/README.md new file mode 100644 index 0000000000..0738d67d89 --- /dev/null +++ b/experimental/examples/opencensus-shim/README.md @@ -0,0 +1,75 @@ +# Overview + +The OpenCensus shim allows existing OpenCensus instrumentation to interoperate with OpenTelemetry instrumentation by using the OpenTelemetry SDK as an implementation for OpenCensus. + +This is a simple example that demonstrates how existing OpenCensus instrumentation can be integrated with OpenTelemetry. + +The example has: + +- Root Spans (on client), instrumented with OpenCensus's HTTP instrumentation +- Child Span from a remote parent (on server), instrumented with OpenCensus's HTTP instrumentation +- Another Child Span created in the server representing some work being done, instrumented manually with OpenTelemetry. + +## Installation + +```sh +# from this directory +$ npm install +``` + +## Run the Application + +### Jaeger + +Setup [Jaeger Tracing All in One](https://www.jaegertracing.io/docs/latest/getting-started/#all-in-one) agent. If you have docker installed: + +```sh +docker run \ + --rm \ + --name jaeger \ + -e COLLECTOR_OTLP_ENABLED=true \ + -p 16686:16686 \ + -p 4317:4317 \ + jaegertracing/all-in-one:latest +``` + +### Run the sample server + +```sh +# from this directory +$ node -r @opentelemetry/shim-opencensus/register ./server.js +``` + +The `-r @opentelemetry/shim-opencensus/register` flag to Node tells it to load the OpenCensus +shim's register module to install the OpenCensus shim. The shim bridges all calls to +OpenCensus's tracers to OpenTelemetry. + +### Run the sample client + +```sh +# from this directory +node -r @opentelemetry/shim-opencensus/register ./client.js +``` + +Again, we use the `-r @opentelemetry/shim-opencensus/register` flag to install the OpenCensus shim. + +## Check the trace + +Go to Jaeger with your browser and click on the "Service" dropdown. Choose `opencensus-shim-example-server` and hit "Find Traces". Click on one of the available traces and you should see 3 spans: + +- An outer span from the client. This came from the OpenCensus HTTP instrumentation. + - A child from the server. This came from the OpenCensus HTTP instrumentation. + - A child for the sleep operation. This was manually instrumented with OpenTelemetry. + Notice this span is correctly recorded as a child of the OpenCensus instrumentation. + +

+ +## Useful links + +- For more information on OpenTelemetry, visit: +- For more information on OpenTelemetry for Node.js, visit: +- For more information on OpenCensus, visit: + +## LICENSE + +Apache License 2.0 diff --git a/experimental/examples/opencensus-shim/client.js b/experimental/examples/opencensus-shim/client.js new file mode 100644 index 0000000000..e0a2ed52fa --- /dev/null +++ b/experimental/examples/opencensus-shim/client.js @@ -0,0 +1,54 @@ +/* + * 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 strict'; + +const setup = require('./setup'); + +const provider = setup('opencensus-shim-example-client'); + +const http = require('http'); + +makeRequest(); + +async function makeRequest() { + const data = await new Promise((resolve, reject) => { + http + .get( + { + host: 'localhost', + port: 3000, + path: '/', + }, + resp => { + let data = ''; + + resp.on('data', chunk => { + data += chunk; + }); + + resp.on('end', async () => { + resolve(JSON.parse(data)); + }); + } + ) + .on('error', err => { + reject(err); + }); + }); + console.log('Got data from server: ', data); + + await provider.shutdown(); +} diff --git a/experimental/examples/opencensus-shim/images/jaeger-trace.png b/experimental/examples/opencensus-shim/images/jaeger-trace.png new file mode 100644 index 0000000000000000000000000000000000000000..15521f64cdf4b5f384f430e408b29104d5574d2a GIT binary patch literal 500393 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

5Zfsbtn!6aO$$zqTDvJaV$(8@U3 zgXUhUyBDtFbMpFyMBPY@vQ~^b_00)Fhj9fNYWt!5yX*e!+0Ft6YTjF zZS|EXjQ%iRUQO(t_8Ms{yq%VJcgEQri!pCzH%A=YGIYb2|LyGl*EV8w#jBrIw#RGSvHZJS~?=P27$vaT?xzlaH z#h2+W_^5#v6BP=bx&G9j@|=^2>u{*oWsHKCJ!=|OkNiIUug}NGP&Po_G!UBLpdJxL zY3MiKqGX3FSL=4u4ovEa0v?MGZArnV|3PbM`lYnKcijQnN>`Jg_jk+jY>*RgIPpn} z=Y=7Z4xVnn6OpeaJDl;fz^h%*t5mI?I`Bn0>WdjkGui4t-CsUy*rCp;HO&QSET|kG zNjF(^8*?_%-=z|>+!8ml7|x{s&8Ti-J`KDJiU)+gvt?b^Ma*(EC>JoG4I~{ovgj1s z^bb1JA;=Yz6>~XlqkhR^6Yj`y$*MV`$#}JK%SdnK>{oE>U7Jd?I8Wc<*PEVryUqOF z4-iX+dsX61d_f!G)>vD_gLx<+zHY_JvMnXOa?h88kOoGd7WsLTr zVY&Kw1xmD5n!!Orcuv!I$~Vy!`G;A74=7NcZRC_4FWzran#V&INaR%MrQD3^)kVc( zvK#yvx35;m!g@B=>H9S}X}oKrzwy7Tvpn^E5eiI?=WbFE-$LwMdVEcc?DyW#Iv4@w zP5_#xaS>4QW|GGF!MULkl(flZ8GCGGel^0&#$>f~gxtu<(H3MlJ-kM?B~F=B6+ zOibGray(0P8(1s3^S)xOHh{;IXM|_JTj|H=&N6(LfK*~v;_}+wmFtN(zviZ8h3IIp zWg(CEAu?Y20Mgx~Tzk@9DlZCS$9!#3G3UeSR>%*Yk+>`R2Ots}#!UTV>ep-SP3CjQWbuSn|M|#UXTC*}&TNmj=7N9}6vrnlAYzjAs2%7G|i|X+#8XETfpsaGM zp8kIe+6;My{pQ06Y(~c5R*d-i=Riqhk5@fDb^G!oj$fD7W4QOnJy$-q-?WXN3;K%E zgOp?Vw@K|3#hzPRr&-a}m@78&j;ElI7#CCg$QN<6GV&(oge6kEcBMpZxyB~Vhwo43 z*336o3IU}u20{Z6D8pooB8cW9fukoJKGq{uC}jBUfF5|ljv6R?8YVTvkF z@mCXrh@`9B9g2PRZitkXftfVgZ;V*@uH;GhBtrveT%G3oGadzA59&)JEgZ$-ClKIG~Jz1>`_c>QVA z5{Olr>DN~;L?cSRT$X{1Z8PDbHDm>M^ro7qcpPp=Se2jM#PX6(;nTeUSnGYaqU41F z-4<_jf!^s%hvwTl#q@IjmffHH^c#VIp^c&R#EX`*9&Nw-&Y{Pa&-(Nuzgl>tB#netMOw|!W))zEXgU>cQ8@m zTOXZ3r~835xRoPy^Xv{!Aa339xrT?>pvQ6aps}gzTEFe@KGU`#iQQb&<&%5|cid8t zhP4iF=1DoT3sDwU9%WHNLVNm28QAM}$)_6Phn*M)Dpj%H{-cPZ>&W&WeX8o^`?Mx1 zHw~?W^pN0v00Q5|CQYS_VfdGt0bS%dGNJ%Itak;sm`>H8nQfx@v`Thv(bjSE55Y_39htz z;Ho>(BuVq!^;GF*Vi`62HT_$%749RZ2&XtGf2^4)3hp~wmW}$=|Ll1S0RY7 z)gONTp3_f3O82#prnGMp4cO27BiOrPY{*odbOS=bxY$slr3{3do##1w2E6==(vQ3Q zZ@I2t;|mj4iim}?XK?;Q-~HZkY@DB22LpB1;;Y01j9{h`zKa1v*ZO6N6=`=xL|hM)MRlwjLKTTRaF?tfq0gEfW4AE)P*e)zjH=b7Z)T=_5$n+uB z$hkzqi`_6KN^i-HH=9(jwldF?tEWT01Nb7tZp{A8^k=G`KcWx_YLX-I`3LBN_fx7% zTh<3}G~hjghCMH7;$niXK%XjbJNDM(|M3>R13LDs>hjsif)t{hF#h1yElM6d{b)Ij zEEKCicd;|zOy88@1W^ZF_i}r``&y#SR!M40#lzIz#eh56uMbsW`1!B)<)SO&(#S@& zD{W7>`I3OiJVB4<{_MnS=UW51`JU;~(1YwafezxkLoO^Qy1#5K4y7B61;k(SulIWV zY4sGJ{wu6lV6EC#F@DICIlI7FDg7BH`4Fzcp1wcJZz*ptL^UGcG2Og&hY%~aba|rf z0gn}f2MeXGCXd>GO3dzSp?ujO0idW=i-#v|PoTO{-$E4#Z>cXO;4%)=3ip>zw#{^LiRr?xJ~w#` z&FTVCi*`he4UWtXRyM7K<=o?Nm(-(J%c0a9_VK=IvwqU4bR4ljwsJgzo_*?NunDDS z-vO=X^y?pfz2(d7Pf`uMAHzm0Wb8s7$#m~EpDh%=;WSu$PM%R1%@R^Me>Y;LwTTi! zM<`yVgrfI?Es#~9IzqxX=SEN$Y@Sx78`Kh!$=bG-tfJ%-b|OzwWy(uULvDHJS82;qaliWyXu8E0L{GwNh?dF(ysqLX$-> z>&@p8ePr&&E}vM8PE6fEC`I#EJ@Y@N@+f2`rH>BP?Q@X>TWW^1Ad!9dX{F6O-E+_t zO5Xz&UCu_bV_TP?vu>yxn8hidZ(XqD)LyE=Su+X-XJ`6ogZ1s3!^pr(PAgn32nT92 z%Hk+-9}0#-OprS-9pkgaKW9d|x6T(QR;Pxo#pX4qooa5QyDaC3 znPVE~aD3Bzlhg5J=UtdP)S7NOD-ung#l_bJ-bgaVXFk!g;}PtO&rOB|e0^|{N-ZiZ zlLc~&~gS0j_?oL6tg;Pt0-po*fog| z3NAZ0k!a9S=aT7wD<&WFsWc8+i7Ll1kKAQEkDNU?PRCJJ`;U2Jc{#AyNo9a(KmQePjc#45hev78bCa{Qgc=t*&9}bZ$-lEG&FEF;u z)Kt(v3elCK^>s4T+ZaR4wJzd$&~mEVYKzjIYI97dc-qZa#|so%DtzMwsZmd(n#cA4?jac&e)w(I=0;{@-K>F&6&JxaN1#aBF|pDK~IExjYrvVppNY!w*g zw+l6G%y)&Y%!;f%?pF?az`~hXqnTE{1Uv35B}gpusZSC~lxs>Q)A?7|=xIn;n3cZL zO}YctTGN`P>$O$Iz3d)hH+jNY+P$&r?2`vt3KlWYd|H9OM6PvF6IT<4s89-iu7Dy^ zLSlMA7Q)w2@J0N&AAp6R>OKREivK;~;t~x~nVHvya+A^#v^|(%Vyt=r{o)DGUzCCz zX81O<^No&jur#yAuYO}NS#oE5qqhhxzTUPSqpUm{KRUg!HntY%Mg9n-vO(>Hy#3RE zn@N+B4;ms4lb?>C25O)?CNfD`sFneuXi_5Hr~^v&?Hu= zy5!F}xP0|FH>Vd{PO@BI))(Z5nrCde6``A=Y92D{;~>FMFO zezfDEPdI*jMM*=h=Mb7cSrwBto}IKzoQjQ7WlhjDJREi%d=o_XhL1rq550tE3jFS^ zb9<)R=DnM#BJXLWu-cbOAvIOb7}G{jm4L-}%Q?|X+qb(KGN7Z|^gYKlb8i(v(@wwC zJ6H);ZcvwZfwXS7mFGV;yGexpRFOY5vH|$uEk3IqiqmtQqb1%F<}mbd7q24&+$};$ zhH$I%a&4rr)$y%&K3#Bfpm4u$eY$+lIVHfmpUQug0=YAOmFDc0*ji_187AvTrE7%! z$Fh2KcMd(j3A-I!GiP<_z}sRYw0Pb2rH^-?ro?lqaK(xJd8xC-ZC-p~T<$$e8+XQl zgLtz-D?nm=^`$^J>i2zNEjnb**hnGwSC?J{Go~xySKI7m#n(-dyTWtQLUm>b{hTpl zWleRv+Lsb$t)tKG%N$Ay^(VxeY=e;ZHtcsQD7>}oaNqW`EIGk^zu*Tj$-56oFK(NB zYNpXEq9j)K3-LTSQPgj}o3OV2@MdU7w!&l3<@Opg0ORv(O6WIE_LX?G%xd%LB$wMW z=W3q3Dh00jH^R}U={B<-oo|>!FI-sN(^v~RWMOu2%sMe`xl^G4-$UgC=jg|~bSTM6fgvxzyO3@m~nHlmnlq!~X+3fM+_pTikOUyT8-swn7{=S^6yejYc zLha{H!zBm4=@N^y|D@sOW<$0lG+3-Pl36_sN+CU8@jgsHsDA@6E+`%QPAKq?^*|*r zm4iCPIo%J(|6a}hN4LLpGZ?g=nK`fi2=ed_yk|9${W|QNCY4aI?mBBE6~6+Gc8L0p zFctOmYYx%s`ER4941~~l0fcH6C2t9dE6HJ7=_Z|?Rl?z|Np}aX`Kpm)J}=b`QoT-@ z&>ZS1e+LfxNSR(bfn<=gVO*y)hgD7m#4BmiI=!4{db6f}Vp7^fNQ<3uE!JCAa{Udy z6Zn^(e76%j)zgP5_ESmlGl!2KEGR3=S~FG*;taT^r=hNh2g$6oY51RAGo0`l2)P`` zI*Z9waZLQK7gixeaCZgjUXKsC{DF#np-Vv$!!|80y;HkLsw-QwTT8P41?7UI1vS3V zqer%vE`m-UGcLc|{d95T7b}0BPCWVi5=5RZ%Kh`+mCrwZ28*Cf_u;gS&xZqKvlzM^ zse}?D9aaOTv!WzI!_Lm?GU%Ovw@Jco`wCb-Wzl&)2%SvUbpV{!><+vOx6b7>?Y>{r zwe<5vR5Z{r@Ay1u!}Qmb%}+W{irrLd`&nWn;r^L{r0R)gKzT4V(0w)G?bPpLZPfnc zG?H%8vkSK1udIx@pf%vF2eQDHa|(IolR@nH$+e_2W7&*#pJ3Rkd5)3h4>bjx-Dlyg z^16rmTpI*6{e8=I}Oj?1Z1 z<-IOMec3=o#P9Z#{0r2RSys%rEuaQ9ElYuDwKxnxF?$IT5H4In-B_?1;SS4uK^Y^8 zbQ~XvtuzY3S#<>B&FlvahBf`pr>-M?R7{%oN@HIdDf>LvRo{d%)BEo(K;1ElehUfq zKJ(cy*Q6r0pEdkOE9eRWNw*<` z@5WV>`5abw_ZCvzmlUn3n5a-kP`n__iMI>vK0I&<_z#SsMi-@RWqlGtT)8|LtSDNHpZ3~i z6JbM**F~162}0_0WLOgZCp8}``0B2iK1Gk@y@*i}%DP=~dfO1_Ey`~-+zZWa++t+o zwUBolvzHk{R^ce6dzel|;JRgMwm{d>CTvVijzu;3Qy!u!*UxmAJ*@pjhJt1=DN{yO zKim6G!A1NKUUm-cy$_$0|BwOPFLqwTPrCkSyh0r}YDlpV_5aYqu{v;e!G ze#(WS>fCQw{+oC?eQxZaJwjNcMP2qYj5~szshV;rmxlEuTM#9?Z27 zz~|YxTA6_sl{@_0uj0ZK(}j5kQnRU`xM4~6kxe5Y(0BW1W}{5px2IqudI6nsXAzw_ zhnS6Dh=?k0Td^(nkyS~&f`FW=SKNHhH_aHKR$94q(_0|Ki5T z6iHXRB^MVhp6Z18GT#fE{!jkFU+S>YiU5nWlapQuwkU5ABxJ+8@sp&;u}_pX`z74oh_0+|e?&iw9u_h3wSrx0Q+UXKdlnzYNmTgxx*Mun-bNH7rMs#CE(( z{T~ClnaGzU^vhj!it`k4E)?qm&!uGI#2Z#hI-5yxtY=+u4HFte|$T}n_emD=J*NCO7G1&P$d3N_behA z)HkQ|7#LCD=x!71og#3mh{$m_th~59)8v4m6SwC?z)pRO4&)x%lr+&FCVPG4O``RE zUc_G2kXtQVxE(m(mH3UB$eX6;@q_n1ce>bj{!=`u9&G=PYJ({Wo)>6blJG{Ri#r+& z`E1HEA$SB2r)jvUjo|47{ zmDRQWtoz;!QrtS(sorM@)MBkJS2^+DLbMwvJR4sJfD{^18zCW2P|sygqF)+LwC{yX zVm5Rz^?RhYRLwZnGbUJ)B8=D!$3VfgIiM@wFpi2!XJxLJ5y zZOhQE&R8vK@kqAaf4=D90t+F9GZx^xXZB9$RWoa;_19w{(UoQ&BFq^?kp_%&h?qZ^ zpr@q4s*{`SPqQg&wj?`N3@044{F1mkEko;=(7Ga6PK!jRpr)EU>{Vq)&&3cGC;PRL#bty_9RTl8+d`A?ah{I%UQw>7SV{ccGg z=@=PZXh4!i0)%*}X;c_WMo!Jhi$p>G{3Ah$jBG)2;ep(JGA&+b;M4_6QzN*F!FSsM z+=*7Pa&47RFm*a9aH~S#rmF z_t5_Nk1Mx%$re877HRC!U#B2E&D)pnS4qSD@{#*Zjdn^}yICZRs{iJ$bM9X=^3Puz z&_Y52pEvYSjhbzl?Gd2lGiMF^bi+xEo1Bvd9U(iDB&(w^k(+p zONt);xw27#qo0&;4=kGCT!rM{26|*Z4WA;(dj|9MqvM2)4KASDl|Geu_9LS%`sVZr zvh*Y?kAi_%n=V%!ThO+^(^B+EMP(HHXY-QgCV25ABQjkhV2|%_3;35!&RcACtZa1E z{S%8WEmaR&Y=~{vqle{g5czlor#Z5PZ?`Vg!QVlAV-qmuMV!acn&Z`#R!84jOdE)a z)_F(8qqBHqEaVmNU;}7?&wb>?d8!__1q7R-C`(T*({<5Bym&ilB;sSjPTEKwO{(GRTPaFxcY4?r|--hA2i~+7X$s@g;ZJ zF}>Vj@}A^V(URlKZDb44ZsU%z{}A+l?IZOp6oh#H;V9eD)%w?u|GZFe!8P8Jx#fWZ zHMN~#er`!80TkQ?&n1tQacAktS-l9Rh_jBH`RMO(oaIF+SZb8R&L4f>BQsV!OitX} z>wB;Lp|`O&YjMa3D*qUl7psQG{T?YWg2`V% z$a32S^v?EHhS!k~M4ANvxfxXcB60NFM^}dW62%$adf%<3vb9E}tSnW}p6f0?MIH+! zq{v`r3f?F<6~1mKJuXzLU!A1#7@me2yr&W%kXcrr6mYvF?MA8 z#?c4=bu%N)mKmQzh@?5(1oKC>aNa+Spk~&7?dTpDG9o)TIJgES7(ovfe2#1N%dXA8ti-DbMU~ZD6UJ869rG;;&1i24Qz+8= zXo1m}mnj&0sf}Fw(s?uI$P1zxDQUpr${7Fj=xh9KqCS(o7Ba2#^%(IQE^!AFRXJMF zzv!uUo=|T@QFmEdddRWT-kfl{)PzAf%FCLfr(J9KmmS#xr<2X?qXN<+1f;Xhm5&he zw!{dS$AH5!LUxQk?!SGkHPgcKvf2lof?Ip^7uA%z z4PV)(=WO;xzRrCDXX!C4*nIRLv<@B#U$nJ6_eURSiy4Qn{#lnj;y1aY>r$)$)@3>4 z0mspA|82N!$MW?{`EF1UGH}A`uP^i5O2*w<*brqyM(J4hvw)M#cyE~N7+UJ`l>j41 zKp&lB@X-ONSAv1Lr$hJn|MtOumE+<$8p6&_4xmUObdfxtSpeoso~K!53y&}%1Hz*A zzY~_uW~Oim1PM{Su5|zZOmJ$)G)N5r4eH%_xy7B7WYCA;BuLFz7~9vRAlS*alP&a- zJ5?T)5i`AW6+GxNUsLn_s8+WPZ&!=9`Ba z*Q<}%_LcT^2%4$;e{j#7L4gex|Fcw6_5xMUXm!u-oh`igDm_Jy8x!I617EHraL1%i znn;K8=eDyQ>E+9@S?_rY_2LEef-f4=^%4t&JN!R_@;&6HhOOb z+@&KOZKE$&rK=yGCNSH7WpAIwHO}cE~ zyO{-RVd+uZN0h4_;8U)F@%eV=K!}8@QK6#~l%NWBgyf=woX-DxO9U^T_|@%IAKeW| zXzpJx4@QhWy%ElurKKU0_2gT-F}j`arndsw0!%F~2I4E?kv1X|120Gox&@IB?a@Yx zp3~YngHrGq*uMU^(+Tu>AgasbBa@HL6zUd44*Oe*?P3 zViyfslNmF1RFMegI0y8W5RHm!f756FDys>u!NAWV6|iE-BeVxXz-!4G(o;{$KqhbG zQu|K*PMv$V3@&rx_u&p``s{fN{29sJts`2G)p%r)5%1#9pwfiU3|^NWFPujyRLqc$ z)X@oVo`6Vx%8HnQ<+j1!L}uoD-NOe%G`K{iqjN<~h(tkr*HVtlpZ=S${$*DV)sWZk zes#(QeMIWG`h%(932FEgoVquP1nBEa9w%f=C|+Fx4%7W7o!iY3_4V~-55K=JLjbK6 z;`;=vMnMpG3ZDrH2^mw#YS(lGFIafs0HiVbRI-8ys($fV#owNtO}e#eu&9IoB7zPt z$w*VuN8&xkU90`D?jwIlLJBQ59~V_$uJt!|l6?mBs9Mj}I~0W7@Ow+1YLL3r952_< z`^faj(lJJ_18uEy9V%#LIIS`X97ZyO-S=B&;BG; zAF0Z&3-0%ZB*NWSCtbKb-iz7qm!f0z<^7|4yN# zqUsdc+uKu1a9gX}(Ev`Vq!*7I`V}5wHrfaP86~^5wUy;Jwrp~CRIl=pF(@MZaC5v} zWmcwg*gE+VfMu0|dcw?FfE~-2cj}e`&57-ZyV#&K5-_9;6rvRDWGimIj*78L-;BwL zF^_zgoxqBl1X+I5zD_nJY!S<|fP|#!lJcz*xN;@O@M$|K&Xq1NKlu;!<&bnqWaPCz1;%>Zb$sxL6AvhPDt zy==hLaZ{CWHc<^_kR8m;I{eDAuBBr}{nw&qP|`F`iNW`dL50Jxw3<4??)!V~IRro! z23;65PszwVpk=xNynU=8O*>Tj&HiEO}0U-44{}lQnvj5*k zT4VOH>q9&5!bMIEt3Nq=*5AMo6LkkS_S3UcHZSKH30L;#L_8rv%H~lfdIJ1Z4v7dk zd*FQ*_!x~(v9k}Yw0i>QXqGN!nnmzg(2iG7{7<*^y@<*^mmK*S4y-^QDSbN5{K*GR zh27aQkffGPD$ANFl>E*tT0Q&bo|Ww5fv>FQd*B8*f8#06dJp8Wq$mIcq!fSb1}XoR z#3szh4g%!O+cqgKZMk+E^MJ^#{?Q*{+vC958&53&PUuqVOUZj*9s`i`5dKfc@P`1xa`!G^}T|8{BmZBns`!APXoE2eIgHNLOzE-Wh}-Y_ltO7-PRF1 z6{)y#*;EZF)`$Ohws7=$#;JLp!}ZYf&hV*GYD?uF8M2zYb23-od{n<*r2xF${2w@z z%f@Ptp_OBo>q1*fnewAvEZ(J%d%Uxu;F`7rMDLar;r5b>C6<&^^kh8V zwKu^hxjHCwd)&{H<$+Fud#ln&>TY$NKFj{-#G&VlMrR{kfZcTf%0t~P^I0eV8BQzC zj|B;=tALzr56a*3`QRVke(C>KA(;(dhoT+hBxi1Mr$-lb88hVN^?eWMsnIF=>c#pdl^i~Pz z;0S%7gFkl~{M*_240x`vub5ZG{zo0WIQIDUr|Y>V;lZDCP2?*Ueu7@*uL1!aob@RH z%^oIS&aA7pUAus)pNW*q22kiV`r2?_;!`#gJ+f`4`iWN;=DddVEU(^AIV1rkPre;1 z_((<^9pA1XM5phclb@o|RAC5MxTYM5p$v-`H8r`~D1P?6GwIS6Z6f4SH$3?A=Jgzj zvY4Ig|0i2Qe(7%1g+5Jia}WTWI3E+WSbn2Q`f3}KMG#JILgt=%z%}A#p;w*Ijf7p` z`S$kxF$33?N)7zIH<3fCojJQV0aTQm^S3Wan1J<)@_6SMB^7WDw(u=J_d1X8?5q?wG$?+8F~LYi3{LdI!Ns|5H|l^) zGG7FD-@X1@=LBXR|qn5o&-J<2B|#<`wf*Jo)~;39#g;WUxNYV$?`DrEBYC%X8d zpn`<@w*k9=e!u6sS_ioNw@A6np6Ba+dK9Sv2#`~+n#tyydmeS&5tc+y)Ri>t8?`J3 zxAyJ{f#1JS(Oz8zG-N}B#V(!9K+S=4CDV_Fg?Hf{mw5&!SENg4#>DajS3ybQk!YO&y~QslItWd4}m?6r<~y&P7h`{IkxS1(fm2 zHGV&{tQl|PXkdGelT5$vW#kcR7Q&a z%~gS8PVoZD*ji)#MEmwLDa>1PHBiIWf8wG7sF&y+g7~foHP77@3~&fX1(6dnUecl4 z%M7&T+mcsFtb9Q1oBo_hovw_Oh0{N0RXViY;8iNKkzdx&fJ;ALC-{xy(_Zgdy`74; z7Le)oyU!cdh*#xLy-&8!^du6`jVo3_-x*W{c#2ynxeL0=dV4Q~3I!CIAQP5R@;AwT zfAptYYZt%y|Fw4Ifl%)69uYZ36iN(nS`aG9Ze(c+5eXrZ6J_6-!Jw2%Oq(TpB>Ps3 zeN@)$`;u&lv5mouZ7}Zlb$;jGQ@8qE=XcLvF~>Xa`+cAN`8=N|pOl-aUz~M0M=DPo zY)@KD;3~WMm6E=iGE8PlK$Is`sc^8xVy>a`j%T13@v??a~_Rd6u>Ih zJ1Txqe&wS!Y=x(5RPYrq91KvsW>`h;dTRP?-W38X} zXwo5Zo}H23ksinH}*44?Z4P+$?j)co~1!ow;-fq>Go^7FE8> z(*BjYJ`>%|@g}>RN_o<+8sQ0uT92B4Nzvjp|CpP(y~P3*fKB}5am)jBE5rD00!*TY z2`Op3q2Yq3&_u7n61|g{8wt8Ddiapzc6xmw`rF1&z}lDk9Lja)2w7w|Km(pTtR&20=3e)B{OnrTQ!BoxEZ1C>Y8pXw2-S?$MYk-RRDGcOh;pgXC z-b2*H;mkwXz+y)Qh0bx$q9-rKMTW>urtF%j=RGYgKMZ`0j!aWwm%y?qU*s~h%7Yy2 z;GM|hq345{5>2B*5D9U3E=s}=cd&+g3gUm(gmyaD6+LiaW4*Qph5L9gjrejNqB9#c z>7YSnaCJ__E#@VM2C{u2apK{^DTpKrv_&HK90jb*i~!jy^@sxS4cZv5&m(ntWA*i> zi*M$UJBgGbgbSJ%leX-1RV~Pcy|Y&;|0-DTGKzZG>_d{x=*z?>;<8zJI+jj6YQF4^ zOMoKmb3i5x_YdlteknOgomWluQ}i&mE)YNuG*;+Oel-{IEd)i~dvAsO6nBlgf7isZ zi~wbmopQr0;olmmf61P4u97OR;Lajde?yoq2CBA*z+RbTn0)tW|unFitZmD@4|nQNP|=l$#< zjj+mB7qa|Jw=Flm^X{G9UaA^8of6xhF($7=vktZtT!1pS@K_L`CxcNi?+#OINBP4c zTuK}1<&^Y1=g~Tysg9x5ha4j6Zp4TcC~l;$#K5V`>`${qI?yxu-KIhmw#-F|Fa@wn zr7n*$KPv7k;{!4pz8xnan=eE=Aq%I&vo(aMPqCpwIETs5CYT#*W*ZA;?ZAr}RgcJ` z##Q(tv4G#Kt$>Le5!B)ukZe(8sF;-xF?!!HB^{#c%*7m0m^eQH*b6Qk_!K^do%A%R z(P>pMlBnf*xyIdsQS1!lokX$eVIEQ&X(;!2Z0LIh4S5L=ZFbw2s-UUY^>=947DLLl zc9Rl}ym!STj)J`->w^e|z3hDtnP=u`-iv_60`o=puX)jb=34-Q1jR;zeOZDF+?y=o zJNR<$TQ9KrVVe8El%fetAZ5y-E+@7IfEu3*6X#+s8hdk9Nt*U~4wGbw4HC`A>=}7o zFUI6m?HrNIq;GLyAPYLvlyS;Aj0)D8d4Y!4yA+8pwNT4G7EPAHMQm1+gyS8A44$ID zt8+a7ZSy186M;Vz9eS*ZKhxW@mq$}7dHezY15DKU@hV{4KF3tHy+x27W|QDcY`e_^ zY0W7EQT!3*LAMpAM8r`ABfaYwn*=P=A2ry7PBd=va<(vDgt7=$Q{eO#vg*6-)H)Ya z-mIsat*0H6(4kQfPKg8FdE(VGE%h267tI~j4(H4!(H5Ry?(`MJusQ+IB_hwX<>xA0 z0sBqxF?Nns!8P7)RlOa2eUrJTH~rbd8NUZuxVx{UpQ28DslE-SZXChmq?*QhNHfoy zzH{WIKT|?YksY@1?8uq>vky2g*CnR;X6_s`akr?35}wyko;yLy>ZybRskv9+g%0L% z4^GAM3U%Y2fMvyCVy+L#qvs-xf^SWAIlE%>$ja}oBh6~3{_3C6{Zqh!e=7TZKTo~a zA=gWFii)?V+R&^6f3S3JsJJ&-7XG0U3Taa_V0{mATy4{_OxLSd=jg_DPRL;gZJ)6z zWt*=g6>-mjs!ZGGepGPxHCMe;m>hdMw$CAPP?&KGWcecIB&G!fzk<=Oi0;v;Qjvb3~zRgtSQ5qA$EI{pemm^g=wxR73W9o=sj=7s{GcLzG4+FCo zNyctvDW<#!2XYC}@@lAxqN^tqC*@%Ju*E@75o4#y?*qoAj`>fgpkbY_K$L(OC8xv> z*yfApHa6-2;6o0Sq1KB*#4}HriH$x3ot}DiArE^!I!!@B7{)xpb`G-$Y6Rj7OG_9d z(FSO#(n&j88im7WFM8STlTPbG=Bni+-rRZ^*fpo05sV7|8VF|Fww?V$!73>vB&Ow2CpR{|fUI7P3@5tveyaMq& zRKaT76SrL1h8bg)G~{c)UR0W@$5ftx915 zwpN9D5ZQJ0sYQkpB^ zS_-S00n!paWnS9s-rrQsVzaysnE$osTB<2|5TSw)&LsqR$xML&SX^t0A5I=lc3v*M ztMZ;Sb8%T-c^q`~TrO*VI0^7Fe%8;vt!((cI|_>AIy?h^Z>s!H(E5&3csH^nrH=PZ zJJT~vx4_Z;?}?V@O1HN_^GVycZ$F#K$$^Dxis83(hGmrV*px#!{rgi|uJ-W(2_}Pm zHP<_^-I>PWP#yMEFD;oHT@Kg;G~yB*4zz=ANVM*P*K{!`PC01Qo-z?Uz5x=lgaD!q zO~JjqsHv--!*?e{9grF?P5~Paoc#)Kso-a5>MhfD72>*o_!z0T5W;y74~Bxn<~&nF zOQLAW5JUU~1cOXXz=4?J$qkFI&g;3fXgrRIx4M-#beYR#fkf1AEqQm3} zF42$^uh9!)|&9ruZNP9SEfvtisxIDK`xfR_wrZ`c9yx>bN4XVF{BAK-Jv+Q-hI>PgK~uB zAEDe?*_R0xXT2F!TND*bpw%>2(qb_gIWG{_5%SbX<#ihx4{T7e_pwVDVpG^4`&iXB zUZ;?mP`(x!?|}p!rRK}cr1GO)pvk==FkY?P2z7@62+fm>oW7*$W-89&)o;i^HZ8R# zKlnBbu!SPad&n!1-~Re9(Lr6hM);IJ0o3lo#Am>X_yU3&>+l9!f7E#?ubj*FN65n# zC~QoVKpb@k-7n$x5}7mm4^D!SLR^4p;!|h(Qt`r}+b1`GTYGn|YNE#y#AaxT&x#zh zWF{O!k{}H>>g~mFcJ?Jc^y0Ci|D0%zvSYi3(Hw({2JG>e3AX4EnuVUUF(3~3wii~hS3V3wMKBF% zg=m{vY2kO>EgpKyA-KvFI3SN{1A7QM-qfeeZl;_dN`Agx>BdF?*D{m^e0B)s#T(br zy^nFKj*7}tBMci;i;)#f>4=-_V2_I9j^=J$WjxZy zP({P?-}vl$Q?sy-mGhKHJYqu&6y#lN4+cJRU4ZJiMfw5_Fjn!(ZLr*R=_aUjl~lJn z0$VD4<6T%&6vD_BA~P1DJ1TFfHwcBw6DKgphFa_qi{BOZ%=O;q?Do~`ic7Hz9wte5 z)rQqrxetOZ+TyjXq*LT}Yt~()9Sv8=t(n~wt%+W8WG$M1+#|nsi9z6x)nxd3s_kKA zEYyXVBof8n&mOQZH2;G_%gA$F_k7XzmMNSdnS1K9=Sc9O3|PCMq0yZQ2ob%*6)}7A zwOZ&5leUyaSbijB41m(itUaZx1r1G?4h#=4sS&|qkrOtr)H;cVuNQCqQN8_<=3XVt z&^%NIXa5rN*s1XBKKSibHdwYDAT@3Xa$6kq-Eih{i(v{zh+ zPZHj^=P^Y~ZCiqhqa`qz$zjk{apVP z7$56z9ax;tt$P)T{4Tq^x(OY_?Xin_x|xat-PUs_VE*e#8sTA6t5DjjDV(`q39|!~ zOt{Rvol?hOQ&o2uoOr9vw%vd1od>N662gmB+c1##VK`@g;}Sb2Hn$SY=>vz#>z<{R zDtvP^%6a3ywr~op+pG`~N};SgN}F`bN<4{HXueTZT@U#Eu4a`~zY2zBc3bIv#Mm59 zo02kKtGdgSR#PF~iVds7FYFufI^INTTZ^yK0bNQecio_r%0V)2?R9ARtNA5ukB+!~ zyOpxNpGg7q7A^Us+!9vve|!#PTwbe#DsI{Apt|X|!a8#hyfZAwi|9#`LX;x+sZSZrUX#UQB_Bo&e^e?X<}46rHPbx2tl| z0e7S9K!Z;R9r=E?$34JtiULxC<+Jff+n`x19u0be;IbTO66FTHY6P+C%i&!A>7Fa} z3y>ZqGmUj~`cE;jb+^odvRVTivp%Z6 z+LQimIp|$IzvvOe^?p@)fctha4J7wgGNO2XXE6hlGO9&KjS9AE>#C%Q6U0zuYxNW~%KHo^<=9x$i7L zTv!`1i{0N-{?-CRavcpd2n%FLa9;JqAL+u3Cd_;2nhj;VZBmEgwt8)O9yZ_02hky5lj{O% z_L>IA{Yi=r?fNY8H-HMZj;k??+n09RR5+gTtV94nA+97BZzAe9xN{i4g%lm{1yG}B zqPDBwg{c2})h+el<1%k|axjg*Dd#wms2y&GMrQdb0!#i0pF~B9`NMR`>`HuIVC(fJ zbml+lqPsGgIKF3?7>jby0woULPxd8**NML^f?AuusBV0}eX>Yap@68F>|>Uwf_NSk zvyj*VXBve_=5ZC4OVm%BkQAZv-=`mcE2p;Z5F|y*`p%CZ@lW`SWx%^n`8MqUa?(Cb z;v5@7YQ=gO%iJCi1(Oc#t^f`A5AjJy>H23bol7L&3O<+eSqPh zpJHrXwe}vRK~FiG@9I;g0O(B&m3YbbivzrL$Pt7PNmME|^;3V|wAC9-ZgzIIo{|~X z^_DCI^$dx{PvTW90Lp5y7Qn6_+ESOw?2q~3R+@`Mzx%#aP5>;oc3Ktu4%zg#_F{y+ zKa*8~bI}Zwjzh4WqvLV4xw(%!dl3xe&UAz1Q830Z3t&rf!f}ZAq@CO(qoO_iN+EHd zKsgQqv8MSAbo7v&Xvr6(@)*9;hkhXN?LOP5e*yZvmd0SMY~b79B;;tg~WuYT_N*-lAn?p3t}7|My4s7ggp@ zyMwq`g4NCS(#)NabHsaYqZYRzcYL+}lIzkRlxBnZKO%SzMthaLStAN_RryRLo8aSvya3uXY} z#0}7btZ^kNn$`eEUkJfnO}R2E07A4IeL7J1KLaC2X!&a;Kl@^3b5kc&9{oB2!d6{Q z*9W6lfsMw`jr#S4{9uv*(5toNA-IbVp8p@UpCH`<*3=lqbOP94&%&u?QD_g@R&7UI6DUUVJN~NBf`8TG5SzVCsB*nAn9tLTS!(1&4x9hrna? z7|XPpf%9X%0Oq+)$c#X`s3?Q)*Z=m_ywhU_rY{NW!}d4W+P8wtw7W-^KH&=mMA|3z zD#b-@8<#;1G>tY3M#QGav0hff2#lY2iT(e1WBdR<4pJ^YMF*Wa9a6NUcB**!^En>H z=4WT6XvwXxXLDJber_bA@9=jJ1tSP8{=dfk{;qDcbjEl79D|zo_jfg9iBD!%0^<%o+OD0VB?lM0{qCE_IlwoW%Iu+hj~4yLKm$yK?MkuR zR9lD#XMdtACyKM!iawzY zVLAZ3I)rY#f{pzAlgwRU7i#DT?p`Wbn=9X{=C|kY!!PJzW)Lt_OwShQJ?){x62sc5 zNE|zgG7Cw-7}NTQoN_$(!@v54*zo7X(ybT0TN##t5a%{bWuX=0nGl2H>m-PYNkQty ziLKuxH-meRc_7dxR+;4?6Ivg0;g_ToZ$Ob)-IsVbTUfV-&Im$dPBIpNe z1s94{nP>%WlzsAvX7}IR(U1P}do2N8d5l>VE04BZTEa7r2i+5i#}BO>KW_se(VHe* zgMaSM|M#Ufe`ASN615))ml#8Qr9qvK#ecyQhHvA6NohFjOy2U_XxSUlIin$h7dy5> z(%%(_2TiFc_3CfU!N0%7;}r}5hZosDXa+hEEAnUnhT}nO4w3d1$rt}}@b$+R7qC?< zfo25{wUB(lu&55xRR-5?#&4DT|8V?|*vISDnlKRsM-3GDBIWgVD1dQFB$?+T@$lsq z1QPiZ(7;bm(SN_t?v?o~K0Xt(MM0OO+?+>A?$&_;%;OUCD94tc{@G9NJK`dkCw{w1 zX@BX$^>r30f^RZTjj6ytQ3AuB771HFH3{SR_6HB~nYy&=IYmMDwv7uJC~Frnqrk+N zD=P1#h2tb0iD`NJc#O`F# zp*T){H{bDZ5AfYiE)e0S#-ztB;o~Zt8OXIU_+q?TlAbb=CEtYG=jNB4OU}#x_A=ke zTtq9K%=K7H5C?=pf!qm_y=qG$1*s3_hOP2K?)+-7>4z57Uk92%87-|!Rgll`v>W9| zg(Rf=Db{^Fu+`IV@C25hFH!`|X6r1;C*k&u)r||sH!o{!`|c6`y)K;n?K$(f3s>@U z7d+b;%o~qN~mSRRaedcPUOq-8)%%$CuxfWw$$f5hnqDAUwO3Uqr;-1 z*DCAbl!}HiG=p(2IWFZt-$pPD&ixZ>@x$lb{OSgP6^KG$OTm;zL7~#~Ql!}3fyNCm z1mFBQsN%^l215QGoBX%8i5F_w3EiAdT~d<7t<~wcb4CF}NxFY$GtzXO<>#biR&MPY}9H0DBcpTZ&xS>wNyJySi1!kU6 zYYj7Tp)4^a$Me+}NL?2>z`%)zY>fSj+V9ftA0E+vpVglZIZr9mZ(z_qIh4d1K8crk z0tgNW9Up<{S&>JFhqkH+jtGAoj}knCzJ*k3ub#Q42!?(EkA-?!%#oX0wQT&y-$LPA zNj9AKq=&h%5Xoe{w9`7&3EbLZ{_yygZ;jEPYBIFeQWONx_XhB07nj2d3!_q*TFLFf zr~ZkXPoSe@;Bf3p4&h`Z%S(I%QqzF89{@JCDrbrGmidByxSP_Rz)!vGJ>+Nlblj~j zrL*+MDA8X?jQ%b|O)u zPrz*lW>hprl~5wdErNj{D%Z}*`ndHsx{bjyf3@u(i8IOlK@6A{lL~AW42az`iPYPw zkp!nK=K$Bpm2~2^pqvSjXS;zDzP4u73 z&9$@4syJ_bv%zyT3cCfoV}o8E0ZQ=o&~W@#mEbrIq>ENd3&|>DVs)X-BZFXA&afER zM>TE*@x3Zrb}samu}Xi`*<^VG{($W063?UFu@+-7CRF*f_=2qU3cg}FLSf?UN<)bv z&xv0M?hikj;ddMXP^lQeiq2c?0^-0~WK%3Y+#WC_T$=I-&z_tqs+sXH{7Apmz+`s> zlFlH*D0H!R6*dtc!v&J1e%)z#e2WX1m-9uos`cO4woS!BFg9zesh8ioM|(kx2YTDZ zr!ot>(V*DGk7#l^Aa-Y6+@0*WjAI>|#XuImQ{l zm$ii?k5jHL})3H&E87iYcm0zs)Lg#fK#Z zF-iha*Uq@Lj%2syWg=@5C~E=6lSfs~LqArk9|o(Naue~94j^WtlNAJg7N1$YKGa8e zp0EgsiaASsO}UCbY(Rl%Jb3gL`NgBro-Hd(JA*&~byg6g6;35;w|%iI(8zQb^B?#~ z3x-@{jcta%C=}c1n<=)(@cfEG=q~}k^KOp-4b2V@hzsDGH)WZj1V%;G8jWRcD(2u# zC+vLz{gk{-)XOydl^ehN4RpiPy$F)suXx=HSO4K5f!y{3UdqJR=hKauQdc5j>~+aP zBR5MdYom=Dz=G;;obLCPTj(Gsl>3^`Jq-PV*s@9X&oqm_*F17=aOHKutM1Y-p|=JJ z_}5f@FFmZh?pP+yZf2mYd;ZXb6@10%$*nAt!=77rahdw@?GvxuOJc4U&Z8M$r;Dv$ zFv=si3x%K7CU|$~49Po>A%D-O;HN)dC>VGQF|Ox%_bQ!XQy#R=-o?1pywu-`0qrw) zXu{8H@Q7&C+e^h>8`B*ymRJOnf>rA!DS?T%GdLTM*|7s{=7EaRJ^=hFcHkim>h~VW zEgPjC3WIJ;m8&GJB$tMtwRscQ&xOltKTlb#)D4Unb zDYtQs-N*@#^0H%4rCBREk(olUt^S$1|0U($NH+MNb1pM~25r_`gI?3m>`N9gx0>xd zYIR8Z)@ns06OOV_MxEcvVi4+2NLK(1Ky#91AWXL4^Yf7Ppu~1AxNlQS!^{eeL zsEzt7(SICC?uVsWQ!5d%k8!J=*~w~s_Hkq61-xLxd(v?Ca54VS{eij_z#!xUW;GD9 zW#E8QJBuV0RXhSr>Jc_9@v;!dUe&( zF3Pv>)DjlC7%fy?B40R; zI_lCMvflTqAKRa$+NhCF`n>v-ulbUCfV@>hpv!owxbx_`$6)4xIg+Q)3fYjqpea)( zV4z4+^s`+!Iai|ToQMHTw=SiodNQQ`_CLFwnG%-7JMgucB>=PX)-4{cvuV?k@m6$L z?7w&WYtkfAoiKb2DdeR1T!~LHOMf!xA|-=IiSJ=FYi6sM5Siy(vx6L{uaptOI+`j} z46-zd$R)Y)L6nc`Lp z!l|XO1+hZ$UU`#4J9A1IR)HO4uhKABN(pt>Zq&&y3aF1>j&rXk@v zARnJwUx`lWG=HR>=iLy*NlL7e-6LwVQ2^(0v^v{a#!}&yFlu3Xikekk$l^`)-q0jp z9bWAQn?|GwO<7MUUdb#|#PG4zh%Q_7#`5}}?mL5U^v362k04^)%fLIth7@#jm$`S= zVI##cHPZUjs#Mmt!E&7M5lWWh29Y{QG%NR=T304f1zxKK5%0^Eu~<-42Zc_EN3OCi z@j3ApZa8k7X!W=Y{WJsr?Ax(=cWhlvGiZ!jv2IW%HhDZN=m9#pvh?N*yx+IlZHU^w zj#nMzfPO08aNW2<+O;lcch8?MD|GIFQNX7E5-B#)Jje+=Gjj$%4a3qpC&CB_9 zO7`T$6LmhLm!$`Kuf;~-T}xulB_!LkBzkOjxlHaj5733ipR7JUJ(Xj7#mKqY>$Sqt zCkauL9DV}M(+Pmrv;n(-`dh1J*vd6YxNUCdr)uz{82PIh?RmCb0kkajmJbpS<5l)Cc+7LqQ5(iYz!D|99Ywn$s4pL Xy15FIV*U{{;J@=~TB=#f*KYq8c`gIA literal 0 HcmV?d00001 diff --git a/experimental/examples/opencensus-shim/package.json b/experimental/examples/opencensus-shim/package.json new file mode 100644 index 0000000000..689d1c7c24 --- /dev/null +++ b/experimental/examples/opencensus-shim/package.json @@ -0,0 +1,41 @@ +{ + "name": "opencensus-shim", + "private": true, + "version": "0.40.0", + "description": "Example of using @opentelemetry/shim-opencensus in Node.js", + "main": "index.js", + "scripts": { + "client": "node -r @opentelemetry/shim-opencensus/register ./client.js", + "server": "node -r @opentelemetry/shim-opencensus/register ./server.js" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/open-telemetry/opentelemetry-js.git" + }, + "keywords": [ + "opentelemetry", + "http", + "tracing", + "opencensus" + ], + "engines": { + "node": ">=14" + }, + "author": "OpenTelemetry Authors", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/open-telemetry/opentelemetry-js/issues" + }, + "dependencies": { + "@opentelemetry/api": "1.4.1", + "@opentelemetry/sdk-trace-node": "1.14.0", + "@opencensus/core": "0.1.0", + "@opencensus/nodejs": "0.1.0", + "@opentelemetry/semantic-conventions": "1.14.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.40.0", + "@opentelemetry/resources": "1.14.0", + "@opentelemetry/shim-opencensus": "0.40.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/examples/opencensus-shim", + "devDependencies": {} +} diff --git a/experimental/examples/opencensus-shim/server.js b/experimental/examples/opencensus-shim/server.js new file mode 100644 index 0000000000..98ddcf5b60 --- /dev/null +++ b/experimental/examples/opencensus-shim/server.js @@ -0,0 +1,39 @@ +'use strict'; + +const { SpanStatusCode } = require('@opentelemetry/api'); +const setup = require('./setup'); +const utils = require('./utils'); +const { trace } = require('@opentelemetry/api'); + +setup('opencensus-shim-example-server'); +const http = require('http'); + +const otelTracer = trace.getTracer('opencensus-shim-example'); + +function startServer(port) { + // requests are traced by OpenCensus http instrumentation + const server = http.createServer(async (req, res) => { + // you can mix OTel and OC instrumentation + + // deliberately sleeping to mock some action + await otelTracer.startActiveSpan('sleep', async span => { + await utils.sleep(1000); + span.end(); + }); + + trace.getActiveSpan()?.addEvent('write headers'); + res.writeHead(200, { 'Content-Type': 'application/json' }); + trace.getActiveSpan()?.addEvent('write json response'); + res.write(JSON.stringify({ status: 'OK', message: 'Hello World!' })); + trace.getActiveSpan()?.setStatus(SpanStatusCode.OK); + res.end(); + }); + + server.listen(port, err => { + if (err) throw err; + + console.log(`Server is listening on ${port}`); + }); +} + +startServer(3000); diff --git a/experimental/examples/opencensus-shim/setup.js b/experimental/examples/opencensus-shim/setup.js new file mode 100644 index 0000000000..e96c62ae0c --- /dev/null +++ b/experimental/examples/opencensus-shim/setup.js @@ -0,0 +1,51 @@ +/* + * 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 strict'; + +const { DiagConsoleLogger, diag, DiagLogLevel } = require('@opentelemetry/api'); +const { + NodeTracerProvider, + BatchSpanProcessor, +} = require('@opentelemetry/sdk-trace-node'); +const { + OTLPTraceExporter, +} = require('@opentelemetry/exporter-trace-otlp-grpc'); +const { Resource } = require('@opentelemetry/resources'); +const { + SemanticResourceAttributes, +} = require('@opentelemetry/semantic-conventions'); + +module.exports = function setup(serviceName) { + const tracing = require('@opencensus/nodejs'); + + diag.setLogger(new DiagConsoleLogger(), { logLevel: DiagLogLevel.ALL }); + const provider = new NodeTracerProvider({ + resource: new Resource({ + [SemanticResourceAttributes.SERVICE_NAME]: serviceName, + }), + }); + provider.addSpanProcessor( + new BatchSpanProcessor(new OTLPTraceExporter(), { + scheduledDelayMillis: 5000, + }) + ); + provider.register(); + + // Start OpenCensus tracing + tracing.start({ samplingRate: 1, logger: diag }); + + return provider; +}; diff --git a/experimental/examples/opencensus-shim/utils.js b/experimental/examples/opencensus-shim/utils.js new file mode 100644 index 0000000000..3b1c625009 --- /dev/null +++ b/experimental/examples/opencensus-shim/utils.js @@ -0,0 +1,22 @@ +/* + * 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 strict'; + +async function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +exports.sleep = sleep; diff --git a/experimental/packages/shim-opencensus/README.md b/experimental/packages/shim-opencensus/README.md index e614fccf38..e79cfc0f43 100644 --- a/experimental/packages/shim-opencensus/README.md +++ b/experimental/packages/shim-opencensus/README.md @@ -15,7 +15,64 @@ npm install --save @opentelemetry/shim-opencensus ## Usage -TODO +### Installing the shim's require-in-the-middle hook + +This is the recommended way to use the shim. + +This package provides a `require-in-the-middle` hook which replaces OpenCensus's `CoreTracer` +class with a shim implementation that writes to the OpenTelemetry API. This will cause all +usage of OpenCensus's tracing methods (in OpenCensus instrumentation or your own custom +instrumentation) to be reported to OpenTelemetry. + +There are two options for installing the hook: + +1. Using Node's `--require` flag to load the register module: + + ```sh + node --require @opentelemetry/shim-opencensus/register ./app.js + ``` + +2. Programmatically: + + ```js + // Early in your application startup + require('@opentelemetry/shim-opencensus').installShim(); + ``` + + Note that this has to be run before any OpenCensus tracers have been created. + +### Replace OpenCensus tracer with the `ShimTracer` in your code + +Alternatively, you can replace any usage of OpenCensus tracers in your code with the `ShimTracer` directly. + +Before: + +```js +const tracing = require('@opencensus/nodejs'); +const tracer = tracing.start({samplingRate: 1}).tracer; + +// ... + +tracer.startRootSpan({name: 'main'}, rootSpan => { + rootSpan.end(); +}); +``` + +After: + +```js +const { trace } = require('@opentelemetry/api'); +const { ShimTracer } = require('@opentelemetry/shim-opencensus'); +const tracer = new ShimTracer(trace.getTracer('my-module')); + +// ... + +tracer.startRootSpan({name: 'main'}, rootSpan => { + rootSpan.end(); +}); +``` + +## Example See [examples/opencensus-shim](https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/examples/opencensus-shim) for a short example. diff --git a/experimental/packages/shim-opencensus/package.json b/experimental/packages/shim-opencensus/package.json index f0b4581a82..75e08e6c64 100644 --- a/experimental/packages/shim-opencensus/package.json +++ b/experimental/packages/shim-opencensus/package.json @@ -4,6 +4,10 @@ "description": "OpenCensus to OpenTelemetry shim", "main": "build/src/index.js", "types": "build/src/index.d.ts", + "exports": { + ".": "./build/src/index.js", + "./register": "./build/src/register.js" + }, "repository": "open-telemetry/opentelemetry-js", "scripts": { "prepublishOnly": "npm run compile", diff --git a/experimental/packages/shim-opencensus/src/index.ts b/experimental/packages/shim-opencensus/src/index.ts index ccfe42e2f8..5df2f6c315 100644 --- a/experimental/packages/shim-opencensus/src/index.ts +++ b/experimental/packages/shim-opencensus/src/index.ts @@ -15,3 +15,4 @@ */ export { ShimTracer } from './ShimTracer'; +export { installShim, uninstallShim } from './shim'; From 661b2831e4f9b3c2d89fc905eb34e6798e2c254b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 14 Jun 2023 16:40:01 +0200 Subject: [PATCH 28/71] chore(deps): update dependency markdownlint-cli to v0.34.0 (#3906) Co-authored-by: Marc Pichler --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3c2b15e771..0e7aceefbc 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ "gh-pages": "5.0.0", "lerna": "6.0.3", "linkinator": "5.0.1", - "markdownlint-cli": "0.32.2", + "markdownlint-cli": "0.34.0", "prettier": "2.8.8", "semver": "7.5.1", "typedoc": "0.22.18", From 51fb576c169745d0da66ae82d43d7b7d1b8d9323 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 14 Jun 2023 17:28:49 +0200 Subject: [PATCH 29/71] chore(deps): update dependency webpack-cli to v4.10.0 (#3907) --- experimental/packages/exporter-logs-otlp-http/package.json | 2 +- experimental/packages/exporter-trace-otlp-http/package.json | 2 +- .../opentelemetry-exporter-metrics-otlp-http/package.json | 2 +- .../packages/opentelemetry-instrumentation-fetch/package.json | 2 +- .../opentelemetry-instrumentation-xml-http-request/package.json | 2 +- .../packages/opentelemetry-instrumentation/package.json | 2 +- packages/opentelemetry-context-zone-peer-dep/package.json | 2 +- packages/opentelemetry-context-zone/package.json | 2 +- packages/opentelemetry-exporter-zipkin/package.json | 2 +- packages/opentelemetry-resources/package.json | 2 +- packages/opentelemetry-sdk-trace-web/package.json | 2 +- selenium-tests/package.json | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index 8e1de3460d..a87c9086e9 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -95,7 +95,7 @@ "ts-mocha": "10.0.0", "typescript": "4.4.4", "webpack": "4.46.0", - "webpack-cli": "4.9.1", + "webpack-cli": "4.10.0", "webpack-merge": "5.9.0" }, "peerDependencies": { diff --git a/experimental/packages/exporter-trace-otlp-http/package.json b/experimental/packages/exporter-trace-otlp-http/package.json index dd9520c163..a9d1c2a233 100644 --- a/experimental/packages/exporter-trace-otlp-http/package.json +++ b/experimental/packages/exporter-trace-otlp-http/package.json @@ -87,7 +87,7 @@ "ts-mocha": "10.0.0", "typescript": "4.4.4", "webpack": "4.46.0", - "webpack-cli": "4.9.1", + "webpack-cli": "4.10.0", "webpack-merge": "5.9.0" }, "peerDependencies": { diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index 077dc558bb..0db0336308 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -87,7 +87,7 @@ "ts-mocha": "10.0.0", "typescript": "4.4.4", "webpack": "4.46.0", - "webpack-cli": "4.9.1", + "webpack-cli": "4.10.0", "webpack-merge": "5.9.0" }, "peerDependencies": { diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index 6d2856e07e..54e46b6471 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -80,7 +80,7 @@ "ts-mocha": "10.0.0", "typescript": "4.4.4", "webpack": "4.46.0", - "webpack-cli": "4.9.1", + "webpack-cli": "4.10.0", "webpack-merge": "5.9.0" }, "peerDependencies": { diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json index 317304b9a5..55e976c345 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json @@ -80,7 +80,7 @@ "ts-mocha": "10.0.0", "typescript": "4.4.4", "webpack": "4.46.0", - "webpack-cli": "4.9.1", + "webpack-cli": "4.10.0", "webpack-merge": "5.9.0" }, "peerDependencies": { diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index 6be8d48953..8859ceb3a7 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -107,7 +107,7 @@ "ts-mocha": "10.0.0", "typescript": "4.4.4", "webpack": "4.46.0", - "webpack-cli": "4.9.1", + "webpack-cli": "4.10.0", "webpack-merge": "5.9.0" }, "engines": { diff --git a/packages/opentelemetry-context-zone-peer-dep/package.json b/packages/opentelemetry-context-zone-peer-dep/package.json index 1836cc1d59..a30b14f40a 100644 --- a/packages/opentelemetry-context-zone-peer-dep/package.json +++ b/packages/opentelemetry-context-zone-peer-dep/package.json @@ -77,7 +77,7 @@ "ts-mocha": "10.0.0", "typescript": "4.4.4", "webpack": "4.46.0", - "webpack-cli": "4.9.1", + "webpack-cli": "4.10.0", "zone.js": "0.11.4" }, "peerDependencies": { diff --git a/packages/opentelemetry-context-zone/package.json b/packages/opentelemetry-context-zone/package.json index 7540e42216..8c3e53159d 100644 --- a/packages/opentelemetry-context-zone/package.json +++ b/packages/opentelemetry-context-zone/package.json @@ -70,7 +70,7 @@ "ts-mocha": "10.0.0", "typescript": "4.4.4", "webpack": "4.46.0", - "webpack-cli": "4.9.1", + "webpack-cli": "4.10.0", "webpack-merge": "5.9.0" }, "dependencies": { diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index eb01400782..341b5aacf3 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -84,7 +84,7 @@ "ts-mocha": "10.0.0", "typescript": "4.4.4", "webpack": "4.46.0", - "webpack-cli": "4.9.1", + "webpack-cli": "4.10.0", "webpack-merge": "5.9.0" }, "peerDependencies": { diff --git a/packages/opentelemetry-resources/package.json b/packages/opentelemetry-resources/package.json index 6539303c0b..48e167e933 100644 --- a/packages/opentelemetry-resources/package.json +++ b/packages/opentelemetry-resources/package.json @@ -83,7 +83,7 @@ "ts-mocha": "10.0.0", "typescript": "4.4.4", "webpack": "4.46.0", - "webpack-cli": "4.9.1", + "webpack-cli": "4.10.0", "webpack-merge": "5.9.0" }, "peerDependencies": { diff --git a/packages/opentelemetry-sdk-trace-web/package.json b/packages/opentelemetry-sdk-trace-web/package.json index 17fa9c9466..bba04425df 100644 --- a/packages/opentelemetry-sdk-trace-web/package.json +++ b/packages/opentelemetry-sdk-trace-web/package.json @@ -84,7 +84,7 @@ "ts-mocha": "10.0.0", "typescript": "4.4.4", "webpack": "4.46.0", - "webpack-cli": "4.9.1", + "webpack-cli": "4.10.0", "webpack-merge": "5.9.0" }, "peerDependencies": { diff --git a/selenium-tests/package.json b/selenium-tests/package.json index fd93de9a1f..cc0ee0108a 100644 --- a/selenium-tests/package.json +++ b/selenium-tests/package.json @@ -48,7 +48,7 @@ "selenium-server": "3.141.59", "terser-webpack-plugin": "4.2.3", "webpack": "4.46.0", - "webpack-cli": "4.9.1", + "webpack-cli": "4.10.0", "webpack-dev-server": "4.5.0", "webpack-merge": "5.9.0" }, From c981558b50f237437930d1c1bc5bbc568e2a60ae Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 14 Jun 2023 17:48:01 +0200 Subject: [PATCH 30/71] chore(deps): update typescript-eslint monorepo to v5.59.11 (#3910) --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 0e7aceefbc..4ffd239f21 100644 --- a/package.json +++ b/package.json @@ -63,8 +63,8 @@ "author": "OpenTelemetry Authors", "license": "Apache-2.0", "devDependencies": { - "@typescript-eslint/eslint-plugin": "5.3.1", - "@typescript-eslint/parser": "5.3.1", + "@typescript-eslint/eslint-plugin": "5.59.11", + "@typescript-eslint/parser": "5.59.11", "eslint": "8.22.0", "eslint-config-prettier": "8.5.0", "eslint-plugin-header": "3.1.1", From 4b2d887cd5030b7751a2e55bcc7ce92823c1ce88 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 15 Jun 2023 11:18:45 +0200 Subject: [PATCH 31/71] chore(deps): update dependency karma to v6.4.2 (#3911) --- api/package.json | 2 +- experimental/packages/api-events/package.json | 2 +- experimental/packages/api-logs/package.json | 2 +- experimental/packages/exporter-logs-otlp-http/package.json | 2 +- experimental/packages/exporter-trace-otlp-http/package.json | 2 +- .../opentelemetry-exporter-metrics-otlp-http/package.json | 2 +- .../packages/opentelemetry-instrumentation-fetch/package.json | 2 +- .../opentelemetry-instrumentation-xml-http-request/package.json | 2 +- .../packages/opentelemetry-instrumentation/package.json | 2 +- experimental/packages/otlp-transformer/package.json | 2 +- experimental/packages/sdk-logs/package.json | 2 +- packages/opentelemetry-context-zone-peer-dep/package.json | 2 +- packages/opentelemetry-context-zone/package.json | 2 +- packages/opentelemetry-core/package.json | 2 +- packages/opentelemetry-exporter-zipkin/package.json | 2 +- packages/opentelemetry-propagator-jaeger/package.json | 2 +- packages/opentelemetry-resources/package.json | 2 +- packages/opentelemetry-sdk-trace-base/package.json | 2 +- packages/opentelemetry-sdk-trace-web/package.json | 2 +- packages/sdk-metrics/package.json | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/api/package.json b/api/package.json index 3e51ca7bd0..f8778eca5a 100644 --- a/api/package.json +++ b/api/package.json @@ -69,7 +69,7 @@ "cross-var": "1.1.0", "dpdm": "3.13.1", "istanbul-instrumenter-loader": "3.0.1", - "karma": "6.3.16", + "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", diff --git a/experimental/packages/api-events/package.json b/experimental/packages/api-events/package.json index 2c93e18c36..d0099e6b37 100644 --- a/experimental/packages/api-events/package.json +++ b/experimental/packages/api-events/package.json @@ -70,7 +70,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", - "karma": "6.3.16", + "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", diff --git a/experimental/packages/api-logs/package.json b/experimental/packages/api-logs/package.json index eabcfc00fb..1d8f9be947 100644 --- a/experimental/packages/api-logs/package.json +++ b/experimental/packages/api-logs/package.json @@ -70,7 +70,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", - "karma": "6.3.16", + "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index a87c9086e9..021f474873 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -82,7 +82,7 @@ "cpx": "1.5.0", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", - "karma": "6.3.16", + "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", diff --git a/experimental/packages/exporter-trace-otlp-http/package.json b/experimental/packages/exporter-trace-otlp-http/package.json index a9d1c2a233..024e1c8a8a 100644 --- a/experimental/packages/exporter-trace-otlp-http/package.json +++ b/experimental/packages/exporter-trace-otlp-http/package.json @@ -74,7 +74,7 @@ "cpx": "1.5.0", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", - "karma": "6.3.16", + "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index 0db0336308..f9fd7b2c8f 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -74,7 +74,7 @@ "cpx": "1.5.0", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", - "karma": "6.3.16", + "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index 54e46b6471..a9316939d3 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -67,7 +67,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", - "karma": "6.3.16", + "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json index 55e976c345..c8b8069cd3 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json @@ -67,7 +67,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", - "karma": "6.3.16", + "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index 8859ceb3a7..653d68cf7b 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -94,7 +94,7 @@ "cpx": "1.5.0", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", - "karma": "6.3.16", + "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", diff --git a/experimental/packages/otlp-transformer/package.json b/experimental/packages/otlp-transformer/package.json index 9e1af19e88..a92ed10f69 100644 --- a/experimental/packages/otlp-transformer/package.json +++ b/experimental/packages/otlp-transformer/package.json @@ -65,7 +65,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", - "karma": "6.3.16", + "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", diff --git a/experimental/packages/sdk-logs/package.json b/experimental/packages/sdk-logs/package.json index a08a034964..fa845b235a 100644 --- a/experimental/packages/sdk-logs/package.json +++ b/experimental/packages/sdk-logs/package.json @@ -79,7 +79,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "karma": "6.3.16", + "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", diff --git a/packages/opentelemetry-context-zone-peer-dep/package.json b/packages/opentelemetry-context-zone-peer-dep/package.json index a30b14f40a..1e5d673d76 100644 --- a/packages/opentelemetry-context-zone-peer-dep/package.json +++ b/packages/opentelemetry-context-zone-peer-dep/package.json @@ -64,7 +64,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", - "karma": "6.3.16", + "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", diff --git a/packages/opentelemetry-context-zone/package.json b/packages/opentelemetry-context-zone/package.json index 8c3e53159d..08cebd7359 100644 --- a/packages/opentelemetry-context-zone/package.json +++ b/packages/opentelemetry-context-zone/package.json @@ -58,7 +58,7 @@ "babel-loader": "8.3.0", "codecov": "3.8.3", "cross-var": "1.1.0", - "karma": "6.3.16", + "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", diff --git a/packages/opentelemetry-core/package.json b/packages/opentelemetry-core/package.json index 9596497acc..2411e5d894 100644 --- a/packages/opentelemetry-core/package.json +++ b/packages/opentelemetry-core/package.json @@ -72,7 +72,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", - "karma": "6.3.16", + "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index 341b5aacf3..eadbe549f1 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -70,7 +70,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", - "karma": "6.3.16", + "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", diff --git a/packages/opentelemetry-propagator-jaeger/package.json b/packages/opentelemetry-propagator-jaeger/package.json index ec76269552..f748e6a311 100644 --- a/packages/opentelemetry-propagator-jaeger/package.json +++ b/packages/opentelemetry-propagator-jaeger/package.json @@ -62,7 +62,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", - "karma": "6.3.16", + "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", diff --git a/packages/opentelemetry-resources/package.json b/packages/opentelemetry-resources/package.json index 48e167e933..004477eb19 100644 --- a/packages/opentelemetry-resources/package.json +++ b/packages/opentelemetry-resources/package.json @@ -69,7 +69,7 @@ "@types/webpack-env": "1.16.3", "codecov": "3.8.3", "cross-var": "1.1.0", - "karma": "6.3.16", + "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", diff --git a/packages/opentelemetry-sdk-trace-base/package.json b/packages/opentelemetry-sdk-trace-base/package.json index 44ac5857dc..7f93ea4c1b 100644 --- a/packages/opentelemetry-sdk-trace-base/package.json +++ b/packages/opentelemetry-sdk-trace-base/package.json @@ -73,7 +73,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", - "karma": "6.3.16", + "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", diff --git a/packages/opentelemetry-sdk-trace-web/package.json b/packages/opentelemetry-sdk-trace-web/package.json index bba04425df..0004fb222b 100644 --- a/packages/opentelemetry-sdk-trace-web/package.json +++ b/packages/opentelemetry-sdk-trace-web/package.json @@ -69,7 +69,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", - "karma": "6.3.16", + "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-jquery": "0.2.4", diff --git a/packages/sdk-metrics/package.json b/packages/sdk-metrics/package.json index 778a9ff859..48e28af1ae 100644 --- a/packages/sdk-metrics/package.json +++ b/packages/sdk-metrics/package.json @@ -61,7 +61,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "karma": "6.3.16", + "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage-istanbul-reporter": "3.0.3", "karma-mocha": "2.0.1", From e8f3432bdec680bc8d77359dec1eda36a2840244 Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Fri, 16 Jun 2023 12:37:29 +0200 Subject: [PATCH 32/71] chore: add lerna to devDependencies in all packages (#3909) --- api/package.json | 1 + experimental/packages/api-events/package.json | 1 + experimental/packages/api-logs/package.json | 1 + experimental/packages/exporter-logs-otlp-grpc/package.json | 1 + experimental/packages/exporter-logs-otlp-http/package.json | 1 + experimental/packages/exporter-logs-otlp-proto/package.json | 1 + experimental/packages/exporter-trace-otlp-grpc/package.json | 1 + experimental/packages/exporter-trace-otlp-http/package.json | 1 + experimental/packages/exporter-trace-otlp-proto/package.json | 1 + .../packages/opentelemetry-browser-detector/package.json | 1 + .../opentelemetry-exporter-metrics-otlp-grpc/package.json | 1 + .../opentelemetry-exporter-metrics-otlp-http/package.json | 1 + .../opentelemetry-exporter-metrics-otlp-proto/package.json | 1 + .../packages/opentelemetry-exporter-prometheus/package.json | 1 + .../packages/opentelemetry-instrumentation-fetch/package.json | 1 + .../packages/opentelemetry-instrumentation-grpc/package.json | 1 + .../packages/opentelemetry-instrumentation-http/package.json | 1 + .../opentelemetry-instrumentation-xml-http-request/package.json | 1 + experimental/packages/opentelemetry-instrumentation/package.json | 1 + experimental/packages/opentelemetry-sdk-node/package.json | 1 + experimental/packages/otlp-exporter-base/package.json | 1 + experimental/packages/otlp-grpc-exporter-base/package.json | 1 + experimental/packages/otlp-proto-exporter-base/package.json | 1 + experimental/packages/otlp-transformer/package.json | 1 + experimental/packages/sdk-logs/package.json | 1 + experimental/packages/shim-opencensus/package.json | 1 + packages/opentelemetry-context-async-hooks/package.json | 1 + packages/opentelemetry-context-zone-peer-dep/package.json | 1 + packages/opentelemetry-context-zone/package.json | 1 + packages/opentelemetry-exporter-jaeger/package.json | 1 + packages/opentelemetry-exporter-zipkin/package.json | 1 + packages/opentelemetry-propagator-b3/package.json | 1 + packages/opentelemetry-propagator-jaeger/package.json | 1 + packages/opentelemetry-resources/package.json | 1 + packages/opentelemetry-sdk-trace-base/package.json | 1 + packages/opentelemetry-sdk-trace-node/package.json | 1 + packages/opentelemetry-sdk-trace-web/package.json | 1 + packages/opentelemetry-semantic-conventions/package.json | 1 + packages/opentelemetry-shim-opentracing/package.json | 1 + packages/sdk-metrics/package.json | 1 + packages/template/package.json | 1 + 41 files changed, 41 insertions(+) diff --git a/api/package.json b/api/package.json index f8778eca5a..63bd7361e3 100644 --- a/api/package.json +++ b/api/package.json @@ -76,6 +76,7 @@ "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", + "lerna": "6.0.3", "memfs": "3.5.3", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/experimental/packages/api-events/package.json b/experimental/packages/api-events/package.json index d0099e6b37..1a97263cca 100644 --- a/experimental/packages/api-events/package.json +++ b/experimental/packages/api-events/package.json @@ -76,6 +76,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/api-logs/package.json b/experimental/packages/api-logs/package.json index 1d8f9be947..c2816018b0 100644 --- a/experimental/packages/api-logs/package.json +++ b/experimental/packages/api-logs/package.json @@ -76,6 +76,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/exporter-logs-otlp-grpc/package.json b/experimental/packages/exporter-logs-otlp-grpc/package.json index 75cb057c8c..f7acfd1683 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/package.json +++ b/experimental/packages/exporter-logs-otlp-grpc/package.json @@ -60,6 +60,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index 021f474873..422c873ec1 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -88,6 +88,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-logs-otlp-proto/package.json b/experimental/packages/exporter-logs-otlp-proto/package.json index 9287bafde0..9e1b831311 100644 --- a/experimental/packages/exporter-logs-otlp-proto/package.json +++ b/experimental/packages/exporter-logs-otlp-proto/package.json @@ -71,6 +71,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-trace-otlp-grpc/package.json b/experimental/packages/exporter-trace-otlp-grpc/package.json index 7f4ce27a27..27528117ae 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/package.json +++ b/experimental/packages/exporter-trace-otlp-grpc/package.json @@ -57,6 +57,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-trace-otlp-http/package.json b/experimental/packages/exporter-trace-otlp-http/package.json index 024e1c8a8a..94f1ba2172 100644 --- a/experimental/packages/exporter-trace-otlp-http/package.json +++ b/experimental/packages/exporter-trace-otlp-http/package.json @@ -80,6 +80,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-trace-otlp-proto/package.json b/experimental/packages/exporter-trace-otlp-proto/package.json index fb37df438b..9d7ddcd95a 100644 --- a/experimental/packages/exporter-trace-otlp-proto/package.json +++ b/experimental/packages/exporter-trace-otlp-proto/package.json @@ -70,6 +70,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-browser-detector/package.json b/experimental/packages/opentelemetry-browser-detector/package.json index a63c9f58c6..80eccd5ebe 100644 --- a/experimental/packages/opentelemetry-browser-detector/package.json +++ b/experimental/packages/opentelemetry-browser-detector/package.json @@ -60,6 +60,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index 5773a233c3..f5597ea8ab 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -56,6 +56,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index f9fd7b2c8f..cf8265e2f2 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -80,6 +80,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index e4b75b7bb2..715d8576d0 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -55,6 +55,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-exporter-prometheus/package.json b/experimental/packages/opentelemetry-exporter-prometheus/package.json index 1bd383b8d5..c7c7b4e976 100644 --- a/experimental/packages/opentelemetry-exporter-prometheus/package.json +++ b/experimental/packages/opentelemetry-exporter-prometheus/package.json @@ -50,6 +50,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index a9316939d3..56f01a2f0b 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -73,6 +73,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/package.json b/experimental/packages/opentelemetry-instrumentation-grpc/package.json index ec5ddd50af..00bb975161 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/package.json +++ b/experimental/packages/opentelemetry-instrumentation-grpc/package.json @@ -58,6 +58,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", + "lerna": "6.0.3", "mocha": "10.2.0", "node-pre-gyp": "0.17.0", "nyc": "15.1.0", diff --git a/experimental/packages/opentelemetry-instrumentation-http/package.json b/experimental/packages/opentelemetry-instrumentation-http/package.json index 2c25b4abd3..894400a26f 100644 --- a/experimental/packages/opentelemetry-instrumentation-http/package.json +++ b/experimental/packages/opentelemetry-instrumentation-http/package.json @@ -59,6 +59,7 @@ "axios": "1.4.0", "codecov": "3.8.3", "cross-var": "1.1.0", + "lerna": "6.0.3", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json index c8b8069cd3..677f0b7af4 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json @@ -73,6 +73,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index 653d68cf7b..17af8f71a0 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -100,6 +100,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json index aafb3e13e6..26880e8289 100644 --- a/experimental/packages/opentelemetry-sdk-node/package.json +++ b/experimental/packages/opentelemetry-sdk-node/package.json @@ -70,6 +70,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "semver": "7.5.1", diff --git a/experimental/packages/otlp-exporter-base/package.json b/experimental/packages/otlp-exporter-base/package.json index e5047d16a9..b42eff0084 100644 --- a/experimental/packages/otlp-exporter-base/package.json +++ b/experimental/packages/otlp-exporter-base/package.json @@ -71,6 +71,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", + "lerna": "6.0.3", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/experimental/packages/otlp-grpc-exporter-base/package.json b/experimental/packages/otlp-grpc-exporter-base/package.json index 7cef192d65..277ba2d883 100644 --- a/experimental/packages/otlp-grpc-exporter-base/package.json +++ b/experimental/packages/otlp-grpc-exporter-base/package.json @@ -59,6 +59,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "protobufjs-cli": "1.1.1", diff --git a/experimental/packages/otlp-proto-exporter-base/package.json b/experimental/packages/otlp-proto-exporter-base/package.json index 34e6d171dc..e324cc5bcd 100644 --- a/experimental/packages/otlp-proto-exporter-base/package.json +++ b/experimental/packages/otlp-proto-exporter-base/package.json @@ -66,6 +66,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "protobufjs-cli": "1.1.1", diff --git a/experimental/packages/otlp-transformer/package.json b/experimental/packages/otlp-transformer/package.json index a92ed10f69..5a4943237d 100644 --- a/experimental/packages/otlp-transformer/package.json +++ b/experimental/packages/otlp-transformer/package.json @@ -71,6 +71,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/sdk-logs/package.json b/experimental/packages/sdk-logs/package.json index fa845b235a..b1812c8a67 100644 --- a/experimental/packages/sdk-logs/package.json +++ b/experimental/packages/sdk-logs/package.json @@ -85,6 +85,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/shim-opencensus/package.json b/experimental/packages/shim-opencensus/package.json index 75e08e6c64..dd38b1f1d1 100644 --- a/experimental/packages/shim-opencensus/package.json +++ b/experimental/packages/shim-opencensus/package.json @@ -57,6 +57,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-context-async-hooks/package.json b/packages/opentelemetry-context-async-hooks/package.json index 699ccc0bd7..5445e07861 100644 --- a/packages/opentelemetry-context-async-hooks/package.json +++ b/packages/opentelemetry-context-async-hooks/package.json @@ -49,6 +49,7 @@ "@types/node": "18.6.5", "codecov": "3.8.3", "cross-var": "1.1.0", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "ts-mocha": "10.0.0", diff --git a/packages/opentelemetry-context-zone-peer-dep/package.json b/packages/opentelemetry-context-zone-peer-dep/package.json index 1e5d673d76..c24d7ca2b2 100644 --- a/packages/opentelemetry-context-zone-peer-dep/package.json +++ b/packages/opentelemetry-context-zone-peer-dep/package.json @@ -70,6 +70,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-context-zone/package.json b/packages/opentelemetry-context-zone/package.json index 08cebd7359..b1091f959a 100644 --- a/packages/opentelemetry-context-zone/package.json +++ b/packages/opentelemetry-context-zone/package.json @@ -63,6 +63,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-exporter-jaeger/package.json b/packages/opentelemetry-exporter-jaeger/package.json index bdd9ab1e9d..2b303ab20d 100644 --- a/packages/opentelemetry-exporter-jaeger/package.json +++ b/packages/opentelemetry-exporter-jaeger/package.json @@ -51,6 +51,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", + "lerna": "6.0.3", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index eadbe549f1..cc9bfec4ac 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -76,6 +76,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", + "lerna": "6.0.3", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/packages/opentelemetry-propagator-b3/package.json b/packages/opentelemetry-propagator-b3/package.json index b2e782672c..e5b61772c1 100644 --- a/packages/opentelemetry-propagator-b3/package.json +++ b/packages/opentelemetry-propagator-b3/package.json @@ -63,6 +63,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "ts-loader": "8.4.0", diff --git a/packages/opentelemetry-propagator-jaeger/package.json b/packages/opentelemetry-propagator-jaeger/package.json index f748e6a311..37f9786d3b 100644 --- a/packages/opentelemetry-propagator-jaeger/package.json +++ b/packages/opentelemetry-propagator-jaeger/package.json @@ -68,6 +68,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-resources/package.json b/packages/opentelemetry-resources/package.json index 004477eb19..c0d875a9a6 100644 --- a/packages/opentelemetry-resources/package.json +++ b/packages/opentelemetry-resources/package.json @@ -76,6 +76,7 @@ "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", + "lerna": "6.0.3", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/packages/opentelemetry-sdk-trace-base/package.json b/packages/opentelemetry-sdk-trace-base/package.json index 7f93ea4c1b..f39c976cb8 100644 --- a/packages/opentelemetry-sdk-trace-base/package.json +++ b/packages/opentelemetry-sdk-trace-base/package.json @@ -80,6 +80,7 @@ "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-sdk-trace-node/package.json b/packages/opentelemetry-sdk-trace-node/package.json index 35e83895c6..37d5178f7f 100644 --- a/packages/opentelemetry-sdk-trace-node/package.json +++ b/packages/opentelemetry-sdk-trace-node/package.json @@ -54,6 +54,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-sdk-trace-web/package.json b/packages/opentelemetry-sdk-trace-web/package.json index 0004fb222b..29d6d1267b 100644 --- a/packages/opentelemetry-sdk-trace-web/package.json +++ b/packages/opentelemetry-sdk-trace-web/package.json @@ -77,6 +77,7 @@ "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-semantic-conventions/package.json b/packages/opentelemetry-semantic-conventions/package.json index 4296ed1c2e..57c244af85 100644 --- a/packages/opentelemetry-semantic-conventions/package.json +++ b/packages/opentelemetry-semantic-conventions/package.json @@ -54,6 +54,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", + "lerna": "6.0.3", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/packages/opentelemetry-shim-opentracing/package.json b/packages/opentelemetry-shim-opentracing/package.json index 0a4c56882a..d221b825fe 100644 --- a/packages/opentelemetry-shim-opentracing/package.json +++ b/packages/opentelemetry-shim-opentracing/package.json @@ -50,6 +50,7 @@ "@types/node": "18.6.5", "codecov": "3.8.3", "cross-var": "1.1.0", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "ts-mocha": "10.0.0", diff --git a/packages/sdk-metrics/package.json b/packages/sdk-metrics/package.json index 48e28af1ae..90ed681bc6 100644 --- a/packages/sdk-metrics/package.json +++ b/packages/sdk-metrics/package.json @@ -67,6 +67,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", + "lerna": "6.0.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/template/package.json b/packages/template/package.json index 9ff7db8db0..c90e6b5b6d 100644 --- a/packages/template/package.json +++ b/packages/template/package.json @@ -80,6 +80,7 @@ "devDependencies": { "@types/node": "18.6.5", "cross-var": "1.1.0", + "lerna": "6.0.3", "typescript": "4.4.4" }, "Add these to devDependencies for testing": { From dfe6fe827297f9f848e5fa5b78f144b0fd13d6e1 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 16 Jun 2023 12:51:35 +0200 Subject: [PATCH 33/71] chore(deps): update dependency lerna to v6.6.2 (#3885) --- api/package.json | 2 +- experimental/packages/api-events/package.json | 2 +- experimental/packages/api-logs/package.json | 2 +- experimental/packages/exporter-logs-otlp-grpc/package.json | 2 +- experimental/packages/exporter-logs-otlp-http/package.json | 2 +- experimental/packages/exporter-logs-otlp-proto/package.json | 2 +- experimental/packages/exporter-trace-otlp-grpc/package.json | 2 +- experimental/packages/exporter-trace-otlp-http/package.json | 2 +- experimental/packages/exporter-trace-otlp-proto/package.json | 2 +- .../packages/opentelemetry-browser-detector/package.json | 2 +- .../opentelemetry-exporter-metrics-otlp-grpc/package.json | 2 +- .../opentelemetry-exporter-metrics-otlp-http/package.json | 2 +- .../opentelemetry-exporter-metrics-otlp-proto/package.json | 2 +- .../packages/opentelemetry-exporter-prometheus/package.json | 2 +- .../packages/opentelemetry-instrumentation-fetch/package.json | 2 +- .../packages/opentelemetry-instrumentation-grpc/package.json | 2 +- .../packages/opentelemetry-instrumentation-http/package.json | 2 +- .../opentelemetry-instrumentation-xml-http-request/package.json | 2 +- .../packages/opentelemetry-instrumentation/package.json | 2 +- experimental/packages/opentelemetry-sdk-node/package.json | 2 +- experimental/packages/otlp-exporter-base/package.json | 2 +- experimental/packages/otlp-grpc-exporter-base/package.json | 2 +- experimental/packages/otlp-proto-exporter-base/package.json | 2 +- experimental/packages/otlp-transformer/package.json | 2 +- experimental/packages/sdk-logs/package.json | 2 +- experimental/packages/shim-opencensus/package.json | 2 +- package.json | 2 +- packages/opentelemetry-context-async-hooks/package.json | 2 +- packages/opentelemetry-context-zone-peer-dep/package.json | 2 +- packages/opentelemetry-context-zone/package.json | 2 +- packages/opentelemetry-core/package.json | 2 +- packages/opentelemetry-exporter-jaeger/package.json | 2 +- packages/opentelemetry-exporter-zipkin/package.json | 2 +- packages/opentelemetry-propagator-b3/package.json | 2 +- packages/opentelemetry-propagator-jaeger/package.json | 2 +- packages/opentelemetry-resources/package.json | 2 +- packages/opentelemetry-sdk-trace-base/package.json | 2 +- packages/opentelemetry-sdk-trace-node/package.json | 2 +- packages/opentelemetry-sdk-trace-web/package.json | 2 +- packages/opentelemetry-semantic-conventions/package.json | 2 +- packages/opentelemetry-shim-opentracing/package.json | 2 +- packages/sdk-metrics/package.json | 2 +- packages/template/package.json | 2 +- 43 files changed, 43 insertions(+), 43 deletions(-) diff --git a/api/package.json b/api/package.json index 63bd7361e3..f938ff131b 100644 --- a/api/package.json +++ b/api/package.json @@ -76,7 +76,7 @@ "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.0.3", + "lerna": "6.6.2", "memfs": "3.5.3", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/experimental/packages/api-events/package.json b/experimental/packages/api-events/package.json index 1a97263cca..ae67318f24 100644 --- a/experimental/packages/api-events/package.json +++ b/experimental/packages/api-events/package.json @@ -76,7 +76,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/api-logs/package.json b/experimental/packages/api-logs/package.json index c2816018b0..7c81c223fc 100644 --- a/experimental/packages/api-logs/package.json +++ b/experimental/packages/api-logs/package.json @@ -76,7 +76,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/exporter-logs-otlp-grpc/package.json b/experimental/packages/exporter-logs-otlp-grpc/package.json index f7acfd1683..5f23cf62ec 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/package.json +++ b/experimental/packages/exporter-logs-otlp-grpc/package.json @@ -60,7 +60,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index 422c873ec1..8ce3c71865 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -88,7 +88,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-logs-otlp-proto/package.json b/experimental/packages/exporter-logs-otlp-proto/package.json index 9e1b831311..d4b7b7e9c7 100644 --- a/experimental/packages/exporter-logs-otlp-proto/package.json +++ b/experimental/packages/exporter-logs-otlp-proto/package.json @@ -71,7 +71,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-trace-otlp-grpc/package.json b/experimental/packages/exporter-trace-otlp-grpc/package.json index 27528117ae..83982a9ee8 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/package.json +++ b/experimental/packages/exporter-trace-otlp-grpc/package.json @@ -57,7 +57,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-trace-otlp-http/package.json b/experimental/packages/exporter-trace-otlp-http/package.json index 94f1ba2172..2f6470ea16 100644 --- a/experimental/packages/exporter-trace-otlp-http/package.json +++ b/experimental/packages/exporter-trace-otlp-http/package.json @@ -80,7 +80,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-trace-otlp-proto/package.json b/experimental/packages/exporter-trace-otlp-proto/package.json index 9d7ddcd95a..9934282fbc 100644 --- a/experimental/packages/exporter-trace-otlp-proto/package.json +++ b/experimental/packages/exporter-trace-otlp-proto/package.json @@ -70,7 +70,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-browser-detector/package.json b/experimental/packages/opentelemetry-browser-detector/package.json index 80eccd5ebe..4754938569 100644 --- a/experimental/packages/opentelemetry-browser-detector/package.json +++ b/experimental/packages/opentelemetry-browser-detector/package.json @@ -60,7 +60,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index f5597ea8ab..e0289cda7d 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -56,7 +56,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index cf8265e2f2..27838945dc 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -80,7 +80,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index 715d8576d0..1e3be6aabd 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -55,7 +55,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-exporter-prometheus/package.json b/experimental/packages/opentelemetry-exporter-prometheus/package.json index c7c7b4e976..b1c1f53207 100644 --- a/experimental/packages/opentelemetry-exporter-prometheus/package.json +++ b/experimental/packages/opentelemetry-exporter-prometheus/package.json @@ -50,7 +50,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index 56f01a2f0b..d4f7d576ee 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -73,7 +73,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/package.json b/experimental/packages/opentelemetry-instrumentation-grpc/package.json index 00bb975161..2e8efd422a 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/package.json +++ b/experimental/packages/opentelemetry-instrumentation-grpc/package.json @@ -58,7 +58,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "node-pre-gyp": "0.17.0", "nyc": "15.1.0", diff --git a/experimental/packages/opentelemetry-instrumentation-http/package.json b/experimental/packages/opentelemetry-instrumentation-http/package.json index 894400a26f..189902c595 100644 --- a/experimental/packages/opentelemetry-instrumentation-http/package.json +++ b/experimental/packages/opentelemetry-instrumentation-http/package.json @@ -59,7 +59,7 @@ "axios": "1.4.0", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json index 677f0b7af4..31022d95ad 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json @@ -73,7 +73,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index 17af8f71a0..2bfd6c87bd 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -100,7 +100,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json index 26880e8289..f58ad1f429 100644 --- a/experimental/packages/opentelemetry-sdk-node/package.json +++ b/experimental/packages/opentelemetry-sdk-node/package.json @@ -70,7 +70,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "semver": "7.5.1", diff --git a/experimental/packages/otlp-exporter-base/package.json b/experimental/packages/otlp-exporter-base/package.json index b42eff0084..5a7026bbb5 100644 --- a/experimental/packages/otlp-exporter-base/package.json +++ b/experimental/packages/otlp-exporter-base/package.json @@ -71,7 +71,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/experimental/packages/otlp-grpc-exporter-base/package.json b/experimental/packages/otlp-grpc-exporter-base/package.json index 277ba2d883..8502876aa1 100644 --- a/experimental/packages/otlp-grpc-exporter-base/package.json +++ b/experimental/packages/otlp-grpc-exporter-base/package.json @@ -59,7 +59,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "protobufjs-cli": "1.1.1", diff --git a/experimental/packages/otlp-proto-exporter-base/package.json b/experimental/packages/otlp-proto-exporter-base/package.json index e324cc5bcd..9c99881442 100644 --- a/experimental/packages/otlp-proto-exporter-base/package.json +++ b/experimental/packages/otlp-proto-exporter-base/package.json @@ -66,7 +66,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "protobufjs-cli": "1.1.1", diff --git a/experimental/packages/otlp-transformer/package.json b/experimental/packages/otlp-transformer/package.json index 5a4943237d..b27be31811 100644 --- a/experimental/packages/otlp-transformer/package.json +++ b/experimental/packages/otlp-transformer/package.json @@ -71,7 +71,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/sdk-logs/package.json b/experimental/packages/sdk-logs/package.json index b1812c8a67..35536fafd0 100644 --- a/experimental/packages/sdk-logs/package.json +++ b/experimental/packages/sdk-logs/package.json @@ -85,7 +85,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/shim-opencensus/package.json b/experimental/packages/shim-opencensus/package.json index dd38b1f1d1..893399131b 100644 --- a/experimental/packages/shim-opencensus/package.json +++ b/experimental/packages/shim-opencensus/package.json @@ -57,7 +57,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/package.json b/package.json index 4ffd239f21..eacb5cc205 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "eslint-plugin-node": "11.1.0", "eslint-plugin-prettier": "4.2.1", "gh-pages": "5.0.0", - "lerna": "6.0.3", + "lerna": "6.6.2", "linkinator": "5.0.1", "markdownlint-cli": "0.34.0", "prettier": "2.8.8", diff --git a/packages/opentelemetry-context-async-hooks/package.json b/packages/opentelemetry-context-async-hooks/package.json index 5445e07861..6f4dc6833d 100644 --- a/packages/opentelemetry-context-async-hooks/package.json +++ b/packages/opentelemetry-context-async-hooks/package.json @@ -49,7 +49,7 @@ "@types/node": "18.6.5", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "ts-mocha": "10.0.0", diff --git a/packages/opentelemetry-context-zone-peer-dep/package.json b/packages/opentelemetry-context-zone-peer-dep/package.json index c24d7ca2b2..1e62d98b0c 100644 --- a/packages/opentelemetry-context-zone-peer-dep/package.json +++ b/packages/opentelemetry-context-zone-peer-dep/package.json @@ -70,7 +70,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-context-zone/package.json b/packages/opentelemetry-context-zone/package.json index b1091f959a..79b02e47fd 100644 --- a/packages/opentelemetry-context-zone/package.json +++ b/packages/opentelemetry-context-zone/package.json @@ -63,7 +63,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-core/package.json b/packages/opentelemetry-core/package.json index 2411e5d894..d9d8f0e6b7 100644 --- a/packages/opentelemetry-core/package.json +++ b/packages/opentelemetry-core/package.json @@ -78,7 +78,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-exporter-jaeger/package.json b/packages/opentelemetry-exporter-jaeger/package.json index 2b303ab20d..28a93cd632 100644 --- a/packages/opentelemetry-exporter-jaeger/package.json +++ b/packages/opentelemetry-exporter-jaeger/package.json @@ -51,7 +51,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index cc9bfec4ac..0d60085f6b 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -76,7 +76,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/packages/opentelemetry-propagator-b3/package.json b/packages/opentelemetry-propagator-b3/package.json index e5b61772c1..d49ad3d5d8 100644 --- a/packages/opentelemetry-propagator-b3/package.json +++ b/packages/opentelemetry-propagator-b3/package.json @@ -63,7 +63,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "ts-loader": "8.4.0", diff --git a/packages/opentelemetry-propagator-jaeger/package.json b/packages/opentelemetry-propagator-jaeger/package.json index 37f9786d3b..dc0f502c5a 100644 --- a/packages/opentelemetry-propagator-jaeger/package.json +++ b/packages/opentelemetry-propagator-jaeger/package.json @@ -68,7 +68,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-resources/package.json b/packages/opentelemetry-resources/package.json index c0d875a9a6..fce03769bc 100644 --- a/packages/opentelemetry-resources/package.json +++ b/packages/opentelemetry-resources/package.json @@ -76,7 +76,7 @@ "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/packages/opentelemetry-sdk-trace-base/package.json b/packages/opentelemetry-sdk-trace-base/package.json index f39c976cb8..5d1a556c11 100644 --- a/packages/opentelemetry-sdk-trace-base/package.json +++ b/packages/opentelemetry-sdk-trace-base/package.json @@ -80,7 +80,7 @@ "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-sdk-trace-node/package.json b/packages/opentelemetry-sdk-trace-node/package.json index 37d5178f7f..366817f63f 100644 --- a/packages/opentelemetry-sdk-trace-node/package.json +++ b/packages/opentelemetry-sdk-trace-node/package.json @@ -54,7 +54,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-sdk-trace-web/package.json b/packages/opentelemetry-sdk-trace-web/package.json index 29d6d1267b..bffbaa2f70 100644 --- a/packages/opentelemetry-sdk-trace-web/package.json +++ b/packages/opentelemetry-sdk-trace-web/package.json @@ -77,7 +77,7 @@ "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-semantic-conventions/package.json b/packages/opentelemetry-semantic-conventions/package.json index 57c244af85..edd54ccb24 100644 --- a/packages/opentelemetry-semantic-conventions/package.json +++ b/packages/opentelemetry-semantic-conventions/package.json @@ -54,7 +54,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/packages/opentelemetry-shim-opentracing/package.json b/packages/opentelemetry-shim-opentracing/package.json index d221b825fe..e2bfae06a7 100644 --- a/packages/opentelemetry-shim-opentracing/package.json +++ b/packages/opentelemetry-shim-opentracing/package.json @@ -50,7 +50,7 @@ "@types/node": "18.6.5", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "ts-mocha": "10.0.0", diff --git a/packages/sdk-metrics/package.json b/packages/sdk-metrics/package.json index 90ed681bc6..aca2f6457a 100644 --- a/packages/sdk-metrics/package.json +++ b/packages/sdk-metrics/package.json @@ -67,7 +67,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.0.3", + "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/template/package.json b/packages/template/package.json index c90e6b5b6d..0af80862c8 100644 --- a/packages/template/package.json +++ b/packages/template/package.json @@ -80,7 +80,7 @@ "devDependencies": { "@types/node": "18.6.5", "cross-var": "1.1.0", - "lerna": "6.0.3", + "lerna": "6.6.2", "typescript": "4.4.4" }, "Add these to devDependencies for testing": { From d76f34eef248bbbeec9a588df8e968bd6326ff87 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 19 Jun 2023 11:31:30 +0200 Subject: [PATCH 34/71] chore(deps): update dependency semver to v7.5.2 (#3919) --- .../packages/opentelemetry-instrumentation-grpc/package.json | 2 +- experimental/packages/opentelemetry-sdk-node/package.json | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/package.json b/experimental/packages/opentelemetry-instrumentation-grpc/package.json index 2e8efd422a..43d366ec89 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/package.json +++ b/experimental/packages/opentelemetry-instrumentation-grpc/package.json @@ -62,7 +62,7 @@ "mocha": "10.2.0", "node-pre-gyp": "0.17.0", "nyc": "15.1.0", - "semver": "7.5.1", + "semver": "7.5.2", "sinon": "15.1.2", "ts-mocha": "10.0.0", "typescript": "4.4.4" diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json index f58ad1f429..ec4e96ea6a 100644 --- a/experimental/packages/opentelemetry-sdk-node/package.json +++ b/experimental/packages/opentelemetry-sdk-node/package.json @@ -73,7 +73,7 @@ "lerna": "6.6.2", "mocha": "10.2.0", "nyc": "15.1.0", - "semver": "7.5.1", + "semver": "7.5.2", "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", diff --git a/package.json b/package.json index eacb5cc205..dca33d4c27 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ "linkinator": "5.0.1", "markdownlint-cli": "0.34.0", "prettier": "2.8.8", - "semver": "7.5.1", + "semver": "7.5.2", "typedoc": "0.22.18", "typedoc-plugin-missing-exports": "1.0.0", "typedoc-plugin-resolve-crossmodule-references": "0.2.2", From 5bee444ab6767d8c6e9d805cf6fa50dcd998f65c Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Tue, 20 Jun 2023 05:29:28 +0200 Subject: [PATCH 35/71] chore: fix misaligned dependency versions (#3924) * chore: fix misaligned dependency versions * chore(otlp-transformer): remove sdk-logs devDependency --- examples/esm-http-ts/package.json | 16 ++++++++-------- .../packages/otlp-transformer/package.json | 2 -- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/examples/esm-http-ts/package.json b/examples/esm-http-ts/package.json index 6cba2efe26..71977f73ff 100644 --- a/examples/esm-http-ts/package.json +++ b/examples/esm-http-ts/package.json @@ -30,13 +30,13 @@ }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/", "dependencies": { - "@opentelemetry/api": "1.4.0", - "@opentelemetry/exporter-trace-otlp-proto": "0.38.0", - "@opentelemetry/instrumentation": "0.38.0", - "@opentelemetry/instrumentation-http": "0.38.0", - "@opentelemetry/resources": "1.9.1", - "@opentelemetry/sdk-trace-base": "1.9.1", - "@opentelemetry/sdk-trace-node": "1.9.1", - "@opentelemetry/semantic-conventions": "1.9.1" + "@opentelemetry/api": "1.4.1", + "@opentelemetry/exporter-trace-otlp-proto": "0.40.0", + "@opentelemetry/instrumentation": "0.40.0", + "@opentelemetry/instrumentation-http": "0.40.0", + "@opentelemetry/resources": "1.14.0", + "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/sdk-trace-node": "1.14.0", + "@opentelemetry/semantic-conventions": "1.14.0" } } diff --git a/experimental/packages/otlp-transformer/package.json b/experimental/packages/otlp-transformer/package.json index b27be31811..d6146dcbb8 100644 --- a/experimental/packages/otlp-transformer/package.json +++ b/experimental/packages/otlp-transformer/package.json @@ -58,8 +58,6 @@ }, "devDependencies": { "@opentelemetry/api": "1.4.1", - "@opentelemetry/api-logs": "0.39.1", - "@opentelemetry/sdk-logs": "0.39.1", "@types/mocha": "10.0.1", "@types/webpack-env": "1.16.3", "codecov": "3.8.3", From 67d4b806653e31a4ad76c30dd728d9ba448caf43 Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Tue, 20 Jun 2023 11:57:51 +0200 Subject: [PATCH 36/71] chore: bump lerna to 7.0.2, add @lerna/legacy-package-management (#3926) --- api/package.json | 2 +- experimental/packages/api-events/package.json | 2 +- experimental/packages/api-logs/package.json | 2 +- experimental/packages/exporter-logs-otlp-grpc/package.json | 2 +- experimental/packages/exporter-logs-otlp-http/package.json | 2 +- experimental/packages/exporter-logs-otlp-proto/package.json | 2 +- experimental/packages/exporter-trace-otlp-grpc/package.json | 2 +- experimental/packages/exporter-trace-otlp-http/package.json | 2 +- experimental/packages/exporter-trace-otlp-proto/package.json | 2 +- .../packages/opentelemetry-browser-detector/package.json | 2 +- .../opentelemetry-exporter-metrics-otlp-grpc/package.json | 2 +- .../opentelemetry-exporter-metrics-otlp-http/package.json | 2 +- .../opentelemetry-exporter-metrics-otlp-proto/package.json | 2 +- .../packages/opentelemetry-exporter-prometheus/package.json | 2 +- .../packages/opentelemetry-instrumentation-fetch/package.json | 2 +- .../packages/opentelemetry-instrumentation-grpc/package.json | 2 +- .../packages/opentelemetry-instrumentation-http/package.json | 2 +- .../package.json | 2 +- .../packages/opentelemetry-instrumentation/package.json | 2 +- experimental/packages/opentelemetry-sdk-node/package.json | 2 +- experimental/packages/otlp-exporter-base/package.json | 2 +- experimental/packages/otlp-grpc-exporter-base/package.json | 2 +- experimental/packages/otlp-proto-exporter-base/package.json | 2 +- experimental/packages/otlp-transformer/package.json | 2 +- experimental/packages/sdk-logs/package.json | 2 +- experimental/packages/shim-opencensus/package.json | 2 +- package.json | 3 ++- packages/opentelemetry-context-async-hooks/package.json | 2 +- packages/opentelemetry-context-zone-peer-dep/package.json | 2 +- packages/opentelemetry-context-zone/package.json | 2 +- packages/opentelemetry-core/package.json | 2 +- packages/opentelemetry-exporter-jaeger/package.json | 2 +- packages/opentelemetry-exporter-zipkin/package.json | 2 +- packages/opentelemetry-propagator-b3/package.json | 2 +- packages/opentelemetry-propagator-jaeger/package.json | 2 +- packages/opentelemetry-resources/package.json | 2 +- packages/opentelemetry-sdk-trace-base/package.json | 2 +- packages/opentelemetry-sdk-trace-node/package.json | 2 +- packages/opentelemetry-sdk-trace-web/package.json | 2 +- packages/opentelemetry-semantic-conventions/package.json | 2 +- packages/opentelemetry-shim-opentracing/package.json | 2 +- packages/sdk-metrics/package.json | 2 +- packages/template/package.json | 2 +- 43 files changed, 44 insertions(+), 43 deletions(-) diff --git a/api/package.json b/api/package.json index f938ff131b..0195f70550 100644 --- a/api/package.json +++ b/api/package.json @@ -76,7 +76,7 @@ "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.6.2", + "lerna": "7.0.2", "memfs": "3.5.3", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/experimental/packages/api-events/package.json b/experimental/packages/api-events/package.json index ae67318f24..d1a1072aa3 100644 --- a/experimental/packages/api-events/package.json +++ b/experimental/packages/api-events/package.json @@ -76,7 +76,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/api-logs/package.json b/experimental/packages/api-logs/package.json index 7c81c223fc..10cf74653d 100644 --- a/experimental/packages/api-logs/package.json +++ b/experimental/packages/api-logs/package.json @@ -76,7 +76,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/exporter-logs-otlp-grpc/package.json b/experimental/packages/exporter-logs-otlp-grpc/package.json index 5f23cf62ec..96125109e7 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/package.json +++ b/experimental/packages/exporter-logs-otlp-grpc/package.json @@ -60,7 +60,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index 8ce3c71865..0f777e5bec 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -88,7 +88,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-logs-otlp-proto/package.json b/experimental/packages/exporter-logs-otlp-proto/package.json index d4b7b7e9c7..c665ae50de 100644 --- a/experimental/packages/exporter-logs-otlp-proto/package.json +++ b/experimental/packages/exporter-logs-otlp-proto/package.json @@ -71,7 +71,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-trace-otlp-grpc/package.json b/experimental/packages/exporter-trace-otlp-grpc/package.json index 83982a9ee8..61ad5e4861 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/package.json +++ b/experimental/packages/exporter-trace-otlp-grpc/package.json @@ -57,7 +57,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-trace-otlp-http/package.json b/experimental/packages/exporter-trace-otlp-http/package.json index 2f6470ea16..fe5222fd9c 100644 --- a/experimental/packages/exporter-trace-otlp-http/package.json +++ b/experimental/packages/exporter-trace-otlp-http/package.json @@ -80,7 +80,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-trace-otlp-proto/package.json b/experimental/packages/exporter-trace-otlp-proto/package.json index 9934282fbc..90720984d9 100644 --- a/experimental/packages/exporter-trace-otlp-proto/package.json +++ b/experimental/packages/exporter-trace-otlp-proto/package.json @@ -70,7 +70,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-browser-detector/package.json b/experimental/packages/opentelemetry-browser-detector/package.json index 4754938569..9cf3f179dd 100644 --- a/experimental/packages/opentelemetry-browser-detector/package.json +++ b/experimental/packages/opentelemetry-browser-detector/package.json @@ -60,7 +60,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index e0289cda7d..7fb9d1dba7 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -56,7 +56,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index 27838945dc..f2f5e1d5ed 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -80,7 +80,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index 1e3be6aabd..293109c727 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -55,7 +55,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-exporter-prometheus/package.json b/experimental/packages/opentelemetry-exporter-prometheus/package.json index b1c1f53207..8a40e2a893 100644 --- a/experimental/packages/opentelemetry-exporter-prometheus/package.json +++ b/experimental/packages/opentelemetry-exporter-prometheus/package.json @@ -50,7 +50,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index d4f7d576ee..407c77006f 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -73,7 +73,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/package.json b/experimental/packages/opentelemetry-instrumentation-grpc/package.json index 43d366ec89..c224158e8e 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/package.json +++ b/experimental/packages/opentelemetry-instrumentation-grpc/package.json @@ -58,7 +58,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "node-pre-gyp": "0.17.0", "nyc": "15.1.0", diff --git a/experimental/packages/opentelemetry-instrumentation-http/package.json b/experimental/packages/opentelemetry-instrumentation-http/package.json index 189902c595..9d4b657a84 100644 --- a/experimental/packages/opentelemetry-instrumentation-http/package.json +++ b/experimental/packages/opentelemetry-instrumentation-http/package.json @@ -59,7 +59,7 @@ "axios": "1.4.0", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json index 31022d95ad..f8e5325545 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json @@ -73,7 +73,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index 2bfd6c87bd..32c7fb2c54 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -100,7 +100,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json index ec4e96ea6a..f8f6ab04d4 100644 --- a/experimental/packages/opentelemetry-sdk-node/package.json +++ b/experimental/packages/opentelemetry-sdk-node/package.json @@ -70,7 +70,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "semver": "7.5.2", diff --git a/experimental/packages/otlp-exporter-base/package.json b/experimental/packages/otlp-exporter-base/package.json index 5a7026bbb5..3f10a7d7f5 100644 --- a/experimental/packages/otlp-exporter-base/package.json +++ b/experimental/packages/otlp-exporter-base/package.json @@ -71,7 +71,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/experimental/packages/otlp-grpc-exporter-base/package.json b/experimental/packages/otlp-grpc-exporter-base/package.json index 8502876aa1..0fd6150aa9 100644 --- a/experimental/packages/otlp-grpc-exporter-base/package.json +++ b/experimental/packages/otlp-grpc-exporter-base/package.json @@ -59,7 +59,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "protobufjs-cli": "1.1.1", diff --git a/experimental/packages/otlp-proto-exporter-base/package.json b/experimental/packages/otlp-proto-exporter-base/package.json index 9c99881442..8d16f23995 100644 --- a/experimental/packages/otlp-proto-exporter-base/package.json +++ b/experimental/packages/otlp-proto-exporter-base/package.json @@ -66,7 +66,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "protobufjs-cli": "1.1.1", diff --git a/experimental/packages/otlp-transformer/package.json b/experimental/packages/otlp-transformer/package.json index d6146dcbb8..3af3c81a4a 100644 --- a/experimental/packages/otlp-transformer/package.json +++ b/experimental/packages/otlp-transformer/package.json @@ -69,7 +69,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/sdk-logs/package.json b/experimental/packages/sdk-logs/package.json index 35536fafd0..48b0bd249e 100644 --- a/experimental/packages/sdk-logs/package.json +++ b/experimental/packages/sdk-logs/package.json @@ -85,7 +85,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/shim-opencensus/package.json b/experimental/packages/shim-opencensus/package.json index 893399131b..9c0596f55e 100644 --- a/experimental/packages/shim-opencensus/package.json +++ b/experimental/packages/shim-opencensus/package.json @@ -57,7 +57,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/package.json b/package.json index dca33d4c27..c315860f32 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,8 @@ "eslint-plugin-node": "11.1.0", "eslint-plugin-prettier": "4.2.1", "gh-pages": "5.0.0", - "lerna": "6.6.2", + "lerna": "7.0.2", + "@lerna/legacy-package-management": "7.0.2", "linkinator": "5.0.1", "markdownlint-cli": "0.34.0", "prettier": "2.8.8", diff --git a/packages/opentelemetry-context-async-hooks/package.json b/packages/opentelemetry-context-async-hooks/package.json index 6f4dc6833d..15afdd385d 100644 --- a/packages/opentelemetry-context-async-hooks/package.json +++ b/packages/opentelemetry-context-async-hooks/package.json @@ -49,7 +49,7 @@ "@types/node": "18.6.5", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "ts-mocha": "10.0.0", diff --git a/packages/opentelemetry-context-zone-peer-dep/package.json b/packages/opentelemetry-context-zone-peer-dep/package.json index 1e62d98b0c..1953baa5ab 100644 --- a/packages/opentelemetry-context-zone-peer-dep/package.json +++ b/packages/opentelemetry-context-zone-peer-dep/package.json @@ -70,7 +70,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-context-zone/package.json b/packages/opentelemetry-context-zone/package.json index 79b02e47fd..014010ff51 100644 --- a/packages/opentelemetry-context-zone/package.json +++ b/packages/opentelemetry-context-zone/package.json @@ -63,7 +63,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-core/package.json b/packages/opentelemetry-core/package.json index d9d8f0e6b7..e31b72adb6 100644 --- a/packages/opentelemetry-core/package.json +++ b/packages/opentelemetry-core/package.json @@ -78,7 +78,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-exporter-jaeger/package.json b/packages/opentelemetry-exporter-jaeger/package.json index 28a93cd632..bb1b0f0ce5 100644 --- a/packages/opentelemetry-exporter-jaeger/package.json +++ b/packages/opentelemetry-exporter-jaeger/package.json @@ -51,7 +51,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index 0d60085f6b..1a45055f4a 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -76,7 +76,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/packages/opentelemetry-propagator-b3/package.json b/packages/opentelemetry-propagator-b3/package.json index d49ad3d5d8..96dfb8ae47 100644 --- a/packages/opentelemetry-propagator-b3/package.json +++ b/packages/opentelemetry-propagator-b3/package.json @@ -63,7 +63,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "ts-loader": "8.4.0", diff --git a/packages/opentelemetry-propagator-jaeger/package.json b/packages/opentelemetry-propagator-jaeger/package.json index dc0f502c5a..4fe14702b6 100644 --- a/packages/opentelemetry-propagator-jaeger/package.json +++ b/packages/opentelemetry-propagator-jaeger/package.json @@ -68,7 +68,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-resources/package.json b/packages/opentelemetry-resources/package.json index fce03769bc..1315523a5a 100644 --- a/packages/opentelemetry-resources/package.json +++ b/packages/opentelemetry-resources/package.json @@ -76,7 +76,7 @@ "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/packages/opentelemetry-sdk-trace-base/package.json b/packages/opentelemetry-sdk-trace-base/package.json index 5d1a556c11..8343363431 100644 --- a/packages/opentelemetry-sdk-trace-base/package.json +++ b/packages/opentelemetry-sdk-trace-base/package.json @@ -80,7 +80,7 @@ "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-sdk-trace-node/package.json b/packages/opentelemetry-sdk-trace-node/package.json index 366817f63f..1d349de0b1 100644 --- a/packages/opentelemetry-sdk-trace-node/package.json +++ b/packages/opentelemetry-sdk-trace-node/package.json @@ -54,7 +54,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-sdk-trace-web/package.json b/packages/opentelemetry-sdk-trace-web/package.json index bffbaa2f70..697ea92a97 100644 --- a/packages/opentelemetry-sdk-trace-web/package.json +++ b/packages/opentelemetry-sdk-trace-web/package.json @@ -77,7 +77,7 @@ "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-semantic-conventions/package.json b/packages/opentelemetry-semantic-conventions/package.json index edd54ccb24..e95dcf1616 100644 --- a/packages/opentelemetry-semantic-conventions/package.json +++ b/packages/opentelemetry-semantic-conventions/package.json @@ -54,7 +54,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/packages/opentelemetry-shim-opentracing/package.json b/packages/opentelemetry-shim-opentracing/package.json index e2bfae06a7..1c477967f3 100644 --- a/packages/opentelemetry-shim-opentracing/package.json +++ b/packages/opentelemetry-shim-opentracing/package.json @@ -50,7 +50,7 @@ "@types/node": "18.6.5", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "ts-mocha": "10.0.0", diff --git a/packages/sdk-metrics/package.json b/packages/sdk-metrics/package.json index aca2f6457a..6fcb0e4ef4 100644 --- a/packages/sdk-metrics/package.json +++ b/packages/sdk-metrics/package.json @@ -67,7 +67,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "6.6.2", + "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/template/package.json b/packages/template/package.json index 0af80862c8..233c29e79c 100644 --- a/packages/template/package.json +++ b/packages/template/package.json @@ -80,7 +80,7 @@ "devDependencies": { "@types/node": "18.6.5", "cross-var": "1.1.0", - "lerna": "6.6.2", + "lerna": "7.0.2", "typescript": "4.4.4" }, "Add these to devDependencies for testing": { From f40e3de178af02766e0c1e146216b19a9c6a5d31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=B2=92=E7=B2=92=E6=A9=99?= Date: Tue, 20 Jun 2023 18:32:33 +0800 Subject: [PATCH 37/71] feat(otlp-grpc-exporters): Add support for Unix domain socket endpoints. (#3853) * feat(otlp-grpc-exporter-base): add support for unix domain socket * test(otlp-grpc-exporter): add tests * chore(docs): update docs and changelog * fix: skip UDS tests on windows * Update CHANGELOG.md * fix: add protocol to http test urls * fix: update tests --------- Co-authored-by: Marc Pichler Co-authored-by: Chengzhong Wu --- experimental/CHANGELOG.md | 2 + .../exporter-logs-otlp-grpc/README.md | 1 + .../test/OTLPLogExporter.test.ts | 69 +++++++++++-------- .../exporter-trace-otlp-grpc/README.md | 5 ++ .../test/OTLPTraceExporter.test.ts | 65 ++++++++++------- .../README.md | 1 + .../test/OTLPMetricExporter.test.ts | 47 ++++++++----- .../otlp-grpc-exporter-base/src/util.ts | 3 + .../otlp-grpc-exporter-base/test/util.test.ts | 5 ++ 9 files changed, 130 insertions(+), 68 deletions(-) diff --git a/experimental/CHANGELOG.md b/experimental/CHANGELOG.md index 4d7da0576e..1ac87111b5 100644 --- a/experimental/CHANGELOG.md +++ b/experimental/CHANGELOG.md @@ -10,6 +10,8 @@ All notable changes to experimental packages in this project will be documented ### :rocket: (Enhancement) +* feat(otlp-grpc-exporters): add support for UDS endpoints. [#3853](https://github.com/open-telemetry/opentelemetry-js/pull/3853) @llc1123 + ### :bug: (Bug Fix) ### :books: (Refine Doc) diff --git a/experimental/packages/exporter-logs-otlp-grpc/README.md b/experimental/packages/exporter-logs-otlp-grpc/README.md index 17c9573398..d683d0bebe 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/README.md +++ b/experimental/packages/exporter-logs-otlp-grpc/README.md @@ -34,6 +34,7 @@ import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-grpc'; const collectorOptions = { // url is optional and can be omitted - default is http://localhost:4317 + // Unix domain sockets are also supported: 'unix:///path/to/socket.sock' url: 'http://:', }; diff --git a/experimental/packages/exporter-logs-otlp-grpc/test/OTLPLogExporter.test.ts b/experimental/packages/exporter-logs-otlp-grpc/test/OTLPLogExporter.test.ts index 48f1fa865e..9bda910924 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/test/OTLPLogExporter.test.ts +++ b/experimental/packages/exporter-logs-otlp-grpc/test/OTLPLogExporter.test.ts @@ -44,9 +44,11 @@ const includeDirs = [ path.resolve(__dirname, '../../otlp-grpc-exporter-base/protos'), ]; -const address = 'localhost:1503'; +const httpAddr = 'https://localhost:1503'; +const udsAddr = 'unix:///tmp/otlp-logs.sock'; type TestParams = { + address?: string; useTLS?: boolean; metadata?: grpc.Metadata; }; @@ -54,10 +56,11 @@ type TestParams = { const metadata = new grpc.Metadata(); metadata.set('k', 'v'); -const testCollectorExporter = (params: TestParams) => - describe(`OTLPLogExporter - node ${params.useTLS ? 'with' : 'without'} TLS, ${ - params.metadata ? 'with' : 'without' - } metadata`, () => { +const testCollectorExporter = (params: TestParams) => { + const { address = httpAddr, useTLS, metadata } = params; + return describe(`OTLPLogExporter - node ${useTLS ? 'with' : 'without'} TLS, ${ + metadata ? 'with' : 'without' + } metadata, target ${address}`, () => { let collectorExporter: OTLPLogExporter; let server: grpc.Server; let exportedData: IResourceLogs | undefined; @@ -92,7 +95,7 @@ const testCollectorExporter = (params: TestParams) => }, } ); - const credentials = params.useTLS + const credentials = useTLS ? grpc.ServerCredentials.createSsl( fs.readFileSync('./test/certs/ca.crt'), [ @@ -103,10 +106,15 @@ const testCollectorExporter = (params: TestParams) => ] ) : grpc.ServerCredentials.createInsecure(); - server.bindAsync(address, credentials, () => { - server.start(); - done(); - }); + const serverAddr = new URL(address); + server.bindAsync( + serverAddr.protocol === 'https:' ? serverAddr.host : address, + credentials, + () => { + server.start(); + done(); + } + ); }); }); @@ -115,7 +123,7 @@ const testCollectorExporter = (params: TestParams) => }); beforeEach(done => { - const credentials = params.useTLS + const credentials = useTLS ? grpc.credentials.createSsl( fs.readFileSync('./test/certs/ca.crt'), fs.readFileSync('./test/certs/client.key'), @@ -123,9 +131,9 @@ const testCollectorExporter = (params: TestParams) => ) : grpc.credentials.createInsecure(); collectorExporter = new OTLPLogExporter({ - url: 'https://' + address, + url: address, credentials, - metadata: params.metadata, + metadata: metadata, }); done(); }); @@ -141,7 +149,7 @@ const testCollectorExporter = (params: TestParams) => // Need to stub/spy on the underlying logger as the 'diag' instance is global const spyLoggerWarn = sinon.stub(diag, 'warn'); collectorExporter = new OTLPLogExporter({ - url: `http://${address}`, + url: address, headers: { foo: 'bar', }, @@ -150,9 +158,13 @@ const testCollectorExporter = (params: TestParams) => assert.strictEqual(args[0], 'Headers cannot be set when using grpc'); }); it('should warn about path in url', () => { + if (new URL(address).protocol === 'unix:') { + // Skip this test for UDS + return; + } const spyLoggerWarn = sinon.stub(diag, 'warn'); collectorExporter = new OTLPLogExporter({ - url: `http://${address}/v1/logs`, + url: `${address}/v1/logs`, }); const args = spyLoggerWarn.args[0]; assert.strictEqual( @@ -190,7 +202,7 @@ const testCollectorExporter = (params: TestParams) => }, 500); }); it('should log deadline exceeded error', done => { - const credentials = params.useTLS + const credentials = useTLS ? grpc.credentials.createSsl( fs.readFileSync('./test/certs/ca.crt'), fs.readFileSync('./test/certs/client.key'), @@ -199,9 +211,9 @@ const testCollectorExporter = (params: TestParams) => : grpc.credentials.createInsecure(); const collectorExporterWithTimeout = new OTLPLogExporter({ - url: 'grpcs://' + address, + url: address, credentials, - metadata: params.metadata, + metadata: metadata, timeoutMillis: 100, }); @@ -222,7 +234,7 @@ const testCollectorExporter = (params: TestParams) => }); describe('export - with gzip compression', () => { beforeEach(() => { - const credentials = params.useTLS + const credentials = useTLS ? grpc.credentials.createSsl( fs.readFileSync('./test/certs/ca.crt'), fs.readFileSync('./test/certs/client.key'), @@ -230,13 +242,13 @@ const testCollectorExporter = (params: TestParams) => ) : grpc.credentials.createInsecure(); collectorExporter = new OTLPLogExporter({ - url: 'https://' + address, + url: address, credentials, - metadata: params.metadata, + metadata: metadata, compression: CompressionAlgorithm.GZIP, }); }); - it('should successfully send the spans', done => { + it('should successfully send the log records', done => { const responseSpy = sinon.spy(); const logRecords = [Object.assign({}, mockedReadableLogRecord)]; collectorExporter.export(logRecords, responseSpy); @@ -248,13 +260,13 @@ const testCollectorExporter = (params: TestParams) => const logs = exportedData.scopeLogs[0].logRecords; const resource = exportedData.resource; - assert.ok(typeof logs !== 'undefined', 'spans do not exist'); + assert.ok(typeof logs !== 'undefined', 'log records do not exist'); ensureExportedLogRecordIsCorrect(logs[0]); assert.ok(typeof resource !== 'undefined', "resource doesn't exist"); ensureResourceIsCorrect(resource); - ensureMetadataIsCorrect(reqMetadata, params.metadata); + ensureMetadataIsCorrect(reqMetadata, metadata); done(); }, 500); @@ -263,7 +275,7 @@ const testCollectorExporter = (params: TestParams) => describe('Logs Exporter with compression', () => { const envSource = process.env; it('should return gzip compression algorithm on exporter', () => { - const credentials = params.useTLS + const credentials = useTLS ? grpc.credentials.createSsl( fs.readFileSync('./test/certs/ca.crt'), fs.readFileSync('./test/certs/client.key'), @@ -273,9 +285,9 @@ const testCollectorExporter = (params: TestParams) => envSource.OTEL_EXPORTER_OTLP_COMPRESSION = 'gzip'; collectorExporter = new OTLPLogExporter({ - url: 'https://' + address, + url: address, credentials, - metadata: params.metadata, + metadata: metadata, }); assert.strictEqual( collectorExporter.compression, @@ -285,6 +297,7 @@ const testCollectorExporter = (params: TestParams) => }); }); }); +}; describe('OTLPLogExporter - node (getDefaultUrl)', () => { it('should default to localhost', done => { @@ -344,3 +357,5 @@ describe('when configuring via environment', () => { testCollectorExporter({ useTLS: true }); testCollectorExporter({ useTLS: false }); testCollectorExporter({ metadata }); +// skip UDS tests on windows +process.platform !== 'win32' && testCollectorExporter({ address: udsAddr }); diff --git a/experimental/packages/exporter-trace-otlp-grpc/README.md b/experimental/packages/exporter-trace-otlp-grpc/README.md index b03274b320..933e120775 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/README.md +++ b/experimental/packages/exporter-trace-otlp-grpc/README.md @@ -30,6 +30,7 @@ const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-grpc' const collectorOptions = { // url is optional and can be omitted - default is http://localhost:4317 + // Unix domain sockets are also supported: 'unix:///path/to/socket.sock' url: 'http://:', }; @@ -54,6 +55,7 @@ const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-grpc' const collectorOptions = { // url is optional and can be omitted - default is http://localhost:4317 + // Unix domain sockets are also supported: 'unix:///path/to/socket.sock' url: 'http://:', credentials: grpc.credentials.createSsl(), }; @@ -94,6 +96,7 @@ metadata.set('k', 'v'); const collectorOptions = { // url is optional and can be omitted - default is http://localhost:4317 + // Unix domain sockets are also supported: 'unix:///path/to/socket.sock' url: 'http://:', metadata, // // an optional grpc.Metadata object to be sent with each request }; @@ -120,6 +123,7 @@ The OTLPTraceExporter has a timeout configuration option which is the maximum ti const collectorOptions = { timeoutMillis: 15000, // url is optional and can be omitted - default is localhost:4317 + // Unix domain sockets are also supported: 'unix:///path/to/socket.sock' url: ':', metadata, // // an optional grpc.Metadata object to be sent with each request }; @@ -138,6 +142,7 @@ const { CompressionAlgorithm } = require('@opentelemetry/exporter-trace-otlp-grp const collectorOptions = { // url is optional and can be omitted - default is http://localhost:4317 + // Unix domain sockets are also supported: 'unix:///path/to/socket.sock' url: 'http://:', metadata, // // an optional grpc.Metadata object to be sent with each request compression: CompressionAlgorithm.GZIP, diff --git a/experimental/packages/exporter-trace-otlp-grpc/test/OTLPTraceExporter.test.ts b/experimental/packages/exporter-trace-otlp-grpc/test/OTLPTraceExporter.test.ts index 17e5511010..f22fc95d2a 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/test/OTLPTraceExporter.test.ts +++ b/experimental/packages/exporter-trace-otlp-grpc/test/OTLPTraceExporter.test.ts @@ -49,9 +49,11 @@ const includeDirs = [ path.resolve(__dirname, '../../otlp-grpc-exporter-base/protos'), ]; -const address = 'localhost:1501'; +const httpAddr = 'https://localhost:1501'; +const udsAddr = 'unix:///tmp/otlp-traces.sock'; type TestParams = { + address?: string; useTLS?: boolean; metadata?: grpc.Metadata; }; @@ -59,10 +61,11 @@ type TestParams = { const metadata = new grpc.Metadata(); metadata.set('k', 'v'); -const testCollectorExporter = (params: TestParams) => - describe(`OTLPTraceExporter - node ${ - params.useTLS ? 'with' : 'without' - } TLS, ${params.metadata ? 'with' : 'without'} metadata`, () => { +const testCollectorExporter = (params: TestParams) => { + const { address = httpAddr, useTLS, metadata } = params; + return describe(`OTLPTraceExporter - node ${ + useTLS ? 'with' : 'without' + } TLS, ${metadata ? 'with' : 'without'} metadata, target ${address}`, () => { let collectorExporter: OTLPTraceExporter; let server: grpc.Server; let exportedData: IResourceSpans | undefined; @@ -97,7 +100,7 @@ const testCollectorExporter = (params: TestParams) => }, } ); - const credentials = params.useTLS + const credentials = useTLS ? grpc.ServerCredentials.createSsl( fs.readFileSync('./test/certs/ca.crt'), [ @@ -108,10 +111,15 @@ const testCollectorExporter = (params: TestParams) => ] ) : grpc.ServerCredentials.createInsecure(); - server.bindAsync(address, credentials, () => { - server.start(); - done(); - }); + const serverAddr = new URL(address); + server.bindAsync( + serverAddr.protocol === 'https:' ? serverAddr.host : address, + credentials, + () => { + server.start(); + done(); + } + ); }); }); @@ -120,7 +128,7 @@ const testCollectorExporter = (params: TestParams) => }); beforeEach(done => { - const credentials = params.useTLS + const credentials = useTLS ? grpc.credentials.createSsl( fs.readFileSync('./test/certs/ca.crt'), fs.readFileSync('./test/certs/client.key'), @@ -128,9 +136,9 @@ const testCollectorExporter = (params: TestParams) => ) : grpc.credentials.createInsecure(); collectorExporter = new OTLPTraceExporter({ - url: 'https://' + address, + url: address, credentials, - metadata: params.metadata, + metadata: metadata, }); const provider = new BasicTracerProvider(); @@ -149,7 +157,7 @@ const testCollectorExporter = (params: TestParams) => // Need to stub/spy on the underlying logger as the 'diag' instance is global const spyLoggerWarn = sinon.stub(diag, 'warn'); collectorExporter = new OTLPTraceExporter({ - url: `http://${address}`, + url: address, headers: { foo: 'bar', }, @@ -158,9 +166,13 @@ const testCollectorExporter = (params: TestParams) => assert.strictEqual(args[0], 'Headers cannot be set when using grpc'); }); it('should warn about path in url', () => { + if (new URL(address).protocol === 'unix:') { + // Skip this test for UDS + return; + } const spyLoggerWarn = sinon.stub(diag, 'warn'); collectorExporter = new OTLPTraceExporter({ - url: `http://${address}/v1/trace`, + url: `${address}/v1/trace`, }); const args = spyLoggerWarn.args[0]; assert.strictEqual( @@ -198,7 +210,7 @@ const testCollectorExporter = (params: TestParams) => }, 500); }); it('should log deadline exceeded error', done => { - const credentials = params.useTLS + const credentials = useTLS ? grpc.credentials.createSsl( fs.readFileSync('./test/certs/ca.crt'), fs.readFileSync('./test/certs/client.key'), @@ -207,9 +219,9 @@ const testCollectorExporter = (params: TestParams) => : grpc.credentials.createInsecure(); const collectorExporterWithTimeout = new OTLPTraceExporter({ - url: 'grpcs://' + address, + url: address, credentials, - metadata: params.metadata, + metadata: metadata, timeoutMillis: 100, }); @@ -230,7 +242,7 @@ const testCollectorExporter = (params: TestParams) => }); describe('export - with gzip compression', () => { beforeEach(() => { - const credentials = params.useTLS + const credentials = useTLS ? grpc.credentials.createSsl( fs.readFileSync('./test/certs/ca.crt'), fs.readFileSync('./test/certs/client.key'), @@ -238,9 +250,9 @@ const testCollectorExporter = (params: TestParams) => ) : grpc.credentials.createInsecure(); collectorExporter = new OTLPTraceExporter({ - url: 'https://' + address, + url: address, credentials, - metadata: params.metadata, + metadata: metadata, compression: CompressionAlgorithm.GZIP, }); @@ -265,7 +277,7 @@ const testCollectorExporter = (params: TestParams) => assert.ok(typeof resource !== 'undefined', "resource doesn't exist"); ensureResourceIsCorrect(resource); - ensureMetadataIsCorrect(reqMetadata, params.metadata); + ensureMetadataIsCorrect(reqMetadata, metadata); done(); }, 500); @@ -274,7 +286,7 @@ const testCollectorExporter = (params: TestParams) => describe('Trace Exporter with compression', () => { const envSource = process.env; it('should return gzip compression algorithm on exporter', () => { - const credentials = params.useTLS + const credentials = useTLS ? grpc.credentials.createSsl( fs.readFileSync('./test/certs/ca.crt'), fs.readFileSync('./test/certs/client.key'), @@ -284,9 +296,9 @@ const testCollectorExporter = (params: TestParams) => envSource.OTEL_EXPORTER_OTLP_COMPRESSION = 'gzip'; collectorExporter = new OTLPTraceExporter({ - url: 'https://' + address, + url: address, credentials, - metadata: params.metadata, + metadata: metadata, }); assert.strictEqual( collectorExporter.compression, @@ -296,6 +308,7 @@ const testCollectorExporter = (params: TestParams) => }); }); }); +}; describe('OTLPTraceExporter - node (getDefaultUrl)', () => { it('should default to localhost', done => { @@ -361,3 +374,5 @@ describe('when configuring via environment', () => { testCollectorExporter({ useTLS: true }); testCollectorExporter({ useTLS: false }); testCollectorExporter({ metadata }); +// skip UDS tests on windows +process.platform !== 'win32' && testCollectorExporter({ address: udsAddr }); diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/README.md b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/README.md index 3aee8d08a4..5445862afc 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/README.md +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/README.md @@ -32,6 +32,7 @@ const { MeterProvider, PeriodicExportingMetricReader } = require('@opentelemetry const { OTLPMetricExporter } = require('@opentelemetry/exporter-metrics-otlp-grpc'); const collectorOptions = { // url is optional and can be omitted - default is http://localhost:4317 + // Unix domain sockets are also supported: 'unix:///path/to/socket.sock' url: 'http://:', }; diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts index 9e4e27ecb0..6749c60106 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts @@ -51,9 +51,11 @@ const includeDirs = [ path.resolve(__dirname, '../../otlp-grpc-exporter-base/protos'), ]; -const address = 'localhost:1502'; +const httpAddr = 'https://localhost:1502'; +const udsAddr = 'unix:///tmp/otlp-metrics.sock'; type TestParams = { + address?: string; useTLS?: boolean; metadata?: grpc.Metadata; }; @@ -61,10 +63,11 @@ type TestParams = { const metadata = new grpc.Metadata(); metadata.set('k', 'v'); -const testOTLPMetricExporter = (params: TestParams) => - describe(`OTLPMetricExporter - node ${ - params.useTLS ? 'with' : 'without' - } TLS, ${params.metadata ? 'with' : 'without'} metadata`, () => { +const testOTLPMetricExporter = (params: TestParams) => { + const { address = httpAddr, useTLS, metadata } = params; + return describe(`OTLPMetricExporter - node ${ + useTLS ? 'with' : 'without' + } TLS, ${metadata ? 'with' : 'without'} metadata, target ${address}`, () => { let collectorExporter: OTLPMetricExporter; let server: grpc.Server; let exportedData: IResourceMetrics[] | undefined; @@ -102,7 +105,7 @@ const testOTLPMetricExporter = (params: TestParams) => }, } ); - const credentials = params.useTLS + const credentials = useTLS ? grpc.ServerCredentials.createSsl( fs.readFileSync('./test/certs/ca.crt'), [ @@ -113,10 +116,15 @@ const testOTLPMetricExporter = (params: TestParams) => ] ) : grpc.ServerCredentials.createInsecure(); - server.bindAsync(address, credentials, () => { - server.start(); - done(); - }); + const serverAddr = new URL(address); + server.bindAsync( + serverAddr.protocol === 'https:' ? serverAddr.host : address, + credentials, + () => { + server.start(); + done(); + } + ); }); }); @@ -125,7 +133,7 @@ const testOTLPMetricExporter = (params: TestParams) => }); beforeEach(async () => { - const credentials = params.useTLS + const credentials = useTLS ? grpc.credentials.createSsl( fs.readFileSync('./test/certs/ca.crt'), fs.readFileSync('./test/certs/client.key'), @@ -133,9 +141,9 @@ const testOTLPMetricExporter = (params: TestParams) => ) : grpc.credentials.createInsecure(); collectorExporter = new OTLPMetricExporter({ - url: 'https://' + address, + url: address, credentials, - metadata: params.metadata, + metadata: metadata, temporalityPreference: AggregationTemporality.CUMULATIVE, }); @@ -187,7 +195,7 @@ const testOTLPMetricExporter = (params: TestParams) => it('should warn about headers', () => { collectorExporter = new OTLPMetricExporter({ - url: `http://${address}`, + url: address, headers: { foo: 'bar', }, @@ -197,8 +205,12 @@ const testOTLPMetricExporter = (params: TestParams) => assert.strictEqual(args[0], 'Headers cannot be set when using grpc'); }); it('should warn about path in url', () => { + if (new URL(address).protocol === 'unix:') { + // Skip this test for UDS + return; + } collectorExporter = new OTLPMetricExporter({ - url: `http://${address}/v1/metrics`, + url: `${address}/v1/metrics`, temporalityPreference: AggregationTemporality.CUMULATIVE, }); const args = warnStub.args[0]; @@ -261,13 +273,14 @@ const testOTLPMetricExporter = (params: TestParams) => assert.ok(typeof resource !== 'undefined', "resource doesn't exist"); ensureResourceIsCorrect(resource); - ensureMetadataIsCorrect(reqMetadata, params.metadata); + ensureMetadataIsCorrect(reqMetadata, metadata); done(); }, 500); }); }); }); +}; describe('OTLPMetricExporter - node (getDefaultUrl)', () => { it('should default to localhost', done => { @@ -352,3 +365,5 @@ describe('when configuring via environment', () => { testOTLPMetricExporter({ useTLS: true }); testOTLPMetricExporter({ useTLS: false }); testOTLPMetricExporter({ metadata }); +// skip UDS tests on windows +process.platform !== 'win32' && testOTLPMetricExporter({ address: udsAddr }); diff --git a/experimental/packages/otlp-grpc-exporter-base/src/util.ts b/experimental/packages/otlp-grpc-exporter-base/src/util.ts index 7e1d58dff7..78809466c9 100644 --- a/experimental/packages/otlp-grpc-exporter-base/src/util.ts +++ b/experimental/packages/otlp-grpc-exporter-base/src/util.ts @@ -125,6 +125,9 @@ export function validateAndNormalizeUrl(url: string): string { url = `https://${url}`; } const target = new URL(url); + if (target.protocol === 'unix:') { + return url; + } if (target.pathname && target.pathname !== '/') { diag.warn( 'URL path should not be set when using grpc, the path part of the URL will be ignored.' diff --git a/experimental/packages/otlp-grpc-exporter-base/test/util.test.ts b/experimental/packages/otlp-grpc-exporter-base/test/util.test.ts index c25f086f8c..967ece6716 100644 --- a/experimental/packages/otlp-grpc-exporter-base/test/util.test.ts +++ b/experimental/packages/otlp-grpc-exporter-base/test/util.test.ts @@ -47,6 +47,11 @@ describe('validateAndNormalizeUrl()', () => { input: 'https://api.datacat.io:1234', expected: 'api.datacat.io:1234', }, + { + name: 'should accept unix socket', + input: 'unix:///tmp/grpc.sock', + expected: 'unix:///tmp/grpc.sock', + }, { name: 'bad protocol should warn but return host:port', input: 'badproto://api.datacat.io:1234', From 196b6442b90fd06e3bb0c73877a1b6954a868f26 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 20 Jun 2023 13:11:24 +0200 Subject: [PATCH 38/71] chore(deps): update dependency markdownlint-cli to v0.35.0 (#3928) Co-authored-by: Marc Pichler --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c315860f32..79f203bbe7 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "lerna": "7.0.2", "@lerna/legacy-package-management": "7.0.2", "linkinator": "5.0.1", - "markdownlint-cli": "0.34.0", + "markdownlint-cli": "0.35.0", "prettier": "2.8.8", "semver": "7.5.2", "typedoc": "0.22.18", From 74393ac6397dcb130b9d5dae35354a2bf9a0d2c3 Mon Sep 17 00:00:00 2001 From: Nev <54870357+MSNev@users.noreply.github.com> Date: Tue, 20 Jun 2023 04:30:36 -0700 Subject: [PATCH 39/71] feat(minification): Add noEmitHelpers, importHelpers and tslib as a dependency (#3914) * feat(minification): Add noEmitHelpers, importHelpers and tslib as a dependency * fix: Lint fixes * Remove noEmitHelpers as not needed --------- Co-authored-by: Chengzhong Wu --- CHANGELOG.md | 2 ++ api/package.json | 3 +++ examples/esm-http-ts/tsconfig.json | 3 ++- examples/opentelemetry-web/package.json | 3 ++- .../backwards-compatibility/node14/package.json | 3 ++- .../backwards-compatibility/node16/package.json | 3 ++- experimental/packages/api-events/package.json | 3 ++- experimental/packages/api-logs/package.json | 3 ++- .../packages/exporter-logs-otlp-grpc/package.json | 3 ++- .../packages/exporter-logs-otlp-http/package.json | 3 ++- .../packages/exporter-logs-otlp-proto/package.json | 3 ++- .../packages/exporter-trace-otlp-grpc/package.json | 3 ++- .../packages/exporter-trace-otlp-http/package.json | 3 ++- .../packages/exporter-trace-otlp-proto/package.json | 3 ++- .../opentelemetry-browser-detector/package.json | 3 ++- .../package.json | 3 ++- .../package.json | 3 ++- .../package.json | 3 ++- .../opentelemetry-exporter-prometheus/package.json | 3 ++- .../opentelemetry-instrumentation-fetch/package.json | 3 ++- .../opentelemetry-instrumentation-grpc/package.json | 3 ++- .../opentelemetry-instrumentation-http/package.json | 3 ++- .../package.json | 3 ++- .../opentelemetry-instrumentation/package.json | 3 ++- .../src/platform/browser/index.ts | 2 +- .../src/platform/index.ts | 8 +++++++- .../src/platform/node/index.ts | 11 +++++++---- .../test/node/EsmInstrumentation.test.mjs | 2 +- .../packages/opentelemetry-sdk-node/package.json | 3 ++- experimental/packages/otlp-exporter-base/package.json | 3 ++- .../packages/otlp-grpc-exporter-base/package.json | 3 ++- .../packages/otlp-proto-exporter-base/package.json | 3 ++- experimental/packages/otlp-transformer/package.json | 3 ++- experimental/packages/sdk-logs/package.json | 3 ++- experimental/packages/shim-opencensus/package.json | 3 ++- .../propagation-validation-server/package.json | 3 ++- package.json | 3 ++- .../opentelemetry-context-async-hooks/package.json | 3 +++ .../opentelemetry-context-zone-peer-dep/package.json | 3 +++ packages/opentelemetry-context-zone/package.json | 3 ++- packages/opentelemetry-core/package.json | 3 ++- packages/opentelemetry-exporter-jaeger/package.json | 3 ++- packages/opentelemetry-exporter-zipkin/package.json | 3 ++- packages/opentelemetry-propagator-b3/package.json | 3 ++- packages/opentelemetry-propagator-jaeger/package.json | 3 ++- packages/opentelemetry-resources/package.json | 3 ++- packages/opentelemetry-sdk-trace-base/package.json | 3 ++- packages/opentelemetry-sdk-trace-node/package.json | 3 ++- packages/opentelemetry-sdk-trace-web/package.json | 3 ++- .../opentelemetry-semantic-conventions/package.json | 3 +++ packages/opentelemetry-shim-opentracing/package.json | 3 ++- packages/sdk-metrics/package.json | 3 ++- packages/template/package.json | 3 +++ tsconfig.base.json | 3 ++- 54 files changed, 121 insertions(+), 51 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1bd4e35ac0..819fab8972 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,8 @@ For experimental package changes, see the [experimental CHANGELOG](experimental/ ### :house: (Internal) +* feat(minification): [Minification] Add noEmitHelpers, importHelpers and tslib as a dependency [#3913](https://github.com/open-telemetry/opentelemetry-js/issues/3913) + ## 1.14.0 ### :rocket: (Enhancement) diff --git a/api/package.json b/api/package.json index 0195f70550..119fcece0c 100644 --- a/api/package.json +++ b/api/package.json @@ -87,6 +87,9 @@ "unionfs": "4.5.1", "webpack": "4.46.0" }, + "dependencies": { + "tslib": "^2.3.1" + }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/api", "sideEffects": false } diff --git a/examples/esm-http-ts/tsconfig.json b/examples/esm-http-ts/tsconfig.json index 5f821d66c7..f7c20de0d1 100644 --- a/examples/esm-http-ts/tsconfig.json +++ b/examples/esm-http-ts/tsconfig.json @@ -18,7 +18,8 @@ "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, /* Completeness */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */, + "importHelpers": true }, "include": ["**/*.ts", "**/*.js", "*.config.js"], "exclude": ["node_modules"] diff --git a/examples/opentelemetry-web/package.json b/examples/opentelemetry-web/package.json index c9afb00edd..7caa50413f 100644 --- a/examples/opentelemetry-web/package.json +++ b/examples/opentelemetry-web/package.json @@ -56,7 +56,8 @@ "@opentelemetry/sdk-metrics": "1.14.0", "@opentelemetry/sdk-trace-base": "1.14.0", "@opentelemetry/sdk-trace-web": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0" + "@opentelemetry/semantic-conventions": "1.14.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/tracer-web" } diff --git a/experimental/backwards-compatibility/node14/package.json b/experimental/backwards-compatibility/node14/package.json index 74b211cc10..a18a2795f4 100644 --- a/experimental/backwards-compatibility/node14/package.json +++ b/experimental/backwards-compatibility/node14/package.json @@ -10,7 +10,8 @@ }, "dependencies": { "@opentelemetry/sdk-node": "0.40.0", - "@opentelemetry/sdk-trace-base": "1.14.0" + "@opentelemetry/sdk-trace-base": "1.14.0", + "tslib": "^2.3.1" }, "devDependencies": { "@types/node": "14.18.25", diff --git a/experimental/backwards-compatibility/node16/package.json b/experimental/backwards-compatibility/node16/package.json index 5170101e1d..aaeb4db421 100644 --- a/experimental/backwards-compatibility/node16/package.json +++ b/experimental/backwards-compatibility/node16/package.json @@ -10,7 +10,8 @@ }, "dependencies": { "@opentelemetry/sdk-node": "0.40.0", - "@opentelemetry/sdk-trace-base": "1.14.0" + "@opentelemetry/sdk-trace-base": "1.14.0", + "tslib": "^2.3.1" }, "devDependencies": { "@types/node": "16.11.52", diff --git a/experimental/packages/api-events/package.json b/experimental/packages/api-events/package.json index d1a1072aa3..bf4ecca09d 100644 --- a/experimental/packages/api-events/package.json +++ b/experimental/packages/api-events/package.json @@ -61,7 +61,8 @@ "access": "public" }, "dependencies": { - "@opentelemetry/api": "^1.0.0" + "@opentelemetry/api": "^1.0.0", + "tslib": "^2.3.1" }, "devDependencies": { "@types/mocha": "10.0.1", diff --git a/experimental/packages/api-logs/package.json b/experimental/packages/api-logs/package.json index 10cf74653d..2b0e373057 100644 --- a/experimental/packages/api-logs/package.json +++ b/experimental/packages/api-logs/package.json @@ -61,7 +61,8 @@ "access": "public" }, "dependencies": { - "@opentelemetry/api": "^1.0.0" + "@opentelemetry/api": "^1.0.0", + "tslib": "^2.3.1" }, "devDependencies": { "@types/mocha": "10.0.1", diff --git a/experimental/packages/exporter-logs-otlp-grpc/package.json b/experimental/packages/exporter-logs-otlp-grpc/package.json index 96125109e7..77e2285f74 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/package.json +++ b/experimental/packages/exporter-logs-otlp-grpc/package.json @@ -76,7 +76,8 @@ "@opentelemetry/core": "1.14.0", "@opentelemetry/otlp-grpc-exporter-base": "0.40.0", "@opentelemetry/otlp-transformer": "0.40.0", - "@opentelemetry/sdk-logs": "0.40.0" + "@opentelemetry/sdk-logs": "0.40.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-logs-otlp-grpc", "sideEffects": false diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index 0f777e5bec..19ec49940b 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -106,6 +106,7 @@ "@opentelemetry/core": "1.14.0", "@opentelemetry/otlp-exporter-base": "0.40.0", "@opentelemetry/otlp-transformer": "0.40.0", - "@opentelemetry/sdk-logs": "0.40.0" + "@opentelemetry/sdk-logs": "0.40.0", + "tslib": "^2.3.1" } } diff --git a/experimental/packages/exporter-logs-otlp-proto/package.json b/experimental/packages/exporter-logs-otlp-proto/package.json index c665ae50de..87c6c6f0eb 100644 --- a/experimental/packages/exporter-logs-otlp-proto/package.json +++ b/experimental/packages/exporter-logs-otlp-proto/package.json @@ -90,7 +90,8 @@ "@opentelemetry/otlp-transformer": "0.40.0", "@opentelemetry/resources": "1.14.0", "@opentelemetry/sdk-logs": "0.40.0", - "@opentelemetry/sdk-trace-base": "1.14.0" + "@opentelemetry/sdk-trace-base": "1.14.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-logs-otlp-proto", "sideEffects": false diff --git a/experimental/packages/exporter-trace-otlp-grpc/package.json b/experimental/packages/exporter-trace-otlp-grpc/package.json index 61ad5e4861..2ff7f9172c 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/package.json +++ b/experimental/packages/exporter-trace-otlp-grpc/package.json @@ -74,7 +74,8 @@ "@opentelemetry/otlp-grpc-exporter-base": "0.40.0", "@opentelemetry/otlp-transformer": "0.40.0", "@opentelemetry/resources": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0" + "@opentelemetry/sdk-trace-base": "1.14.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-trace-otlp-grpc", "sideEffects": false diff --git a/experimental/packages/exporter-trace-otlp-http/package.json b/experimental/packages/exporter-trace-otlp-http/package.json index fe5222fd9c..767df86231 100644 --- a/experimental/packages/exporter-trace-otlp-http/package.json +++ b/experimental/packages/exporter-trace-otlp-http/package.json @@ -99,7 +99,8 @@ "@opentelemetry/otlp-exporter-base": "0.40.0", "@opentelemetry/otlp-transformer": "0.40.0", "@opentelemetry/resources": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0" + "@opentelemetry/sdk-trace-base": "1.14.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-trace-otlp-http", "sideEffects": false diff --git a/experimental/packages/exporter-trace-otlp-proto/package.json b/experimental/packages/exporter-trace-otlp-proto/package.json index 90720984d9..b5a87081d6 100644 --- a/experimental/packages/exporter-trace-otlp-proto/package.json +++ b/experimental/packages/exporter-trace-otlp-proto/package.json @@ -87,7 +87,8 @@ "@opentelemetry/otlp-proto-exporter-base": "0.40.0", "@opentelemetry/otlp-transformer": "0.40.0", "@opentelemetry/resources": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0" + "@opentelemetry/sdk-trace-base": "1.14.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-trace-otlp-proto", "sideEffects": false diff --git a/experimental/packages/opentelemetry-browser-detector/package.json b/experimental/packages/opentelemetry-browser-detector/package.json index 9cf3f179dd..233187c2cf 100644 --- a/experimental/packages/opentelemetry-browser-detector/package.json +++ b/experimental/packages/opentelemetry-browser-detector/package.json @@ -73,7 +73,8 @@ }, "dependencies": { "@opentelemetry/resources": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0" + "@opentelemetry/semantic-conventions": "1.14.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/browser-detector" } diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index 7fb9d1dba7..4697eacdbb 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -74,7 +74,8 @@ "@opentelemetry/otlp-grpc-exporter-base": "0.40.0", "@opentelemetry/otlp-transformer": "0.40.0", "@opentelemetry/resources": "1.14.0", - "@opentelemetry/sdk-metrics": "1.14.0" + "@opentelemetry/sdk-metrics": "1.14.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc", "sideEffects": false diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index f2f5e1d5ed..5256a337bc 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -99,7 +99,8 @@ "@opentelemetry/otlp-exporter-base": "0.40.0", "@opentelemetry/otlp-transformer": "0.40.0", "@opentelemetry/resources": "1.14.0", - "@opentelemetry/sdk-metrics": "1.14.0" + "@opentelemetry/sdk-metrics": "1.14.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-http", "sideEffects": false diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index 293109c727..08a8fb0538 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -73,7 +73,8 @@ "@opentelemetry/otlp-proto-exporter-base": "0.40.0", "@opentelemetry/otlp-transformer": "0.40.0", "@opentelemetry/resources": "1.14.0", - "@opentelemetry/sdk-metrics": "1.14.0" + "@opentelemetry/sdk-metrics": "1.14.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-proto", "sideEffects": false diff --git a/experimental/packages/opentelemetry-exporter-prometheus/package.json b/experimental/packages/opentelemetry-exporter-prometheus/package.json index 8a40e2a893..6a501c55d6 100644 --- a/experimental/packages/opentelemetry-exporter-prometheus/package.json +++ b/experimental/packages/opentelemetry-exporter-prometheus/package.json @@ -63,7 +63,8 @@ "dependencies": { "@opentelemetry/core": "1.14.0", "@opentelemetry/resources": "1.14.0", - "@opentelemetry/sdk-metrics": "1.14.0" + "@opentelemetry/sdk-metrics": "1.14.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-prometheus", "sideEffects": false diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index 407c77006f..01cc35fe48 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -91,7 +91,8 @@ "@opentelemetry/core": "1.14.0", "@opentelemetry/instrumentation": "0.40.0", "@opentelemetry/sdk-trace-web": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0" + "@opentelemetry/semantic-conventions": "1.14.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-fetch", "sideEffects": false diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/package.json b/experimental/packages/opentelemetry-instrumentation-grpc/package.json index c224158e8e..b05ee51721 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/package.json +++ b/experimental/packages/opentelemetry-instrumentation-grpc/package.json @@ -72,7 +72,8 @@ }, "dependencies": { "@opentelemetry/instrumentation": "0.40.0", - "@opentelemetry/semantic-conventions": "1.14.0" + "@opentelemetry/semantic-conventions": "1.14.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-grpc", "sideEffects": false diff --git a/experimental/packages/opentelemetry-instrumentation-http/package.json b/experimental/packages/opentelemetry-instrumentation-http/package.json index 9d4b657a84..91d0b99a42 100644 --- a/experimental/packages/opentelemetry-instrumentation-http/package.json +++ b/experimental/packages/opentelemetry-instrumentation-http/package.json @@ -77,7 +77,8 @@ "@opentelemetry/core": "1.14.0", "@opentelemetry/instrumentation": "0.40.0", "@opentelemetry/semantic-conventions": "1.14.0", - "semver": "^7.5.1" + "semver": "^7.5.1", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-http", "sideEffects": false diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json index f8e5325545..82f28f158a 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json @@ -91,7 +91,8 @@ "@opentelemetry/core": "1.14.0", "@opentelemetry/instrumentation": "0.40.0", "@opentelemetry/sdk-trace-web": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0" + "@opentelemetry/semantic-conventions": "1.14.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-xml-http-request", "sideEffects": false diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index 32c7fb2c54..9d08197039 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -75,7 +75,8 @@ "import-in-the-middle": "1.3.5", "require-in-the-middle": "^7.1.1", "semver": "^7.5.1", - "shimmer": "^1.2.1" + "shimmer": "^1.2.1", + "tslib": "^2.3.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" diff --git a/experimental/packages/opentelemetry-instrumentation/src/platform/browser/index.ts b/experimental/packages/opentelemetry-instrumentation/src/platform/browser/index.ts index 24c76056a1..0b238b42b8 100644 --- a/experimental/packages/opentelemetry-instrumentation/src/platform/browser/index.ts +++ b/experimental/packages/opentelemetry-instrumentation/src/platform/browser/index.ts @@ -14,4 +14,4 @@ * limitations under the License. */ -export * from './instrumentation'; +export { InstrumentationBase } from './instrumentation'; diff --git a/experimental/packages/opentelemetry-instrumentation/src/platform/index.ts b/experimental/packages/opentelemetry-instrumentation/src/platform/index.ts index cdaf8858ce..1fc5f5e14a 100644 --- a/experimental/packages/opentelemetry-instrumentation/src/platform/index.ts +++ b/experimental/packages/opentelemetry-instrumentation/src/platform/index.ts @@ -14,4 +14,10 @@ * limitations under the License. */ -export * from './node'; +export { + InstrumentationBase, + InstrumentationModuleDefinition, + InstrumentationModuleFile, + InstrumentationNodeModuleDefinition, + InstrumentationNodeModuleFile, +} from './node'; diff --git a/experimental/packages/opentelemetry-instrumentation/src/platform/node/index.ts b/experimental/packages/opentelemetry-instrumentation/src/platform/node/index.ts index 842797c341..d3df10491f 100644 --- a/experimental/packages/opentelemetry-instrumentation/src/platform/node/index.ts +++ b/experimental/packages/opentelemetry-instrumentation/src/platform/node/index.ts @@ -13,7 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -export * from './instrumentation'; -export * from './instrumentationNodeModuleDefinition'; -export * from './instrumentationNodeModuleFile'; -export * from './types'; +export { InstrumentationBase } from './instrumentation'; +export { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition'; +export { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile'; +export { + InstrumentationModuleDefinition, + InstrumentationModuleFile, +} from './types'; diff --git a/experimental/packages/opentelemetry-instrumentation/test/node/EsmInstrumentation.test.mjs b/experimental/packages/opentelemetry-instrumentation/test/node/EsmInstrumentation.test.mjs index f09097cd79..715dbdbff2 100644 --- a/experimental/packages/opentelemetry-instrumentation/test/node/EsmInstrumentation.test.mjs +++ b/experimental/packages/opentelemetry-instrumentation/test/node/EsmInstrumentation.test.mjs @@ -18,7 +18,7 @@ import * as assert from 'assert'; import { InstrumentationBase, InstrumentationNodeModuleDefinition, -} from '../../build/src/index.js'; +} from '../../build/src/platform/index.js'; import * as exported from 'test-esm-module'; class TestInstrumentationWrapFn extends InstrumentationBase { diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json index f8f6ab04d4..66c4bf9471 100644 --- a/experimental/packages/opentelemetry-sdk-node/package.json +++ b/experimental/packages/opentelemetry-sdk-node/package.json @@ -55,7 +55,8 @@ "@opentelemetry/sdk-metrics": "1.14.0", "@opentelemetry/sdk-trace-base": "1.14.0", "@opentelemetry/sdk-trace-node": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0" + "@opentelemetry/semantic-conventions": "1.14.0", + "tslib": "^2.3.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.5.0" diff --git a/experimental/packages/otlp-exporter-base/package.json b/experimental/packages/otlp-exporter-base/package.json index 3f10a7d7f5..8e3705b2c1 100644 --- a/experimental/packages/otlp-exporter-base/package.json +++ b/experimental/packages/otlp-exporter-base/package.json @@ -61,7 +61,8 @@ "access": "public" }, "dependencies": { - "@opentelemetry/core": "1.14.0" + "@opentelemetry/core": "1.14.0", + "tslib": "^2.3.1" }, "devDependencies": { "@opentelemetry/api": "1.4.1", diff --git a/experimental/packages/otlp-grpc-exporter-base/package.json b/experimental/packages/otlp-grpc-exporter-base/package.json index 0fd6150aa9..7955aac4ff 100644 --- a/experimental/packages/otlp-grpc-exporter-base/package.json +++ b/experimental/packages/otlp-grpc-exporter-base/package.json @@ -75,7 +75,8 @@ "@grpc/grpc-js": "^1.7.1", "@opentelemetry/core": "1.14.0", "@opentelemetry/otlp-exporter-base": "0.40.0", - "protobufjs": "^7.2.3" + "protobufjs": "^7.2.3", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/otlp-grpc-exporter-base", "sideEffects": false diff --git a/experimental/packages/otlp-proto-exporter-base/package.json b/experimental/packages/otlp-proto-exporter-base/package.json index 8d16f23995..7430c153cb 100644 --- a/experimental/packages/otlp-proto-exporter-base/package.json +++ b/experimental/packages/otlp-proto-exporter-base/package.json @@ -81,7 +81,8 @@ "dependencies": { "@opentelemetry/core": "1.14.0", "@opentelemetry/otlp-exporter-base": "0.40.0", - "protobufjs": "^7.2.3" + "protobufjs": "^7.2.3", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/otlp-proto-exporter-base", "sideEffects": false diff --git a/experimental/packages/otlp-transformer/package.json b/experimental/packages/otlp-transformer/package.json index 3af3c81a4a..ad12b3e16f 100644 --- a/experimental/packages/otlp-transformer/package.json +++ b/experimental/packages/otlp-transformer/package.json @@ -83,7 +83,8 @@ "@opentelemetry/resources": "1.14.0", "@opentelemetry/sdk-logs": "0.40.0", "@opentelemetry/sdk-metrics": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0" + "@opentelemetry/sdk-trace-base": "1.14.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/otlp-transformer", "sideEffects": false diff --git a/experimental/packages/sdk-logs/package.json b/experimental/packages/sdk-logs/package.json index 48b0bd249e..70abad035b 100644 --- a/experimental/packages/sdk-logs/package.json +++ b/experimental/packages/sdk-logs/package.json @@ -94,6 +94,7 @@ }, "dependencies": { "@opentelemetry/core": "1.14.0", - "@opentelemetry/resources": "1.14.0" + "@opentelemetry/resources": "1.14.0", + "tslib": "^2.3.1" } } diff --git a/experimental/packages/shim-opencensus/package.json b/experimental/packages/shim-opencensus/package.json index 9c0596f55e..6f870cfc69 100644 --- a/experimental/packages/shim-opencensus/package.json +++ b/experimental/packages/shim-opencensus/package.json @@ -71,7 +71,8 @@ "dependencies": { "@opentelemetry/core": "1.14.0", "require-in-the-middle": "^7.1.1", - "semver": "^7.5.1" + "semver": "^7.5.1", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/shim-opencensus", "sideEffects": false diff --git a/integration-tests/propagation-validation-server/package.json b/integration-tests/propagation-validation-server/package.json index 1658c1ed26..880251c503 100644 --- a/integration-tests/propagation-validation-server/package.json +++ b/integration-tests/propagation-validation-server/package.json @@ -17,7 +17,8 @@ "@opentelemetry/sdk-trace-base": "1.14.0", "axios": "1.4.0", "body-parser": "1.19.0", - "express": "4.17.3" + "express": "4.17.3", + "tslib": "^2.3.1" }, "devDependencies": { "typescript": "4.4.4" diff --git a/package.json b/package.json index 79f203bbe7..d52d6225d7 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,8 @@ "typedoc": "0.22.18", "typedoc-plugin-missing-exports": "1.0.0", "typedoc-plugin-resolve-crossmodule-references": "0.2.2", - "typescript": "4.4.4" + "typescript": "4.4.4", + "tslib": "^2.3.1" }, "changelog": { "repo": "open-telemetry/opentelemetry-js", diff --git a/packages/opentelemetry-context-async-hooks/package.json b/packages/opentelemetry-context-async-hooks/package.json index 15afdd385d..62a77cf7e8 100644 --- a/packages/opentelemetry-context-async-hooks/package.json +++ b/packages/opentelemetry-context-async-hooks/package.json @@ -43,6 +43,9 @@ "publishConfig": { "access": "public" }, + "dependencies": { + "tslib": "^2.3.1" + }, "devDependencies": { "@opentelemetry/api": ">=1.0.0 <1.5.0", "@types/mocha": "10.0.1", diff --git a/packages/opentelemetry-context-zone-peer-dep/package.json b/packages/opentelemetry-context-zone-peer-dep/package.json index 1953baa5ab..fa4b547427 100644 --- a/packages/opentelemetry-context-zone-peer-dep/package.json +++ b/packages/opentelemetry-context-zone-peer-dep/package.json @@ -85,6 +85,9 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0", "zone.js": "^0.10.2 || ^0.11.0" }, + "dependencies": { + "tslib": "^2.3.1" + }, "sideEffects": false, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-context-zone-peer-dep" } diff --git a/packages/opentelemetry-context-zone/package.json b/packages/opentelemetry-context-zone/package.json index 014010ff51..43c775f413 100644 --- a/packages/opentelemetry-context-zone/package.json +++ b/packages/opentelemetry-context-zone/package.json @@ -76,7 +76,8 @@ }, "dependencies": { "@opentelemetry/context-zone-peer-dep": "1.14.0", - "zone.js": "^0.11.0" + "zone.js": "^0.11.0", + "tslib": "^2.3.1" }, "sideEffects": true, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-context-zone" diff --git a/packages/opentelemetry-core/package.json b/packages/opentelemetry-core/package.json index e31b72adb6..3bd4796e7f 100644 --- a/packages/opentelemetry-core/package.json +++ b/packages/opentelemetry-core/package.json @@ -91,7 +91,8 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/semantic-conventions": "1.14.0" + "@opentelemetry/semantic-conventions": "1.14.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-core", "sideEffects": false diff --git a/packages/opentelemetry-exporter-jaeger/package.json b/packages/opentelemetry-exporter-jaeger/package.json index bb1b0f0ce5..a45636c9ac 100644 --- a/packages/opentelemetry-exporter-jaeger/package.json +++ b/packages/opentelemetry-exporter-jaeger/package.json @@ -66,7 +66,8 @@ "@opentelemetry/core": "1.14.0", "@opentelemetry/sdk-trace-base": "1.14.0", "@opentelemetry/semantic-conventions": "1.14.0", - "jaeger-client": "^3.15.0" + "jaeger-client": "^3.15.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-exporter-jaeger", "sideEffects": false diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index 1a45055f4a..cf3b1ddff2 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -95,7 +95,8 @@ "@opentelemetry/core": "1.14.0", "@opentelemetry/resources": "1.14.0", "@opentelemetry/sdk-trace-base": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0" + "@opentelemetry/semantic-conventions": "1.14.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-exporter-zipkin", "sideEffects": false diff --git a/packages/opentelemetry-propagator-b3/package.json b/packages/opentelemetry-propagator-b3/package.json index 96dfb8ae47..97303e5076 100644 --- a/packages/opentelemetry-propagator-b3/package.json +++ b/packages/opentelemetry-propagator-b3/package.json @@ -51,7 +51,8 @@ "access": "public" }, "dependencies": { - "@opentelemetry/core": "1.14.0" + "@opentelemetry/core": "1.14.0", + "tslib": "^2.3.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.5.0" diff --git a/packages/opentelemetry-propagator-jaeger/package.json b/packages/opentelemetry-propagator-jaeger/package.json index 4fe14702b6..d15ebcfea0 100644 --- a/packages/opentelemetry-propagator-jaeger/package.json +++ b/packages/opentelemetry-propagator-jaeger/package.json @@ -81,7 +81,8 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/core": "1.14.0" + "@opentelemetry/core": "1.14.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-propagator-jaeger", "sideEffects": false diff --git a/packages/opentelemetry-resources/package.json b/packages/opentelemetry-resources/package.json index 1315523a5a..340875b9fe 100644 --- a/packages/opentelemetry-resources/package.json +++ b/packages/opentelemetry-resources/package.json @@ -92,7 +92,8 @@ }, "dependencies": { "@opentelemetry/core": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0" + "@opentelemetry/semantic-conventions": "1.14.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-resources", "sideEffects": false diff --git a/packages/opentelemetry-sdk-trace-base/package.json b/packages/opentelemetry-sdk-trace-base/package.json index 8343363431..10ffe262e6 100644 --- a/packages/opentelemetry-sdk-trace-base/package.json +++ b/packages/opentelemetry-sdk-trace-base/package.json @@ -95,7 +95,8 @@ "dependencies": { "@opentelemetry/core": "1.14.0", "@opentelemetry/resources": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0" + "@opentelemetry/semantic-conventions": "1.14.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-base", "sideEffects": false diff --git a/packages/opentelemetry-sdk-trace-node/package.json b/packages/opentelemetry-sdk-trace-node/package.json index 1d349de0b1..51e5d59e51 100644 --- a/packages/opentelemetry-sdk-trace-node/package.json +++ b/packages/opentelemetry-sdk-trace-node/package.json @@ -70,7 +70,8 @@ "@opentelemetry/propagator-b3": "1.14.0", "@opentelemetry/propagator-jaeger": "1.14.0", "@opentelemetry/sdk-trace-base": "1.14.0", - "semver": "^7.5.1" + "semver": "^7.5.1", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node", "sideEffects": false diff --git a/packages/opentelemetry-sdk-trace-web/package.json b/packages/opentelemetry-sdk-trace-web/package.json index 697ea92a97..84555c91be 100644 --- a/packages/opentelemetry-sdk-trace-web/package.json +++ b/packages/opentelemetry-sdk-trace-web/package.json @@ -94,7 +94,8 @@ "dependencies": { "@opentelemetry/core": "1.14.0", "@opentelemetry/sdk-trace-base": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0" + "@opentelemetry/semantic-conventions": "1.14.0", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-web", "sideEffects": false diff --git a/packages/opentelemetry-semantic-conventions/package.json b/packages/opentelemetry-semantic-conventions/package.json index e95dcf1616..d1f733190b 100644 --- a/packages/opentelemetry-semantic-conventions/package.json +++ b/packages/opentelemetry-semantic-conventions/package.json @@ -62,6 +62,9 @@ "ts-mocha": "10.0.0", "typescript": "4.4.4" }, + "dependencies": { + "tslib": "^2.3.1" + }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-semantic-conventions", "sideEffects": false } diff --git a/packages/opentelemetry-shim-opentracing/package.json b/packages/opentelemetry-shim-opentracing/package.json index 1c477967f3..f4745b1f7c 100644 --- a/packages/opentelemetry-shim-opentracing/package.json +++ b/packages/opentelemetry-shim-opentracing/package.json @@ -62,7 +62,8 @@ "dependencies": { "@opentelemetry/core": "1.14.0", "@opentelemetry/semantic-conventions": "1.14.0", - "opentracing": "^0.14.4" + "opentracing": "^0.14.4", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-shim-opentracing", "sideEffects": false diff --git a/packages/sdk-metrics/package.json b/packages/sdk-metrics/package.json index 6fcb0e4ef4..3ec2a1fe4b 100644 --- a/packages/sdk-metrics/package.json +++ b/packages/sdk-metrics/package.json @@ -80,7 +80,8 @@ "dependencies": { "@opentelemetry/core": "1.14.0", "@opentelemetry/resources": "1.14.0", - "lodash.merge": "^4.6.2" + "lodash.merge": "^4.6.2", + "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/sdk-metrics", "sideEffects": false diff --git a/packages/template/package.json b/packages/template/package.json index 233c29e79c..5f0dd1cb52 100644 --- a/packages/template/package.json +++ b/packages/template/package.json @@ -83,6 +83,9 @@ "lerna": "7.0.2", "typescript": "4.4.4" }, + "dependencies": { + "tslib": "^2.3.1" + }, "Add these to devDependencies for testing": { "@types/mocha": "9.1.1", "@types/sinon": "10.0.13", diff --git a/tsconfig.base.json b/tsconfig.base.json index cbafb67678..84e684c8a5 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -21,7 +21,8 @@ "strict": true, "strictNullChecks": true, "target": "es2017", - "useUnknownInCatchVariables": false + "useUnknownInCatchVariables": false, + "importHelpers": true }, "exclude": [ "node_modules" From 5dc0f6974a91d86c08531d11153cdb40857eca74 Mon Sep 17 00:00:00 2001 From: Nicolas Hansse Date: Wed, 21 Jun 2023 14:16:16 +0200 Subject: [PATCH 40/71] fix(exporter-logs-otlp-http): set useHex to true (#3875) --- experimental/CHANGELOG.md | 2 + .../exporter-logs-otlp-http/package.json | 1 + .../src/platform/browser/OTLPLogExporter.ts | 2 +- .../src/platform/node/OTLPLogExporter.ts | 2 +- .../test/browser/OTLPLogExporter.test.ts | 86 ++++++++- .../exporter-logs-otlp-http/test/logHelper.ts | 166 +++++++++++++++++ .../test/node/OTLPLogExporter.test.ts | 169 +++++++++++++++++- .../exporter-logs-otlp-http/tsconfig.json | 6 +- 8 files changed, 428 insertions(+), 6 deletions(-) create mode 100644 experimental/packages/exporter-logs-otlp-http/test/logHelper.ts diff --git a/experimental/CHANGELOG.md b/experimental/CHANGELOG.md index 1ac87111b5..4ce74a2709 100644 --- a/experimental/CHANGELOG.md +++ b/experimental/CHANGELOG.md @@ -14,6 +14,8 @@ All notable changes to experimental packages in this project will be documented ### :bug: (Bug Fix) +* fix(exporter-logs-otlp-http): set useHex to true [#3875](https://github.com/open-telemetry/opentelemetry-js/pull/3875) @Nico385412 + ### :books: (Refine Doc) ### :house: (Internal) diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index 19ec49940b..41b72085be 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -73,6 +73,7 @@ "devDependencies": { "@babel/core": "7.22.5", "@opentelemetry/api-logs": "0.40.0", + "@opentelemetry/resources": "1.14.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", diff --git a/experimental/packages/exporter-logs-otlp-http/src/platform/browser/OTLPLogExporter.ts b/experimental/packages/exporter-logs-otlp-http/src/platform/browser/OTLPLogExporter.ts index ef837614e2..a7ecbbac95 100644 --- a/experimental/packages/exporter-logs-otlp-http/src/platform/browser/OTLPLogExporter.ts +++ b/experimental/packages/exporter-logs-otlp-http/src/platform/browser/OTLPLogExporter.ts @@ -48,7 +48,7 @@ export class OTLPLogExporter } convert(logRecords: ReadableLogRecord[]): IExportLogsServiceRequest { - return createExportLogsServiceRequest(logRecords); + return createExportLogsServiceRequest(logRecords, true); } getDefaultUrl(config: OTLPExporterConfigBase): string { diff --git a/experimental/packages/exporter-logs-otlp-http/src/platform/node/OTLPLogExporter.ts b/experimental/packages/exporter-logs-otlp-http/src/platform/node/OTLPLogExporter.ts index 7f7c538df7..a1d101e87c 100644 --- a/experimental/packages/exporter-logs-otlp-http/src/platform/node/OTLPLogExporter.ts +++ b/experimental/packages/exporter-logs-otlp-http/src/platform/node/OTLPLogExporter.ts @@ -48,7 +48,7 @@ export class OTLPLogExporter } convert(logRecords: ReadableLogRecord[]): IExportLogsServiceRequest { - return createExportLogsServiceRequest(logRecords); + return createExportLogsServiceRequest(logRecords, true); } getDefaultUrl(config: OTLPExporterNodeConfigBase): string { diff --git a/experimental/packages/exporter-logs-otlp-http/test/browser/OTLPLogExporter.test.ts b/experimental/packages/exporter-logs-otlp-http/test/browser/OTLPLogExporter.test.ts index 66958a9fef..2443c97ef4 100644 --- a/experimental/packages/exporter-logs-otlp-http/test/browser/OTLPLogExporter.test.ts +++ b/experimental/packages/exporter-logs-otlp-http/test/browser/OTLPLogExporter.test.ts @@ -13,15 +13,24 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - import * as assert from 'assert'; import * as sinon from 'sinon'; import * as Config from '../../src/platform/config'; import { OTLPLogExporter } from '../../src/platform/browser'; +import { OTLPExporterConfigBase } from '@opentelemetry/otlp-exporter-base'; +import { ReadableLogRecord } from '@opentelemetry/sdk-logs'; +import { mockedReadableLogRecord } from '../logHelper'; +import { ExportResultCode } from '@opentelemetry/core'; describe('OTLPLogExporter', () => { let envSource: Record; + let collectorExporter: OTLPLogExporter; + let collectorExporterConfig: OTLPExporterConfigBase; + + afterEach(() => { + sinon.restore(); + }); if (typeof process === 'undefined') { envSource = globalThis as unknown as Record; @@ -61,4 +70,79 @@ describe('OTLPLogExporter', () => { assert.strictEqual(getDefaultUrl.callCount, 2); }); }); + + describe('export - common', () => { + let spySend: any; + beforeEach(() => { + spySend = sinon.stub(OTLPLogExporter.prototype, 'send'); + collectorExporter = new OTLPLogExporter(collectorExporterConfig); + }); + + it('should export spans as otlpTypes.Spans', done => { + const logs: ReadableLogRecord[] = []; + logs.push(Object.assign({}, mockedReadableLogRecord)); + + collectorExporter.export(logs, () => {}); + setTimeout(() => { + const log = spySend.args[0][0][0] as ReadableLogRecord; + assert.deepStrictEqual(logs[0], log); + done(); + }); + assert.strictEqual(spySend.callCount, 1); + }); + + describe('when exporter is shutdown', () => { + it( + 'should not export anything but return callback with code' + + ' "FailedNotRetryable"', + async () => { + const spans: ReadableLogRecord[] = []; + spans.push(Object.assign({}, mockedReadableLogRecord)); + await collectorExporter.shutdown(); + spySend.resetHistory(); + + const callbackSpy = sinon.spy(); + collectorExporter.export(spans, callbackSpy); + const returnCode = callbackSpy.args[0][0]; + + assert.strictEqual( + returnCode.code, + ExportResultCode.FAILED, + 'return value is wrong' + ); + assert.strictEqual(spySend.callCount, 0, 'should not call send'); + } + ); + }); + describe('when an error occurs', () => { + it('should return failed export result', done => { + const spans: ReadableLogRecord[] = []; + spans.push(Object.assign({}, mockedReadableLogRecord)); + spySend.throws({ + code: 100, + details: 'Test error', + metadata: {}, + message: 'Non-retryable', + stack: 'Stack', + }); + const callbackSpy = sinon.spy(); + collectorExporter.export(spans, callbackSpy); + setTimeout(() => { + const returnCode = callbackSpy.args[0][0]; + assert.strictEqual( + returnCode.code, + ExportResultCode.FAILED, + 'return value is wrong' + ); + assert.strictEqual( + returnCode.error.message, + 'Non-retryable', + 'return error message is wrong' + ); + assert.strictEqual(spySend.callCount, 1, 'should call send'); + done(); + }); + }); + }); + }); }); diff --git a/experimental/packages/exporter-logs-otlp-http/test/logHelper.ts b/experimental/packages/exporter-logs-otlp-http/test/logHelper.ts new file mode 100644 index 0000000000..1d9461f873 --- /dev/null +++ b/experimental/packages/exporter-logs-otlp-http/test/logHelper.ts @@ -0,0 +1,166 @@ +/* + * 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 { HrTime, TraceFlags } from '@opentelemetry/api'; +import { SeverityNumber } from '@opentelemetry/api-logs'; +import { Resource } from '@opentelemetry/resources'; +import * as assert from 'assert'; +import { VERSION } from '@opentelemetry/core'; +import { + IAnyValue, + IExportLogsServiceRequest, + IKeyValue, + ILogRecord, + IResource, +} from '@opentelemetry/otlp-transformer'; +import { ReadableLogRecord } from '@opentelemetry/sdk-logs'; + +export const mockedReadableLogRecord: ReadableLogRecord = { + resource: Resource.default().merge( + new Resource({ + 'resource-attribute': 'some resource-attr value', + }) + ), + instrumentationScope: { + name: 'scope_name_1', + version: '0.1.0', + schemaUrl: 'http://url.to.schema', + }, + hrTime: [1680253513, 123241635] as HrTime, + hrTimeObserved: [1680253513, 123241635] as HrTime, + attributes: { + 'some-attribute': 'some attribute value', + }, + severityNumber: SeverityNumber.ERROR, + severityText: 'error', + body: 'some_log_body', + spanContext: { + traceFlags: TraceFlags.SAMPLED, + traceId: '1f1008dc8e270e85c40a0d7c3939b278', + spanId: '5e107261f64fa53e', + }, +}; +export function ensureExportedAttributesAreCorrect(attributes: IKeyValue[]) { + assert.deepStrictEqual( + attributes, + [ + { + key: 'some-attribute', + value: { + stringValue: 'some attribute value', + }, + }, + ], + 'exported attributes are incorrect' + ); +} + +export function ensureExportedBodyIsCorrect(body?: IAnyValue) { + assert.deepStrictEqual( + body, + { stringValue: 'some_log_body' }, + 'exported attributes are incorrect' + ); +} + +export function ensureExportedLogRecordIsCorrect(logRecord: ILogRecord) { + ensureExportedBodyIsCorrect(logRecord.body); + ensureExportedAttributesAreCorrect(logRecord.attributes); + assert.strictEqual( + logRecord.timeUnixNano, + 1680253513123241700, + 'timeUnixNano is wrong' + ); + assert.strictEqual( + logRecord.observedTimeUnixNano, + 1680253513123241700, + 'observedTimeUnixNano is wrong' + ); + assert.strictEqual( + logRecord.severityNumber, + SeverityNumber.ERROR, + 'severityNumber is wrong' + ); + assert.strictEqual(logRecord.severityText, 'error', 'severityText is wrong'); + assert.strictEqual( + logRecord.droppedAttributesCount, + 0, + 'droppedAttributesCount is wrong' + ); + assert.strictEqual(logRecord.flags, TraceFlags.SAMPLED, 'flags is wrong'); +} + +export function ensureResourceIsCorrect(resource: IResource) { + assert.deepStrictEqual(resource, { + attributes: [ + { + key: 'service.name', + value: { + stringValue: `unknown_service:${process.argv0}`, + value: 'stringValue', + }, + }, + { + key: 'telemetry.sdk.language', + value: { + stringValue: 'nodejs', + value: 'stringValue', + }, + }, + { + key: 'telemetry.sdk.name', + value: { + stringValue: 'opentelemetry', + value: 'stringValue', + }, + }, + { + key: 'telemetry.sdk.version', + value: { + stringValue: VERSION, + value: 'stringValue', + }, + }, + { + key: 'resource-attribute', + value: { + stringValue: 'some resource-attr value', + value: 'stringValue', + }, + }, + ], + droppedAttributesCount: 0, + }); +} + +export function ensureExportLogsServiceRequestIsSet( + json: IExportLogsServiceRequest +) { + const resourceLogs = json.resourceLogs; + assert.strictEqual(resourceLogs?.length, 1, 'resourceLogs is missing'); + + const resource = resourceLogs?.[0].resource; + assert.ok(resource, 'resource is missing'); + + const scopeLogs = resourceLogs?.[0].scopeLogs; + assert.strictEqual(scopeLogs?.length, 1, 'scopeLogs is missing'); + + const scope = scopeLogs?.[0].scope; + assert.ok(scope, 'scope is missing'); + + const logRecords = scopeLogs?.[0].logRecords; + assert.strictEqual(logRecords?.length, 1, 'logs are missing'); +} diff --git a/experimental/packages/exporter-logs-otlp-http/test/node/OTLPLogExporter.test.ts b/experimental/packages/exporter-logs-otlp-http/test/node/OTLPLogExporter.test.ts index aa0d345348..2ae11142ad 100644 --- a/experimental/packages/exporter-logs-otlp-http/test/node/OTLPLogExporter.test.ts +++ b/experimental/packages/exporter-logs-otlp-http/test/node/OTLPLogExporter.test.ts @@ -14,14 +14,55 @@ * limitations under the License. */ +import { diag } from '@opentelemetry/api'; import * as assert from 'assert'; +import * as http from 'http'; import * as sinon from 'sinon'; - import * as Config from '../../src/platform/config'; + import { OTLPLogExporter } from '../../src/platform/node'; +import { OTLPExporterNodeConfigBase } from '@opentelemetry/otlp-exporter-base'; +import { ReadableLogRecord } from '@opentelemetry/sdk-logs'; +import { + ensureExportLogsServiceRequestIsSet, + ensureExportedLogRecordIsCorrect, + mockedReadableLogRecord, +} from '../logHelper'; +import { PassThrough, Stream } from 'stream'; +import { IExportLogsServiceRequest } from '@opentelemetry/otlp-transformer'; +import { ExportResultCode } from '@opentelemetry/core'; + +let fakeRequest: PassThrough; + +class MockedResponse extends Stream { + constructor(private _code: number, private _msg?: string) { + super(); + } + + send(data: string) { + this.emit('data', data); + this.emit('end'); + } + + get statusCode() { + return this._code; + } + + get statusMessage() { + return this._msg; + } +} describe('OTLPLogExporter', () => { let envSource: Record; + let collectorExporter: OTLPLogExporter; + let collectorExporterConfig: OTLPExporterNodeConfigBase; + let logs: ReadableLogRecord[]; + + afterEach(() => { + fakeRequest = new Stream.PassThrough(); + sinon.restore(); + }); if (typeof process === 'undefined') { envSource = globalThis as unknown as Record; @@ -61,4 +102,130 @@ describe('OTLPLogExporter', () => { assert.strictEqual(getDefaultUrl.callCount, 2); }); }); + + describe('export', () => { + beforeEach(() => { + collectorExporterConfig = { + headers: { + foo: 'bar', + }, + hostname: 'foo', + url: 'http://foo.bar.com', + keepAlive: true, + httpAgentOptions: { keepAliveMsecs: 2000 }, + }; + collectorExporter = new OTLPLogExporter(collectorExporterConfig); + logs = []; + logs.push(Object.assign({}, mockedReadableLogRecord)); + }); + afterEach(() => { + sinon.restore(); + }); + + it('should open the connection', done => { + sinon.stub(http, 'request').callsFake((options: any, cb: any) => { + assert.strictEqual(options.hostname, 'foo.bar.com'); + assert.strictEqual(options.method, 'POST'); + assert.strictEqual(options.path, '/'); + + const mockRes = new MockedResponse(200); + cb(mockRes); + mockRes.send('success'); + done(); + return fakeRequest as any; + }); + collectorExporter.export(logs, () => {}); + }); + + it('should set custom headers', done => { + sinon.stub(http, 'request').callsFake((options: any, cb: any) => { + assert.strictEqual(options.headers['foo'], 'bar'); + + const mockRes = new MockedResponse(200); + cb(mockRes); + mockRes.send('success'); + done(); + return fakeRequest as any; + }); + + collectorExporter.export(logs, () => {}); + }); + + it('should have keep alive and keepAliveMsecs option set', done => { + sinon.stub(http, 'request').callsFake((options: any, cb: any) => { + assert.strictEqual(options.agent.keepAlive, true); + assert.strictEqual(options.agent.options.keepAliveMsecs, 2000); + + const mockRes = new MockedResponse(200); + cb(mockRes); + mockRes.send('success'); + done(); + return fakeRequest as any; + }); + + collectorExporter.export(logs, () => {}); + }); + + it('should successfully send the logs', done => { + const fakeRequest = new Stream.PassThrough(); + sinon.stub(http, 'request').returns(fakeRequest as any); + + let buff = Buffer.from(''); + fakeRequest.on('end', () => { + const responseBody = buff.toString(); + const json = JSON.parse(responseBody) as IExportLogsServiceRequest; + const log1 = json.resourceLogs?.[0].scopeLogs?.[0].logRecords?.[0]; + assert.ok(typeof log1 !== 'undefined', "log doesn't exist"); + ensureExportedLogRecordIsCorrect(log1); + + ensureExportLogsServiceRequestIsSet(json); + + done(); + }); + + fakeRequest.on('data', chunk => { + buff = Buffer.concat([buff, chunk]); + }); + + const clock = sinon.useFakeTimers(); + collectorExporter.export(logs, () => {}); + clock.tick(200); + clock.restore(); + }); + + it('should log the successful message', done => { + // Need to stub/spy on the underlying logger as the "diag" instance is global + const spyLoggerError = sinon.stub(diag, 'error'); + + sinon.stub(http, 'request').callsFake((options: any, cb: any) => { + const mockRes = new MockedResponse(200); + cb(mockRes); + mockRes.send('success'); + return fakeRequest as any; + }); + + collectorExporter.export(logs, result => { + assert.strictEqual(result.code, ExportResultCode.SUCCESS); + assert.strictEqual(spyLoggerError.args.length, 0); + done(); + }); + }); + + it('should log the error message', done => { + sinon.stub(http, 'request').callsFake((options: any, cb: any) => { + const mockResError = new MockedResponse(400); + cb(mockResError); + mockResError.send('failed'); + + return fakeRequest as any; + }); + + collectorExporter.export(logs, result => { + assert.strictEqual(result.code, ExportResultCode.FAILED); + // @ts-expect-error verify error code + assert.strictEqual(result.error.code, 400); + done(); + }); + }); + }); }); diff --git a/experimental/packages/exporter-logs-otlp-http/tsconfig.json b/experimental/packages/exporter-logs-otlp-http/tsconfig.json index c4eda837a9..52330c182e 100644 --- a/experimental/packages/exporter-logs-otlp-http/tsconfig.json +++ b/experimental/packages/exporter-logs-otlp-http/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../../tsconfig.base.json", "compilerOptions": { - "esModuleInterop": true, "outDir": "build", "rootDir": "." }, @@ -24,6 +23,9 @@ }, { "path": "../sdk-logs" - } + }, + { + "path": "../../../packages/opentelemetry-resources" + }, ] } From 19fb033900077505f43bcbacb8a5744be997fe37 Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Wed, 21 Jun 2023 20:26:54 +0200 Subject: [PATCH 41/71] feat(otlp-exporters): bump otlp proto to 0.20.0 (#3932) --- experimental/CHANGELOG.md | 1 + .../packages/otlp-grpc-exporter-base/protos | 2 +- .../src/LogsExportServiceClient.ts | 6 ++++-- .../src/MetricsExportServiceClient.ts | 6 ++++-- .../src/TraceExportServiceClient.ts | 6 ++++-- .../packages/otlp-proto-exporter-base/protos | 2 +- .../packages/otlp-transformer/src/common/types.ts | 6 ++++++ .../packages/otlp-transformer/src/logs/types.ts | 13 +++++++++++++ .../packages/otlp-transformer/src/metrics/types.ts | 13 +++++++++++++ .../packages/otlp-transformer/src/trace/types.ts | 13 +++++++++++++ 10 files changed, 60 insertions(+), 8 deletions(-) diff --git a/experimental/CHANGELOG.md b/experimental/CHANGELOG.md index 4ce74a2709..a1efc18445 100644 --- a/experimental/CHANGELOG.md +++ b/experimental/CHANGELOG.md @@ -11,6 +11,7 @@ All notable changes to experimental packages in this project will be documented ### :rocket: (Enhancement) * feat(otlp-grpc-exporters): add support for UDS endpoints. [#3853](https://github.com/open-telemetry/opentelemetry-js/pull/3853) @llc1123 +* feat(otlp-exporters): bump otlp proto to 0.20.0 [#3932](https://github.com/open-telemetry/opentelemetry-js/pull/3932) @pichlermarc ### :bug: (Bug Fix) diff --git a/experimental/packages/otlp-grpc-exporter-base/protos b/experimental/packages/otlp-grpc-exporter-base/protos index c5c8b28012..1608f92cf0 160000 --- a/experimental/packages/otlp-grpc-exporter-base/protos +++ b/experimental/packages/otlp-grpc-exporter-base/protos @@ -1 +1 @@ -Subproject commit c5c8b28012583fda55b0cb16f73a820722171d49 +Subproject commit 1608f92cf08119f9aec237c910b200d1317ec696 diff --git a/experimental/packages/otlp-grpc-exporter-base/src/LogsExportServiceClient.ts b/experimental/packages/otlp-grpc-exporter-base/src/LogsExportServiceClient.ts index 148fca31a1..b867743cea 100644 --- a/experimental/packages/otlp-grpc-exporter-base/src/LogsExportServiceClient.ts +++ b/experimental/packages/otlp-grpc-exporter-base/src/LogsExportServiceClient.ts @@ -16,9 +16,11 @@ import * as root from './generated/root'; import * as grpc from '@grpc/grpc-js'; -import { IExportLogsServiceRequest } from '@opentelemetry/otlp-transformer'; +import { + IExportLogsServiceRequest, + IExportLogsServiceResponse, +} from '@opentelemetry/otlp-transformer'; import { ExportType } from './internal-types'; -import IExportLogsServiceResponse = root.opentelemetry.proto.collector.logs.v1.IExportLogsServiceResponse; const responseType = root.opentelemetry.proto.collector.logs.v1 .ExportLogsServiceResponse as ExportType; diff --git a/experimental/packages/otlp-grpc-exporter-base/src/MetricsExportServiceClient.ts b/experimental/packages/otlp-grpc-exporter-base/src/MetricsExportServiceClient.ts index 9a791ca2f3..7f81be6087 100644 --- a/experimental/packages/otlp-grpc-exporter-base/src/MetricsExportServiceClient.ts +++ b/experimental/packages/otlp-grpc-exporter-base/src/MetricsExportServiceClient.ts @@ -16,9 +16,11 @@ import * as root from './generated/root'; import * as grpc from '@grpc/grpc-js'; -import { IExportMetricsServiceRequest } from '@opentelemetry/otlp-transformer'; +import { + IExportMetricsServiceRequest, + IExportMetricsServiceResponse, +} from '@opentelemetry/otlp-transformer'; import { ExportType } from './internal-types'; -import IExportMetricsServiceResponse = root.opentelemetry.proto.collector.metrics.v1.IExportMetricsServiceResponse; const responseType = root.opentelemetry.proto.collector.metrics.v1 .ExportMetricsServiceResponse as ExportType; diff --git a/experimental/packages/otlp-grpc-exporter-base/src/TraceExportServiceClient.ts b/experimental/packages/otlp-grpc-exporter-base/src/TraceExportServiceClient.ts index 6a150a24b1..d332e4f4da 100644 --- a/experimental/packages/otlp-grpc-exporter-base/src/TraceExportServiceClient.ts +++ b/experimental/packages/otlp-grpc-exporter-base/src/TraceExportServiceClient.ts @@ -16,9 +16,11 @@ import * as root from './generated/root'; import * as grpc from '@grpc/grpc-js'; -import { IExportTraceServiceRequest } from '@opentelemetry/otlp-transformer'; +import { + IExportTraceServiceRequest, + IExportTraceServiceResponse, +} from '@opentelemetry/otlp-transformer'; import { ExportType } from './internal-types'; -import IExportTraceServiceResponse = root.opentelemetry.proto.collector.trace.v1.IExportTraceServiceResponse; const responseType = root.opentelemetry.proto.collector.trace.v1 .ExportTraceServiceResponse as ExportType; diff --git a/experimental/packages/otlp-proto-exporter-base/protos b/experimental/packages/otlp-proto-exporter-base/protos index c5c8b28012..1608f92cf0 160000 --- a/experimental/packages/otlp-proto-exporter-base/protos +++ b/experimental/packages/otlp-proto-exporter-base/protos @@ -1 +1 @@ -Subproject commit c5c8b28012583fda55b0cb16f73a820722171d49 +Subproject commit 1608f92cf08119f9aec237c910b200d1317ec696 diff --git a/experimental/packages/otlp-transformer/src/common/types.ts b/experimental/packages/otlp-transformer/src/common/types.ts index 8b30231e74..159a595ba9 100644 --- a/experimental/packages/otlp-transformer/src/common/types.ts +++ b/experimental/packages/otlp-transformer/src/common/types.ts @@ -21,6 +21,12 @@ export interface IInstrumentationScope { /** InstrumentationScope version */ version?: string; + + /** InstrumentationScope attributes */ + attributes?: IKeyValue[]; + + /** InstrumentationScope droppedAttributesCount */ + droppedAttributesCount?: number; } /** Properties of a KeyValue. */ diff --git a/experimental/packages/otlp-transformer/src/logs/types.ts b/experimental/packages/otlp-transformer/src/logs/types.ts index 3d3e610bc7..05709af6f5 100644 --- a/experimental/packages/otlp-transformer/src/logs/types.ts +++ b/experimental/packages/otlp-transformer/src/logs/types.ts @@ -27,6 +27,19 @@ export interface IExportLogsServiceRequest { resourceLogs?: IResourceLogs[]; } +export interface IExportLogsServiceResponse { + /** ExportLogsServiceResponse partialSuccess */ + partialSuccess?: IExportLogsPartialSuccess; +} + +export interface IExportLogsPartialSuccess { + /** ExportLogsPartialSuccess rejectedLogRecords */ + rejectedLogRecords?: number; + + /** ExportLogsPartialSuccess errorMessage */ + errorMessage?: string; +} + /** Properties of a ResourceLogs. */ export interface IResourceLogs { /** ResourceLogs resource */ diff --git a/experimental/packages/otlp-transformer/src/metrics/types.ts b/experimental/packages/otlp-transformer/src/metrics/types.ts index 6db9c17a9b..2728ab1aba 100644 --- a/experimental/packages/otlp-transformer/src/metrics/types.ts +++ b/experimental/packages/otlp-transformer/src/metrics/types.ts @@ -22,6 +22,19 @@ export interface IExportMetricsServiceRequest { resourceMetrics: IResourceMetrics[]; } +export interface IExportMetricsServiceResponse { + /** ExportMetricsServiceResponse partialSuccess */ + partialSuccess?: IExportMetricsPartialSuccess; +} + +export interface IExportMetricsPartialSuccess { + /** ExportMetricsPartialSuccess rejectedDataPoints */ + rejectedDataPoints?: number; + + /** ExportMetricsPartialSuccess errorMessage */ + errorMessage?: string; +} + /** Properties of a ResourceMetrics. */ export interface IResourceMetrics { /** ResourceMetrics resource */ diff --git a/experimental/packages/otlp-transformer/src/trace/types.ts b/experimental/packages/otlp-transformer/src/trace/types.ts index 08e52c7a06..a6cfb82ad7 100644 --- a/experimental/packages/otlp-transformer/src/trace/types.ts +++ b/experimental/packages/otlp-transformer/src/trace/types.ts @@ -23,6 +23,19 @@ export interface IExportTraceServiceRequest { resourceSpans?: IResourceSpans[]; } +export interface IExportTraceServiceResponse { + /** ExportTraceServiceResponse partialSuccess */ + partialSuccess?: IExportTracePartialSuccess; +} + +export interface IExportTracePartialSuccess { + /** ExportLogsServiceResponse rejectedLogRecords */ + rejectedSpans?: number; + + /** ExportLogsServiceResponse errorMessage */ + errorMessage?: string; +} + /** Properties of a ResourceSpans. */ export interface IResourceSpans { /** ResourceSpans resource */ From 9977de79242cba0985595dd917ab302face0809b Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Thu, 22 Jun 2023 16:06:59 +0200 Subject: [PATCH 42/71] fix(otlp-proto-exporter-base): add missing type import (#3937) --- experimental/CHANGELOG.md | 1 + .../packages/otlp-proto-exporter-base/src/platform/util.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/experimental/CHANGELOG.md b/experimental/CHANGELOG.md index a1efc18445..097f9925f8 100644 --- a/experimental/CHANGELOG.md +++ b/experimental/CHANGELOG.md @@ -16,6 +16,7 @@ All notable changes to experimental packages in this project will be documented ### :bug: (Bug Fix) * fix(exporter-logs-otlp-http): set useHex to true [#3875](https://github.com/open-telemetry/opentelemetry-js/pull/3875) @Nico385412 + fix(otlp-proto-exporter-base): add missing type import [#3937](https://github.com/open-telemetry/opentelemetry-js/pull/3937) @pichlermarc ### :books: (Refine Doc) diff --git a/experimental/packages/otlp-proto-exporter-base/src/platform/util.ts b/experimental/packages/otlp-proto-exporter-base/src/platform/util.ts index c6e1272816..2fe428b432 100644 --- a/experimental/packages/otlp-proto-exporter-base/src/platform/util.ts +++ b/experimental/packages/otlp-proto-exporter-base/src/platform/util.ts @@ -16,6 +16,7 @@ import * as root from '../generated/root'; import { ServiceClientType } from './types'; +import type * as protobuf from 'protobufjs'; export interface ExportRequestType unknown }> { create(properties?: T): R; From 655e373c53416c23dc1caa7430f8f8898a85024b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 23 Jun 2023 06:55:45 +0200 Subject: [PATCH 43/71] chore(deps): update dependency semver to v7.5.3 (#3942) --- .../packages/opentelemetry-instrumentation-grpc/package.json | 2 +- experimental/packages/opentelemetry-sdk-node/package.json | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/package.json b/experimental/packages/opentelemetry-instrumentation-grpc/package.json index b05ee51721..85e49c1c24 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/package.json +++ b/experimental/packages/opentelemetry-instrumentation-grpc/package.json @@ -62,7 +62,7 @@ "mocha": "10.2.0", "node-pre-gyp": "0.17.0", "nyc": "15.1.0", - "semver": "7.5.2", + "semver": "7.5.3", "sinon": "15.1.2", "ts-mocha": "10.0.0", "typescript": "4.4.4" diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json index 66c4bf9471..d62cc04d56 100644 --- a/experimental/packages/opentelemetry-sdk-node/package.json +++ b/experimental/packages/opentelemetry-sdk-node/package.json @@ -74,7 +74,7 @@ "lerna": "7.0.2", "mocha": "10.2.0", "nyc": "15.1.0", - "semver": "7.5.2", + "semver": "7.5.3", "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", diff --git a/package.json b/package.json index d52d6225d7..b2b015c269 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ "linkinator": "5.0.1", "markdownlint-cli": "0.35.0", "prettier": "2.8.8", - "semver": "7.5.2", + "semver": "7.5.3", "typedoc": "0.22.18", "typedoc-plugin-missing-exports": "1.0.0", "typedoc-plugin-resolve-crossmodule-references": "0.2.2", From a30952cc50e9a7a7be11e661bc3190fbe71ee400 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 26 Jun 2023 09:35:45 +0200 Subject: [PATCH 44/71] chore(deps): update dependency nightwatch to v3 (#3950) --- selenium-tests/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selenium-tests/package.json b/selenium-tests/package.json index cc0ee0108a..6d7726c134 100644 --- a/selenium-tests/package.json +++ b/selenium-tests/package.json @@ -44,7 +44,7 @@ "dotenv": "16.0.0", "fast-safe-stringify": "2.1.1", "geckodriver": "3.0.1", - "nightwatch": "2.0.10", + "nightwatch": "3.0.1", "selenium-server": "3.141.59", "terser-webpack-plugin": "4.2.3", "webpack": "4.46.0", From 4dc8416f9e1c808ba0eaa74bdbcbdb73c2e31e02 Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Mon, 26 Jun 2023 11:04:48 +0200 Subject: [PATCH 45/71] fix(exporter-logs-otlp-http): update tsconfigs (#3936) --- .../packages/exporter-logs-otlp-http/tsconfig.esm.json | 3 +++ .../packages/exporter-logs-otlp-http/tsconfig.esnext.json | 3 +++ .../packages/exporter-logs-otlp-http/tsconfig.json | 8 ++++---- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/experimental/packages/exporter-logs-otlp-http/tsconfig.esm.json b/experimental/packages/exporter-logs-otlp-http/tsconfig.esm.json index 554367c373..f7353a3e87 100644 --- a/experimental/packages/exporter-logs-otlp-http/tsconfig.esm.json +++ b/experimental/packages/exporter-logs-otlp-http/tsconfig.esm.json @@ -12,6 +12,9 @@ { "path": "../../../packages/opentelemetry-core" }, + { + "path": "../../../packages/opentelemetry-resources" + }, { "path": "../api-logs" }, diff --git a/experimental/packages/exporter-logs-otlp-http/tsconfig.esnext.json b/experimental/packages/exporter-logs-otlp-http/tsconfig.esnext.json index 87a369521c..7a3b4e394e 100644 --- a/experimental/packages/exporter-logs-otlp-http/tsconfig.esnext.json +++ b/experimental/packages/exporter-logs-otlp-http/tsconfig.esnext.json @@ -12,6 +12,9 @@ { "path": "../../../packages/opentelemetry-core" }, + { + "path": "../../../packages/opentelemetry-resources" + }, { "path": "../api-logs" }, diff --git a/experimental/packages/exporter-logs-otlp-http/tsconfig.json b/experimental/packages/exporter-logs-otlp-http/tsconfig.json index 52330c182e..e347a2eef9 100644 --- a/experimental/packages/exporter-logs-otlp-http/tsconfig.json +++ b/experimental/packages/exporter-logs-otlp-http/tsconfig.json @@ -12,6 +12,9 @@ { "path": "../../../packages/opentelemetry-core" }, + { + "path": "../../../packages/opentelemetry-resources" + }, { "path": "../api-logs" }, @@ -23,9 +26,6 @@ }, { "path": "../sdk-logs" - }, - { - "path": "../../../packages/opentelemetry-resources" - }, + } ] } From 15ede4700b6049c44f30e511a7e8a643519ad254 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=B2=92=E7=B2=92=E6=A9=99?= Date: Mon, 26 Jun 2023 20:20:53 +0800 Subject: [PATCH 46/71] fix(example-opencensus-shim): avoid OpenCensus auto instrumentations (#3951) * fix(example-opencensus-shim): avoid opencensus instrumentations being auto imported * chore: changelog --------- Co-authored-by: Haddas Bronfman <85441461+haddasbronfman@users.noreply.github.com> --- experimental/CHANGELOG.md | 1 + experimental/examples/opencensus-shim/package.json | 2 +- experimental/examples/opencensus-shim/setup.js | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/experimental/CHANGELOG.md b/experimental/CHANGELOG.md index 097f9925f8..dca209e1a6 100644 --- a/experimental/CHANGELOG.md +++ b/experimental/CHANGELOG.md @@ -17,6 +17,7 @@ All notable changes to experimental packages in this project will be documented * fix(exporter-logs-otlp-http): set useHex to true [#3875](https://github.com/open-telemetry/opentelemetry-js/pull/3875) @Nico385412 fix(otlp-proto-exporter-base): add missing type import [#3937](https://github.com/open-telemetry/opentelemetry-js/pull/3937) @pichlermarc +* fix(example-opencensus-shim): avoid OpenCensus auto instrumentations [#3951](https://github.com/open-telemetry/opentelemetry-js/pull/3951) @llc1123 ### :books: (Refine Doc) diff --git a/experimental/examples/opencensus-shim/package.json b/experimental/examples/opencensus-shim/package.json index 689d1c7c24..fd231ef119 100644 --- a/experimental/examples/opencensus-shim/package.json +++ b/experimental/examples/opencensus-shim/package.json @@ -30,7 +30,7 @@ "@opentelemetry/api": "1.4.1", "@opentelemetry/sdk-trace-node": "1.14.0", "@opencensus/core": "0.1.0", - "@opencensus/nodejs": "0.1.0", + "@opencensus/nodejs-base": "0.1.0", "@opentelemetry/semantic-conventions": "1.14.0", "@opentelemetry/exporter-trace-otlp-grpc": "0.40.0", "@opentelemetry/resources": "1.14.0", diff --git a/experimental/examples/opencensus-shim/setup.js b/experimental/examples/opencensus-shim/setup.js index e96c62ae0c..37206971e7 100644 --- a/experimental/examples/opencensus-shim/setup.js +++ b/experimental/examples/opencensus-shim/setup.js @@ -29,7 +29,7 @@ const { } = require('@opentelemetry/semantic-conventions'); module.exports = function setup(serviceName) { - const tracing = require('@opencensus/nodejs'); + const tracing = require('@opencensus/nodejs-base'); diag.setLogger(new DiagConsoleLogger(), { logLevel: DiagLogLevel.ALL }); const provider = new NodeTracerProvider({ From 10c3e934cc743211af9811037e6fa63bea2744ee Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Tue, 27 Jun 2023 07:08:03 +0200 Subject: [PATCH 47/71] fix(selenium-tests): restore tests to functional state (#3923) --- selenium-tests/babel.config.js | 8 ++++---- selenium-tests/pages/fetch/index.js | 2 +- selenium-tests/pages/xhr/index.js | 4 ++-- selenium-tests/tests-helpers/constants.js | 2 +- selenium-tests/webpack.common.js | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/selenium-tests/babel.config.js b/selenium-tests/babel.config.js index 26b15edca0..31007c1484 100644 --- a/selenium-tests/babel.config.js +++ b/selenium-tests/babel.config.js @@ -22,12 +22,12 @@ module.exports = function (api) { ]; const plugins = [ ['@babel/plugin-proposal-decorators', { decoratorsBeforeExport: true }], - ['@babel/plugin-proposal-class-properties', { 'loose': true }], - ["@babel/plugin-proposal-private-methods", { "loose": true }], - ["@babel/plugin-proposal-private-property-in-object", { "loose": true }], + ['@babel/plugin-transform-class-properties', { 'loose': true }], + ["@babel/plugin-transform-private-methods", { "loose": true }], + ["@babel/plugin-transform-private-property-in-object", { "loose": true }], ]; return { presets, plugins, }; -}; \ No newline at end of file +}; diff --git a/selenium-tests/pages/fetch/index.js b/selenium-tests/pages/fetch/index.js index dbd2fe1166..4a3b7ae374 100644 --- a/selenium-tests/pages/fetch/index.js +++ b/selenium-tests/pages/fetch/index.js @@ -29,7 +29,7 @@ const getData = (url) => fetch(url, { // example of keeping track of context between async operations const prepareClickEvent = () => { - const url = 'https://httpbin.org/get'; + const url = 'https://httpstat.us/200'; const element = document.getElementById('button1'); diff --git a/selenium-tests/pages/xhr/index.js b/selenium-tests/pages/xhr/index.js index e998c58962..ba03da9c40 100644 --- a/selenium-tests/pages/xhr/index.js +++ b/selenium-tests/pages/xhr/index.js @@ -10,7 +10,7 @@ const provider = loadOtel([ new XMLHttpRequestInstrumentation({ ignoreUrls: [/localhost:8090\/sockjs-node/], propagateTraceHeaderCorsUrls: [ - 'https://httpbin.org/get', + 'https://httpstat.us/200', ], clearTimingResources: true, }), @@ -35,7 +35,7 @@ const getData = (url) => new Promise((resolve, reject) => { // example of keeping track of context between async operations const prepareClickEvent = () => { - const url = 'https://httpbin.org/get'; + const url = 'https://httpstat.us/200'; const element = document.getElementById('button1'); diff --git a/selenium-tests/tests-helpers/constants.js b/selenium-tests/tests-helpers/constants.js index 3362a3585c..2549a7fc27 100644 --- a/selenium-tests/tests-helpers/constants.js +++ b/selenium-tests/tests-helpers/constants.js @@ -2,4 +2,4 @@ const TIMEOUT_ELEMENT_MS = 5000; module.exports = { TIMEOUT_ELEMENT_MS, -}; \ No newline at end of file +}; diff --git a/selenium-tests/webpack.common.js b/selenium-tests/webpack.common.js index 0d00b07c60..3306d91b0d 100644 --- a/selenium-tests/webpack.common.js +++ b/selenium-tests/webpack.common.js @@ -11,7 +11,7 @@ module.exports = { filename: '[name].js', sourceMapFilename: '[file].map', }, - target: ['web', 'es5'], + target: 'web', module: { rules: [ { @@ -35,4 +35,4 @@ module.exports = { ], extensions: ['.ts', '.js', '.jsx', '.json'], }, -}; \ No newline at end of file +}; From e2e291c5837a10fa6e15b6274a3022680a4cdfd7 Mon Sep 17 00:00:00 2001 From: Aaron Abbott Date: Thu, 29 Jun 2023 02:31:08 -0400 Subject: [PATCH 48/71] fix(sdk-metrics): preserve startTime for cumulative ExponentialHistograms (#3934) Co-authored-by: Marc Pichler --- CHANGELOG.md | 1 + .../src/aggregator/ExponentialHistogram.ts | 33 +++---- .../aggregator/ExponentialHistogram.test.ts | 9 ++ .../cumulative-exponential-histogram.test.ts | 90 +++++++++++++++++++ 4 files changed, 117 insertions(+), 16 deletions(-) create mode 100644 packages/sdk-metrics/test/regression/cumulative-exponential-histogram.test.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 819fab8972..a162eae0a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ For experimental package changes, see the [experimental CHANGELOG](experimental/ ### :bug: (Bug Fix) * fix(sdk-metrics): Update default Histogram's boundary to match OTEL's spec [#3893](https://github.com/open-telemetry/opentelemetry-js/pull/3893/) @chigia001 +* fix(sdk-metrics): preserve startTime for cumulative ExponentialHistograms [#3934](https://github.com/open-telemetry/opentelemetry-js/pull/3934/) @aabmass ### :books: (Refine Doc) diff --git a/packages/sdk-metrics/src/aggregator/ExponentialHistogram.ts b/packages/sdk-metrics/src/aggregator/ExponentialHistogram.ts index 5a70a478a8..51c71ee211 100644 --- a/packages/sdk-metrics/src/aggregator/ExponentialHistogram.ts +++ b/packages/sdk-metrics/src/aggregator/ExponentialHistogram.ts @@ -213,32 +213,33 @@ export class ExponentialHistogramAccumulation implements Accumulation { } /** - * merge combines data from other into self - * @param {ExponentialHistogramAccumulation} other + * merge combines data from previous value into self + * @param {ExponentialHistogramAccumulation} previous */ - merge(other: ExponentialHistogramAccumulation) { + merge(previous: ExponentialHistogramAccumulation) { if (this._count === 0) { - this._min = other.min; - this._max = other.max; - } else if (other.count !== 0) { - if (other.min < this.min) { - this._min = other.min; + this._min = previous.min; + this._max = previous.max; + } else if (previous.count !== 0) { + if (previous.min < this.min) { + this._min = previous.min; } - if (other.max > this.max) { - this._max = other.max; + if (previous.max > this.max) { + this._max = previous.max; } } - this._sum += other.sum; - this._count += other.count; - this._zeroCount += other.zeroCount; + this.startTime = previous.startTime; + this._sum += previous.sum; + this._count += previous.count; + this._zeroCount += previous.zeroCount; - const minScale = this._minScale(other); + const minScale = this._minScale(previous); this._downscale(this.scale - minScale); - this._mergeBuckets(this.positive, other, other.positive, minScale); - this._mergeBuckets(this.negative, other, other.negative, minScale); + this._mergeBuckets(this.positive, previous, previous.positive, minScale); + this._mergeBuckets(this.negative, previous, previous.negative, minScale); } /** diff --git a/packages/sdk-metrics/test/aggregator/ExponentialHistogram.test.ts b/packages/sdk-metrics/test/aggregator/ExponentialHistogram.test.ts index 150eb13e91..2bcbc43307 100644 --- a/packages/sdk-metrics/test/aggregator/ExponentialHistogram.test.ts +++ b/packages/sdk-metrics/test/aggregator/ExponentialHistogram.test.ts @@ -574,6 +574,15 @@ describe('ExponentialHistogramAggregation', () => { assert.deepStrictEqual(acc0.toPointValue(), acc0Snapshot); assert.deepStrictEqual(acc1.toPointValue(), acc1Snapshot); }); + + it("keeps the previous point's startTime", () => { + const agg = new ExponentialHistogramAggregator(4, true); + const acc0 = agg.createAccumulation([0, 0]); + const acc1 = agg.createAccumulation([3, 0]); + + const result = agg.merge(acc0, acc1); + assert.strictEqual(result.startTime, acc0.startTime); + }); }); describe('diff', () => { diff --git a/packages/sdk-metrics/test/regression/cumulative-exponential-histogram.test.ts b/packages/sdk-metrics/test/regression/cumulative-exponential-histogram.test.ts new file mode 100644 index 0000000000..79dcfc434f --- /dev/null +++ b/packages/sdk-metrics/test/regression/cumulative-exponential-histogram.test.ts @@ -0,0 +1,90 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import * as assert from 'assert'; +import * as sinon from 'sinon'; +import { + Aggregation, + AggregationTemporality, + InstrumentType, + MeterProvider, + MetricReader, +} from '../../src'; +import { TestMetricReader } from '../export/TestMetricReader'; + +describe('cumulative-exponential-histogram', () => { + let clock: sinon.SinonFakeTimers; + + beforeEach(() => { + clock = sinon.useFakeTimers(); + }); + afterEach(() => { + sinon.restore(); + }); + + it('Cumulative Histogram should have the same startTime every collection', async () => { + // Works fine and passes + await doTest(Aggregation.Histogram()); + }); + + it('Cumulative ExponentialHistogram should have the same startTime every collection', async () => { + // Fails + await doTest(Aggregation.ExponentialHistogram()); + }); + + const doTest = async (histogramAggregation: Aggregation) => { + const meterProvider = new MeterProvider(); + const reader = new TestMetricReader({ + aggregationTemporalitySelector() { + return AggregationTemporality.CUMULATIVE; + }, + aggregationSelector(type) { + return type === InstrumentType.HISTOGRAM + ? histogramAggregation + : Aggregation.Default(); + }, + }); + + meterProvider.addMetricReader(reader); + const meter = meterProvider.getMeter('my-meter'); + const hist = meter.createHistogram('testhist'); + + hist.record(1); + + const resourceMetrics1 = await collectNoErrors(reader); + const dataPoint1 = + resourceMetrics1.scopeMetrics[0].metrics[0].dataPoints[0]; + + clock.tick(1000); + hist.record(2); + + const resourceMetrics2 = await collectNoErrors(reader); + const dataPoint2 = + resourceMetrics2.scopeMetrics[0].metrics[0].dataPoints[0]; + + assert.deepStrictEqual( + dataPoint1.startTime, + dataPoint2.startTime, + 'The start time should be the same across cumulative collections' + ); + }; + + const collectNoErrors = async (reader: MetricReader) => { + const { resourceMetrics, errors } = await reader.collect(); + assert.strictEqual(errors.length, 0); + return resourceMetrics; + }; +}); From b3d57bb295c853fac2a0659dafd5594406e35712 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 29 Jun 2023 08:49:38 +0200 Subject: [PATCH 49/71] chore(deps): update lerna monorepo to v7.1.1 (#3956) --- api/package.json | 2 +- experimental/packages/api-events/package.json | 2 +- experimental/packages/api-logs/package.json | 2 +- experimental/packages/exporter-logs-otlp-grpc/package.json | 2 +- experimental/packages/exporter-logs-otlp-http/package.json | 2 +- experimental/packages/exporter-logs-otlp-proto/package.json | 2 +- experimental/packages/exporter-trace-otlp-grpc/package.json | 2 +- experimental/packages/exporter-trace-otlp-http/package.json | 2 +- experimental/packages/exporter-trace-otlp-proto/package.json | 2 +- .../packages/opentelemetry-browser-detector/package.json | 2 +- .../opentelemetry-exporter-metrics-otlp-grpc/package.json | 2 +- .../opentelemetry-exporter-metrics-otlp-http/package.json | 2 +- .../opentelemetry-exporter-metrics-otlp-proto/package.json | 2 +- .../packages/opentelemetry-exporter-prometheus/package.json | 2 +- .../packages/opentelemetry-instrumentation-fetch/package.json | 2 +- .../packages/opentelemetry-instrumentation-grpc/package.json | 2 +- .../packages/opentelemetry-instrumentation-http/package.json | 2 +- .../package.json | 2 +- .../packages/opentelemetry-instrumentation/package.json | 2 +- experimental/packages/opentelemetry-sdk-node/package.json | 2 +- experimental/packages/otlp-exporter-base/package.json | 2 +- experimental/packages/otlp-grpc-exporter-base/package.json | 2 +- experimental/packages/otlp-proto-exporter-base/package.json | 2 +- experimental/packages/otlp-transformer/package.json | 2 +- experimental/packages/sdk-logs/package.json | 2 +- experimental/packages/shim-opencensus/package.json | 2 +- package.json | 4 ++-- packages/opentelemetry-context-async-hooks/package.json | 2 +- packages/opentelemetry-context-zone-peer-dep/package.json | 2 +- packages/opentelemetry-context-zone/package.json | 2 +- packages/opentelemetry-core/package.json | 2 +- packages/opentelemetry-exporter-jaeger/package.json | 2 +- packages/opentelemetry-exporter-zipkin/package.json | 2 +- packages/opentelemetry-propagator-b3/package.json | 2 +- packages/opentelemetry-propagator-jaeger/package.json | 2 +- packages/opentelemetry-resources/package.json | 2 +- packages/opentelemetry-sdk-trace-base/package.json | 2 +- packages/opentelemetry-sdk-trace-node/package.json | 2 +- packages/opentelemetry-sdk-trace-web/package.json | 2 +- packages/opentelemetry-semantic-conventions/package.json | 2 +- packages/opentelemetry-shim-opentracing/package.json | 2 +- packages/sdk-metrics/package.json | 2 +- packages/template/package.json | 2 +- 43 files changed, 44 insertions(+), 44 deletions(-) diff --git a/api/package.json b/api/package.json index 119fcece0c..888e602e5e 100644 --- a/api/package.json +++ b/api/package.json @@ -76,7 +76,7 @@ "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.0.2", + "lerna": "7.1.1", "memfs": "3.5.3", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/experimental/packages/api-events/package.json b/experimental/packages/api-events/package.json index bf4ecca09d..ec768c6188 100644 --- a/experimental/packages/api-events/package.json +++ b/experimental/packages/api-events/package.json @@ -77,7 +77,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/api-logs/package.json b/experimental/packages/api-logs/package.json index 2b0e373057..7be2db96e3 100644 --- a/experimental/packages/api-logs/package.json +++ b/experimental/packages/api-logs/package.json @@ -77,7 +77,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/exporter-logs-otlp-grpc/package.json b/experimental/packages/exporter-logs-otlp-grpc/package.json index 77e2285f74..43dc22d223 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/package.json +++ b/experimental/packages/exporter-logs-otlp-grpc/package.json @@ -60,7 +60,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index 41b72085be..a1ff957253 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -89,7 +89,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-logs-otlp-proto/package.json b/experimental/packages/exporter-logs-otlp-proto/package.json index 87c6c6f0eb..204414966f 100644 --- a/experimental/packages/exporter-logs-otlp-proto/package.json +++ b/experimental/packages/exporter-logs-otlp-proto/package.json @@ -71,7 +71,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-trace-otlp-grpc/package.json b/experimental/packages/exporter-trace-otlp-grpc/package.json index 2ff7f9172c..fce71adbd5 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/package.json +++ b/experimental/packages/exporter-trace-otlp-grpc/package.json @@ -57,7 +57,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-trace-otlp-http/package.json b/experimental/packages/exporter-trace-otlp-http/package.json index 767df86231..9e55231aa6 100644 --- a/experimental/packages/exporter-trace-otlp-http/package.json +++ b/experimental/packages/exporter-trace-otlp-http/package.json @@ -80,7 +80,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-trace-otlp-proto/package.json b/experimental/packages/exporter-trace-otlp-proto/package.json index b5a87081d6..5f0deff40b 100644 --- a/experimental/packages/exporter-trace-otlp-proto/package.json +++ b/experimental/packages/exporter-trace-otlp-proto/package.json @@ -70,7 +70,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-browser-detector/package.json b/experimental/packages/opentelemetry-browser-detector/package.json index 233187c2cf..788fb3dd99 100644 --- a/experimental/packages/opentelemetry-browser-detector/package.json +++ b/experimental/packages/opentelemetry-browser-detector/package.json @@ -60,7 +60,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index 4697eacdbb..cebe38c3c9 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -56,7 +56,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index 5256a337bc..e26bbcd17b 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -80,7 +80,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index 08a8fb0538..f10cf504ca 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -55,7 +55,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-exporter-prometheus/package.json b/experimental/packages/opentelemetry-exporter-prometheus/package.json index 6a501c55d6..8ae497886f 100644 --- a/experimental/packages/opentelemetry-exporter-prometheus/package.json +++ b/experimental/packages/opentelemetry-exporter-prometheus/package.json @@ -50,7 +50,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index 01cc35fe48..c8f1bfcb39 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -73,7 +73,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/package.json b/experimental/packages/opentelemetry-instrumentation-grpc/package.json index 85e49c1c24..2dc97dddd1 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/package.json +++ b/experimental/packages/opentelemetry-instrumentation-grpc/package.json @@ -58,7 +58,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "node-pre-gyp": "0.17.0", "nyc": "15.1.0", diff --git a/experimental/packages/opentelemetry-instrumentation-http/package.json b/experimental/packages/opentelemetry-instrumentation-http/package.json index 91d0b99a42..c39d34ace9 100644 --- a/experimental/packages/opentelemetry-instrumentation-http/package.json +++ b/experimental/packages/opentelemetry-instrumentation-http/package.json @@ -59,7 +59,7 @@ "axios": "1.4.0", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json index 82f28f158a..4eb469da07 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json @@ -73,7 +73,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index 9d08197039..dd8ac1eb87 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -101,7 +101,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json index d62cc04d56..5db8e3ced7 100644 --- a/experimental/packages/opentelemetry-sdk-node/package.json +++ b/experimental/packages/opentelemetry-sdk-node/package.json @@ -71,7 +71,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "semver": "7.5.3", diff --git a/experimental/packages/otlp-exporter-base/package.json b/experimental/packages/otlp-exporter-base/package.json index 8e3705b2c1..de1a701996 100644 --- a/experimental/packages/otlp-exporter-base/package.json +++ b/experimental/packages/otlp-exporter-base/package.json @@ -72,7 +72,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/experimental/packages/otlp-grpc-exporter-base/package.json b/experimental/packages/otlp-grpc-exporter-base/package.json index 7955aac4ff..4956fbee14 100644 --- a/experimental/packages/otlp-grpc-exporter-base/package.json +++ b/experimental/packages/otlp-grpc-exporter-base/package.json @@ -59,7 +59,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "protobufjs-cli": "1.1.1", diff --git a/experimental/packages/otlp-proto-exporter-base/package.json b/experimental/packages/otlp-proto-exporter-base/package.json index 7430c153cb..0587dc9de5 100644 --- a/experimental/packages/otlp-proto-exporter-base/package.json +++ b/experimental/packages/otlp-proto-exporter-base/package.json @@ -66,7 +66,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "protobufjs-cli": "1.1.1", diff --git a/experimental/packages/otlp-transformer/package.json b/experimental/packages/otlp-transformer/package.json index ad12b3e16f..4e2a831389 100644 --- a/experimental/packages/otlp-transformer/package.json +++ b/experimental/packages/otlp-transformer/package.json @@ -69,7 +69,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/sdk-logs/package.json b/experimental/packages/sdk-logs/package.json index 70abad035b..be245fbe15 100644 --- a/experimental/packages/sdk-logs/package.json +++ b/experimental/packages/sdk-logs/package.json @@ -85,7 +85,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/shim-opencensus/package.json b/experimental/packages/shim-opencensus/package.json index 6f870cfc69..636efed876 100644 --- a/experimental/packages/shim-opencensus/package.json +++ b/experimental/packages/shim-opencensus/package.json @@ -57,7 +57,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/package.json b/package.json index b2b015c269..c0b6c172ef 100644 --- a/package.json +++ b/package.json @@ -71,8 +71,8 @@ "eslint-plugin-node": "11.1.0", "eslint-plugin-prettier": "4.2.1", "gh-pages": "5.0.0", - "lerna": "7.0.2", - "@lerna/legacy-package-management": "7.0.2", + "lerna": "7.1.1", + "@lerna/legacy-package-management": "7.1.1", "linkinator": "5.0.1", "markdownlint-cli": "0.35.0", "prettier": "2.8.8", diff --git a/packages/opentelemetry-context-async-hooks/package.json b/packages/opentelemetry-context-async-hooks/package.json index 62a77cf7e8..64366b205c 100644 --- a/packages/opentelemetry-context-async-hooks/package.json +++ b/packages/opentelemetry-context-async-hooks/package.json @@ -52,7 +52,7 @@ "@types/node": "18.6.5", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "ts-mocha": "10.0.0", diff --git a/packages/opentelemetry-context-zone-peer-dep/package.json b/packages/opentelemetry-context-zone-peer-dep/package.json index fa4b547427..9904e9da84 100644 --- a/packages/opentelemetry-context-zone-peer-dep/package.json +++ b/packages/opentelemetry-context-zone-peer-dep/package.json @@ -70,7 +70,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-context-zone/package.json b/packages/opentelemetry-context-zone/package.json index 43c775f413..84a937ce93 100644 --- a/packages/opentelemetry-context-zone/package.json +++ b/packages/opentelemetry-context-zone/package.json @@ -63,7 +63,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-core/package.json b/packages/opentelemetry-core/package.json index 3bd4796e7f..23e11a9e5c 100644 --- a/packages/opentelemetry-core/package.json +++ b/packages/opentelemetry-core/package.json @@ -78,7 +78,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-exporter-jaeger/package.json b/packages/opentelemetry-exporter-jaeger/package.json index a45636c9ac..3b4164d3f9 100644 --- a/packages/opentelemetry-exporter-jaeger/package.json +++ b/packages/opentelemetry-exporter-jaeger/package.json @@ -51,7 +51,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index cf3b1ddff2..bbe473b650 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -76,7 +76,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/packages/opentelemetry-propagator-b3/package.json b/packages/opentelemetry-propagator-b3/package.json index 97303e5076..89dcef29be 100644 --- a/packages/opentelemetry-propagator-b3/package.json +++ b/packages/opentelemetry-propagator-b3/package.json @@ -64,7 +64,7 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "ts-loader": "8.4.0", diff --git a/packages/opentelemetry-propagator-jaeger/package.json b/packages/opentelemetry-propagator-jaeger/package.json index d15ebcfea0..de2e90601f 100644 --- a/packages/opentelemetry-propagator-jaeger/package.json +++ b/packages/opentelemetry-propagator-jaeger/package.json @@ -68,7 +68,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-resources/package.json b/packages/opentelemetry-resources/package.json index 340875b9fe..17de24f223 100644 --- a/packages/opentelemetry-resources/package.json +++ b/packages/opentelemetry-resources/package.json @@ -76,7 +76,7 @@ "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/packages/opentelemetry-sdk-trace-base/package.json b/packages/opentelemetry-sdk-trace-base/package.json index 10ffe262e6..6cceaa64d5 100644 --- a/packages/opentelemetry-sdk-trace-base/package.json +++ b/packages/opentelemetry-sdk-trace-base/package.json @@ -80,7 +80,7 @@ "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-sdk-trace-node/package.json b/packages/opentelemetry-sdk-trace-node/package.json index 51e5d59e51..bd4fb782fe 100644 --- a/packages/opentelemetry-sdk-trace-node/package.json +++ b/packages/opentelemetry-sdk-trace-node/package.json @@ -54,7 +54,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-sdk-trace-web/package.json b/packages/opentelemetry-sdk-trace-web/package.json index 84555c91be..b3bfc15586 100644 --- a/packages/opentelemetry-sdk-trace-web/package.json +++ b/packages/opentelemetry-sdk-trace-web/package.json @@ -77,7 +77,7 @@ "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-semantic-conventions/package.json b/packages/opentelemetry-semantic-conventions/package.json index d1f733190b..c7585e68f3 100644 --- a/packages/opentelemetry-semantic-conventions/package.json +++ b/packages/opentelemetry-semantic-conventions/package.json @@ -54,7 +54,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/packages/opentelemetry-shim-opentracing/package.json b/packages/opentelemetry-shim-opentracing/package.json index f4745b1f7c..9b05c66d6c 100644 --- a/packages/opentelemetry-shim-opentracing/package.json +++ b/packages/opentelemetry-shim-opentracing/package.json @@ -50,7 +50,7 @@ "@types/node": "18.6.5", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "ts-mocha": "10.0.0", diff --git a/packages/sdk-metrics/package.json b/packages/sdk-metrics/package.json index 3ec2a1fe4b..2e327b6acd 100644 --- a/packages/sdk-metrics/package.json +++ b/packages/sdk-metrics/package.json @@ -67,7 +67,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.0.2", + "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/template/package.json b/packages/template/package.json index 5f0dd1cb52..00876cf2c4 100644 --- a/packages/template/package.json +++ b/packages/template/package.json @@ -80,7 +80,7 @@ "devDependencies": { "@types/node": "18.6.5", "cross-var": "1.1.0", - "lerna": "7.0.2", + "lerna": "7.1.1", "typescript": "4.4.4" }, "dependencies": { From bb8a4f7ab71494a59b42daf6958a6f10d1ce6870 Mon Sep 17 00:00:00 2001 From: Andreas Odysseos Date: Thu, 29 Jun 2023 15:59:09 +0300 Subject: [PATCH 50/71] fix(http-intrumentation): prevent request socket null from throwing uncaught error (#3858) Co-authored-by: Marc Pichler --- experimental/CHANGELOG.md | 1 + .../src/utils.ts | 34 +++++++++++-------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/experimental/CHANGELOG.md b/experimental/CHANGELOG.md index dca209e1a6..af2ea3a26e 100644 --- a/experimental/CHANGELOG.md +++ b/experimental/CHANGELOG.md @@ -18,6 +18,7 @@ All notable changes to experimental packages in this project will be documented * fix(exporter-logs-otlp-http): set useHex to true [#3875](https://github.com/open-telemetry/opentelemetry-js/pull/3875) @Nico385412 fix(otlp-proto-exporter-base): add missing type import [#3937](https://github.com/open-telemetry/opentelemetry-js/pull/3937) @pichlermarc * fix(example-opencensus-shim): avoid OpenCensus auto instrumentations [#3951](https://github.com/open-telemetry/opentelemetry-js/pull/3951) @llc1123 +* fix(http-intrumentation): prevent request socket null from throwing uncaught error [#3858](https://github.com/open-telemetry/opentelemetry-js/pull/3858) @aodysseos ### :books: (Refine Doc) diff --git a/experimental/packages/opentelemetry-instrumentation-http/src/utils.ts b/experimental/packages/opentelemetry-instrumentation-http/src/utils.ts index a563e29471..a70dd3de85 100644 --- a/experimental/packages/opentelemetry-instrumentation-http/src/utils.ts +++ b/experimental/packages/opentelemetry-instrumentation-http/src/utils.ts @@ -403,11 +403,12 @@ export const getOutgoingRequestAttributesOnResponse = ( response: IncomingMessage ): SpanAttributes => { const { statusCode, statusMessage, httpVersion, socket } = response; - const { remoteAddress, remotePort } = socket; - const attributes: SpanAttributes = { - [SemanticAttributes.NET_PEER_IP]: remoteAddress, - [SemanticAttributes.NET_PEER_PORT]: remotePort, - }; + const attributes: SpanAttributes = {}; + if (socket) { + const { remoteAddress, remotePort } = socket; + attributes[SemanticAttributes.NET_PEER_IP] = remoteAddress; + attributes[SemanticAttributes.NET_PEER_PORT] = remotePort; + } setResponseContentLengthAttribute(response, attributes); if (statusCode) { @@ -529,17 +530,20 @@ export const getIncomingRequestAttributesOnResponse = ( // since it may be detached from the response object in keep-alive mode const { socket } = request; const { statusCode, statusMessage } = response; - const { localAddress, localPort, remoteAddress, remotePort } = socket; - const rpcMetadata = getRPCMetadata(context.active()); - const attributes: SpanAttributes = { - [SemanticAttributes.NET_HOST_IP]: localAddress, - [SemanticAttributes.NET_HOST_PORT]: localPort, - [SemanticAttributes.NET_PEER_IP]: remoteAddress, - [SemanticAttributes.NET_PEER_PORT]: remotePort, - [SemanticAttributes.HTTP_STATUS_CODE]: statusCode, - [AttributeNames.HTTP_STATUS_TEXT]: (statusMessage || '').toUpperCase(), - }; + const rpcMetadata = getRPCMetadata(context.active()); + const attributes: SpanAttributes = {}; + if (socket) { + const { localAddress, localPort, remoteAddress, remotePort } = socket; + attributes[SemanticAttributes.NET_HOST_IP] = localAddress; + attributes[SemanticAttributes.NET_HOST_PORT] = localPort; + attributes[SemanticAttributes.NET_PEER_IP] = remoteAddress; + attributes[SemanticAttributes.NET_PEER_PORT] = remotePort; + } + attributes[SemanticAttributes.HTTP_STATUS_CODE] = statusCode; + attributes[AttributeNames.HTTP_STATUS_TEXT] = ( + statusMessage || '' + ).toUpperCase(); if (rpcMetadata?.type === RPCType.HTTP && rpcMetadata.route !== undefined) { attributes[SemanticAttributes.HTTP_ROUTE] = rpcMetadata.route; From 070b6852a546104f73499973a09475afcded9b97 Mon Sep 17 00:00:00 2001 From: Martin Kuba Date: Fri, 30 Jun 2023 11:13:03 -0700 Subject: [PATCH 51/71] LowMemory metrics temporality preference (#3915) Co-authored-by: Marc Pichler --- CHANGELOG.md | 5 + .../README.md | 2 +- .../test/OTLPMetricExporter.test.ts | 16 +-- .../README.md | 2 +- .../src/OTLPMetricExporterBase.ts | 35 ++++- .../src/OTLPMetricExporterOptions.ts | 12 +- .../browser/CollectorMetricExporter.test.ts | 20 +-- .../test/node/CollectorMetricExporter.test.ts | 134 +++++++++++++++++- .../README.md | 2 +- .../test/OTLPMetricExporter.test.ts | 10 +- 10 files changed, 202 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a162eae0a4..865601c10d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,11 @@ For experimental package changes, see the [experimental CHANGELOG](experimental/ ### :rocket: (Enhancement) +* feat(exporter-metrics-otlp-*)!: add LowMemory metrics temporality preference [#3915](https://github.com/open-telemetry/opentelemetry-js/pull/3915) + * Breaking: From now on `AggregationTemporalityPreference` has to be used instead of `AggregationTemporality` when configuring the exporter. + * Adds support for [LowMemory temporality preference](https://github.com/open-telemetry/opentelemetry-specification/blob/f09624bb97e9be3be259733b93be507df18927bd/specification/metrics/sdk_exporters/otlp.md#additional-configuration) + * Adds support for `lowmemory` in `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE` + ### :bug: (Bug Fix) * fix(sdk-metrics): Update default Histogram's boundary to match OTEL's spec [#3893](https://github.com/open-telemetry/opentelemetry-js/pull/3893/) @chigia001 diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/README.md b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/README.md index 5445862afc..05f6b48039 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/README.md +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/README.md @@ -71,7 +71,7 @@ In addition to settings passed to the constructor, the exporter also supports co | OTEL_EXPORTER_OTLP_CLIENT_KEY | The path to the file containing private client key to use when verifying an OTLP trace, metric or log client's TLS credentials. Must provide a client certificate/chain when providing a private client key. By default no client key file is used. | | OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE | The path to the file containing trusted client certificate/chain for clients private key to use when verifying an OTLP metric server's TLS credentials. Must provide a private client key when providing a certificate/chain. By default no chain file is used. | | OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE | The path to the file containing trusted client certificate/chain for clients private key to use when verifying an OTLP trace, metric and log server's TLS credentials. Must provide a private client key when providing a certificate/chain. By default no chain file is used. | -| OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE | The exporters aggregation temporality preference. Valid values are `cumulative`, and `delta`. `cumulative` selects cumulative temporality for all instrument kinds. `delta` selects delta aggregation temporality for Counter, Asynchronous Counter and Histogram instrument kinds, and selects cumulative aggregation for UpDownCounter and Asynchronous UpDownCounter instrument kinds. By default `cumulative` is used. | +| OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE | The exporters aggregation temporality preference. Valid values are `cumulative`, `delta`, and `lowmemory`. `cumulative` selects cumulative temporality for all instrument kinds. `delta` selects delta aggregation temporality for Counter, Asynchronous Counter and Histogram instrument kinds, and selects cumulative aggregation for UpDownCounter and Asynchronous UpDownCounter instrument kinds. `lowmemory` select delta aggregation temporality for Synchronous Counter and Histogram instrument kinds, and selects cumulative aggregation for Synchronous UpDownCounter, Asynchronous Counter and Asynchronous UpDownCounter instrument kinds. By default `cumulative` is used. | > Settings configured programmatically take precedence over environment variables. Per-signal environment variables take precedence over non-per-signal environment variables. diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts index 6749c60106..a85d2f342e 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/test/OTLPMetricExporter.test.ts @@ -35,15 +35,13 @@ import { setUp, shutdown, } from './metricsHelper'; -import { - AggregationTemporality, - ResourceMetrics, -} from '@opentelemetry/sdk-metrics'; +import { ResourceMetrics } from '@opentelemetry/sdk-metrics'; import { IExportMetricsServiceRequest, IResourceMetrics, } from '@opentelemetry/otlp-transformer'; import { VERSION } from '../src/version'; +import { AggregationTemporalityPreference } from '@opentelemetry/exporter-metrics-otlp-http'; const metricsServiceProtoPath = 'opentelemetry/proto/collector/metrics/v1/metrics_service.proto'; @@ -144,7 +142,7 @@ const testOTLPMetricExporter = (params: TestParams) => { url: address, credentials, metadata: metadata, - temporalityPreference: AggregationTemporality.CUMULATIVE, + temporalityPreference: AggregationTemporalityPreference.CUMULATIVE, }); setUp(); @@ -199,7 +197,7 @@ const testOTLPMetricExporter = (params: TestParams) => { headers: { foo: 'bar', }, - temporalityPreference: AggregationTemporality.CUMULATIVE, + temporalityPreference: AggregationTemporalityPreference.CUMULATIVE, }); const args = warnStub.args[0]; assert.strictEqual(args[0], 'Headers cannot be set when using grpc'); @@ -211,7 +209,7 @@ const testOTLPMetricExporter = (params: TestParams) => { } collectorExporter = new OTLPMetricExporter({ url: `${address}/v1/metrics`, - temporalityPreference: AggregationTemporality.CUMULATIVE, + temporalityPreference: AggregationTemporalityPreference.CUMULATIVE, }); const args = warnStub.args[0]; assert.strictEqual( @@ -294,7 +292,7 @@ describe('OTLPMetricExporter - node (getDefaultUrl)', () => { const url = 'http://foo.bar.com'; const collectorExporter = new OTLPMetricExporter({ url, - temporalityPreference: AggregationTemporality.CUMULATIVE, + temporalityPreference: AggregationTemporalityPreference.CUMULATIVE, }); setTimeout(() => { assert.strictEqual(collectorExporter._otlpExporter.url, 'foo.bar.com'); @@ -343,7 +341,7 @@ describe('when configuring via environment', () => { envSource.OTEL_EXPORTER_OTLP_METRICS_HEADERS = 'foo=boo'; const collectorExporter = new OTLPMetricExporter({ metadata, - temporalityPreference: AggregationTemporality.CUMULATIVE, + temporalityPreference: AggregationTemporalityPreference.CUMULATIVE, }); assert.deepStrictEqual( collectorExporter._otlpExporter.metadata?.get('foo'), diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/README.md b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/README.md index 0645aa1219..b475d02838 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/README.md +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/README.md @@ -81,7 +81,7 @@ In addition to settings passed to the constructor, the exporter also supports co |---------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | OTEL_EXPORTER_OTLP_ENDPOINT | The endpoint to send metrics to. This will also be used for the traces exporter if `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` is not configured. By default `http://localhost:4318` will be used. `/v1/metrics` will be automatically appended to configured values. | | OTEL_EXPORTER_OTLP_METRICS_ENDPOINT | The endpoint to send metrics to. By default `https://localhost:4318/v1/metrics` will be used. `v1/metrics` will not be appended automatically and has to be added explicitly. | -| OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE | The exporters aggregation temporality preference. Valid values are `cumulative`, and `delta`. `cumulative` selects cumulative temporality for all instrument kinds. `delta` selects delta aggregation temporality for Counter, Asynchronous Counter and Histogram instrument kinds, and selects cumulative aggregation for UpDownCounter and Asynchronous UpDownCounter instrument kinds. By default `cumulative` is used. | +| OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE | The exporters aggregation temporality preference. Valid values are `cumulative`, `delta`, and `lowmemory`. `cumulative` selects cumulative temporality for all instrument kinds. `delta` selects delta aggregation temporality for Counter, Asynchronous Counter and Histogram instrument kinds, and selects cumulative aggregation for UpDownCounter and Asynchronous UpDownCounter instrument kinds. `lowmemory` selects delta aggregation temporality for Counter and Histogram instrument kinds, and selects cumulative aggregation for UpDownCounter, Asynchronous Counter and Asynchronous UpDownCounter instrument kinds. By default `cumulative` is used. | > Settings configured programmatically take precedence over environment variables. Per-signal environment variables take > precedence over non-per-signal environment variables. diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/OTLPMetricExporterBase.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/OTLPMetricExporterBase.ts index bbebe6cd1f..21177777f6 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/OTLPMetricExporterBase.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/OTLPMetricExporterBase.ts @@ -22,7 +22,10 @@ import { PushMetricExporter, ResourceMetrics, } from '@opentelemetry/sdk-metrics'; -import { OTLPMetricExporterOptions } from './OTLPMetricExporterOptions'; +import { + AggregationTemporalityPreference, + OTLPMetricExporterOptions, +} from './OTLPMetricExporterOptions'; import { OTLPExporterBase } from '@opentelemetry/otlp-exporter-base'; import { IExportMetricsServiceRequest } from '@opentelemetry/otlp-transformer'; import { diag } from '@opentelemetry/api'; @@ -45,6 +48,21 @@ export const DeltaTemporalitySelector: AggregationTemporalitySelector = ( } }; +export const LowMemoryTemporalitySelector: AggregationTemporalitySelector = ( + instrumentType: InstrumentType +) => { + switch (instrumentType) { + case InstrumentType.COUNTER: + case InstrumentType.HISTOGRAM: + return AggregationTemporality.DELTA; + case InstrumentType.UP_DOWN_COUNTER: + case InstrumentType.OBSERVABLE_UP_DOWN_COUNTER: + case InstrumentType.OBSERVABLE_COUNTER: + case InstrumentType.OBSERVABLE_GAUGE: + return AggregationTemporality.CUMULATIVE; + } +}; + function chooseTemporalitySelectorFromEnvironment() { const env = getEnv(); const configuredTemporality = @@ -56,6 +74,9 @@ function chooseTemporalitySelectorFromEnvironment() { if (configuredTemporality === 'delta') { return DeltaTemporalitySelector; } + if (configuredTemporality === 'lowmemory') { + return LowMemoryTemporalitySelector; + } diag.warn( `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE is set to '${env.OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE}', but only 'cumulative' and 'delta' are allowed. Using default ('cumulative') instead.` @@ -64,12 +85,18 @@ function chooseTemporalitySelectorFromEnvironment() { } function chooseTemporalitySelector( - temporalityPreference?: AggregationTemporality + temporalityPreference?: + | AggregationTemporalityPreference + | AggregationTemporality ): AggregationTemporalitySelector { // Directly passed preference has priority. if (temporalityPreference != null) { - if (temporalityPreference === AggregationTemporality.DELTA) { + if (temporalityPreference === AggregationTemporalityPreference.DELTA) { return DeltaTemporalitySelector; + } else if ( + temporalityPreference === AggregationTemporalityPreference.LOWMEMORY + ) { + return LowMemoryTemporalitySelector; } return CumulativeTemporalitySelector; } @@ -86,7 +113,7 @@ export class OTLPMetricExporterBase< > implements PushMetricExporter { public _otlpExporter: T; - protected _aggregationTemporalitySelector: AggregationTemporalitySelector; + private _aggregationTemporalitySelector: AggregationTemporalitySelector; constructor(exporter: T, config?: OTLPMetricExporterOptions) { this._otlpExporter = exporter; diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/OTLPMetricExporterOptions.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/OTLPMetricExporterOptions.ts index 32529efee1..e03bde4e75 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/OTLPMetricExporterOptions.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/OTLPMetricExporterOptions.ts @@ -14,9 +14,17 @@ * limitations under the License. */ -import { AggregationTemporality } from '@opentelemetry/sdk-metrics'; import { OTLPExporterConfigBase } from '@opentelemetry/otlp-exporter-base'; +import { AggregationTemporality } from '@opentelemetry/sdk-metrics'; export interface OTLPMetricExporterOptions extends OTLPExporterConfigBase { - temporalityPreference?: AggregationTemporality; + temporalityPreference?: + | AggregationTemporalityPreference + | AggregationTemporality; +} + +export enum AggregationTemporalityPreference { + DELTA, + CUMULATIVE, + LOWMEMORY, } diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/CollectorMetricExporter.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/CollectorMetricExporter.test.ts index 7dbc7cc889..053376b032 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/CollectorMetricExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/CollectorMetricExporter.test.ts @@ -22,10 +22,7 @@ import { Histogram, } from '@opentelemetry/api'; import { ExportResultCode, hrTimeToNanoseconds } from '@opentelemetry/core'; -import { - AggregationTemporality, - ResourceMetrics, -} from '@opentelemetry/sdk-metrics'; +import { ResourceMetrics } from '@opentelemetry/sdk-metrics'; import * as assert from 'assert'; import * as sinon from 'sinon'; import { OTLPMetricExporter } from '../../src/platform/browser'; @@ -44,7 +41,10 @@ import { setUp, shutdown, } from '../metricsHelper'; -import { OTLPMetricExporterOptions } from '../../src'; +import { + AggregationTemporalityPreference, + OTLPMetricExporterOptions, +} from '../../src'; import { OTLPExporterConfigBase } from '@opentelemetry/otlp-exporter-base'; import { IExportMetricsServiceRequest } from '@opentelemetry/otlp-transformer'; @@ -102,7 +102,7 @@ describe('OTLPMetricExporter - web', () => { beforeEach(() => { collectorExporter = new OTLPMetricExporter({ url: 'http://foo.bar.com', - temporalityPreference: AggregationTemporality.CUMULATIVE, + temporalityPreference: AggregationTemporalityPreference.CUMULATIVE, }); }); @@ -230,7 +230,7 @@ describe('OTLPMetricExporter - web', () => { (window.navigator as any).sendBeacon = false; collectorExporter = new OTLPMetricExporter({ url: 'http://foo.bar.com', - temporalityPreference: AggregationTemporality.CUMULATIVE, + temporalityPreference: AggregationTemporalityPreference.CUMULATIVE, }); // Overwrites the start time to make tests consistent Object.defineProperty(collectorExporter, '_startTime', { @@ -386,7 +386,7 @@ describe('OTLPMetricExporter - web', () => { beforeEach(() => { collectorExporterConfig = { headers: customHeaders, - temporalityPreference: AggregationTemporality.CUMULATIVE, + temporalityPreference: AggregationTemporalityPreference.CUMULATIVE, }; server = sinon.fakeServer.create(); }); @@ -518,7 +518,7 @@ describe('when configuring via environment', () => { envSource.OTEL_EXPORTER_OTLP_HEADERS = 'foo=bar'; const collectorExporter = new OTLPMetricExporter({ headers: {}, - temporalityPreference: AggregationTemporality.CUMULATIVE, + temporalityPreference: AggregationTemporalityPreference.CUMULATIVE, }); assert.strictEqual( collectorExporter['_otlpExporter']['_headers'].foo, @@ -531,7 +531,7 @@ describe('when configuring via environment', () => { envSource.OTEL_EXPORTER_OTLP_METRICS_HEADERS = 'foo=boo'; const collectorExporter = new OTLPMetricExporter({ headers: {}, - temporalityPreference: AggregationTemporality.CUMULATIVE, + temporalityPreference: AggregationTemporalityPreference.CUMULATIVE, }); assert.strictEqual( collectorExporter['_otlpExporter']['_headers'].foo, diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/node/CollectorMetricExporter.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/node/CollectorMetricExporter.test.ts index 042e5ebb4b..0844e5a9f2 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/node/CollectorMetricExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/node/CollectorMetricExporter.test.ts @@ -20,8 +20,10 @@ import * as assert from 'assert'; import * as http from 'http'; import * as sinon from 'sinon'; import { + AggregationTemporalityPreference, CumulativeTemporalitySelector, DeltaTemporalitySelector, + LowMemoryTemporalitySelector, OTLPMetricExporterOptions, } from '../../src'; @@ -42,6 +44,7 @@ import { import { MockedResponse } from './nodeHelpers'; import { AggregationTemporality, + InstrumentType, ResourceMetrics, } from '@opentelemetry/sdk-metrics'; import { PassThrough, Stream } from 'stream'; @@ -105,6 +108,116 @@ describe('OTLPMetricExporter - node with json over http', () => { }); }); + describe('temporality', () => { + it('should use the right temporality when Cumulative preference is selected', () => { + const exporter = new OTLPMetricExporter({ + temporalityPreference: AggregationTemporalityPreference.CUMULATIVE, + }); + + assert.equal( + exporter.selectAggregationTemporality(InstrumentType.COUNTER), + AggregationTemporality.CUMULATIVE, + 'Counter' + ); + assert.equal( + exporter.selectAggregationTemporality(InstrumentType.HISTOGRAM), + AggregationTemporality.CUMULATIVE, + 'Histogram' + ); + assert.equal( + exporter.selectAggregationTemporality(InstrumentType.UP_DOWN_COUNTER), + AggregationTemporality.CUMULATIVE, + 'UpDownCounter' + ); + assert.equal( + exporter.selectAggregationTemporality( + InstrumentType.OBSERVABLE_COUNTER + ), + AggregationTemporality.CUMULATIVE, + 'Asynchronous Counter' + ); + assert.equal( + exporter.selectAggregationTemporality( + InstrumentType.OBSERVABLE_UP_DOWN_COUNTER + ), + AggregationTemporality.CUMULATIVE, + 'Asynchronous UpDownCounter' + ); + }); + + it('should use the right temporality when Delta preference is selected', () => { + const exporter = new OTLPMetricExporter({ + temporalityPreference: AggregationTemporalityPreference.DELTA, + }); + + assert.equal( + exporter.selectAggregationTemporality(InstrumentType.COUNTER), + AggregationTemporality.DELTA, + 'Counter' + ); + assert.equal( + exporter.selectAggregationTemporality(InstrumentType.HISTOGRAM), + AggregationTemporality.DELTA, + 'Histogram' + ); + assert.equal( + exporter.selectAggregationTemporality(InstrumentType.UP_DOWN_COUNTER), + AggregationTemporality.CUMULATIVE, + 'UpDownCounter' + ); + assert.equal( + exporter.selectAggregationTemporality( + InstrumentType.OBSERVABLE_COUNTER + ), + AggregationTemporality.DELTA, + 'Asynchronous Counter' + ); + assert.equal( + exporter.selectAggregationTemporality( + InstrumentType.OBSERVABLE_UP_DOWN_COUNTER + ), + AggregationTemporality.CUMULATIVE, + 'Asynchronous UpDownCounter' + ); + }); + + it('should use the right temporality when LowMemory preference is selected', () => { + const exporter = new OTLPMetricExporter({ + temporalityPreference: AggregationTemporalityPreference.LOWMEMORY, + }); + + assert.equal( + exporter.selectAggregationTemporality(InstrumentType.COUNTER), + AggregationTemporality.DELTA, + 'Counter' + ); + assert.equal( + exporter.selectAggregationTemporality(InstrumentType.HISTOGRAM), + AggregationTemporality.DELTA, + 'Histogram' + ); + assert.equal( + exporter.selectAggregationTemporality(InstrumentType.UP_DOWN_COUNTER), + AggregationTemporality.CUMULATIVE, + 'UpDownCounter' + ); + assert.equal( + exporter.selectAggregationTemporality( + InstrumentType.OBSERVABLE_COUNTER + ), + AggregationTemporality.CUMULATIVE, + 'Asynchronous Counter' + ); + assert.equal( + exporter.selectAggregationTemporality( + InstrumentType.OBSERVABLE_UP_DOWN_COUNTER + ), + AggregationTemporality.CUMULATIVE, + 'Asynchronous UpDownCounter' + ); + }); + }); + describe('when configuring via environment', () => { const envSource = process.env; it('should use url defined in env that ends with root path and append version and signal path', () => { @@ -230,6 +343,21 @@ describe('OTLPMetricExporter - node with json over http', () => { ); } }); + it('should use low memory temporality defined via env', () => { + for (const envValue of [ + 'lowmemory', + 'LOWMEMORY', + 'LoWMeMOrY', + 'lowmemory ', + ]) { + envSource.OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE = envValue; + const exporter = new OTLPMetricExporter(); + assert.strictEqual( + exporter['_aggregationTemporalitySelector'], + LowMemoryTemporalitySelector + ); + } + }); it('should configure cumulative temporality with invalid value in env', () => { for (const envValue of ['invalid', ' ']) { envSource.OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE = envValue; @@ -244,7 +372,7 @@ describe('OTLPMetricExporter - node with json over http', () => { envSource.OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE = 'cumulative'; const exporter = new OTLPMetricExporter({ - temporalityPreference: AggregationTemporality.DELTA, + temporalityPreference: AggregationTemporalityPreference.DELTA, }); assert.strictEqual( exporter['_aggregationTemporalitySelector'], @@ -264,7 +392,7 @@ describe('OTLPMetricExporter - node with json over http', () => { url: 'http://foo.bar.com', keepAlive: true, httpAgentOptions: { keepAliveMsecs: 2000 }, - temporalityPreference: AggregationTemporality.CUMULATIVE, + temporalityPreference: AggregationTemporalityPreference.CUMULATIVE, }; collectorExporter = new OTLPMetricExporter(collectorExporterConfig); @@ -485,7 +613,7 @@ describe('OTLPMetricExporter - node with json over http', () => { const url = 'http://foo.bar.com'; const collectorExporter = new OTLPMetricExporter({ url, - temporalityPreference: AggregationTemporality.CUMULATIVE, + temporalityPreference: AggregationTemporalityPreference.CUMULATIVE, }); setTimeout(() => { assert.strictEqual(collectorExporter._otlpExporter.url, url); diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/README.md b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/README.md index 6a2e160bac..5f89cc17bc 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/README.md +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/README.md @@ -51,7 +51,7 @@ In addition to settings passed to the constructor, the exporter also supports co |---------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | OTEL_EXPORTER_OTLP_ENDPOINT | The endpoint to send metrics to. This will also be used for the traces exporter if `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` is not configured. By default `http://localhost:4318` will be used. `/v1/metrics` will be automatically appended to configured values. | | OTEL_EXPORTER_OTLP_METRICS_ENDPOINT | The endpoint to send metrics to. By default `https://localhost:4318/v1/metrics` will be used. `v1/metrics` will not be appended automatically and has to be added explicitly. | -| OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE | The exporters aggregation temporality preference. Valid values are `cumulative`, and `delta`. `cumulative` selects cumulative temporality for all instrument kinds. `delta` selects delta aggregation temporality for Counter, Asynchronous Counter and Histogram instrument kinds, and selects cumulative aggregation for UpDownCounter and Asynchronous UpDownCounter instrument kinds. By default `cumulative` is used. | +| OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE | The exporters aggregation temporality preference. Valid values are `cumulative`, `delta` and `lowmemory`. `cumulative` selects cumulative temporality for all instrument kinds. `delta` selects delta aggregation temporality for Counter, Asynchronous Counter and Histogram instrument kinds, and selects cumulative aggregation for UpDownCounter and Asynchronous UpDownCounter instrument kinds. `lowmemory` selects delta aggregation temporality for Counter and Histogram instrument kinds, and selects cumulative aggregation for UpDownCounter, Asynchronous Counter and Asynchronous UpDownCounter instrument kinds. By default `cumulative` is used. | > Settings configured programmatically take precedence over environment variables. Per-signal environment variables take > precedence over non-per-signal environment variables. diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/OTLPMetricExporter.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/OTLPMetricExporter.test.ts index d3270b6a9f..4d4856481d 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/OTLPMetricExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/test/OTLPMetricExporter.test.ts @@ -38,11 +38,11 @@ import { setUp, shutdown, } from './metricsHelper'; +import { ResourceMetrics } from '@opentelemetry/sdk-metrics'; import { - AggregationTemporality, - ResourceMetrics, -} from '@opentelemetry/sdk-metrics'; -import { OTLPMetricExporterOptions } from '@opentelemetry/exporter-metrics-otlp-http'; + AggregationTemporalityPreference, + OTLPMetricExporterOptions, +} from '@opentelemetry/exporter-metrics-otlp-http'; import { Stream, PassThrough } from 'stream'; import { OTLPExporterNodeConfigBase } from '@opentelemetry/otlp-exporter-base'; import { IExportMetricsServiceRequest } from '@opentelemetry/otlp-transformer'; @@ -176,7 +176,7 @@ describe('OTLPMetricExporter - node with proto over http', () => { url: 'http://foo.bar.com', keepAlive: true, httpAgentOptions: { keepAliveMsecs: 2000 }, - temporalityPreference: AggregationTemporality.CUMULATIVE, + temporalityPreference: AggregationTemporalityPreference.CUMULATIVE, }; collectorExporter = new OTLPMetricExporter(collectorExporterConfig); setUp(); From 1ce8a899cf2af1790787e48dad36769fe3af7b0d Mon Sep 17 00:00:00 2001 From: Jackson Weber <47067795+JacksonWeber@users.noreply.github.com> Date: Mon, 3 Jul 2023 04:34:35 -0700 Subject: [PATCH 52/71] Update the Prometheus Exporter to by Default not Append Timestamp (#3961) --- CHANGELOG.md | 1 + .../src/PrometheusExporter.ts | 2 +- .../src/PrometheusSerializer.ts | 2 +- .../test/PrometheusExporter.test.ts | 68 ++++----- .../test/PrometheusSerializer.test.ts | 141 +++++++++--------- 5 files changed, 106 insertions(+), 108 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 865601c10d..7de3dc1f1b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ For experimental package changes, see the [experimental CHANGELOG](experimental/ ### :bug: (Bug Fix) +* fix(opentelemetry-exporter-prometheus): Update default PrometheusExporter to not append a timestamp to match the text based exposition format [#3961](https://github.com/open-telemetry/opentelemetry-js/pull/3961) @JacksonWeber * fix(sdk-metrics): Update default Histogram's boundary to match OTEL's spec [#3893](https://github.com/open-telemetry/opentelemetry-js/pull/3893/) @chigia001 * fix(sdk-metrics): preserve startTime for cumulative ExponentialHistograms [#3934](https://github.com/open-telemetry/opentelemetry-js/pull/3934/) @aabmass diff --git a/experimental/packages/opentelemetry-exporter-prometheus/src/PrometheusExporter.ts b/experimental/packages/opentelemetry-exporter-prometheus/src/PrometheusExporter.ts index 2a7cb5fb43..8f84c5134c 100644 --- a/experimental/packages/opentelemetry-exporter-prometheus/src/PrometheusExporter.ts +++ b/experimental/packages/opentelemetry-exporter-prometheus/src/PrometheusExporter.ts @@ -33,7 +33,7 @@ export class PrometheusExporter extends MetricReader { port: 9464, endpoint: '/metrics', prefix: '', - appendTimestamp: true, + appendTimestamp: false, }; private readonly _host?: string; diff --git a/experimental/packages/opentelemetry-exporter-prometheus/src/PrometheusSerializer.ts b/experimental/packages/opentelemetry-exporter-prometheus/src/PrometheusSerializer.ts index 75b29bb61b..7dc424a2b7 100644 --- a/experimental/packages/opentelemetry-exporter-prometheus/src/PrometheusSerializer.ts +++ b/experimental/packages/opentelemetry-exporter-prometheus/src/PrometheusSerializer.ts @@ -176,7 +176,7 @@ export class PrometheusSerializer { private _prefix: string | undefined; private _appendTimestamp: boolean; - constructor(prefix?: string, appendTimestamp = true) { + constructor(prefix?: string, appendTimestamp = false) { if (prefix) { this._prefix = prefix + '_'; } diff --git a/experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusExporter.test.ts b/experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusExporter.test.ts index 292ad3db1e..b4c6f0ade0 100644 --- a/experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusExporter.test.ts @@ -21,12 +21,12 @@ import * as sinon from 'sinon'; import * as http from 'http'; import { PrometheusExporter } from '../src'; import { - mockedHrTimeMs, mockHrTime, sdkLanguage, sdkName, sdkVersion, serviceName, + mockedHrTimeMs, } from './util'; import { SinonStubbedInstance } from 'sinon'; @@ -290,7 +290,7 @@ describe('PrometheusExporter', () => { ...serializedDefaultResourceLines, '# HELP counter_total a test description', '# TYPE counter_total counter', - `counter_total{key1="attributeValue1"} 10 ${mockedHrTimeMs}`, + 'counter_total{key1="attributeValue1"} 10', '', ]); }); @@ -320,7 +320,7 @@ describe('PrometheusExporter', () => { ...serializedDefaultResourceLines, '# HELP metric_observable_gauge a test description', '# TYPE metric_observable_gauge gauge', - `metric_observable_gauge{pid="123",core="1"} 0.999 ${mockedHrTimeMs}`, + 'metric_observable_gauge{pid="123",core="1"} 0.999', '', ]); }); @@ -340,8 +340,8 @@ describe('PrometheusExporter', () => { ...serializedDefaultResourceLines, '# HELP counter_total a test description', '# TYPE counter_total counter', - `counter_total{counterKey1="attributeValue1"} 10 ${mockedHrTimeMs}`, - `counter_total{counterKey1="attributeValue2"} 20 ${mockedHrTimeMs}`, + 'counter_total{counterKey1="attributeValue1"} 10', + 'counter_total{counterKey1="attributeValue2"} 20', '', ]); }); @@ -389,7 +389,7 @@ describe('PrometheusExporter', () => { ...serializedDefaultResourceLines, '# HELP counter_total description missing', '# TYPE counter_total counter', - `counter_total{key1="attributeValue1"} 10 ${mockedHrTimeMs}`, + 'counter_total{key1="attributeValue1"} 10', '', ]); }); @@ -406,7 +406,7 @@ describe('PrometheusExporter', () => { ...serializedDefaultResourceLines, '# HELP counter_bad_name_total description missing', '# TYPE counter_bad_name_total counter', - `counter_bad_name_total{key1="attributeValue1"} 10 ${mockedHrTimeMs}`, + 'counter_bad_name_total{key1="attributeValue1"} 10', '', ]); }); @@ -424,7 +424,7 @@ describe('PrometheusExporter', () => { ...serializedDefaultResourceLines, '# HELP counter a test description', '# TYPE counter gauge', - `counter{key1="attributeValue1"} 20 ${mockedHrTimeMs}`, + 'counter{key1="attributeValue1"} 20', '', ]); }); @@ -453,7 +453,7 @@ describe('PrometheusExporter', () => { ...serializedDefaultResourceLines, '# HELP metric_observable_counter a test description', '# TYPE metric_observable_counter counter', - `metric_observable_counter{key1="attributeValue1"} 20 ${mockedHrTimeMs}`, + 'metric_observable_counter{key1="attributeValue1"} 20', '', ]); }); @@ -484,7 +484,7 @@ describe('PrometheusExporter', () => { ...serializedDefaultResourceLines, '# HELP metric_observable_up_down_counter a test description', '# TYPE metric_observable_up_down_counter gauge', - `metric_observable_up_down_counter{key1="attributeValue1"} 20 ${mockedHrTimeMs}`, + 'metric_observable_up_down_counter{key1="attributeValue1"} 20', '', ]); }); @@ -503,24 +503,24 @@ describe('PrometheusExporter', () => { ...serializedDefaultResourceLines, '# HELP test_histogram a test description', '# TYPE test_histogram histogram', - `test_histogram_count{key1="attributeValue1"} 1 ${mockedHrTimeMs}`, - `test_histogram_sum{key1="attributeValue1"} 20 ${mockedHrTimeMs}`, - `test_histogram_bucket{key1="attributeValue1",le="0"} 0 ${mockedHrTimeMs}`, - `test_histogram_bucket{key1="attributeValue1",le="5"} 0 ${mockedHrTimeMs}`, - `test_histogram_bucket{key1="attributeValue1",le="10"} 0 ${mockedHrTimeMs}`, - `test_histogram_bucket{key1="attributeValue1",le="25"} 1 ${mockedHrTimeMs}`, - `test_histogram_bucket{key1="attributeValue1",le="50"} 1 ${mockedHrTimeMs}`, - `test_histogram_bucket{key1="attributeValue1",le="75"} 1 ${mockedHrTimeMs}`, - `test_histogram_bucket{key1="attributeValue1",le="100"} 1 ${mockedHrTimeMs}`, - `test_histogram_bucket{key1="attributeValue1",le="250"} 1 ${mockedHrTimeMs}`, - `test_histogram_bucket{key1="attributeValue1",le="500"} 1 ${mockedHrTimeMs}`, - `test_histogram_bucket{key1="attributeValue1",le="750"} 1 ${mockedHrTimeMs}`, - `test_histogram_bucket{key1="attributeValue1",le="1000"} 1 ${mockedHrTimeMs}`, - `test_histogram_bucket{key1="attributeValue1",le="2500"} 1 ${mockedHrTimeMs}`, - `test_histogram_bucket{key1="attributeValue1",le="5000"} 1 ${mockedHrTimeMs}`, - `test_histogram_bucket{key1="attributeValue1",le="7500"} 1 ${mockedHrTimeMs}`, - `test_histogram_bucket{key1="attributeValue1",le="10000"} 1 ${mockedHrTimeMs}`, - `test_histogram_bucket{key1="attributeValue1",le="+Inf"} 1 ${mockedHrTimeMs}`, + 'test_histogram_count{key1="attributeValue1"} 1', + 'test_histogram_sum{key1="attributeValue1"} 20', + 'test_histogram_bucket{key1="attributeValue1",le="0"} 0', + 'test_histogram_bucket{key1="attributeValue1",le="5"} 0', + 'test_histogram_bucket{key1="attributeValue1",le="10"} 0', + 'test_histogram_bucket{key1="attributeValue1",le="25"} 1', + 'test_histogram_bucket{key1="attributeValue1",le="50"} 1', + 'test_histogram_bucket{key1="attributeValue1",le="75"} 1', + 'test_histogram_bucket{key1="attributeValue1",le="100"} 1', + 'test_histogram_bucket{key1="attributeValue1",le="250"} 1', + 'test_histogram_bucket{key1="attributeValue1",le="500"} 1', + 'test_histogram_bucket{key1="attributeValue1",le="750"} 1', + 'test_histogram_bucket{key1="attributeValue1",le="1000"} 1', + 'test_histogram_bucket{key1="attributeValue1",le="2500"} 1', + 'test_histogram_bucket{key1="attributeValue1",le="5000"} 1', + 'test_histogram_bucket{key1="attributeValue1",le="7500"} 1', + 'test_histogram_bucket{key1="attributeValue1",le="10000"} 1', + 'test_histogram_bucket{key1="attributeValue1",le="+Inf"} 1', '', ]); }); @@ -562,7 +562,7 @@ describe('PrometheusExporter', () => { ...serializedDefaultResourceLines, '# HELP test_prefix_counter_total description missing', '# TYPE test_prefix_counter_total counter', - `test_prefix_counter_total{key1="attributeValue1"} 10 ${mockedHrTimeMs}`, + 'test_prefix_counter_total{key1="attributeValue1"} 10', '', ]); @@ -591,7 +591,7 @@ describe('PrometheusExporter', () => { ...serializedDefaultResourceLines, '# HELP counter_total description missing', '# TYPE counter_total counter', - `counter_total{key1="attributeValue1"} 10 ${mockedHrTimeMs}`, + 'counter_total{key1="attributeValue1"} 10', '', ]); @@ -620,7 +620,7 @@ describe('PrometheusExporter', () => { ...serializedDefaultResourceLines, '# HELP counter_total description missing', '# TYPE counter_total counter', - `counter_total{key1="attributeValue1"} 10 ${mockedHrTimeMs}`, + 'counter_total{key1="attributeValue1"} 10', '', ]); @@ -632,10 +632,10 @@ describe('PrometheusExporter', () => { ); }); - it('should export a metric without timestamp', done => { + it('should export a metric with timestamp', done => { exporter = new PrometheusExporter( { - appendTimestamp: false, + appendTimestamp: true, }, async () => { setup(exporter); @@ -649,7 +649,7 @@ describe('PrometheusExporter', () => { ...serializedDefaultResourceLines, '# HELP counter_total description missing', '# TYPE counter_total counter', - 'counter_total{key1="attributeValue1"} 10', + `counter_total{key1="attributeValue1"} 10 ${mockedHrTimeMs}`, '', ]); diff --git a/experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusSerializer.test.ts b/experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusSerializer.test.ts index 5495ca0a8b..1a39aae003 100644 --- a/experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusSerializer.test.ts +++ b/experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusSerializer.test.ts @@ -118,17 +118,17 @@ describe('PrometheusSerializer', () => { it('should serialize metrics with singular data type', async () => { const serializer = new PrometheusSerializer(); const result = await testSerializer(serializer); + assert.strictEqual(result, 'test_total{foo1="bar1",foo2="bar2"} 1\n'); + }); + + it('should serialize metrics with singular data type with timestamp', async () => { + const serializer = new PrometheusSerializer(undefined, true); + const result = await testSerializer(serializer); assert.strictEqual( result, `test_total{foo1="bar1",foo2="bar2"} 1 ${mockedHrTimeMs}\n` ); }); - - it('should serialize metrics with singular data type without timestamp', async () => { - const serializer = new PrometheusSerializer(undefined, false); - const result = await testSerializer(serializer); - assert.strictEqual(result, 'test_total{foo1="bar1",foo2="bar2"} 1\n'); - }); }); describe('Histogram', () => { @@ -168,20 +168,6 @@ describe('PrometheusSerializer', () => { it('should serialize metrics with histogram data type', async () => { const serializer = new PrometheusSerializer(); const result = await testSerializer(serializer); - assert.strictEqual( - result, - `test_count{foo1="bar1",foo2="bar2"} 1 ${mockedHrTimeMs}\n` + - `test_sum{foo1="bar1",foo2="bar2"} 5 ${mockedHrTimeMs}\n` + - `test_bucket{foo1="bar1",foo2="bar2",le="1"} 0 ${mockedHrTimeMs}\n` + - `test_bucket{foo1="bar1",foo2="bar2",le="10"} 1 ${mockedHrTimeMs}\n` + - `test_bucket{foo1="bar1",foo2="bar2",le="100"} 1 ${mockedHrTimeMs}\n` + - `test_bucket{foo1="bar1",foo2="bar2",le="+Inf"} 1 ${mockedHrTimeMs}\n` - ); - }); - - it('serialize metric record with sum aggregator without timestamp', async () => { - const serializer = new PrometheusSerializer(undefined, false); - const result = await testSerializer(serializer); assert.strictEqual( result, 'test_count{foo1="bar1",foo2="bar2"} 1\n' + @@ -192,6 +178,20 @@ describe('PrometheusSerializer', () => { 'test_bucket{foo1="bar1",foo2="bar2",le="+Inf"} 1\n' ); }); + + it('serialize metric record with sum aggregator with timestamp', async () => { + const serializer = new PrometheusSerializer(undefined, true); + const result = await testSerializer(serializer); + assert.strictEqual( + result, + `test_count{foo1="bar1",foo2="bar2"} 1 ${mockedHrTimeMs}\n` + + `test_sum{foo1="bar1",foo2="bar2"} 5 ${mockedHrTimeMs}\n` + + `test_bucket{foo1="bar1",foo2="bar2",le="1"} 0 ${mockedHrTimeMs}\n` + + `test_bucket{foo1="bar1",foo2="bar2",le="10"} 1 ${mockedHrTimeMs}\n` + + `test_bucket{foo1="bar1",foo2="bar2",le="100"} 1 ${mockedHrTimeMs}\n` + + `test_bucket{foo1="bar1",foo2="bar2",le="+Inf"} 1 ${mockedHrTimeMs}\n` + ); + }); }); }); @@ -233,20 +233,20 @@ describe('PrometheusSerializer', () => { result, '# HELP test_total foobar\n' + '# TYPE test_total counter\n' + - `test_total{val="1"} 1 ${mockedHrTimeMs}\n` + - `test_total{val="2"} 1 ${mockedHrTimeMs}\n` + 'test_total{val="1"} 1\n' + + 'test_total{val="2"} 1\n' ); }); - it('should serialize metric record without timestamp', async () => { - const serializer = new PrometheusSerializer(undefined, false); + it('should serialize metric record with timestamp', async () => { + const serializer = new PrometheusSerializer(undefined, true); const result = await testSerializer(serializer); assert.strictEqual( result, '# HELP test_total foobar\n' + '# TYPE test_total counter\n' + - 'test_total{val="1"} 1\n' + - 'test_total{val="2"} 1\n' + `test_total{val="1"} 1 ${mockedHrTimeMs}\n` + + `test_total{val="2"} 1 ${mockedHrTimeMs}\n` ); }); }); @@ -287,20 +287,20 @@ describe('PrometheusSerializer', () => { result, '# HELP test_total foobar\n' + '# TYPE test_total gauge\n' + - `test_total{val="1"} 1 ${mockedHrTimeMs}\n` + - `test_total{val="2"} 1 ${mockedHrTimeMs}\n` + 'test_total{val="1"} 1\n' + + 'test_total{val="2"} 1\n' ); }); - it('serialize metric record without timestamp', async () => { - const serializer = new PrometheusSerializer(undefined, false); + it('serialize metric record with timestamp', async () => { + const serializer = new PrometheusSerializer(undefined, true); const result = await testSerializer(serializer); assert.strictEqual( result, '# HELP test_total foobar\n' + '# TYPE test_total gauge\n' + - 'test_total{val="1"} 1\n' + - 'test_total{val="2"} 1\n' + `test_total{val="1"} 1 ${mockedHrTimeMs}\n` + + `test_total{val="2"} 1 ${mockedHrTimeMs}\n` ); }); }); @@ -341,20 +341,20 @@ describe('PrometheusSerializer', () => { result, '# HELP test_total foobar\n' + '# TYPE test_total gauge\n' + - `test_total{val="1"} 1 ${mockedHrTimeMs}\n` + - `test_total{val="2"} 1 ${mockedHrTimeMs}\n` + 'test_total{val="1"} 1\n' + + 'test_total{val="2"} 1\n' ); }); - it('serialize metric record without timestamp', async () => { - const serializer = new PrometheusSerializer(undefined, false); + it('serialize metric record with timestamp', async () => { + const serializer = new PrometheusSerializer(undefined, true); const result = await testSerializer(serializer); assert.strictEqual( result, '# HELP test_total foobar\n' + '# TYPE test_total gauge\n' + - 'test_total{val="1"} 1\n' + - 'test_total{val="2"} 1\n' + `test_total{val="1"} 1 ${mockedHrTimeMs}\n` + + `test_total{val="2"} 1 ${mockedHrTimeMs}\n` ); }); }); @@ -399,18 +399,18 @@ describe('PrometheusSerializer', () => { result, '# HELP test foobar\n' + '# TYPE test histogram\n' + - `test_count{val="1"} 3 ${mockedHrTimeMs}\n` + - `test_sum{val="1"} 175 ${mockedHrTimeMs}\n` + - `test_bucket{val="1",le="1"} 0 ${mockedHrTimeMs}\n` + - `test_bucket{val="1",le="10"} 1 ${mockedHrTimeMs}\n` + - `test_bucket{val="1",le="100"} 2 ${mockedHrTimeMs}\n` + - `test_bucket{val="1",le="+Inf"} 3 ${mockedHrTimeMs}\n` + - `test_count{val="2"} 1 ${mockedHrTimeMs}\n` + - `test_sum{val="2"} 5 ${mockedHrTimeMs}\n` + - `test_bucket{val="2",le="1"} 0 ${mockedHrTimeMs}\n` + - `test_bucket{val="2",le="10"} 1 ${mockedHrTimeMs}\n` + - `test_bucket{val="2",le="100"} 1 ${mockedHrTimeMs}\n` + - `test_bucket{val="2",le="+Inf"} 1 ${mockedHrTimeMs}\n` + 'test_count{val="1"} 3\n' + + 'test_sum{val="1"} 175\n' + + 'test_bucket{val="1",le="1"} 0\n' + + 'test_bucket{val="1",le="10"} 1\n' + + 'test_bucket{val="1",le="100"} 2\n' + + 'test_bucket{val="1",le="+Inf"} 3\n' + + 'test_count{val="2"} 1\n' + + 'test_sum{val="2"} 5\n' + + 'test_bucket{val="2",le="1"} 0\n' + + 'test_bucket{val="2",le="10"} 1\n' + + 'test_bucket{val="2",le="100"} 1\n' + + 'test_bucket{val="2",le="+Inf"} 1\n' ); }); @@ -448,16 +448,16 @@ describe('PrometheusSerializer', () => { result, '# HELP test foobar\n' + '# TYPE test histogram\n' + - `test_count{val="1"} 3 ${mockedHrTimeMs}\n` + - `test_bucket{val="1",le="1"} 0 ${mockedHrTimeMs}\n` + - `test_bucket{val="1",le="10"} 1 ${mockedHrTimeMs}\n` + - `test_bucket{val="1",le="100"} 2 ${mockedHrTimeMs}\n` + - `test_bucket{val="1",le="+Inf"} 3 ${mockedHrTimeMs}\n` + - `test_count{val="2"} 1 ${mockedHrTimeMs}\n` + - `test_bucket{val="2",le="1"} 0 ${mockedHrTimeMs}\n` + - `test_bucket{val="2",le="10"} 1 ${mockedHrTimeMs}\n` + - `test_bucket{val="2",le="100"} 1 ${mockedHrTimeMs}\n` + - `test_bucket{val="2",le="+Inf"} 1 ${mockedHrTimeMs}\n` + 'test_count{val="1"} 3\n' + + 'test_bucket{val="1",le="1"} 0\n' + + 'test_bucket{val="1",le="10"} 1\n' + + 'test_bucket{val="1",le="100"} 2\n' + + 'test_bucket{val="1",le="+Inf"} 3\n' + + 'test_count{val="2"} 1\n' + + 'test_bucket{val="2",le="1"} 0\n' + + 'test_bucket{val="2",le="10"} 1\n' + + 'test_bucket{val="2",le="100"} 1\n' + + 'test_bucket{val="2",le="+Inf"} 1\n' ); }); }); @@ -518,7 +518,7 @@ describe('PrometheusSerializer', () => { '# HELP test_total description missing\n' + `# UNIT test_total ${unitOfMetric}\n` + '# TYPE test_total counter\n' + - `test_total 1 ${mockedHrTimeMs}\n` + 'test_total 1\n' ); }); @@ -533,7 +533,7 @@ describe('PrometheusSerializer', () => { serializedDefaultResource + '# HELP test_total description missing\n' + '# TYPE test_total counter\n' + - `test_total 1 ${mockedHrTimeMs}\n` + 'test_total 1\n' ); }); @@ -541,14 +541,14 @@ describe('PrometheusSerializer', () => { const serializer = new PrometheusSerializer(); const result = await getCounterResult('test', serializer); - assert.strictEqual(result, `test_total 1 ${mockedHrTimeMs}\n`); + assert.strictEqual(result, 'test_total 1\n'); }); it('should not rename metric of type counter when name contains _total suffix', async () => { const serializer = new PrometheusSerializer(); const result = await getCounterResult('test_total', serializer); - assert.strictEqual(result, `test_total 1 ${mockedHrTimeMs}\n`); + assert.strictEqual(result, 'test_total 1\n'); }); }); @@ -594,7 +594,7 @@ describe('PrometheusSerializer', () => { counter.add(1); }); - assert.strictEqual(result, `test_total 1 ${mockedHrTimeMs}\n`); + assert.strictEqual(result, 'test_total 1\n'); }); it('should serialize non-string attribute values in JSON representations', async () => { @@ -615,7 +615,7 @@ describe('PrometheusSerializer', () => { assert.strictEqual( result, - `test_total{true="true",false="false",array="[1,null,null,2]",object="{}",Infinity="null",NaN="null",null="null",undefined=""} 1 ${mockedHrTimeMs}\n` + 'test_total{true="true",false="false",array="[1,null,null,2]",object="{}",Infinity="null",NaN="null",null="null",undefined=""} 1\n' ); }); @@ -634,7 +634,7 @@ describe('PrometheusSerializer', () => { assert.strictEqual( result, - `test{foo1="bar1",foo2="bar2"} ${esac[1]} ${mockedHrTimeMs}\n` + `test{foo1="bar1",foo2="bar2"} ${esac[1]}\n` ); } }); @@ -662,7 +662,7 @@ describe('PrometheusSerializer', () => { 'backslashN="\u005c\u005c\u006e",' + 'backslashDoubleQuote="\u005c\u005c\u005c\u0022",' + 'backslashLineFeed="\u005c\u005c\u005c\u006e"' + - `} 1 ${mockedHrTimeMs}\n` + '} 1\n' ); }); @@ -678,10 +678,7 @@ describe('PrometheusSerializer', () => { } as unknown as MetricAttributes); }); - assert.strictEqual( - result, - `test_total{account_id="123456"} 1 ${mockedHrTimeMs}\n` - ); + assert.strictEqual(result, 'test_total{account_id="123456"} 1\n'); }); }); From de5cd0f40908c48bcc5b472f7372ea2bbd5bc7d7 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 3 Jul 2023 14:25:58 +0200 Subject: [PATCH 53/71] fix(deps): update dependency import-in-the-middle to v1.4.1 (#3962) --- .../packages/opentelemetry-instrumentation/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index dd8ac1eb87..944258ad8f 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -72,7 +72,7 @@ }, "dependencies": { "@types/shimmer": "^1.0.2", - "import-in-the-middle": "1.3.5", + "import-in-the-middle": "1.4.1", "require-in-the-middle": "^7.1.1", "semver": "^7.5.1", "shimmer": "^1.2.1", From c51c9eb95421cc0e04b04d59be8ed521cd78f312 Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Tue, 4 Jul 2023 15:23:08 +0200 Subject: [PATCH 54/71] docs(otlp-exporters): update docs to reflect OTLP 0.20.0 is used (#3938) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Gerhard Stöbich --- experimental/packages/exporter-logs-otlp-grpc/README.md | 2 +- experimental/packages/exporter-logs-otlp-http/README.md | 2 +- experimental/packages/exporter-logs-otlp-proto/README.md | 2 +- experimental/packages/exporter-trace-otlp-grpc/README.md | 3 +-- experimental/packages/exporter-trace-otlp-http/README.md | 3 +-- experimental/packages/exporter-trace-otlp-proto/README.md | 3 +-- .../opentelemetry-exporter-metrics-otlp-grpc/README.md | 3 +-- .../opentelemetry-exporter-metrics-otlp-http/README.md | 3 +-- .../opentelemetry-exporter-metrics-otlp-proto/README.md | 3 +-- 9 files changed, 9 insertions(+), 15 deletions(-) diff --git a/experimental/packages/exporter-logs-otlp-grpc/README.md b/experimental/packages/exporter-logs-otlp-grpc/README.md index d683d0bebe..b2ba24bf9a 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/README.md +++ b/experimental/packages/exporter-logs-otlp-grpc/README.md @@ -5,7 +5,7 @@ **Note: This is an experimental package under active development. New releases may include breaking changes.** -This module provides an exporter for OTLP gRPC logs using protocol version `v0.18`. +This module provides a logs-exporter for OTLP (gRPC) using protocol version `v0.20.0`. ## Installation diff --git a/experimental/packages/exporter-logs-otlp-http/README.md b/experimental/packages/exporter-logs-otlp-http/README.md index 256e1d88d8..24f0d7f4a0 100644 --- a/experimental/packages/exporter-logs-otlp-http/README.md +++ b/experimental/packages/exporter-logs-otlp-http/README.md @@ -5,7 +5,7 @@ **Note: This is an experimental package under active development. New releases may include breaking changes.** -This module provides an exporter for OTLP (http/json) logs using protocol version `v0.18`. +This module provides a logs-exporter for OTLP (http/json) using protocol version `v0.20.0`. ## Installation diff --git a/experimental/packages/exporter-logs-otlp-proto/README.md b/experimental/packages/exporter-logs-otlp-proto/README.md index 3019f50d3f..3a00476c32 100644 --- a/experimental/packages/exporter-logs-otlp-proto/README.md +++ b/experimental/packages/exporter-logs-otlp-proto/README.md @@ -5,7 +5,7 @@ **Note: This is an experimental package under active development. New releases may include breaking changes.** -This module provides an exporter for OTLP (http/protobuf) logs using protocol version `v0.18`. +This module provides a logs-exporter for OTLP (http/protobuf) using protocol version `v0.20.0`. ## Installation diff --git a/experimental/packages/exporter-trace-otlp-grpc/README.md b/experimental/packages/exporter-trace-otlp-grpc/README.md index 933e120775..32d4231870 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/README.md +++ b/experimental/packages/exporter-trace-otlp-grpc/README.md @@ -5,8 +5,7 @@ **Note: This is an experimental package under active development. New releases may include breaking changes.** -This module provides exporter for node to be used with OTLP (`grpc`) compatible receivers. -Compatible with [opentelemetry-collector][opentelemetry-collector-url] versions `>=0.16 <=0.50`. +This module provides a trace-exporter for OTLP (gRPC) traces using protocol version `v0.20.0`. ## Installation diff --git a/experimental/packages/exporter-trace-otlp-http/README.md b/experimental/packages/exporter-trace-otlp-http/README.md index f5944a047b..141a4a2765 100644 --- a/experimental/packages/exporter-trace-otlp-http/README.md +++ b/experimental/packages/exporter-trace-otlp-http/README.md @@ -5,8 +5,7 @@ **Note: This is an experimental package under active development. New releases may include breaking changes.** -This module provides exporter for web and node to be used with OTLP (`http/json`) compatible receivers. -Compatible with [opentelemetry-collector][opentelemetry-collector-url] versions `>=0.48 <=0.50`. +This module provides a trace-exporter for OTLP (http/json) using protocol version `v0.20.0`. ## Installation diff --git a/experimental/packages/exporter-trace-otlp-proto/README.md b/experimental/packages/exporter-trace-otlp-proto/README.md index efd22d2abf..0be283bebe 100644 --- a/experimental/packages/exporter-trace-otlp-proto/README.md +++ b/experimental/packages/exporter-trace-otlp-proto/README.md @@ -5,8 +5,7 @@ **Note: This is an experimental package under active development. New releases may include breaking changes.** -This module provides exporter for node to be used with OTLP (`http/protobuf`) compatible receivers. -Compatible with [opentelemetry-collector][opentelemetry-collector-url] versions `>=0.32 <=0.50`. +This module provides a trace-exporter for OTLP (http/protobuf) using protocol version `v0.20.0`. ## Installation diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/README.md b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/README.md index 05f6b48039..7a257ba1b7 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/README.md +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/README.md @@ -5,8 +5,7 @@ **Note: This is an experimental package under active development. New releases may include breaking changes.** -This module provides exporter for node to be used with OTLP (`grpc`) compatible receivers. -Compatible with [opentelemetry-collector][opentelemetry-collector-url] versions `>=0.16 <=0.53`. +This module provides a metrics-exporter for OTLP (gRPC) using protocol version `v0.20.0`. ## Installation diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/README.md b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/README.md index b475d02838..ba449280b0 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/README.md +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/README.md @@ -5,8 +5,7 @@ **Note: This is an experimental package under active development. New releases may include breaking changes.** -This module provides exporter for web and node to be used with OTLP (`http/json`) compatible receivers. -Compatible with [opentelemetry-collector][opentelemetry-collector-url] versions `>=0.52 <=0.53`. +This module provides a metrics-exporter for OTLP (http/json) using protocol version `v0.20.0`. ## Installation diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/README.md b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/README.md index 5f89cc17bc..0056d2f3ca 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/README.md +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/README.md @@ -5,8 +5,7 @@ **Note: This is an experimental package under active development. New releases may include breaking changes.** -This module provides exporter for node to be used with OTLP (`http/protobuf`) compatible receivers. -Compatible with [opentelemetry-collector][opentelemetry-collector-url] versions `>=0.32 <=0.53`. +This module provides a metrics-exporter for OTLP (http/protobuf) using protocol version `v0.20.0`. ## Installation From dccd90603bf52ba3b52eced9e8a6489bbdc78388 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=B2=92=E7=B2=92=E6=A9=99?= Date: Tue, 4 Jul 2023 23:25:43 +0800 Subject: [PATCH 55/71] chore(instrumentation-grpc): cleanup remnants of grpc-native support (#3886) --- experimental/CHANGELOG.md | 2 + .../package.json | 1 - .../src/grpc-js/clientUtils.ts | 55 ++++--- .../src/grpc-js/index.ts | 89 +++++------ .../src/grpc-js/serverUtils.ts | 39 +++-- .../src/grpc-js/types.ts | 28 ++-- .../src/index.ts | 2 +- .../src/instrumentation.ts | 9 +- .../src/internal-types.ts | 24 +-- .../src/utils.ts | 11 +- .../test/grpc-js.test.ts | 4 +- .../test/helper.ts | 144 +++++++++--------- .../test/utils/assertionUtils.ts | 6 +- 13 files changed, 209 insertions(+), 205 deletions(-) diff --git a/experimental/CHANGELOG.md b/experimental/CHANGELOG.md index af2ea3a26e..2ad8923f8b 100644 --- a/experimental/CHANGELOG.md +++ b/experimental/CHANGELOG.md @@ -24,6 +24,8 @@ All notable changes to experimental packages in this project will be documented ### :house: (Internal) +* chore(instrumentation-grpc): Cleanup remnants of grpc-native support. [#3886](https://github.com/open-telemetry/opentelemetry-js/pull/3886) @llc1123 + ## 0.40.0 ### :boom: Breaking Change diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/package.json b/experimental/packages/opentelemetry-instrumentation-grpc/package.json index 2dc97dddd1..f8b247ffa6 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/package.json +++ b/experimental/packages/opentelemetry-instrumentation-grpc/package.json @@ -60,7 +60,6 @@ "cross-var": "1.1.0", "lerna": "7.1.1", "mocha": "10.2.0", - "node-pre-gyp": "0.17.0", "nyc": "15.1.0", "semver": "7.5.3", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc-js/clientUtils.ts b/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc-js/clientUtils.ts index 1ffaab39bb..c61edf771b 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc-js/clientUtils.ts +++ b/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc-js/clientUtils.ts @@ -14,27 +14,24 @@ * limitations under the License. */ -import { GrpcJsInstrumentation } from './'; -import type { GrpcClientFunc, SendUnaryDataCallback } from './types'; -import { - Span, - SpanStatusCode, - SpanStatus, - propagation, - context, -} from '@opentelemetry/api'; +import type { EventEmitter } from 'events'; +import type { Span, SpanStatus } from '@opentelemetry/api'; +import type { Client, Metadata, ServiceError } from '@grpc/grpc-js'; import type * as grpcJs from '@grpc/grpc-js'; +import type { GrpcJsInstrumentation } from './'; +import type { GrpcClientFunc, SendUnaryDataCallback } from './types'; +import type { metadataCaptureType } from '../internal-types'; + +import { SpanStatusCode, propagation, context } from '@opentelemetry/api'; +import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { CALL_SPAN_ENDED } from './serverUtils'; +import { AttributeNames } from '../enums/AttributeNames'; +import { GRPC_STATUS_CODE_OK } from '../status-code'; import { _grpcStatusCodeToSpanStatus, _grpcStatusCodeToOpenTelemetryStatusCode, _methodIsIgnored, } from '../utils'; -import { CALL_SPAN_ENDED } from './serverUtils'; -import { EventEmitter } from 'events'; -import { AttributeNames } from '../enums/AttributeNames'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; -import { metadataCaptureType } from '../internal-types'; -import { GRPC_STATUS_CODE_OK } from '../status-code'; /** * Parse a package method list and return a list of methods to patch @@ -42,7 +39,7 @@ import { GRPC_STATUS_CODE_OK } from '../status-code'; */ export function getMethodsToWrap( this: GrpcJsInstrumentation, - client: typeof grpcJs.Client, + client: typeof Client, methods: { [key: string]: { originalName?: string } } ): string[] { const methodList: string[] = []; @@ -74,8 +71,8 @@ export function makeGrpcClientRemoteCall( metadataCapture: metadataCaptureType, original: GrpcClientFunc, args: unknown[], - metadata: grpcJs.Metadata, - self: grpcJs.Client + metadata: Metadata, + self: Client ): (span: Span) => EventEmitter { /** * Patches a callback so that the current span for this trace is also ended @@ -86,7 +83,7 @@ export function makeGrpcClientRemoteCall( callback: SendUnaryDataCallback ) { const wrappedFn: SendUnaryDataCallback = ( - err: grpcJs.ServiceError | null, + err: ServiceError | null, res?: ResponseType ) => { if (err) { @@ -145,7 +142,7 @@ export function makeGrpcClientRemoteCall( } }; context.bind(context.active(), call); - call.on('error', (err: grpcJs.ServiceError) => { + call.on('error', (err: ServiceError) => { if (call[CALL_SPAN_ENDED]) { return; } @@ -185,22 +182,22 @@ export function makeGrpcClientRemoteCall( */ export function getMetadata( this: GrpcJsInstrumentation, - grpcClient: typeof grpcJs, original: GrpcClientFunc, - args: Array -): grpcJs.Metadata { - let metadata: grpcJs.Metadata; + grpcClient: typeof grpcJs, + args: Array +): Metadata { + let metadata: Metadata; // This finds an instance of Metadata among the arguments. // A possible issue that could occur is if the 'options' parameter from // the user contains an '_internal_repr' as well as a 'getMap' function, // but this is an extremely rare case. - let metadataIndex = args.findIndex((arg: unknown | grpcJs.Metadata) => { + let metadataIndex = args.findIndex((arg: unknown | Metadata) => { return ( arg && typeof arg === 'object' && - (arg as grpcJs.Metadata)['internalRepr'] && // changed from _internal_repr in grpc --> @grpc/grpc-js https://github.com/grpc/grpc-node/blob/95289edcaf36979cccf12797cc27335da8d01f03/packages/grpc-js/src/metadata.ts#L88 - typeof (arg as grpcJs.Metadata).getMap === 'function' + (arg as Metadata)['internalRepr'] && // changed from _internal_repr in grpc --> @grpc/grpc-js https://github.com/grpc/grpc-node/blob/95289edcaf36979cccf12797cc27335da8d01f03/packages/grpc-js/src/metadata.ts#L88 + typeof (arg as Metadata).getMap === 'function' ); }); if (metadataIndex === -1) { @@ -214,7 +211,7 @@ export function getMetadata( } args.splice(metadataIndex, 0, metadata); } else { - metadata = args[metadataIndex] as grpcJs.Metadata; + metadata = args[metadataIndex] as Metadata; } return metadata; } @@ -224,7 +221,7 @@ export function getMetadata( * grpc receiver * @param metadata */ -export function setSpanContext(metadata: grpcJs.Metadata): void { +export function setSpanContext(metadata: Metadata): void { propagation.inject(context.active(), metadata, { set: (meta, k, v) => meta.set(k, v), }); diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc-js/index.ts b/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc-js/index.ts index eaae47c8ef..72ad45e3bd 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc-js/index.ts +++ b/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc-js/index.ts @@ -14,15 +14,21 @@ * limitations under the License. */ +import type { EventEmitter } from 'events'; + +import type { + Server, + serialize as Serialize, + deserialize as Deserialize, + Metadata, + Client, + ServiceDefinition, + loadPackageDefinition, + GrpcObject, +} from '@grpc/grpc-js'; import type * as grpcJs from '@grpc/grpc-js'; -import { - InstrumentationNodeModuleDefinition, - isWrapped, -} from '@opentelemetry/instrumentation'; -import { InstrumentationBase } from '@opentelemetry/instrumentation'; -import { GrpcInstrumentationConfig } from '../types'; -import { metadataCaptureType } from '../internal-types'; -import { + +import type { ServerCallWithMeta, SendUnaryDataCallback, ServerRegisterFunction, @@ -31,6 +37,9 @@ import { PackageDefinition, GrpcClientFunc, } from './types'; +import type { GrpcInstrumentationConfig } from '../types'; +import type { metadataCaptureType } from '../internal-types'; + import { context, propagation, @@ -39,6 +48,13 @@ import { SpanKind, trace, } from '@opentelemetry/api'; +import { + InstrumentationNodeModuleDefinition, + isWrapped, + InstrumentationBase, +} from '@opentelemetry/instrumentation'; +import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; + import { shouldNotTraceServerCall, handleServerFunction, @@ -49,10 +65,8 @@ import { makeGrpcClientRemoteCall, getMetadata, } from './clientUtils'; -import { EventEmitter } from 'events'; import { _extractMethodAndService, metadataCapture, URI_REGEX } from '../utils'; import { AttributeValues } from '../enums/AttributeValues'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; export class GrpcJsInstrumentation extends InstrumentationBase { private _metadataCapture: metadataCaptureType; @@ -143,11 +157,11 @@ export class GrpcJsInstrumentation extends InstrumentationBase { const config = this.getConfig(); instrumentation._diag.debug('patched gRPC server'); return function register( - this: grpcJs.Server, + this: Server, name: string, handler: HandleCall, - serialize: grpcJs.serialize, - deserialize: grpcJs.deserialize, + serialize: Serialize, + deserialize: Deserialize, type: string ): boolean { const originalRegisterResult = originalRegister.call( @@ -171,13 +185,7 @@ export class GrpcJsInstrumentation extends InstrumentationBase { ) { const self = this; - if ( - shouldNotTraceServerCall( - call.metadata, - name, - config.ignoreGrpcMethods - ) - ) { + if (shouldNotTraceServerCall(name, config.ignoreGrpcMethods)) { return handleUntracedServerFunction( type, originalFunc, @@ -220,14 +228,13 @@ export class GrpcJsInstrumentation extends InstrumentationBase { instrumentation._wrap( call, 'sendMetadata', - originalSendMetadata => - (responseMetadata: grpcJs.Metadata) => { - instrumentation._metadataCapture.server.captureResponseMetadata( - span, - responseMetadata - ); - originalSendMetadata.call(call, responseMetadata); - } + originalSendMetadata => (responseMetadata: Metadata) => { + instrumentation._metadataCapture.server.captureResponseMetadata( + span, + responseMetadata + ); + originalSendMetadata.call(call, responseMetadata); + } ); context.with(trace.setSpan(context.active(), span), () => { @@ -246,7 +253,7 @@ export class GrpcJsInstrumentation extends InstrumentationBase { } ); return originalRegisterResult; - } as typeof grpcJs.Server.prototype.register; + } as typeof Server.prototype.register; }; } @@ -263,8 +270,8 @@ export class GrpcJsInstrumentation extends InstrumentationBase { return (original: MakeClientConstructorFunction) => { instrumentation._diag.debug('patching client'); return function makeClientConstructor( - this: typeof grpcJs.Client, - methods: grpcJs.ServiceDefinition, + this: typeof Client, + methods: ServiceDefinition, serviceName: string, options?: object ) { @@ -286,18 +293,18 @@ export class GrpcJsInstrumentation extends InstrumentationBase { private _patchLoadPackageDefinition(grpcClient: typeof grpcJs) { const instrumentation = this; instrumentation._diag.debug('patching loadPackageDefinition'); - return (original: typeof grpcJs.loadPackageDefinition) => { + return (original: typeof loadPackageDefinition) => { return function patchedLoadPackageDefinition( this: null, packageDef: PackageDefinition ) { - const result: grpcJs.GrpcObject = original.call( + const result: GrpcObject = original.call( this, packageDef - ) as grpcJs.GrpcObject; + ) as GrpcObject; instrumentation._patchLoadedPackage(grpcClient, result); return result; - } as typeof grpcJs.loadPackageDefinition; + } as typeof loadPackageDefinition; }; } @@ -310,13 +317,13 @@ export class GrpcJsInstrumentation extends InstrumentationBase { const instrumentation = this; return (original: GrpcClientFunc) => { instrumentation._diag.debug('patch all client methods'); - function clientMethodTrace(this: grpcJs.Client) { + function clientMethodTrace(this: Client) { const name = `grpc.${original.path.replace('/', '')}`; const args = [...arguments]; const metadata = getMetadata.call( instrumentation, - grpcClient, original, + grpcClient, args ); const { service, method } = _extractMethodAndService(original.path); @@ -369,7 +376,7 @@ export class GrpcJsInstrumentation extends InstrumentationBase { */ private _patchLoadedPackage( grpcClient: typeof grpcJs, - result: grpcJs.GrpcObject + result: GrpcObject ): void { Object.values(result).forEach(service => { if (typeof service === 'function') { @@ -380,11 +387,7 @@ export class GrpcJsInstrumentation extends InstrumentationBase { ); } else if (typeof service.format !== 'string') { // GrpcObject - this._patchLoadedPackage.call( - this, - grpcClient, - service as grpcJs.GrpcObject - ); + this._patchLoadedPackage.call(this, grpcClient, service as GrpcObject); } }); } diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc-js/serverUtils.ts b/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc-js/serverUtils.ts index ecfbc3d957..ad07828e68 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc-js/serverUtils.ts +++ b/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc-js/serverUtils.ts @@ -20,21 +20,31 @@ * error event should be processed. */ -import { context, Span, SpanStatusCode } from '@opentelemetry/api'; -import type * as grpcJs from '@grpc/grpc-js'; +import type { + ClientReadableStream, + handleBidiStreamingCall, + handleServerStreamingCall, + handleUnaryCall, + ServiceError, +} from '@grpc/grpc-js'; +import type { Span } from '@opentelemetry/api'; + import type { ServerCallWithMeta, SendUnaryDataCallback, GrpcEmitter, HandleCall, } from './types'; +import type { IgnoreMatcher } from '../types'; + +import { context, SpanStatusCode } from '@opentelemetry/api'; +import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; + import { _grpcStatusCodeToOpenTelemetryStatusCode, _methodIsIgnored, } from '../utils'; -import { IgnoreMatcher } from '../types'; import { AttributeNames } from '../enums/AttributeNames'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; import { GRPC_STATUS_CODE_OK } from '../status-code'; export const CALL_SPAN_ENDED = Symbol('opentelemetry call span ended'); @@ -46,8 +56,8 @@ function serverStreamAndBidiHandler( span: Span, call: GrpcEmitter, original: - | grpcJs.handleBidiStreamingCall - | grpcJs.handleServerStreamingCall + | handleBidiStreamingCall + | handleServerStreamingCall ): void { let spanEnded = false; const endSpan = () => { @@ -79,7 +89,7 @@ function serverStreamAndBidiHandler( endSpan(); }); - call.on('error', (err: grpcJs.ServiceError) => { + call.on('error', (err: ServiceError) => { if (call[CALL_SPAN_ENDED]) { return; } @@ -111,11 +121,11 @@ function clientStreamAndUnaryHandler( call: ServerCallWithMeta, callback: SendUnaryDataCallback, original: - | grpcJs.handleUnaryCall - | grpcJs.ClientReadableStream + | handleUnaryCall + | ClientReadableStream ): void { const patchedCallback: SendUnaryDataCallback = ( - err: grpcJs.ServiceError | null, + err: ServiceError | null, value?: ResponseType ) => { if (err) { @@ -166,8 +176,8 @@ export function handleServerFunction( call, callback, originalFunc as - | grpcJs.handleUnaryCall - | grpcJs.ClientReadableStream + | handleUnaryCall + | ClientReadableStream ); case 'serverStream': case 'server_stream': @@ -176,8 +186,8 @@ export function handleServerFunction( span, call, originalFunc as - | grpcJs.handleBidiStreamingCall - | grpcJs.handleServerStreamingCall + | handleBidiStreamingCall + | handleServerStreamingCall ); default: break; @@ -212,7 +222,6 @@ export function handleUntracedServerFunction( * Returns true if the server call should not be traced. */ export function shouldNotTraceServerCall( - metadata: grpcJs.Metadata, methodName: string, ignoreGrpcMethods?: IgnoreMatcher[] ): boolean { diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc-js/types.ts b/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc-js/types.ts index e0ae1545d2..e9f15b45ab 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc-js/types.ts +++ b/experimental/packages/opentelemetry-instrumentation-grpc/src/grpc-js/types.ts @@ -14,29 +14,38 @@ * limitations under the License. */ -import type * as grpcJs from '@grpc/grpc-js'; import type { EventEmitter } from 'events'; import type { CALL_SPAN_ENDED } from './serverUtils'; +import type { + requestCallback, + ServerUnaryCall, + ServerReadableStream, + ServerWritableStream, + ServerDuplexStream, + Metadata, + Server, + makeGenericClientConstructor, +} from '@grpc/grpc-js'; /** * Server Unary callback type */ -export type SendUnaryDataCallback = grpcJs.requestCallback; +export type SendUnaryDataCallback = requestCallback; /** * Intersection type of all grpc server call types */ export type ServerCall = - | grpcJs.ServerUnaryCall - | grpcJs.ServerReadableStream - | grpcJs.ServerWritableStream - | grpcJs.ServerDuplexStream; + | ServerUnaryCall + | ServerReadableStream + | ServerWritableStream + | ServerDuplexStream; /** * {@link ServerCall} ServerCall extended with misc. missing utility types */ export type ServerCallWithMeta = ServerCall & { - metadata: grpcJs.Metadata; + metadata: Metadata; }; /** @@ -53,10 +62,9 @@ export type GrpcClientFunc = ((...args: unknown[]) => GrpcEmitter) & { responseStream: boolean; }; -export type ServerRegisterFunction = typeof grpcJs.Server.prototype.register; +export type ServerRegisterFunction = typeof Server.prototype.register; -export type MakeClientConstructorFunction = - typeof grpcJs.makeGenericClientConstructor; +export type MakeClientConstructorFunction = typeof makeGenericClientConstructor; export type { HandleCall } from '@grpc/grpc-js/build/src/server-call'; export type { PackageDefinition } from '@grpc/grpc-js/build/src/make-client'; diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/src/index.ts b/experimental/packages/opentelemetry-instrumentation-grpc/src/index.ts index 26ea0efdb4..5e1bb947d1 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/src/index.ts +++ b/experimental/packages/opentelemetry-instrumentation-grpc/src/index.ts @@ -15,4 +15,4 @@ */ export * from './instrumentation'; -export { GrpcInstrumentationConfig } from './types'; +export type { GrpcInstrumentationConfig } from './types'; diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/src/instrumentation.ts b/experimental/packages/opentelemetry-instrumentation-grpc/src/instrumentation.ts index d597beaae2..bb6e095cf7 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/src/instrumentation.ts +++ b/experimental/packages/opentelemetry-instrumentation-grpc/src/instrumentation.ts @@ -14,10 +14,11 @@ * limitations under the License. */ -import { GrpcInstrumentationConfig } from './types'; +import type { GrpcInstrumentationConfig } from './types'; +import type { MeterProvider, TracerProvider } from '@opentelemetry/api'; + import { VERSION } from './version'; import { GrpcJsInstrumentation } from './grpc-js'; -import * as api from '@opentelemetry/api'; /** The metadata key under which span context is stored as a binary value. */ export const GRPC_TRACE_KEY = 'grpc-trace-bin'; @@ -68,7 +69,7 @@ export class GrpcInstrumentation { * Sets MeterProvider to this plugin * @param meterProvider */ - public setMeterProvider(meterProvider: api.MeterProvider) { + public setMeterProvider(meterProvider: MeterProvider) { this._grpcJsInstrumentation.setMeterProvider(meterProvider); } @@ -76,7 +77,7 @@ export class GrpcInstrumentation { * Sets TraceProvider to this plugin * @param tracerProvider */ - public setTracerProvider(tracerProvider: api.TracerProvider) { + public setTracerProvider(tracerProvider: TracerProvider) { this._grpcJsInstrumentation.setTracerProvider(tracerProvider); } } diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/src/internal-types.ts b/experimental/packages/opentelemetry-instrumentation-grpc/src/internal-types.ts index 594ad7ce0a..50d337b636 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/src/internal-types.ts +++ b/experimental/packages/opentelemetry-instrumentation-grpc/src/internal-types.ts @@ -14,28 +14,16 @@ * limitations under the License. */ -import { Span } from '@opentelemetry/api'; -import type * as grpcJsTypes from '@grpc/grpc-js'; +import type { Span } from '@opentelemetry/api'; +import type { Metadata } from '@grpc/grpc-js'; export type metadataCaptureType = { client: { - captureRequestMetadata: ( - span: Span, - metadata: grpcJsTypes.Metadata - ) => void; - captureResponseMetadata: ( - span: Span, - metadata: grpcJsTypes.Metadata - ) => void; + captureRequestMetadata: (span: Span, metadata: Metadata) => void; + captureResponseMetadata: (span: Span, metadata: Metadata) => void; }; server: { - captureRequestMetadata: ( - span: Span, - metadata: grpcJsTypes.Metadata - ) => void; - captureResponseMetadata: ( - span: Span, - metadata: grpcJsTypes.Metadata - ) => void; + captureRequestMetadata: (span: Span, metadata: Metadata) => void; + captureResponseMetadata: (span: Span, metadata: Metadata) => void; }; }; diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/src/utils.ts b/experimental/packages/opentelemetry-instrumentation-grpc/src/utils.ts index d9e542f509..3cfbfc1f55 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/src/utils.ts +++ b/experimental/packages/opentelemetry-instrumentation-grpc/src/utils.ts @@ -14,9 +14,10 @@ * limitations under the License. */ -import { SpanStatusCode, SpanStatus, Span } from '@opentelemetry/api'; -import type * as grpcJsTypes from '@grpc/grpc-js'; -import { IgnoreMatcher } from './types'; +import { SpanStatusCode } from '@opentelemetry/api'; +import type { SpanStatus, Span } from '@opentelemetry/api'; +import type { status as GrpcStatus, Metadata } from '@grpc/grpc-js'; +import type { IgnoreMatcher } from './types'; // e.g., "dns:otel-productcatalogservice:8080" or "otel-productcatalogservice:8080" or "127.0.0.1:8080" export const URI_REGEX = @@ -42,7 +43,7 @@ export const findIndex: (args: T[], fn: (arg: T) => boolean) => number = ( * @param status */ export const _grpcStatusCodeToOpenTelemetryStatusCode = ( - status?: grpcJsTypes.status + status?: GrpcStatus ): SpanStatusCode => { if (status !== undefined && status === 0) { return SpanStatusCode.UNSET; @@ -127,7 +128,7 @@ export function metadataCapture( ]) ); - return (span: Span, metadata: grpcJsTypes.Metadata) => { + return (span: Span, metadata: Metadata) => { for (const [ capturedMetadata, normalizedMetadata, diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/test/grpc-js.test.ts b/experimental/packages/opentelemetry-instrumentation-grpc/test/grpc-js.test.ts index 624d267a21..b7e2210298 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/test/grpc-js.test.ts +++ b/experimental/packages/opentelemetry-instrumentation-grpc/test/grpc-js.test.ts @@ -21,8 +21,8 @@ const instrumentation = new GrpcInstrumentation(); instrumentation.enable(); instrumentation.disable(); -import * as grpcJs from '@grpc/grpc-js'; +import '@grpc/grpc-js'; describe('#grpc-js', () => { - runTests(instrumentation, 'grpc', grpcJs, 12346); + runTests(instrumentation, 'grpc', 12346); }); diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/test/helper.ts b/experimental/packages/opentelemetry-instrumentation-grpc/test/helper.ts index 7cdc85d268..693cdeab46 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/test/helper.ts +++ b/experimental/packages/opentelemetry-instrumentation-grpc/test/helper.ts @@ -32,7 +32,21 @@ import { } from '@opentelemetry/sdk-trace-base'; import * as assert from 'assert'; import * as protoLoader from '@grpc/proto-loader'; -import type * as grpcJs from '@grpc/grpc-js'; +import { + status as GrpcStatus, + requestCallback, + ServerUnaryCall, + ServerReadableStream, + ServerWritableStream, + ServerDuplexStream, + Client, + Metadata, + ServiceError, + Server, + ServerCredentials, + credentials, + loadPackageDefinition, +} from '@grpc/grpc-js'; import { assertPropagation, assertSpan } from './utils/assertionUtils'; import { promisify } from 'util'; import type { GrpcInstrumentation } from '../src'; @@ -53,17 +67,7 @@ interface TestRequestResponse { num: number; } -type ServiceError = grpcJs.ServiceError; -type Client = grpcJs.Client; -type Server = grpcJs.Server; -type ServerUnaryCall = grpcJs.ServerUnaryCall; -type RequestCallback = grpcJs.requestCallback; -type ServerReadableStream = grpcJs.ServerReadableStream; -type ServerWriteableStream = grpcJs.ServerWritableStream; -type ServerDuplexStream = grpcJs.ServerDuplexStream; -type Metadata = grpcJs.Metadata; - -type TestGrpcClient = (typeof grpcJs)['Client'] & { +type TestGrpcClient = Client & { unaryMethodWithMetadata: any; unaryMethod: any; UnaryMethod: any; @@ -108,10 +112,9 @@ const checkEqual = export const runTests = ( plugin: GrpcInstrumentation, moduleName: string, - grpc: typeof grpcJs, grpcPort: number ) => { - const MAX_ERROR_STATUS = grpc.status.UNAUTHENTICATED; + const MAX_ERROR_STATUS = GrpcStatus.UNAUTHENTICATED; const grpcClient = { unaryMethodWithMetadata: ( @@ -137,7 +140,7 @@ export const runTests = ( unaryMethod: ( client: TestGrpcClient, request: TestRequestResponse, - metadata: Metadata = new grpc.Metadata() + metadata = new Metadata() ): Promise => { return new Promise((resolve, reject) => { return client.unaryMethod( @@ -157,7 +160,7 @@ export const runTests = ( UnaryMethod: ( client: TestGrpcClient, request: TestRequestResponse, - metadata: Metadata = new grpc.Metadata() + metadata = new Metadata() ): Promise => { return new Promise((resolve, reject) => { return client.UnaryMethod( @@ -177,7 +180,7 @@ export const runTests = ( camelCaseMethod: ( client: TestGrpcClient, request: TestRequestResponse, - metadata: Metadata = new grpc.Metadata() + metadata = new Metadata() ): Promise => { return new Promise((resolve, reject) => { return client.camelCaseMethod( @@ -197,7 +200,7 @@ export const runTests = ( clientStreamMethod: ( client: TestGrpcClient, request: TestRequestResponse[], - metadata: Metadata = new grpc.Metadata() + metadata = new Metadata() ): Promise => { return new Promise((resolve, reject) => { const writeStream = client.clientStreamMethod( @@ -221,7 +224,7 @@ export const runTests = ( serverStreamMethod: ( client: TestGrpcClient, request: TestRequestResponse, - metadata: Metadata = new grpc.Metadata() + metadata = new Metadata() ): Promise => { return new Promise((resolve, reject) => { const result: TestRequestResponse[] = []; @@ -242,7 +245,7 @@ export const runTests = ( bidiStreamMethod: ( client: TestGrpcClient, request: TestRequestResponse[], - metadata: Metadata = new grpc.Metadata() + metadata = new Metadata() ): Promise => { return new Promise((resolve, reject) => { const result: TestRequestResponse[] = []; @@ -280,8 +283,8 @@ export const runTests = ( return result; }; - async function startServer(grpc: typeof grpcJs, proto: any) { - const server = new grpc.Server(); + async function startServer(proto: any) { + const server = new Server(); function getError(msg: string, code: number): ServiceError | null { const err: ServiceError = { @@ -290,7 +293,7 @@ export const runTests = ( message: msg, code, details: msg, - metadata: new grpc.Metadata(), + metadata: new Metadata(), }; return err; } @@ -302,56 +305,49 @@ export const runTests = ( // This method returns the request unaryMethodWithMetadata( - call: ServerUnaryCall, - callback: RequestCallback + call: ServerUnaryCall, + callback: requestCallback ) { - const serverMetadata: any = new grpc.Metadata(); + const serverMetadata = new Metadata(); serverMetadata.add('server_metadata_key', 'server_metadata_value'); call.sendMetadata(serverMetadata); call.request.num <= MAX_ERROR_STATUS ? callback( - getError( - 'Unary Method with Metadata Error', - call.request.num - ) as grpcJs.ServiceError + getError('Unary Method with Metadata Error', call.request.num) ) : callback(null, { num: call.request.num }); }, // This method returns the request - unaryMethod(call: ServerUnaryCall, callback: RequestCallback) { + unaryMethod( + call: ServerUnaryCall, + callback: requestCallback + ) { call.request.num <= MAX_ERROR_STATUS - ? callback( - getError( - 'Unary Method Error', - call.request.num - ) as grpcJs.ServiceError - ) + ? callback(getError('Unary Method Error', call.request.num)) : callback(null, { num: call.request.num }); }, // This method returns the request - camelCaseMethod(call: ServerUnaryCall, callback: RequestCallback) { + camelCaseMethod( + call: ServerUnaryCall, + callback: requestCallback + ) { call.request.num <= MAX_ERROR_STATUS - ? callback( - getError( - 'Unary Method Error', - call.request.num - ) as grpcJs.ServiceError - ) + ? callback(getError('Unary Method Error', call.request.num)) : callback(null, { num: call.request.num }); }, // This method sums the requests clientStreamMethod( - call: ServerReadableStream, - callback: RequestCallback + call: ServerReadableStream, + callback: requestCallback ) { let sum = 0; let hasError = false; - let code = grpc.status.OK; + let code = GrpcStatus.OK; call.on('data', (data: TestRequestResponse) => { sum += data.num; if (data.num <= MAX_ERROR_STATUS) { @@ -368,7 +364,7 @@ export const runTests = ( // This method returns an array that replicates the request, request.num of // times - serverStreamMethod: (call: ServerWriteableStream) => { + serverStreamMethod: (call: ServerWritableStream) => { const result = replicate(call.request); if (call.request.num <= MAX_ERROR_STATUS) { @@ -385,7 +381,7 @@ export const runTests = ( }, // This method returns the request - bidiStreamMethod: (call: ServerDuplexStream) => { + bidiStreamMethod: (call: ServerDuplexStream) => { call.on('data', (data: TestRequestResponse) => { if (data.num <= MAX_ERROR_STATUS) { call.emit( @@ -405,16 +401,16 @@ export const runTests = ( await bindAwait.call( server, 'localhost:' + grpcPort, - grpc.ServerCredentials.createInsecure() as grpcJs.ServerCredentials + ServerCredentials.createInsecure() ); server.start(); return server; } - function createClient(grpc: typeof grpcJs, proto: any) { + function createClient(proto: any) { return new proto.GrpcTester( 'localhost:' + grpcPort, - grpc.credentials.createInsecure() + credentials.createInsecure() ); } @@ -503,7 +499,7 @@ export const runTests = ( ) => { const validations = { name: `grpc.pkg_test.GrpcTester/${methodName}`, - status: grpc.status.OK, + status: GrpcStatus.OK, netPeerName: 'localhost', netPeerPort: grpcPort, }; @@ -770,10 +766,10 @@ export const runTests = ( plugin.enable(); const packageDefinition = await protoLoader.load(PROTO_PATH, options); - const proto = grpc.loadPackageDefinition(packageDefinition).pkg_test; + const proto = loadPackageDefinition(packageDefinition).pkg_test; - server = await startServer(grpc, proto); - client = createClient(grpc, proto); + server = await startServer(proto); + client = createClient(proto); }); after(done => { @@ -792,9 +788,9 @@ export const runTests = ( methodList.forEach(method => { describe(`Test error raising for grpc remote ${method.description}`, () => { - Object.keys(grpc.status).forEach((statusKey: string) => { - const errorCode = Number(grpc.status[statusKey as any]); - if (errorCode > grpc.status.OK) { + Object.keys(GrpcStatus).forEach((statusKey: string) => { + const errorCode = Number(GrpcStatus[statusKey as any]); + if (errorCode > GrpcStatus.OK) { runErrorTest(method, statusKey, errorCode, provider); } }); @@ -813,10 +809,10 @@ export const runTests = ( plugin.disable(); const packageDefinition = await protoLoader.load(PROTO_PATH, options); - const proto = grpc.loadPackageDefinition(packageDefinition).pkg_test; + const proto = loadPackageDefinition(packageDefinition).pkg_test; - server = await startServer(grpc, proto); - client = createClient(grpc, proto); + server = await startServer(proto); + client = createClient(proto); }); after(done => { @@ -847,10 +843,10 @@ export const runTests = ( plugin.enable(); const packageDefinition = await protoLoader.load(PROTO_PATH, options); - const proto = grpc.loadPackageDefinition(packageDefinition).pkg_test; + const proto = loadPackageDefinition(packageDefinition).pkg_test; - server = await startServer(grpc, proto); - client = createClient(grpc, proto); + server = await startServer(proto); + client = createClient(proto); }); after(done => { @@ -891,10 +887,10 @@ export const runTests = ( plugin.enable(); const packageDefinition = await protoLoader.load(PROTO_PATH, options); - const proto = grpc.loadPackageDefinition(packageDefinition).pkg_test; + const proto = loadPackageDefinition(packageDefinition).pkg_test; - server = await startServer(grpc, proto); - client = createClient(grpc, proto); + server = await startServer(proto); + client = createClient(proto); }); after(done => { @@ -921,9 +917,9 @@ export const runTests = ( plugin.enable(); const packageDefinition = await protoLoader.load(PROTO_PATH, options); - const proto = grpc.loadPackageDefinition(packageDefinition).pkg_test; + const proto = loadPackageDefinition(packageDefinition).pkg_test; - client = createClient(grpc, proto); + client = createClient(proto); }); after(done => { @@ -943,7 +939,7 @@ export const runTests = ( const provider = new NodeTracerProvider(); provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); - const clientMetadata: Metadata = new grpc.Metadata(); + const clientMetadata = new Metadata(); clientMetadata.add('client_metadata_key', 'client_metadata_value'); const customMetadataMethod: TestGrpcCall = { @@ -978,10 +974,10 @@ export const runTests = ( plugin.enable(); const packageDefinition = await protoLoader.load(PROTO_PATH, options); - const proto = grpc.loadPackageDefinition(packageDefinition).pkg_test; + const proto = loadPackageDefinition(packageDefinition).pkg_test; - server = await startServer(grpc, proto); - client = createClient(grpc, proto); + server = await startServer(proto); + client = createClient(proto); }); after(done => { diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/test/utils/assertionUtils.ts b/experimental/packages/opentelemetry-instrumentation-grpc/test/utils/assertionUtils.ts index fcdd546b32..1b7966639e 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/test/utils/assertionUtils.ts +++ b/experimental/packages/opentelemetry-instrumentation-grpc/test/utils/assertionUtils.ts @@ -16,7 +16,7 @@ import { SpanKind, SpanStatusCode } from '@opentelemetry/api'; import * as assert from 'assert'; -import type * as grpcJs from '@grpc/grpc-js'; +import type { status as GrpcStatus } from '@grpc/grpc-js'; import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; import { hrTimeToMilliseconds, @@ -25,7 +25,7 @@ import { import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; export const grpcStatusCodeToOpenTelemetryStatusCode = ( - status: grpcJs.status + status: GrpcStatus ): SpanStatusCode => { if (status !== undefined && status === 0) { return SpanStatusCode.UNSET; @@ -39,7 +39,7 @@ export const assertSpan = ( kind: SpanKind, validations: { name: string; - status: grpcJs.status; + status: GrpcStatus; netPeerName?: string; netPeerPort?: number; } From ea160d9c5c13fb32b39129397c43913d63c8b29f Mon Sep 17 00:00:00 2001 From: Abinet18 <35442169+Abinet18@users.noreply.github.com> Date: Wed, 5 Jul 2023 01:29:28 -0700 Subject: [PATCH 56/71] fix: add secureConnectionStart to https only (#3879) Co-authored-by: t2t2 Co-authored-by: Marc Pichler --- CHANGELOG.md | 1 + .../test/fetch.test.ts | 188 ++++++------- .../test/xhr.test.ts | 260 ++++++------------ .../opentelemetry-sdk-trace-web/src/utils.ts | 7 +- .../test/utils.test.ts | 11 +- 5 files changed, 188 insertions(+), 279 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7de3dc1f1b..42ca36c051 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -42,6 +42,7 @@ For experimental package changes, see the [experimental CHANGELOG](experimental/ ### :bug: (Bug Fix) +* fix(sdk-trace-web): add secureConnectionStart to https only [#3879](https://github.com/open-telemetry/opentelemetry-js/pull/3879) @Abinet18 * fix(http-instrumentation): stop listening to `request`'s `close` event once it has emitted `response` [#3625](https://github.com/open-telemetry/opentelemetry-js/pull/3625) @SimenB * fix(sdk-node): fix initialization in bundled environments by not loading @opentelemetry/exporter-jaeger [#3739](https://github.com/open-telemetry/opentelemetry-js/pull/3739) @pichlermarc diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/test/fetch.test.ts b/experimental/packages/opentelemetry-instrumentation-fetch/test/fetch.test.ts index 318e0f98c3..14dcec9978 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/test/fetch.test.ts +++ b/experimental/packages/opentelemetry-instrumentation-fetch/test/fetch.test.ts @@ -139,6 +139,19 @@ function createFakePerformanceObs(url: string) { return FakePerfObs; } +function testForCorrectEvents( + events: tracing.TimedEvent[], + eventNames: string[] +) { + for (let i = 0; i < events.length; i++) { + assert.strictEqual( + events[i].name, + eventNames[i], + `event ${eventNames[i]} is not defined` + ); + } +} + describe('fetch', () => { let contextManager: ZoneContextManager; let lastResponse: any | undefined; @@ -152,6 +165,7 @@ describe('fetch', () => { let fetchInstrumentation: FetchInstrumentation; const url = 'http://localhost:8090/get'; + const secureUrl = 'https://localhost:8090/get'; const badUrl = 'http://foo.bar.com/get'; const clearData = () => { @@ -399,53 +413,17 @@ describe('fetch', () => { it('span should have correct events', () => { const span: tracing.ReadableSpan = exportSpy.args[1][0][0]; const events = span.events; - assert.strictEqual(events.length, 9, 'number of events is wrong'); - - assert.strictEqual( - events[0].name, + assert.strictEqual(events.length, 8, 'number of events is wrong'); + testForCorrectEvents(events, [ PTN.FETCH_START, - `event ${PTN.FETCH_START} is not defined` - ); - assert.strictEqual( - events[1].name, PTN.DOMAIN_LOOKUP_START, - `event ${PTN.DOMAIN_LOOKUP_START} is not defined` - ); - assert.strictEqual( - events[2].name, PTN.DOMAIN_LOOKUP_END, - `event ${PTN.DOMAIN_LOOKUP_END} is not defined` - ); - assert.strictEqual( - events[3].name, PTN.CONNECT_START, - `event ${PTN.CONNECT_START} is not defined` - ); - assert.strictEqual( - events[4].name, - PTN.SECURE_CONNECTION_START, - `event ${PTN.SECURE_CONNECTION_START} is not defined` - ); - assert.strictEqual( - events[5].name, PTN.CONNECT_END, - `event ${PTN.CONNECT_END} is not defined` - ); - assert.strictEqual( - events[6].name, PTN.REQUEST_START, - `event ${PTN.REQUEST_START} is not defined` - ); - assert.strictEqual( - events[7].name, PTN.RESPONSE_START, - `event ${PTN.RESPONSE_START} is not defined` - ); - assert.strictEqual( - events[8].name, PTN.RESPONSE_END, - `event ${PTN.RESPONSE_END} is not defined` - ); + ]); }); it('should create a span for preflight request', () => { @@ -479,53 +457,17 @@ describe('fetch', () => { it('preflight request span should have correct events', () => { const span: tracing.ReadableSpan = exportSpy.args[0][0][0]; const events = span.events; - assert.strictEqual(events.length, 9, 'number of events is wrong'); - - assert.strictEqual( - events[0].name, + assert.strictEqual(events.length, 8, 'number of events is wrong'); + testForCorrectEvents(events, [ PTN.FETCH_START, - `event ${PTN.FETCH_START} is not defined` - ); - assert.strictEqual( - events[1].name, PTN.DOMAIN_LOOKUP_START, - `event ${PTN.DOMAIN_LOOKUP_START} is not defined` - ); - assert.strictEqual( - events[2].name, PTN.DOMAIN_LOOKUP_END, - `event ${PTN.DOMAIN_LOOKUP_END} is not defined` - ); - assert.strictEqual( - events[3].name, PTN.CONNECT_START, - `event ${PTN.CONNECT_START} is not defined` - ); - assert.strictEqual( - events[4].name, - PTN.SECURE_CONNECTION_START, - `event ${PTN.SECURE_CONNECTION_START} is not defined` - ); - assert.strictEqual( - events[5].name, PTN.CONNECT_END, - `event ${PTN.CONNECT_END} is not defined` - ); - assert.strictEqual( - events[6].name, PTN.REQUEST_START, - `event ${PTN.REQUEST_START} is not defined` - ); - assert.strictEqual( - events[7].name, PTN.RESPONSE_START, - `event ${PTN.RESPONSE_START} is not defined` - ); - assert.strictEqual( - events[8].name, PTN.RESPONSE_END, - `event ${PTN.RESPONSE_END} is not defined` - ); + ]); }); it('should set trace headers', () => { @@ -639,6 +581,51 @@ describe('fetch', () => { }); }); + describe('when request is secure and successful', () => { + beforeEach(async () => { + const propagateTraceHeaderCorsUrls = [secureUrl]; + await prepareData(secureUrl, { propagateTraceHeaderCorsUrls }); + }); + + afterEach(() => { + clearData(); + }); + + it('span should have correct events', () => { + const span: tracing.ReadableSpan = exportSpy.args[1][0][0]; + const events = span.events; + assert.strictEqual(events.length, 9, 'number of events is wrong'); + testForCorrectEvents(events, [ + PTN.FETCH_START, + PTN.DOMAIN_LOOKUP_START, + PTN.DOMAIN_LOOKUP_END, + PTN.CONNECT_START, + PTN.SECURE_CONNECTION_START, + PTN.CONNECT_END, + PTN.REQUEST_START, + PTN.RESPONSE_START, + PTN.RESPONSE_END, + ]); + }); + + it('preflight request span should have correct events', () => { + const span: tracing.ReadableSpan = exportSpy.args[0][0][0]; + const events = span.events; + assert.strictEqual(events.length, 9, 'number of events is wrong'); + testForCorrectEvents(events, [ + PTN.FETCH_START, + PTN.DOMAIN_LOOKUP_START, + PTN.DOMAIN_LOOKUP_END, + PTN.CONNECT_START, + PTN.SECURE_CONNECTION_START, + PTN.CONNECT_END, + PTN.REQUEST_START, + PTN.RESPONSE_START, + PTN.RESPONSE_END, + ]); + }); + }); + describe('applyCustomAttributesOnSpan option', () => { const prepare = async ( url: string, @@ -815,13 +802,18 @@ describe('fetch', () => { `Wrong number of spans: ${exportSpy.args.length}` ); - assert.strictEqual(events.length, 9, 'number of events is wrong'); + assert.strictEqual(events.length, 8, 'number of events is wrong'); - assert.strictEqual( - events[6].name, + testForCorrectEvents(events, [ + PTN.FETCH_START, + PTN.DOMAIN_LOOKUP_START, + PTN.DOMAIN_LOOKUP_END, + PTN.CONNECT_START, + PTN.CONNECT_END, PTN.REQUEST_START, - `event ${PTN.REQUEST_START} is not defined` - ); + PTN.RESPONSE_START, + PTN.RESPONSE_END, + ]); }); }); @@ -844,12 +836,17 @@ describe('fetch', () => { `Wrong number of spans: ${exportSpy.args.length}` ); - assert.strictEqual(events.length, 9, 'number of events is wrong'); - assert.strictEqual( - events[6].name, + assert.strictEqual(events.length, 8, 'number of events is wrong'); + testForCorrectEvents(events, [ + PTN.FETCH_START, + PTN.DOMAIN_LOOKUP_START, + PTN.DOMAIN_LOOKUP_END, + PTN.CONNECT_START, + PTN.CONNECT_END, PTN.REQUEST_START, - `event ${PTN.REQUEST_START} is not defined` - ); + PTN.RESPONSE_START, + PTN.RESPONSE_END, + ]); }); it('should have an absolute http.url attribute', () => { @@ -882,12 +879,17 @@ describe('fetch', () => { 2, `Wrong number of spans: ${exportSpy.args.length}` ); - assert.strictEqual(events.length, 9, 'number of events is wrong'); - assert.strictEqual( - events[6].name, + assert.strictEqual(events.length, 8, 'number of events is wrong'); + testForCorrectEvents(events, [ + PTN.FETCH_START, + PTN.DOMAIN_LOOKUP_START, + PTN.DOMAIN_LOOKUP_END, + PTN.CONNECT_START, + PTN.CONNECT_END, PTN.REQUEST_START, - `event ${PTN.REQUEST_START} is not defined` - ); + PTN.RESPONSE_START, + PTN.RESPONSE_END, + ]); }); }); diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/test/xhr.test.ts b/experimental/packages/opentelemetry-instrumentation-xml-http-request/test/xhr.test.ts index b304bb9c03..c3614a42e8 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/test/xhr.test.ts +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/test/xhr.test.ts @@ -162,6 +162,19 @@ function createFakePerformanceObs(url: string) { return FakePerfObs; } +function testForCorrectEvents( + events: tracing.TimedEvent[], + eventNames: string[] +) { + for (let i = 0; i < events.length; i++) { + assert.strictEqual( + events[i].name, + eventNames[i], + `event ${eventNames[i]} is not defined` + ); + } +} + describe('xhr', () => { const asyncTests = [{ async: true }, { async: false }]; asyncTests.forEach(test => { @@ -200,6 +213,7 @@ describe('xhr', () => { let rootSpan: api.Span; let spyEntries: any; const url = 'http://localhost:8090/xml-http-request.js'; + const secureUrl = 'https://localhost:8090/xml-http-request.js'; let fakeNow = 0; let xmlHttpRequestInstrumentation: XMLHttpRequestInstrumentation; @@ -383,69 +397,20 @@ describe('xhr', () => { it('span should have correct events', () => { const span: tracing.ReadableSpan = exportSpy.args[1][0][0]; const events = span.events; - - assert.strictEqual( - events[0].name, + testForCorrectEvents(events, [ EventNames.METHOD_OPEN, - `event ${EventNames.METHOD_OPEN} is not defined` - ); - assert.strictEqual( - events[1].name, EventNames.METHOD_SEND, - `event ${EventNames.METHOD_SEND} is not defined` - ); - assert.strictEqual( - events[2].name, PTN.FETCH_START, - `event ${PTN.FETCH_START} is not defined` - ); - assert.strictEqual( - events[3].name, PTN.DOMAIN_LOOKUP_START, - `event ${PTN.DOMAIN_LOOKUP_START} is not defined` - ); - assert.strictEqual( - events[4].name, PTN.DOMAIN_LOOKUP_END, - `event ${PTN.DOMAIN_LOOKUP_END} is not defined` - ); - assert.strictEqual( - events[5].name, PTN.CONNECT_START, - `event ${PTN.CONNECT_START} is not defined` - ); - assert.strictEqual( - events[6].name, - PTN.SECURE_CONNECTION_START, - `event ${PTN.SECURE_CONNECTION_START} is not defined` - ); - assert.strictEqual( - events[7].name, PTN.CONNECT_END, - `event ${PTN.CONNECT_END} is not defined` - ); - assert.strictEqual( - events[8].name, PTN.REQUEST_START, - `event ${PTN.REQUEST_START} is not defined` - ); - assert.strictEqual( - events[9].name, PTN.RESPONSE_START, - `event ${PTN.RESPONSE_START} is not defined` - ); - assert.strictEqual( - events[10].name, PTN.RESPONSE_END, - `event ${PTN.RESPONSE_END} is not defined` - ); - assert.strictEqual( - events[11].name, EventNames.EVENT_LOAD, - `event ${EventNames.EVENT_LOAD} is not defined` - ); - - assert.strictEqual(events.length, 12, 'number of events is wrong'); + ]); + assert.strictEqual(events.length, 11, 'number of events is wrong'); }); it('should create a span for preflight request', () => { @@ -479,53 +444,17 @@ describe('xhr', () => { it('preflight request span should have correct events', () => { const span: tracing.ReadableSpan = exportSpy.args[0][0][0]; const events = span.events; - assert.strictEqual(events.length, 9, 'number of events is wrong'); - - assert.strictEqual( - events[0].name, + assert.strictEqual(events.length, 8, 'number of events is wrong'); + testForCorrectEvents(events, [ PTN.FETCH_START, - `event ${PTN.FETCH_START} is not defined` - ); - assert.strictEqual( - events[1].name, PTN.DOMAIN_LOOKUP_START, - `event ${PTN.DOMAIN_LOOKUP_START} is not defined` - ); - assert.strictEqual( - events[2].name, PTN.DOMAIN_LOOKUP_END, - `event ${PTN.DOMAIN_LOOKUP_END} is not defined` - ); - assert.strictEqual( - events[3].name, PTN.CONNECT_START, - `event ${PTN.CONNECT_START} is not defined` - ); - assert.strictEqual( - events[4].name, - PTN.SECURE_CONNECTION_START, - `event ${PTN.SECURE_CONNECTION_START} is not defined` - ); - assert.strictEqual( - events[5].name, PTN.CONNECT_END, - `event ${PTN.CONNECT_END} is not defined` - ); - assert.strictEqual( - events[6].name, PTN.REQUEST_START, - `event ${PTN.REQUEST_START} is not defined` - ); - assert.strictEqual( - events[7].name, PTN.RESPONSE_START, - `event ${PTN.RESPONSE_START} is not defined` - ); - assert.strictEqual( - events[8].name, PTN.RESPONSE_END, - `event ${PTN.RESPONSE_END} is not defined` - ); + ]); }); it('should NOT clear the resources', () => { @@ -534,6 +463,53 @@ describe('xhr', () => { 'resources have been cleared' ); }); + describe('When making https requests', () => { + beforeEach(done => { + clearData(); + // this won't generate a preflight span + const propagateTraceHeaderCorsUrls = [secureUrl]; + prepareData(done, secureUrl, { + propagateTraceHeaderCorsUrls, + }); + }); + + it('span should have correct events', () => { + const span: tracing.ReadableSpan = exportSpy.args[1][0][0]; + const events = span.events; + testForCorrectEvents(events, [ + EventNames.METHOD_OPEN, + EventNames.METHOD_SEND, + PTN.FETCH_START, + PTN.DOMAIN_LOOKUP_START, + PTN.DOMAIN_LOOKUP_END, + PTN.CONNECT_START, + PTN.SECURE_CONNECTION_START, + PTN.CONNECT_END, + PTN.REQUEST_START, + PTN.RESPONSE_START, + PTN.RESPONSE_END, + EventNames.EVENT_LOAD, + ]); + assert.strictEqual(events.length, 12, 'number of events is wrong'); + }); + + it('preflight request span should have correct events', () => { + const span: tracing.ReadableSpan = exportSpy.args[0][0][0]; + const events = span.events; + assert.strictEqual(events.length, 9, 'number of events is wrong'); + testForCorrectEvents(events, [ + PTN.FETCH_START, + PTN.DOMAIN_LOOKUP_START, + PTN.DOMAIN_LOOKUP_END, + PTN.CONNECT_START, + PTN.SECURE_CONNECTION_START, + PTN.CONNECT_END, + PTN.REQUEST_START, + PTN.RESPONSE_START, + PTN.RESPONSE_END, + ]); + }); + }); describe('AND origin match with window.location', () => { beforeEach(done => { @@ -786,11 +762,11 @@ describe('xhr', () => { assert.strictEqual( events.length, - 12, + 11, `number of events is wrong: ${events.length}` ); assert.strictEqual( - events[8].name, + events[7].name, PTN.REQUEST_START, `event ${PTN.REQUEST_START} is not defined` ); @@ -1008,67 +984,20 @@ describe('xhr', () => { const span: tracing.ReadableSpan = exportSpy.args[0][0][0]; const events = span.events; - assert.strictEqual( - events[0].name, + testForCorrectEvents(events, [ EventNames.METHOD_OPEN, - `event ${EventNames.METHOD_OPEN} is not defined` - ); - assert.strictEqual( - events[1].name, EventNames.METHOD_SEND, - `event ${EventNames.METHOD_SEND} is not defined` - ); - assert.strictEqual( - events[2].name, PTN.FETCH_START, - `event ${PTN.FETCH_START} is not defined` - ); - assert.strictEqual( - events[3].name, PTN.DOMAIN_LOOKUP_START, - `event ${PTN.DOMAIN_LOOKUP_START} is not defined` - ); - assert.strictEqual( - events[4].name, PTN.DOMAIN_LOOKUP_END, - `event ${PTN.DOMAIN_LOOKUP_END} is not defined` - ); - assert.strictEqual( - events[5].name, PTN.CONNECT_START, - `event ${PTN.CONNECT_START} is not defined` - ); - assert.strictEqual( - events[6].name, PTN.SECURE_CONNECTION_START, - `event ${PTN.SECURE_CONNECTION_START} is not defined` - ); - assert.strictEqual( - events[7].name, PTN.CONNECT_END, - `event ${PTN.CONNECT_END} is not defined` - ); - assert.strictEqual( - events[8].name, PTN.REQUEST_START, - `event ${PTN.REQUEST_START} is not defined` - ); - assert.strictEqual( - events[9].name, PTN.RESPONSE_START, - `event ${PTN.RESPONSE_START} is not defined` - ); - assert.strictEqual( - events[10].name, PTN.RESPONSE_END, - `event ${PTN.RESPONSE_END} is not defined` - ); - assert.strictEqual( - events[11].name, EventNames.EVENT_ERROR, - `event ${EventNames.EVENT_ERROR} is not defined` - ); - + ]); assert.strictEqual(events.length, 12, 'number of events is wrong'); }); }); @@ -1123,23 +1052,11 @@ describe('xhr', () => { it('span should have correct events', () => { const span: tracing.ReadableSpan = exportSpy.args[0][0][0]; const events = span.events; - - assert.strictEqual( - events[0].name, + testForCorrectEvents(events, [ EventNames.METHOD_OPEN, - `event ${EventNames.METHOD_OPEN} is not defined` - ); - assert.strictEqual( - events[1].name, EventNames.METHOD_SEND, - `event ${EventNames.METHOD_SEND} is not defined` - ); - assert.strictEqual( - events[2].name, EventNames.EVENT_ERROR, - `event ${EventNames.EVENT_ERROR} is not defined` - ); - + ]); assert.strictEqual(events.length, 3, 'number of events is wrong'); }); }); @@ -1201,23 +1118,11 @@ describe('xhr', () => { it('span should have correct events', () => { const span: tracing.ReadableSpan = exportSpy.args[0][0][0]; const events = span.events; - - assert.strictEqual( - events[0].name, + testForCorrectEvents(events, [ EventNames.METHOD_OPEN, - `event ${EventNames.METHOD_OPEN} is not defined` - ); - assert.strictEqual( - events[1].name, EventNames.METHOD_SEND, - `event ${EventNames.METHOD_SEND} is not defined` - ); - assert.strictEqual( - events[2].name, EventNames.EVENT_ABORT, - `event ${EventNames.EVENT_ABORT} is not defined` - ); - + ]); assert.strictEqual(events.length, 3, 'number of events is wrong'); }); }); @@ -1280,22 +1185,11 @@ describe('xhr', () => { const span: tracing.ReadableSpan = exportSpy.args[0][0][0]; const events = span.events; - assert.strictEqual( - events[0].name, + testForCorrectEvents(events, [ EventNames.METHOD_OPEN, - `event ${EventNames.METHOD_OPEN} is not defined` - ); - assert.strictEqual( - events[1].name, EventNames.METHOD_SEND, - `event ${EventNames.METHOD_SEND} is not defined` - ); - assert.strictEqual( - events[2].name, EventNames.EVENT_TIMEOUT, - `event ${EventNames.EVENT_TIMEOUT} is not defined` - ); - + ]); assert.strictEqual(events.length, 3, 'number of events is wrong'); }); }); diff --git a/packages/opentelemetry-sdk-trace-web/src/utils.ts b/packages/opentelemetry-sdk-trace-web/src/utils.ts index 2027abc42f..b3f583676f 100644 --- a/packages/opentelemetry-sdk-trace-web/src/utils.ts +++ b/packages/opentelemetry-sdk-trace-web/src/utils.ts @@ -85,7 +85,12 @@ export function addSpanNetworkEvents( addSpanNetworkEvent(span, PTN.DOMAIN_LOOKUP_START, resource); addSpanNetworkEvent(span, PTN.DOMAIN_LOOKUP_END, resource); addSpanNetworkEvent(span, PTN.CONNECT_START, resource); - addSpanNetworkEvent(span, PTN.SECURE_CONNECTION_START, resource); + if ( + hasKey(resource as PerformanceResourceTiming, 'name') && + (resource as PerformanceResourceTiming)['name'].startsWith('https:') + ) { + addSpanNetworkEvent(span, PTN.SECURE_CONNECTION_START, resource); + } addSpanNetworkEvent(span, PTN.CONNECT_END, resource); addSpanNetworkEvent(span, PTN.REQUEST_START, resource); addSpanNetworkEvent(span, PTN.RESPONSE_START, resource); diff --git a/packages/opentelemetry-sdk-trace-web/test/utils.test.ts b/packages/opentelemetry-sdk-trace-web/test/utils.test.ts index 06e550c1f0..dd00e6b061 100644 --- a/packages/opentelemetry-sdk-trace-web/test/utils.test.ts +++ b/packages/opentelemetry-sdk-trace-web/test/utils.test.ts @@ -116,9 +116,16 @@ describe('utils', () => { assert.strictEqual(addEventSpy.callCount, 0); addSpanNetworkEvents(span, entries); - - assert.strictEqual(addEventSpy.callCount, 9); assert.strictEqual(setAttributeSpy.callCount, 2); + //secure connect start should not be added to non-https resource + assert.strictEqual(addEventSpy.callCount, 8); + //secure connect start should be added to an https resource + addEventSpy.resetHistory(); + addSpanNetworkEvents(span, { + ...entries, + name: 'https://foo', + } as PerformanceResourceTiming); + assert.strictEqual(addEventSpy.callCount, 9); }); it('should only include encoded size when content encoding is being used', () => { const addEventSpy = sinon.spy(); From a675ae817b51ea6b8853e62ea460e3e944cd0930 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 5 Jul 2023 11:21:20 +0200 Subject: [PATCH 57/71] chore(deps): update all patch versions to v7.22.6 (#3965) --- .../packages/exporter-logs-otlp-grpc/package.json | 2 +- .../packages/exporter-logs-otlp-http/package.json | 2 +- .../packages/exporter-logs-otlp-proto/package.json | 2 +- .../packages/exporter-trace-otlp-grpc/package.json | 2 +- .../packages/exporter-trace-otlp-http/package.json | 2 +- .../packages/exporter-trace-otlp-proto/package.json | 2 +- .../packages/opentelemetry-browser-detector/package.json | 2 +- .../opentelemetry-exporter-metrics-otlp-grpc/package.json | 2 +- .../opentelemetry-exporter-metrics-otlp-http/package.json | 2 +- .../package.json | 2 +- .../opentelemetry-instrumentation-fetch/package.json | 2 +- .../package.json | 2 +- .../packages/opentelemetry-instrumentation/package.json | 2 +- .../packages/otlp-grpc-exporter-base/package.json | 2 +- .../packages/otlp-proto-exporter-base/package.json | 2 +- packages/opentelemetry-context-zone-peer-dep/package.json | 2 +- packages/opentelemetry-context-zone/package.json | 2 +- packages/opentelemetry-exporter-zipkin/package.json | 2 +- packages/opentelemetry-sdk-trace-web/package.json | 2 +- selenium-tests/package.json | 8 ++++---- 20 files changed, 23 insertions(+), 23 deletions(-) diff --git a/experimental/packages/exporter-logs-otlp-grpc/package.json b/experimental/packages/exporter-logs-otlp-grpc/package.json index 43dc22d223..fc70f70d07 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/package.json +++ b/experimental/packages/exporter-logs-otlp-grpc/package.json @@ -48,7 +48,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.5", + "@babel/core": "7.22.6", "@grpc/proto-loader": "^0.7.3", "@opentelemetry/api": "1.4.1", "@opentelemetry/api-logs": "0.40.0", diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index a1ff957253..351eaa0cc7 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -71,7 +71,7 @@ ], "sideEffects": false, "devDependencies": { - "@babel/core": "7.22.5", + "@babel/core": "7.22.6", "@opentelemetry/api-logs": "0.40.0", "@opentelemetry/resources": "1.14.0", "@types/mocha": "10.0.1", diff --git a/experimental/packages/exporter-logs-otlp-proto/package.json b/experimental/packages/exporter-logs-otlp-proto/package.json index 204414966f..b8b685c42f 100644 --- a/experimental/packages/exporter-logs-otlp-proto/package.json +++ b/experimental/packages/exporter-logs-otlp-proto/package.json @@ -63,7 +63,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.5", + "@babel/core": "7.22.6", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", diff --git a/experimental/packages/exporter-trace-otlp-grpc/package.json b/experimental/packages/exporter-trace-otlp-grpc/package.json index fce71adbd5..5b888affd7 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/package.json +++ b/experimental/packages/exporter-trace-otlp-grpc/package.json @@ -47,7 +47,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.5", + "@babel/core": "7.22.6", "@grpc/proto-loader": "^0.7.3", "@opentelemetry/api": "1.4.1", "@opentelemetry/otlp-exporter-base": "0.40.0", diff --git a/experimental/packages/exporter-trace-otlp-http/package.json b/experimental/packages/exporter-trace-otlp-http/package.json index 9e55231aa6..8d41fc0873 100644 --- a/experimental/packages/exporter-trace-otlp-http/package.json +++ b/experimental/packages/exporter-trace-otlp-http/package.json @@ -63,7 +63,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.5", + "@babel/core": "7.22.6", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", diff --git a/experimental/packages/exporter-trace-otlp-proto/package.json b/experimental/packages/exporter-trace-otlp-proto/package.json index 5f0deff40b..27acfa4e12 100644 --- a/experimental/packages/exporter-trace-otlp-proto/package.json +++ b/experimental/packages/exporter-trace-otlp-proto/package.json @@ -62,7 +62,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.5", + "@babel/core": "7.22.6", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", diff --git a/experimental/packages/opentelemetry-browser-detector/package.json b/experimental/packages/opentelemetry-browser-detector/package.json index 788fb3dd99..52bc1e7f27 100644 --- a/experimental/packages/opentelemetry-browser-detector/package.json +++ b/experimental/packages/opentelemetry-browser-detector/package.json @@ -53,7 +53,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.5", + "@babel/core": "7.22.6", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index cebe38c3c9..17e35ee07b 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -47,7 +47,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.5", + "@babel/core": "7.22.6", "@grpc/proto-loader": "^0.7.3", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index e26bbcd17b..fa10515d33 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -63,7 +63,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.5", + "@babel/core": "7.22.6", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index f10cf504ca..f384dec981 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -47,7 +47,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.5", + "@babel/core": "7.22.6", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index c8f1bfcb39..742ec40861 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -54,7 +54,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.5", + "@babel/core": "7.22.6", "@opentelemetry/api": "1.4.1", "@opentelemetry/context-zone": "1.14.0", "@opentelemetry/propagator-b3": "1.14.0", diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json index 4eb469da07..a9d38e65f3 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json @@ -54,7 +54,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.5", + "@babel/core": "7.22.6", "@opentelemetry/api": "1.4.1", "@opentelemetry/context-zone": "1.14.0", "@opentelemetry/propagator-b3": "1.14.0", diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index 944258ad8f..bdfaa89e58 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -82,7 +82,7 @@ "@opentelemetry/api": "^1.3.0" }, "devDependencies": { - "@babel/core": "7.22.5", + "@babel/core": "7.22.6", "@opentelemetry/api": "1.4.1", "@opentelemetry/sdk-metrics": "1.14.0", "@types/mocha": "10.0.1", diff --git a/experimental/packages/otlp-grpc-exporter-base/package.json b/experimental/packages/otlp-grpc-exporter-base/package.json index 4956fbee14..65d86fe705 100644 --- a/experimental/packages/otlp-grpc-exporter-base/package.json +++ b/experimental/packages/otlp-grpc-exporter-base/package.json @@ -48,7 +48,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.5", + "@babel/core": "7.22.6", "@opentelemetry/api": "1.4.1", "@opentelemetry/otlp-transformer": "0.40.0", "@opentelemetry/resources": "1.14.0", diff --git a/experimental/packages/otlp-proto-exporter-base/package.json b/experimental/packages/otlp-proto-exporter-base/package.json index 0587dc9de5..46b31d990d 100644 --- a/experimental/packages/otlp-proto-exporter-base/package.json +++ b/experimental/packages/otlp-proto-exporter-base/package.json @@ -59,7 +59,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.5", + "@babel/core": "7.22.6", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", diff --git a/packages/opentelemetry-context-zone-peer-dep/package.json b/packages/opentelemetry-context-zone-peer-dep/package.json index 9904e9da84..b2905d6da9 100644 --- a/packages/opentelemetry-context-zone-peer-dep/package.json +++ b/packages/opentelemetry-context-zone-peer-dep/package.json @@ -53,7 +53,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.5", + "@babel/core": "7.22.6", "@opentelemetry/api": ">=1.0.0 <1.5.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", diff --git a/packages/opentelemetry-context-zone/package.json b/packages/opentelemetry-context-zone/package.json index 84a937ce93..1edc610e32 100644 --- a/packages/opentelemetry-context-zone/package.json +++ b/packages/opentelemetry-context-zone/package.json @@ -50,7 +50,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.5", + "@babel/core": "7.22.6", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index bbe473b650..ff26a83e19 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -60,7 +60,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.5", + "@babel/core": "7.22.6", "@opentelemetry/api": "^1.0.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", diff --git a/packages/opentelemetry-sdk-trace-web/package.json b/packages/opentelemetry-sdk-trace-web/package.json index b3bfc15586..8e16b16378 100644 --- a/packages/opentelemetry-sdk-trace-web/package.json +++ b/packages/opentelemetry-sdk-trace-web/package.json @@ -55,7 +55,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.5", + "@babel/core": "7.22.6", "@opentelemetry/api": ">=1.0.0 <1.5.0", "@opentelemetry/context-zone": "1.14.0", "@opentelemetry/propagator-b3": "1.14.0", diff --git a/selenium-tests/package.json b/selenium-tests/package.json index 6d7726c134..3cdfb5d9d4 100644 --- a/selenium-tests/package.json +++ b/selenium-tests/package.json @@ -31,11 +31,11 @@ "access": "restricted" }, "devDependencies": { - "@babel/core": "7.22.5", + "@babel/core": "7.22.6", "@babel/plugin-proposal-class-properties": "7.18.6", - "@babel/plugin-proposal-decorators": "7.22.5", - "@babel/plugin-transform-runtime": "7.22.5", - "@babel/preset-env": "7.22.5", + "@babel/plugin-proposal-decorators": "7.22.6", + "@babel/plugin-transform-runtime": "7.22.6", + "@babel/preset-env": "7.22.6", "@opentelemetry/api": "^1.0.0", "babel-loader": "8.3.0", "babel-polyfill": "6.26.0", From 06e919d6c909e8cc8e28b6624d9843f401d9b059 Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Thu, 6 Jul 2023 13:06:26 +0200 Subject: [PATCH 58/71] chore: prepare release 1.15 / 0.41 (#3963) --- CHANGELOG.md | 17 ++++++----- examples/esm-http-ts/package.json | 16 +++++----- examples/http/package.json | 18 +++++------ examples/https/package.json | 18 +++++------ examples/opentelemetry-web/package.json | 30 +++++++++---------- examples/otlp-exporter-node/package.json | 24 +++++++-------- experimental/CHANGELOG.md | 19 ++++++++++-- .../node14/package.json | 6 ++-- .../node16/package.json | 6 ++-- experimental/examples/logs/package.json | 6 ++-- .../examples/opencensus-shim/package.json | 17 +++++------ experimental/examples/prometheus/package.json | 6 ++-- experimental/packages/api-events/package.json | 2 +- experimental/packages/api-logs/package.json | 2 +- .../exporter-logs-otlp-grpc/package.json | 16 +++++----- .../exporter-logs-otlp-http/package.json | 14 ++++----- .../exporter-logs-otlp-proto/package.json | 18 +++++------ .../exporter-trace-otlp-grpc/package.json | 14 ++++----- .../exporter-trace-otlp-http/package.json | 12 ++++---- .../exporter-trace-otlp-proto/package.json | 14 ++++----- .../package.json | 6 ++-- .../package.json | 14 ++++----- .../package.json | 12 ++++---- .../package.json | 16 +++++----- .../package.json | 10 +++---- .../package.json | 16 +++++----- .../package.json | 14 ++++----- .../package.json | 16 +++++----- .../package.json | 16 +++++----- .../package.json | 4 +-- .../opentelemetry-sdk-node/package.json | 28 ++++++++--------- .../packages/otlp-exporter-base/package.json | 4 +-- .../otlp-grpc-exporter-base/package.json | 12 ++++---- .../otlp-proto-exporter-base/package.json | 6 ++-- .../packages/otlp-transformer/package.json | 14 ++++----- experimental/packages/sdk-logs/package.json | 8 ++--- .../packages/shim-opencensus/package.json | 8 ++--- .../package.json | 8 ++--- .../package.json | 2 +- .../package.json | 2 +- .../opentelemetry-context-zone/package.json | 8 ++--- packages/opentelemetry-core/package.json | 4 +-- .../package.json | 10 +++---- .../package.json | 10 +++---- .../opentelemetry-propagator-b3/package.json | 4 +-- .../package.json | 4 +-- packages/opentelemetry-resources/package.json | 6 ++-- .../opentelemetry-sdk-trace-base/package.json | 8 ++--- .../opentelemetry-sdk-trace-node/package.json | 16 +++++----- .../opentelemetry-sdk-trace-web/package.json | 14 ++++----- .../package.json | 2 +- .../package.json | 12 ++++---- packages/sdk-metrics/package.json | 6 ++-- packages/template/package.json | 2 +- selenium-tests/package.json | 22 +++++++------- 55 files changed, 316 insertions(+), 303 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 42ca36c051..6f72946061 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,22 +11,24 @@ For experimental package changes, see the [experimental CHANGELOG](experimental/ ### :rocket: (Enhancement) -* feat(exporter-metrics-otlp-*)!: add LowMemory metrics temporality preference [#3915](https://github.com/open-telemetry/opentelemetry-js/pull/3915) - * Breaking: From now on `AggregationTemporalityPreference` has to be used instead of `AggregationTemporality` when configuring the exporter. - * Adds support for [LowMemory temporality preference](https://github.com/open-telemetry/opentelemetry-specification/blob/f09624bb97e9be3be259733b93be507df18927bd/specification/metrics/sdk_exporters/otlp.md#additional-configuration) - * Adds support for `lowmemory` in `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE` +### :bug: (Bug Fix) + +### :books: (Refine Doc) + +### :house: (Internal) + +## 1.15.0 ### :bug: (Bug Fix) * fix(opentelemetry-exporter-prometheus): Update default PrometheusExporter to not append a timestamp to match the text based exposition format [#3961](https://github.com/open-telemetry/opentelemetry-js/pull/3961) @JacksonWeber * fix(sdk-metrics): Update default Histogram's boundary to match OTEL's spec [#3893](https://github.com/open-telemetry/opentelemetry-js/pull/3893/) @chigia001 * fix(sdk-metrics): preserve startTime for cumulative ExponentialHistograms [#3934](https://github.com/open-telemetry/opentelemetry-js/pull/3934/) @aabmass - -### :books: (Refine Doc) +* fix(sdk-trace-web): add secureConnectionStart to https only [#3879](https://github.com/open-telemetry/opentelemetry-js/pull/3879) @Abinet18 ### :house: (Internal) -* feat(minification): [Minification] Add noEmitHelpers, importHelpers and tslib as a dependency [#3913](https://github.com/open-telemetry/opentelemetry-js/issues/3913) +* feat(minification): [Minification] Add noEmitHelpers, importHelpers and tslib as a dependency [#3913](https://github.com/open-telemetry/opentelemetry-js/issues/3913) @MSNev ## 1.14.0 @@ -42,7 +44,6 @@ For experimental package changes, see the [experimental CHANGELOG](experimental/ ### :bug: (Bug Fix) -* fix(sdk-trace-web): add secureConnectionStart to https only [#3879](https://github.com/open-telemetry/opentelemetry-js/pull/3879) @Abinet18 * fix(http-instrumentation): stop listening to `request`'s `close` event once it has emitted `response` [#3625](https://github.com/open-telemetry/opentelemetry-js/pull/3625) @SimenB * fix(sdk-node): fix initialization in bundled environments by not loading @opentelemetry/exporter-jaeger [#3739](https://github.com/open-telemetry/opentelemetry-js/pull/3739) @pichlermarc diff --git a/examples/esm-http-ts/package.json b/examples/esm-http-ts/package.json index 71977f73ff..4dcbbf6009 100644 --- a/examples/esm-http-ts/package.json +++ b/examples/esm-http-ts/package.json @@ -1,7 +1,7 @@ { "name": "esm-http-ts", "private": true, - "version": "0.40.0", + "version": "0.41.0", "description": "Example of HTTP integration with OpenTelemetry using ESM and TypeScript", "main": "build/index.js", "type": "module", @@ -31,12 +31,12 @@ "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/", "dependencies": { "@opentelemetry/api": "1.4.1", - "@opentelemetry/exporter-trace-otlp-proto": "0.40.0", - "@opentelemetry/instrumentation": "0.40.0", - "@opentelemetry/instrumentation-http": "0.40.0", - "@opentelemetry/resources": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0", - "@opentelemetry/sdk-trace-node": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0" + "@opentelemetry/exporter-trace-otlp-proto": "0.41.0", + "@opentelemetry/instrumentation": "0.41.0", + "@opentelemetry/instrumentation-http": "0.41.0", + "@opentelemetry/resources": "1.15.0", + "@opentelemetry/sdk-trace-base": "1.15.0", + "@opentelemetry/sdk-trace-node": "1.15.0", + "@opentelemetry/semantic-conventions": "1.15.0" } } diff --git a/examples/http/package.json b/examples/http/package.json index a48f8e2c1b..22d3d29d9c 100644 --- a/examples/http/package.json +++ b/examples/http/package.json @@ -1,7 +1,7 @@ { "name": "http-example", "private": true, - "version": "0.40.0", + "version": "0.41.0", "description": "Example of HTTP integration with OpenTelemetry", "main": "index.js", "scripts": { @@ -29,14 +29,14 @@ }, "dependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/exporter-jaeger": "1.14.0", - "@opentelemetry/exporter-zipkin": "1.14.0", - "@opentelemetry/instrumentation": "0.40.0", - "@opentelemetry/instrumentation-http": "0.40.0", - "@opentelemetry/resources": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0", - "@opentelemetry/sdk-trace-node": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0" + "@opentelemetry/exporter-jaeger": "1.15.0", + "@opentelemetry/exporter-zipkin": "1.15.0", + "@opentelemetry/instrumentation": "0.41.0", + "@opentelemetry/instrumentation-http": "0.41.0", + "@opentelemetry/resources": "1.15.0", + "@opentelemetry/sdk-trace-base": "1.15.0", + "@opentelemetry/sdk-trace-node": "1.15.0", + "@opentelemetry/semantic-conventions": "1.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/http", "devDependencies": { diff --git a/examples/https/package.json b/examples/https/package.json index 2a63c724c9..15b3ac513d 100644 --- a/examples/https/package.json +++ b/examples/https/package.json @@ -1,7 +1,7 @@ { "name": "https-example", "private": true, - "version": "0.40.0", + "version": "0.41.0", "description": "Example of HTTPs integration with OpenTelemetry", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -33,14 +33,14 @@ }, "dependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/exporter-jaeger": "1.14.0", - "@opentelemetry/exporter-zipkin": "1.14.0", - "@opentelemetry/instrumentation": "0.40.0", - "@opentelemetry/instrumentation-http": "0.40.0", - "@opentelemetry/resources": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0", - "@opentelemetry/sdk-trace-node": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0" + "@opentelemetry/exporter-jaeger": "1.15.0", + "@opentelemetry/exporter-zipkin": "1.15.0", + "@opentelemetry/instrumentation": "0.41.0", + "@opentelemetry/instrumentation-http": "0.41.0", + "@opentelemetry/resources": "1.15.0", + "@opentelemetry/sdk-trace-base": "1.15.0", + "@opentelemetry/sdk-trace-node": "1.15.0", + "@opentelemetry/semantic-conventions": "1.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/https", "devDependencies": { diff --git a/examples/opentelemetry-web/package.json b/examples/opentelemetry-web/package.json index 7caa50413f..762f17d65f 100644 --- a/examples/opentelemetry-web/package.json +++ b/examples/opentelemetry-web/package.json @@ -1,7 +1,7 @@ { "name": "web-opentelemetry-example", "private": true, - "version": "0.40.0", + "version": "0.41.0", "description": "Example of using @opentelemetry/sdk-trace-web and @opentelemetry/sdk-metrics in browser", "main": "index.js", "scripts": { @@ -43,20 +43,20 @@ }, "dependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-zone": "1.14.0", - "@opentelemetry/core": "1.14.0", - "@opentelemetry/exporter-metrics-otlp-http": "0.40.0", - "@opentelemetry/exporter-trace-otlp-http": "0.40.0", - "@opentelemetry/exporter-trace-otlp-proto": "0.40.0", - "@opentelemetry/exporter-zipkin": "1.14.0", - "@opentelemetry/instrumentation": "0.40.0", - "@opentelemetry/instrumentation-fetch": "0.40.0", - "@opentelemetry/instrumentation-xml-http-request": "0.40.0", - "@opentelemetry/propagator-b3": "1.14.0", - "@opentelemetry/sdk-metrics": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0", - "@opentelemetry/sdk-trace-web": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0", + "@opentelemetry/context-zone": "1.15.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.41.0", + "@opentelemetry/exporter-trace-otlp-http": "0.41.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.41.0", + "@opentelemetry/exporter-zipkin": "1.15.0", + "@opentelemetry/instrumentation": "0.41.0", + "@opentelemetry/instrumentation-fetch": "0.41.0", + "@opentelemetry/instrumentation-xml-http-request": "0.41.0", + "@opentelemetry/propagator-b3": "1.15.0", + "@opentelemetry/sdk-metrics": "1.15.0", + "@opentelemetry/sdk-trace-base": "1.15.0", + "@opentelemetry/sdk-trace-web": "1.15.0", + "@opentelemetry/semantic-conventions": "1.15.0", "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/tracer-web" diff --git a/examples/otlp-exporter-node/package.json b/examples/otlp-exporter-node/package.json index bb5fa25136..888a0b1be8 100644 --- a/examples/otlp-exporter-node/package.json +++ b/examples/otlp-exporter-node/package.json @@ -1,7 +1,7 @@ { "name": "example-otlp-exporter-node", "private": true, - "version": "0.40.0", + "version": "0.41.0", "description": "Example of using @opentelemetry/collector-exporter in Node.js", "main": "index.js", "scripts": { @@ -29,17 +29,17 @@ }, "dependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/core": "1.14.0", - "@opentelemetry/exporter-metrics-otlp-grpc": "0.40.0", - "@opentelemetry/exporter-metrics-otlp-http": "0.40.0", - "@opentelemetry/exporter-metrics-otlp-proto": "0.40.0", - "@opentelemetry/exporter-trace-otlp-grpc": "0.40.0", - "@opentelemetry/exporter-trace-otlp-http": "0.40.0", - "@opentelemetry/exporter-trace-otlp-proto": "0.40.0", - "@opentelemetry/resources": "1.14.0", - "@opentelemetry/sdk-metrics": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0" + "@opentelemetry/core": "1.15.0", + "@opentelemetry/exporter-metrics-otlp-grpc": "0.41.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.41.0", + "@opentelemetry/exporter-metrics-otlp-proto": "0.41.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.41.0", + "@opentelemetry/exporter-trace-otlp-http": "0.41.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.41.0", + "@opentelemetry/resources": "1.15.0", + "@opentelemetry/sdk-metrics": "1.15.0", + "@opentelemetry/sdk-trace-base": "1.15.0", + "@opentelemetry/semantic-conventions": "1.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/otlp-exporter-node" } diff --git a/experimental/CHANGELOG.md b/experimental/CHANGELOG.md index 2ad8923f8b..7d22becab6 100644 --- a/experimental/CHANGELOG.md +++ b/experimental/CHANGELOG.md @@ -6,22 +6,35 @@ All notable changes to experimental packages in this project will be documented ### :boom: Breaking Change +### :rocket: (Enhancement) + +### :bug: (Bug Fix) + +### :books: (Refine Doc) + +### :house: (Internal) + +## 0.41.0 + +### :boom: Breaking Change + * chore(instrumentation-grpc): Drop support for package `grpc`. [#3807](https://github.com/open-telemetry/opentelemetry-js/pull/3807) @llc1123 ### :rocket: (Enhancement) * feat(otlp-grpc-exporters): add support for UDS endpoints. [#3853](https://github.com/open-telemetry/opentelemetry-js/pull/3853) @llc1123 * feat(otlp-exporters): bump otlp proto to 0.20.0 [#3932](https://github.com/open-telemetry/opentelemetry-js/pull/3932) @pichlermarc +* feat(exporter-metrics-otlp-*): add LowMemory metrics temporality preference [#3915](https://github.com/open-telemetry/opentelemetry-js/pull/3915) @martinkuba + * Adds support for [LowMemory temporality preference](https://github.com/open-telemetry/opentelemetry-specification/blob/f09624bb97e9be3be259733b93be507df18927bd/specification/metrics/sdk_exporters/otlp.md#additional-configuration) + * Adds support for `lowmemory` in `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE` ### :bug: (Bug Fix) * fix(exporter-logs-otlp-http): set useHex to true [#3875](https://github.com/open-telemetry/opentelemetry-js/pull/3875) @Nico385412 - fix(otlp-proto-exporter-base): add missing type import [#3937](https://github.com/open-telemetry/opentelemetry-js/pull/3937) @pichlermarc +* fix(otlp-proto-exporter-base): add missing type import [#3937](https://github.com/open-telemetry/opentelemetry-js/pull/3937) @pichlermarc * fix(example-opencensus-shim): avoid OpenCensus auto instrumentations [#3951](https://github.com/open-telemetry/opentelemetry-js/pull/3951) @llc1123 * fix(http-intrumentation): prevent request socket null from throwing uncaught error [#3858](https://github.com/open-telemetry/opentelemetry-js/pull/3858) @aodysseos -### :books: (Refine Doc) - ### :house: (Internal) * chore(instrumentation-grpc): Cleanup remnants of grpc-native support. [#3886](https://github.com/open-telemetry/opentelemetry-js/pull/3886) @llc1123 diff --git a/experimental/backwards-compatibility/node14/package.json b/experimental/backwards-compatibility/node14/package.json index a18a2795f4..1fc32b91f5 100644 --- a/experimental/backwards-compatibility/node14/package.json +++ b/experimental/backwards-compatibility/node14/package.json @@ -1,6 +1,6 @@ { "name": "backcompat-node14", - "version": "0.40.0", + "version": "0.41.0", "private": true, "description": "Backwards compatibility app for node 14 types and the OpenTelemetry Node.js SDK", "main": "index.js", @@ -9,8 +9,8 @@ "peer-api-check": "node ../../../scripts/peer-api-check.js" }, "dependencies": { - "@opentelemetry/sdk-node": "0.40.0", - "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/sdk-node": "0.41.0", + "@opentelemetry/sdk-trace-base": "1.15.0", "tslib": "^2.3.1" }, "devDependencies": { diff --git a/experimental/backwards-compatibility/node16/package.json b/experimental/backwards-compatibility/node16/package.json index aaeb4db421..136ff5ff0b 100644 --- a/experimental/backwards-compatibility/node16/package.json +++ b/experimental/backwards-compatibility/node16/package.json @@ -1,6 +1,6 @@ { "name": "backcompat-node16", - "version": "0.40.0", + "version": "0.41.0", "private": true, "description": "Backwards compatibility app for node 16 types and the OpenTelemetry Node.js SDK", "main": "index.js", @@ -9,8 +9,8 @@ "peer-api-check": "node ../../../scripts/peer-api-check.js" }, "dependencies": { - "@opentelemetry/sdk-node": "0.40.0", - "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/sdk-node": "0.41.0", + "@opentelemetry/sdk-trace-base": "1.15.0", "tslib": "^2.3.1" }, "devDependencies": { diff --git a/experimental/examples/logs/package.json b/experimental/examples/logs/package.json index 0df41c352f..f4295a7c90 100644 --- a/experimental/examples/logs/package.json +++ b/experimental/examples/logs/package.json @@ -1,14 +1,14 @@ { "name": "logs-example", - "version": "0.40.0", + "version": "0.41.0", "private": true, "scripts": { "start": "ts-node index.ts" }, "dependencies": { "@opentelemetry/api": "^1.4.1", - "@opentelemetry/api-logs": "0.40.0", - "@opentelemetry/sdk-logs": "0.40.0" + "@opentelemetry/api-logs": "0.41.0", + "@opentelemetry/sdk-logs": "0.41.0" }, "devDependencies": { "@types/node": "18.6.5", diff --git a/experimental/examples/opencensus-shim/package.json b/experimental/examples/opencensus-shim/package.json index fd231ef119..ee201e1171 100644 --- a/experimental/examples/opencensus-shim/package.json +++ b/experimental/examples/opencensus-shim/package.json @@ -1,7 +1,7 @@ { "name": "opencensus-shim", "private": true, - "version": "0.40.0", + "version": "0.41.0", "description": "Example of using @opentelemetry/shim-opencensus in Node.js", "main": "index.js", "scripts": { @@ -27,15 +27,14 @@ "url": "https://github.com/open-telemetry/opentelemetry-js/issues" }, "dependencies": { - "@opentelemetry/api": "1.4.1", - "@opentelemetry/sdk-trace-node": "1.14.0", "@opencensus/core": "0.1.0", "@opencensus/nodejs-base": "0.1.0", - "@opentelemetry/semantic-conventions": "1.14.0", - "@opentelemetry/exporter-trace-otlp-grpc": "0.40.0", - "@opentelemetry/resources": "1.14.0", - "@opentelemetry/shim-opencensus": "0.40.0" + "@opentelemetry/api": "1.4.1", + "@opentelemetry/exporter-trace-otlp-grpc": "0.41.0", + "@opentelemetry/resources": "1.15.0", + "@opentelemetry/sdk-trace-node": "1.15.0", + "@opentelemetry/semantic-conventions": "1.15.0", + "@opentelemetry/shim-opencensus": "0.41.0" }, - "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/examples/opencensus-shim", - "devDependencies": {} + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/examples/opencensus-shim" } diff --git a/experimental/examples/prometheus/package.json b/experimental/examples/prometheus/package.json index 037e147dc9..45c9f661dc 100644 --- a/experimental/examples/prometheus/package.json +++ b/experimental/examples/prometheus/package.json @@ -1,6 +1,6 @@ { "name": "prometheus-example", - "version": "0.40.0", + "version": "0.41.0", "private": true, "description": "Example of using @opentelemetry/sdk-metrics and @opentelemetry/exporter-prometheus", "main": "index.js", @@ -11,7 +11,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/exporter-prometheus": "0.40.0", - "@opentelemetry/sdk-metrics": "1.14.0" + "@opentelemetry/exporter-prometheus": "0.41.0", + "@opentelemetry/sdk-metrics": "1.15.0" } } diff --git a/experimental/packages/api-events/package.json b/experimental/packages/api-events/package.json index ec768c6188..1976e7ced3 100644 --- a/experimental/packages/api-events/package.json +++ b/experimental/packages/api-events/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/api-events", - "version": "0.40.0", + "version": "0.41.0", "description": "Public events API for OpenTelemetry", "main": "build/src/index.js", "module": "build/esm/index.js", diff --git a/experimental/packages/api-logs/package.json b/experimental/packages/api-logs/package.json index 7be2db96e3..1591770cae 100644 --- a/experimental/packages/api-logs/package.json +++ b/experimental/packages/api-logs/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/api-logs", - "version": "0.40.0", + "version": "0.41.0", "description": "Public logs API for OpenTelemetry", "main": "build/src/index.js", "module": "build/esm/index.js", diff --git a/experimental/packages/exporter-logs-otlp-grpc/package.json b/experimental/packages/exporter-logs-otlp-grpc/package.json index fc70f70d07..9a8244e50e 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/package.json +++ b/experimental/packages/exporter-logs-otlp-grpc/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-logs-otlp-grpc", - "version": "0.40.0", + "version": "0.41.0", "description": "OpenTelemetry Collector Exporter allows user to send collected log records to the OpenTelemetry Collector", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -51,9 +51,9 @@ "@babel/core": "7.22.6", "@grpc/proto-loader": "^0.7.3", "@opentelemetry/api": "1.4.1", - "@opentelemetry/api-logs": "0.40.0", - "@opentelemetry/otlp-exporter-base": "0.40.0", - "@opentelemetry/resources": "1.14.0", + "@opentelemetry/api-logs": "0.41.0", + "@opentelemetry/otlp-exporter-base": "0.41.0", + "@opentelemetry/resources": "1.15.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", @@ -73,10 +73,10 @@ }, "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.14.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.40.0", - "@opentelemetry/otlp-transformer": "0.40.0", - "@opentelemetry/sdk-logs": "0.40.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.41.0", + "@opentelemetry/otlp-transformer": "0.41.0", + "@opentelemetry/sdk-logs": "0.41.0", "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-logs-otlp-grpc", diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index 351eaa0cc7..f0db30c443 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-logs-otlp-http", - "version": "0.40.0", + "version": "0.41.0", "publishConfig": { "access": "public" }, @@ -72,8 +72,8 @@ "sideEffects": false, "devDependencies": { "@babel/core": "7.22.6", - "@opentelemetry/api-logs": "0.40.0", - "@opentelemetry/resources": "1.14.0", + "@opentelemetry/api-logs": "0.41.0", + "@opentelemetry/resources": "1.15.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", @@ -104,10 +104,10 @@ "@opentelemetry/api-logs": ">=0.38.0" }, "dependencies": { - "@opentelemetry/core": "1.14.0", - "@opentelemetry/otlp-exporter-base": "0.40.0", - "@opentelemetry/otlp-transformer": "0.40.0", - "@opentelemetry/sdk-logs": "0.40.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/otlp-exporter-base": "0.41.0", + "@opentelemetry/otlp-transformer": "0.41.0", + "@opentelemetry/sdk-logs": "0.41.0", "tslib": "^2.3.1" } } diff --git a/experimental/packages/exporter-logs-otlp-proto/package.json b/experimental/packages/exporter-logs-otlp-proto/package.json index b8b685c42f..f7f08642e8 100644 --- a/experimental/packages/exporter-logs-otlp-proto/package.json +++ b/experimental/packages/exporter-logs-otlp-proto/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-logs-otlp-proto", - "version": "0.40.0", + "version": "0.41.0", "description": "An OTLP exporter to send logs using protobuf over HTTP", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -83,14 +83,14 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/api-logs": "0.40.0", - "@opentelemetry/core": "1.14.0", - "@opentelemetry/otlp-exporter-base": "0.40.0", - "@opentelemetry/otlp-proto-exporter-base": "0.40.0", - "@opentelemetry/otlp-transformer": "0.40.0", - "@opentelemetry/resources": "1.14.0", - "@opentelemetry/sdk-logs": "0.40.0", - "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/api-logs": "0.41.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/otlp-exporter-base": "0.41.0", + "@opentelemetry/otlp-proto-exporter-base": "0.41.0", + "@opentelemetry/otlp-transformer": "0.41.0", + "@opentelemetry/resources": "1.15.0", + "@opentelemetry/sdk-logs": "0.41.0", + "@opentelemetry/sdk-trace-base": "1.15.0", "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-logs-otlp-proto", diff --git a/experimental/packages/exporter-trace-otlp-grpc/package.json b/experimental/packages/exporter-trace-otlp-grpc/package.json index 5b888affd7..2cf8e237a6 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/package.json +++ b/experimental/packages/exporter-trace-otlp-grpc/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-trace-otlp-grpc", - "version": "0.40.0", + "version": "0.41.0", "description": "OpenTelemetry Collector Exporter allows user to send collected traces to the OpenTelemetry Collector", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -50,7 +50,7 @@ "@babel/core": "7.22.6", "@grpc/proto-loader": "^0.7.3", "@opentelemetry/api": "1.4.1", - "@opentelemetry/otlp-exporter-base": "0.40.0", + "@opentelemetry/otlp-exporter-base": "0.41.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", @@ -70,11 +70,11 @@ }, "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.14.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.40.0", - "@opentelemetry/otlp-transformer": "0.40.0", - "@opentelemetry/resources": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.41.0", + "@opentelemetry/otlp-transformer": "0.41.0", + "@opentelemetry/resources": "1.15.0", + "@opentelemetry/sdk-trace-base": "1.15.0", "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-trace-otlp-grpc", diff --git a/experimental/packages/exporter-trace-otlp-http/package.json b/experimental/packages/exporter-trace-otlp-http/package.json index 8d41fc0873..ac6a84593a 100644 --- a/experimental/packages/exporter-trace-otlp-http/package.json +++ b/experimental/packages/exporter-trace-otlp-http/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-trace-otlp-http", - "version": "0.40.0", + "version": "0.41.0", "description": "OpenTelemetry Collector Trace Exporter allows user to send collected traces to the OpenTelemetry Collector", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -95,11 +95,11 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.14.0", - "@opentelemetry/otlp-exporter-base": "0.40.0", - "@opentelemetry/otlp-transformer": "0.40.0", - "@opentelemetry/resources": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/otlp-exporter-base": "0.41.0", + "@opentelemetry/otlp-transformer": "0.41.0", + "@opentelemetry/resources": "1.15.0", + "@opentelemetry/sdk-trace-base": "1.15.0", "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-trace-otlp-http", diff --git a/experimental/packages/exporter-trace-otlp-proto/package.json b/experimental/packages/exporter-trace-otlp-proto/package.json index 27acfa4e12..f01322ce03 100644 --- a/experimental/packages/exporter-trace-otlp-proto/package.json +++ b/experimental/packages/exporter-trace-otlp-proto/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-trace-otlp-proto", - "version": "0.40.0", + "version": "0.41.0", "description": "OpenTelemetry Collector Exporter allows user to send collected traces to the OpenTelemetry Collector using protobuf over HTTP", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -82,12 +82,12 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.14.0", - "@opentelemetry/otlp-exporter-base": "0.40.0", - "@opentelemetry/otlp-proto-exporter-base": "0.40.0", - "@opentelemetry/otlp-transformer": "0.40.0", - "@opentelemetry/resources": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/otlp-exporter-base": "0.41.0", + "@opentelemetry/otlp-proto-exporter-base": "0.41.0", + "@opentelemetry/otlp-transformer": "0.41.0", + "@opentelemetry/resources": "1.15.0", + "@opentelemetry/sdk-trace-base": "1.15.0", "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-trace-otlp-proto", diff --git a/experimental/packages/opentelemetry-browser-detector/package.json b/experimental/packages/opentelemetry-browser-detector/package.json index 52bc1e7f27..0a6cd39d19 100644 --- a/experimental/packages/opentelemetry-browser-detector/package.json +++ b/experimental/packages/opentelemetry-browser-detector/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/opentelemetry-browser-detector", - "version": "0.40.0", + "version": "0.41.0", "description": "OpenTelemetry Resource Detector for Browser", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -72,8 +72,8 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/resources": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0", + "@opentelemetry/resources": "1.15.0", + "@opentelemetry/semantic-conventions": "1.15.0", "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/browser-detector" diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index 17e35ee07b..380c0e212e 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-metrics-otlp-grpc", - "version": "0.40.0", + "version": "0.41.0", "description": "OpenTelemetry Collector Metrics Exporter allows user to send collected metrics to the OpenTelemetry Collector", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -69,12 +69,12 @@ }, "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.14.0", - "@opentelemetry/exporter-metrics-otlp-http": "0.40.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.40.0", - "@opentelemetry/otlp-transformer": "0.40.0", - "@opentelemetry/resources": "1.14.0", - "@opentelemetry/sdk-metrics": "1.14.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.41.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.41.0", + "@opentelemetry/otlp-transformer": "0.41.0", + "@opentelemetry/resources": "1.15.0", + "@opentelemetry/sdk-metrics": "1.15.0", "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index fa10515d33..556fbf9a9c 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-metrics-otlp-http", - "version": "0.40.0", + "version": "0.41.0", "description": "OpenTelemetry Collector Metrics Exporter allows user to send collected metrics to the OpenTelemetry Collector", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -95,11 +95,11 @@ "@opentelemetry/api": "^1.3.0" }, "dependencies": { - "@opentelemetry/core": "1.14.0", - "@opentelemetry/otlp-exporter-base": "0.40.0", - "@opentelemetry/otlp-transformer": "0.40.0", - "@opentelemetry/resources": "1.14.0", - "@opentelemetry/sdk-metrics": "1.14.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/otlp-exporter-base": "0.41.0", + "@opentelemetry/otlp-transformer": "0.41.0", + "@opentelemetry/resources": "1.15.0", + "@opentelemetry/sdk-metrics": "1.15.0", "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-http", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index f384dec981..440af69cb0 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-metrics-otlp-proto", - "version": "0.40.0", + "version": "0.41.0", "description": "OpenTelemetry Collector Metrics Exporter allows user to send collected metrics to the OpenTelemetry Collector using protobuf over HTTP", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -67,13 +67,13 @@ "@opentelemetry/api": "^1.3.0" }, "dependencies": { - "@opentelemetry/core": "1.14.0", - "@opentelemetry/exporter-metrics-otlp-http": "0.40.0", - "@opentelemetry/otlp-exporter-base": "0.40.0", - "@opentelemetry/otlp-proto-exporter-base": "0.40.0", - "@opentelemetry/otlp-transformer": "0.40.0", - "@opentelemetry/resources": "1.14.0", - "@opentelemetry/sdk-metrics": "1.14.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.41.0", + "@opentelemetry/otlp-exporter-base": "0.41.0", + "@opentelemetry/otlp-proto-exporter-base": "0.41.0", + "@opentelemetry/otlp-transformer": "0.41.0", + "@opentelemetry/resources": "1.15.0", + "@opentelemetry/sdk-metrics": "1.15.0", "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-proto", diff --git a/experimental/packages/opentelemetry-exporter-prometheus/package.json b/experimental/packages/opentelemetry-exporter-prometheus/package.json index 8ae497886f..c9ffe2cdcc 100644 --- a/experimental/packages/opentelemetry-exporter-prometheus/package.json +++ b/experimental/packages/opentelemetry-exporter-prometheus/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-prometheus", - "version": "0.40.0", + "version": "0.41.0", "description": "OpenTelemetry Exporter Prometheus provides a metrics endpoint for Prometheus", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -44,7 +44,7 @@ }, "devDependencies": { "@opentelemetry/api": "1.4.1", - "@opentelemetry/semantic-conventions": "1.14.0", + "@opentelemetry/semantic-conventions": "1.15.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", @@ -61,9 +61,9 @@ "@opentelemetry/api": "^1.3.0" }, "dependencies": { - "@opentelemetry/core": "1.14.0", - "@opentelemetry/resources": "1.14.0", - "@opentelemetry/sdk-metrics": "1.14.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/resources": "1.15.0", + "@opentelemetry/sdk-metrics": "1.15.0", "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-prometheus", diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index 742ec40861..bf8d325635 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-fetch", - "version": "0.40.0", + "version": "0.41.0", "description": "OpenTelemetry fetch automatic instrumentation package.", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -56,9 +56,9 @@ "devDependencies": { "@babel/core": "7.22.6", "@opentelemetry/api": "1.4.1", - "@opentelemetry/context-zone": "1.14.0", - "@opentelemetry/propagator-b3": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/context-zone": "1.15.0", + "@opentelemetry/propagator-b3": "1.15.0", + "@opentelemetry/sdk-trace-base": "1.15.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", @@ -88,10 +88,10 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.14.0", - "@opentelemetry/instrumentation": "0.40.0", - "@opentelemetry/sdk-trace-web": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/instrumentation": "0.41.0", + "@opentelemetry/sdk-trace-web": "1.15.0", + "@opentelemetry/semantic-conventions": "1.15.0", "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-fetch", diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/package.json b/experimental/packages/opentelemetry-instrumentation-grpc/package.json index f8b247ffa6..ca20eade98 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/package.json +++ b/experimental/packages/opentelemetry-instrumentation-grpc/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-grpc", - "version": "0.40.0", + "version": "0.41.0", "description": "OpenTelemetry grpc automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -48,10 +48,10 @@ "@grpc/grpc-js": "^1.7.1", "@grpc/proto-loader": "^0.7.3", "@opentelemetry/api": "1.4.1", - "@opentelemetry/context-async-hooks": "1.14.0", - "@opentelemetry/core": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0", - "@opentelemetry/sdk-trace-node": "1.14.0", + "@opentelemetry/context-async-hooks": "1.15.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/sdk-trace-base": "1.15.0", + "@opentelemetry/sdk-trace-node": "1.15.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/semver": "7.5.0", @@ -70,8 +70,8 @@ "@opentelemetry/api": "^1.3.0" }, "dependencies": { - "@opentelemetry/instrumentation": "0.40.0", - "@opentelemetry/semantic-conventions": "1.14.0", + "@opentelemetry/instrumentation": "0.41.0", + "@opentelemetry/semantic-conventions": "1.15.0", "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-grpc", diff --git a/experimental/packages/opentelemetry-instrumentation-http/package.json b/experimental/packages/opentelemetry-instrumentation-http/package.json index c39d34ace9..93ed303fa6 100644 --- a/experimental/packages/opentelemetry-instrumentation-http/package.json +++ b/experimental/packages/opentelemetry-instrumentation-http/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-http", - "version": "0.40.0", + "version": "0.41.0", "description": "OpenTelemetry http/https automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,10 +46,10 @@ }, "devDependencies": { "@opentelemetry/api": "1.4.1", - "@opentelemetry/context-async-hooks": "1.14.0", - "@opentelemetry/sdk-metrics": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0", - "@opentelemetry/sdk-trace-node": "1.14.0", + "@opentelemetry/context-async-hooks": "1.15.0", + "@opentelemetry/sdk-metrics": "1.15.0", + "@opentelemetry/sdk-trace-base": "1.15.0", + "@opentelemetry/sdk-trace-node": "1.15.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/request-promise-native": "1.0.18", @@ -74,9 +74,9 @@ "@opentelemetry/api": "^1.3.0" }, "dependencies": { - "@opentelemetry/core": "1.14.0", - "@opentelemetry/instrumentation": "0.40.0", - "@opentelemetry/semantic-conventions": "1.14.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/instrumentation": "0.41.0", + "@opentelemetry/semantic-conventions": "1.15.0", "semver": "^7.5.1", "tslib": "^2.3.1" }, diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json index a9d38e65f3..62852cb31a 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-xml-http-request", - "version": "0.40.0", + "version": "0.41.0", "description": "OpenTelemetry XMLHttpRequest automatic instrumentation package.", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -56,9 +56,9 @@ "devDependencies": { "@babel/core": "7.22.6", "@opentelemetry/api": "1.4.1", - "@opentelemetry/context-zone": "1.14.0", - "@opentelemetry/propagator-b3": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/context-zone": "1.15.0", + "@opentelemetry/propagator-b3": "1.15.0", + "@opentelemetry/sdk-trace-base": "1.15.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", @@ -88,10 +88,10 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.14.0", - "@opentelemetry/instrumentation": "0.40.0", - "@opentelemetry/sdk-trace-web": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/instrumentation": "0.41.0", + "@opentelemetry/sdk-trace-web": "1.15.0", + "@opentelemetry/semantic-conventions": "1.15.0", "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-xml-http-request", diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index bdfaa89e58..e2c06c4ff8 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation", - "version": "0.40.0", + "version": "0.41.0", "description": "Base class for node which OpenTelemetry instrumentation modules extend", "author": "OpenTelemetry Authors", "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation", @@ -84,7 +84,7 @@ "devDependencies": { "@babel/core": "7.22.6", "@opentelemetry/api": "1.4.1", - "@opentelemetry/sdk-metrics": "1.14.0", + "@opentelemetry/sdk-metrics": "1.15.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/semver": "7.5.0", diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json index 5db8e3ced7..e21bf69995 100644 --- a/experimental/packages/opentelemetry-sdk-node/package.json +++ b/experimental/packages/opentelemetry-sdk-node/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sdk-node", - "version": "0.40.0", + "version": "0.41.0", "description": "OpenTelemetry SDK for Node.js", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -44,18 +44,18 @@ "access": "public" }, "dependencies": { - "@opentelemetry/core": "1.14.0", - "@opentelemetry/exporter-jaeger": "1.14.0", - "@opentelemetry/exporter-trace-otlp-grpc": "0.40.0", - "@opentelemetry/exporter-trace-otlp-http": "0.40.0", - "@opentelemetry/exporter-trace-otlp-proto": "0.40.0", - "@opentelemetry/exporter-zipkin": "1.14.0", - "@opentelemetry/instrumentation": "0.40.0", - "@opentelemetry/resources": "1.14.0", - "@opentelemetry/sdk-metrics": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0", - "@opentelemetry/sdk-trace-node": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/exporter-jaeger": "1.15.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.41.0", + "@opentelemetry/exporter-trace-otlp-http": "0.41.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.41.0", + "@opentelemetry/exporter-zipkin": "1.15.0", + "@opentelemetry/instrumentation": "0.41.0", + "@opentelemetry/resources": "1.15.0", + "@opentelemetry/sdk-metrics": "1.15.0", + "@opentelemetry/sdk-trace-base": "1.15.0", + "@opentelemetry/sdk-trace-node": "1.15.0", + "@opentelemetry/semantic-conventions": "1.15.0", "tslib": "^2.3.1" }, "peerDependencies": { @@ -63,7 +63,7 @@ }, "devDependencies": { "@opentelemetry/api": "1.4.1", - "@opentelemetry/context-async-hooks": "1.14.0", + "@opentelemetry/context-async-hooks": "1.15.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/semver": "7.5.0", diff --git a/experimental/packages/otlp-exporter-base/package.json b/experimental/packages/otlp-exporter-base/package.json index de1a701996..b6d15f7ae2 100644 --- a/experimental/packages/otlp-exporter-base/package.json +++ b/experimental/packages/otlp-exporter-base/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/otlp-exporter-base", - "version": "0.40.0", + "version": "0.41.0", "description": "OpenTelemetry OTLP Exporter base (for internal use only)", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -61,7 +61,7 @@ "access": "public" }, "dependencies": { - "@opentelemetry/core": "1.14.0", + "@opentelemetry/core": "1.15.0", "tslib": "^2.3.1" }, "devDependencies": { diff --git a/experimental/packages/otlp-grpc-exporter-base/package.json b/experimental/packages/otlp-grpc-exporter-base/package.json index 65d86fe705..c8fcd6fcda 100644 --- a/experimental/packages/otlp-grpc-exporter-base/package.json +++ b/experimental/packages/otlp-grpc-exporter-base/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/otlp-grpc-exporter-base", - "version": "0.40.0", + "version": "0.41.0", "description": "OpenTelemetry OTLP-gRPC Exporter base (for internal use only)", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -50,9 +50,9 @@ "devDependencies": { "@babel/core": "7.22.6", "@opentelemetry/api": "1.4.1", - "@opentelemetry/otlp-transformer": "0.40.0", - "@opentelemetry/resources": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/otlp-transformer": "0.41.0", + "@opentelemetry/resources": "1.15.0", + "@opentelemetry/sdk-trace-base": "1.15.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", @@ -73,8 +73,8 @@ }, "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.14.0", - "@opentelemetry/otlp-exporter-base": "0.40.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/otlp-exporter-base": "0.41.0", "protobufjs": "^7.2.3", "tslib": "^2.3.1" }, diff --git a/experimental/packages/otlp-proto-exporter-base/package.json b/experimental/packages/otlp-proto-exporter-base/package.json index 46b31d990d..fb8a8ce047 100644 --- a/experimental/packages/otlp-proto-exporter-base/package.json +++ b/experimental/packages/otlp-proto-exporter-base/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/otlp-proto-exporter-base", - "version": "0.40.0", + "version": "0.41.0", "description": "OpenTelemetry OTLP-HTTP-protobuf Exporter base (for internal use only)", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -79,8 +79,8 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.14.0", - "@opentelemetry/otlp-exporter-base": "0.40.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/otlp-exporter-base": "0.41.0", "protobufjs": "^7.2.3", "tslib": "^2.3.1" }, diff --git a/experimental/packages/otlp-transformer/package.json b/experimental/packages/otlp-transformer/package.json index 4e2a831389..d0cb3701e3 100644 --- a/experimental/packages/otlp-transformer/package.json +++ b/experimental/packages/otlp-transformer/package.json @@ -4,7 +4,7 @@ "publishConfig": { "access": "public" }, - "version": "0.40.0", + "version": "0.41.0", "description": "Transform OpenTelemetry SDK data into OTLP", "module": "build/esm/index.js", "esnext": "build/esnext/index.js", @@ -78,12 +78,12 @@ "webpack": "4.46.0" }, "dependencies": { - "@opentelemetry/api-logs": "0.40.0", - "@opentelemetry/core": "1.14.0", - "@opentelemetry/resources": "1.14.0", - "@opentelemetry/sdk-logs": "0.40.0", - "@opentelemetry/sdk-metrics": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/api-logs": "0.41.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/resources": "1.15.0", + "@opentelemetry/sdk-logs": "0.41.0", + "@opentelemetry/sdk-metrics": "1.15.0", + "@opentelemetry/sdk-trace-base": "1.15.0", "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/otlp-transformer", diff --git a/experimental/packages/sdk-logs/package.json b/experimental/packages/sdk-logs/package.json index be245fbe15..61415c040a 100644 --- a/experimental/packages/sdk-logs/package.json +++ b/experimental/packages/sdk-logs/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sdk-logs", - "version": "0.40.0", + "version": "0.41.0", "publishConfig": { "access": "public" }, @@ -73,7 +73,7 @@ }, "devDependencies": { "@opentelemetry/api": ">=1.4.0 <1.5.0", - "@opentelemetry/api-logs": "0.40.0", + "@opentelemetry/api-logs": "0.41.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", @@ -93,8 +93,8 @@ "typescript": "4.4.4" }, "dependencies": { - "@opentelemetry/core": "1.14.0", - "@opentelemetry/resources": "1.14.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/resources": "1.15.0", "tslib": "^2.3.1" } } diff --git a/experimental/packages/shim-opencensus/package.json b/experimental/packages/shim-opencensus/package.json index 636efed876..b57628d38f 100644 --- a/experimental/packages/shim-opencensus/package.json +++ b/experimental/packages/shim-opencensus/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/shim-opencensus", - "version": "0.40.0", + "version": "0.41.0", "description": "OpenCensus to OpenTelemetry shim", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -50,8 +50,8 @@ "devDependencies": { "@opencensus/core": "0.1.0", "@opentelemetry/api": "1.4.1", - "@opentelemetry/context-async-hooks": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/context-async-hooks": "1.15.0", + "@opentelemetry/sdk-trace-base": "1.15.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", @@ -69,7 +69,7 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.14.0", + "@opentelemetry/core": "1.15.0", "require-in-the-middle": "^7.1.1", "semver": "^7.5.1", "tslib": "^2.3.1" diff --git a/integration-tests/propagation-validation-server/package.json b/integration-tests/propagation-validation-server/package.json index 880251c503..8d577ea659 100644 --- a/integration-tests/propagation-validation-server/package.json +++ b/integration-tests/propagation-validation-server/package.json @@ -1,6 +1,6 @@ { "name": "propagation-validation-server", - "version": "1.14.0", + "version": "1.15.0", "description": "server for w3c tests", "main": "validation_server.js", "private": true, @@ -12,9 +12,9 @@ }, "dependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/context-async-hooks": "1.14.0", - "@opentelemetry/core": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/context-async-hooks": "1.15.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/sdk-trace-base": "1.15.0", "axios": "1.4.0", "body-parser": "1.19.0", "express": "4.17.3", diff --git a/packages/opentelemetry-context-async-hooks/package.json b/packages/opentelemetry-context-async-hooks/package.json index 64366b205c..23e3e65eeb 100644 --- a/packages/opentelemetry-context-async-hooks/package.json +++ b/packages/opentelemetry-context-async-hooks/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/context-async-hooks", - "version": "1.14.0", + "version": "1.15.0", "description": "OpenTelemetry AsyncHooks-based Context Manager", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/packages/opentelemetry-context-zone-peer-dep/package.json b/packages/opentelemetry-context-zone-peer-dep/package.json index b2905d6da9..cf65319c1f 100644 --- a/packages/opentelemetry-context-zone-peer-dep/package.json +++ b/packages/opentelemetry-context-zone-peer-dep/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/context-zone-peer-dep", - "version": "1.14.0", + "version": "1.15.0", "description": "OpenTelemetry Context Zone with peer dependency for zone.js", "main": "build/src/index.js", "module": "build/esm/index.js", diff --git a/packages/opentelemetry-context-zone/package.json b/packages/opentelemetry-context-zone/package.json index 1edc610e32..b2735c9014 100644 --- a/packages/opentelemetry-context-zone/package.json +++ b/packages/opentelemetry-context-zone/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/context-zone", - "version": "1.14.0", + "version": "1.15.0", "description": "OpenTelemetry Context Zone", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -75,9 +75,9 @@ "webpack-merge": "5.9.0" }, "dependencies": { - "@opentelemetry/context-zone-peer-dep": "1.14.0", - "zone.js": "^0.11.0", - "tslib": "^2.3.1" + "@opentelemetry/context-zone-peer-dep": "1.15.0", + "tslib": "^2.3.1", + "zone.js": "^0.11.0" }, "sideEffects": true, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-context-zone" diff --git a/packages/opentelemetry-core/package.json b/packages/opentelemetry-core/package.json index 23e11a9e5c..3fa3c7b208 100644 --- a/packages/opentelemetry-core/package.json +++ b/packages/opentelemetry-core/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/core", - "version": "1.14.0", + "version": "1.15.0", "description": "OpenTelemetry Core provides constants and utilities shared by all OpenTelemetry SDK packages.", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -91,7 +91,7 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/semantic-conventions": "1.14.0", + "@opentelemetry/semantic-conventions": "1.15.0", "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-core", diff --git a/packages/opentelemetry-exporter-jaeger/package.json b/packages/opentelemetry-exporter-jaeger/package.json index 3b4164d3f9..89e57e4c7b 100644 --- a/packages/opentelemetry-exporter-jaeger/package.json +++ b/packages/opentelemetry-exporter-jaeger/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-jaeger", - "version": "1.14.0", + "version": "1.15.0", "description": "OpenTelemetry Exporter Jaeger allows user to send collected traces to Jaeger", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -45,7 +45,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/resources": "1.14.0", + "@opentelemetry/resources": "1.15.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", @@ -63,9 +63,9 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/sdk-trace-base": "1.15.0", + "@opentelemetry/semantic-conventions": "1.15.0", "jaeger-client": "^3.15.0", "tslib": "^2.3.1" }, diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index ff26a83e19..dc3a8aaa4e 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-zipkin", - "version": "1.14.0", + "version": "1.15.0", "description": "OpenTelemetry Zipkin Exporter allows the user to send collected traces to Zipkin.", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -92,10 +92,10 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.14.0", - "@opentelemetry/resources": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/resources": "1.15.0", + "@opentelemetry/sdk-trace-base": "1.15.0", + "@opentelemetry/semantic-conventions": "1.15.0", "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-exporter-zipkin", diff --git a/packages/opentelemetry-propagator-b3/package.json b/packages/opentelemetry-propagator-b3/package.json index 89dcef29be..85bc378792 100644 --- a/packages/opentelemetry-propagator-b3/package.json +++ b/packages/opentelemetry-propagator-b3/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/propagator-b3", - "version": "1.14.0", + "version": "1.15.0", "description": "OpenTelemetry B3 propagator provides context propagation for systems that are using the B3 header format", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -51,7 +51,7 @@ "access": "public" }, "dependencies": { - "@opentelemetry/core": "1.14.0", + "@opentelemetry/core": "1.15.0", "tslib": "^2.3.1" }, "peerDependencies": { diff --git a/packages/opentelemetry-propagator-jaeger/package.json b/packages/opentelemetry-propagator-jaeger/package.json index de2e90601f..5d67b474c6 100644 --- a/packages/opentelemetry-propagator-jaeger/package.json +++ b/packages/opentelemetry-propagator-jaeger/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/propagator-jaeger", - "version": "1.14.0", + "version": "1.15.0", "description": "OpenTelemetry Jaeger propagator provides HTTP header propagation for systems that are using Jaeger HTTP header format.", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -81,7 +81,7 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/core": "1.14.0", + "@opentelemetry/core": "1.15.0", "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-propagator-jaeger", diff --git a/packages/opentelemetry-resources/package.json b/packages/opentelemetry-resources/package.json index 17de24f223..b450f1d577 100644 --- a/packages/opentelemetry-resources/package.json +++ b/packages/opentelemetry-resources/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resources", - "version": "1.14.0", + "version": "1.15.0", "description": "OpenTelemetry SDK resources", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -91,8 +91,8 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/core": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/semantic-conventions": "1.15.0", "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-resources", diff --git a/packages/opentelemetry-sdk-trace-base/package.json b/packages/opentelemetry-sdk-trace-base/package.json index 6cceaa64d5..0b08b67d82 100644 --- a/packages/opentelemetry-sdk-trace-base/package.json +++ b/packages/opentelemetry-sdk-trace-base/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sdk-trace-base", - "version": "1.14.0", + "version": "1.15.0", "description": "OpenTelemetry Tracing", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -93,9 +93,9 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/core": "1.14.0", - "@opentelemetry/resources": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/resources": "1.15.0", + "@opentelemetry/semantic-conventions": "1.15.0", "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-base", diff --git a/packages/opentelemetry-sdk-trace-node/package.json b/packages/opentelemetry-sdk-trace-node/package.json index bd4fb782fe..1608b10f30 100644 --- a/packages/opentelemetry-sdk-trace-node/package.json +++ b/packages/opentelemetry-sdk-trace-node/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sdk-trace-node", - "version": "1.14.0", + "version": "1.15.0", "description": "OpenTelemetry Node SDK provides automatic telemetry (tracing, metrics, etc) for Node.js applications", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,8 +46,8 @@ }, "devDependencies": { "@opentelemetry/api": ">=1.0.0 <1.5.0", - "@opentelemetry/resources": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0", + "@opentelemetry/resources": "1.15.0", + "@opentelemetry/semantic-conventions": "1.15.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/semver": "7.5.0", @@ -65,11 +65,11 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/context-async-hooks": "1.14.0", - "@opentelemetry/core": "1.14.0", - "@opentelemetry/propagator-b3": "1.14.0", - "@opentelemetry/propagator-jaeger": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/context-async-hooks": "1.15.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/propagator-b3": "1.15.0", + "@opentelemetry/propagator-jaeger": "1.15.0", + "@opentelemetry/sdk-trace-base": "1.15.0", "semver": "^7.5.1", "tslib": "^2.3.1" }, diff --git a/packages/opentelemetry-sdk-trace-web/package.json b/packages/opentelemetry-sdk-trace-web/package.json index 8e16b16378..551fbaab11 100644 --- a/packages/opentelemetry-sdk-trace-web/package.json +++ b/packages/opentelemetry-sdk-trace-web/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sdk-trace-web", - "version": "1.14.0", + "version": "1.15.0", "description": "OpenTelemetry Web Tracer", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -57,9 +57,9 @@ "devDependencies": { "@babel/core": "7.22.6", "@opentelemetry/api": ">=1.0.0 <1.5.0", - "@opentelemetry/context-zone": "1.14.0", - "@opentelemetry/propagator-b3": "1.14.0", - "@opentelemetry/resources": "1.14.0", + "@opentelemetry/context-zone": "1.15.0", + "@opentelemetry/propagator-b3": "1.15.0", + "@opentelemetry/resources": "1.15.0", "@types/jquery": "3.5.16", "@types/mocha": "10.0.1", "@types/node": "18.6.5", @@ -92,9 +92,9 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/core": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/sdk-trace-base": "1.15.0", + "@opentelemetry/semantic-conventions": "1.15.0", "tslib": "^2.3.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-web", diff --git a/packages/opentelemetry-semantic-conventions/package.json b/packages/opentelemetry-semantic-conventions/package.json index c7585e68f3..93cff0e7cf 100644 --- a/packages/opentelemetry-semantic-conventions/package.json +++ b/packages/opentelemetry-semantic-conventions/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/semantic-conventions", - "version": "1.14.0", + "version": "1.15.0", "description": "OpenTelemetry semantic conventions", "main": "build/src/index.js", "module": "build/esm/index.js", diff --git a/packages/opentelemetry-shim-opentracing/package.json b/packages/opentelemetry-shim-opentracing/package.json index 9b05c66d6c..0555f0d708 100644 --- a/packages/opentelemetry-shim-opentracing/package.json +++ b/packages/opentelemetry-shim-opentracing/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/shim-opentracing", - "version": "1.14.0", + "version": "1.15.0", "description": "OpenTracing to OpenTelemetry shim", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -43,9 +43,9 @@ }, "devDependencies": { "@opentelemetry/api": ">=1.0.0 <1.5.0", - "@opentelemetry/propagator-b3": "1.14.0", - "@opentelemetry/propagator-jaeger": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0", + "@opentelemetry/propagator-b3": "1.15.0", + "@opentelemetry/propagator-jaeger": "1.15.0", + "@opentelemetry/sdk-trace-base": "1.15.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "codecov": "3.8.3", @@ -60,8 +60,8 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/core": "1.14.0", - "@opentelemetry/semantic-conventions": "1.14.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/semantic-conventions": "1.15.0", "opentracing": "^0.14.4", "tslib": "^2.3.1" }, diff --git a/packages/sdk-metrics/package.json b/packages/sdk-metrics/package.json index 2e327b6acd..37184d2d0f 100644 --- a/packages/sdk-metrics/package.json +++ b/packages/sdk-metrics/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sdk-metrics", - "version": "1.14.0", + "version": "1.15.0", "description": "OpenTelemetry metrics SDK", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -78,8 +78,8 @@ "@opentelemetry/api": ">=1.3.0 <1.5.0" }, "dependencies": { - "@opentelemetry/core": "1.14.0", - "@opentelemetry/resources": "1.14.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/resources": "1.15.0", "lodash.merge": "^4.6.2", "tslib": "^2.3.1" }, diff --git a/packages/template/package.json b/packages/template/package.json index 00876cf2c4..451da5d1e2 100644 --- a/packages/template/package.json +++ b/packages/template/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/template", - "version": "1.14.0", + "version": "1.15.0", "private": true, "publishConfig": { "access": "restricted" diff --git a/selenium-tests/package.json b/selenium-tests/package.json index 3cdfb5d9d4..829be06e36 100644 --- a/selenium-tests/package.json +++ b/selenium-tests/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/selenium-tests", - "version": "1.14.0", + "version": "1.15.0", "private": true, "description": "OpenTelemetry Selenium Tests", "main": "index.js", @@ -56,16 +56,16 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/context-zone-peer-dep": "1.14.0", - "@opentelemetry/core": "1.14.0", - "@opentelemetry/exporter-trace-otlp-http": "0.40.0", - "@opentelemetry/exporter-zipkin": "1.14.0", - "@opentelemetry/instrumentation": "0.40.0", - "@opentelemetry/instrumentation-fetch": "0.40.0", - "@opentelemetry/instrumentation-xml-http-request": "0.40.0", - "@opentelemetry/sdk-metrics": "1.14.0", - "@opentelemetry/sdk-trace-base": "1.14.0", - "@opentelemetry/sdk-trace-web": "1.14.0", + "@opentelemetry/context-zone-peer-dep": "1.15.0", + "@opentelemetry/core": "1.15.0", + "@opentelemetry/exporter-trace-otlp-http": "0.41.0", + "@opentelemetry/exporter-zipkin": "1.15.0", + "@opentelemetry/instrumentation": "0.41.0", + "@opentelemetry/instrumentation-fetch": "0.41.0", + "@opentelemetry/instrumentation-xml-http-request": "0.41.0", + "@opentelemetry/sdk-metrics": "1.15.0", + "@opentelemetry/sdk-trace-base": "1.15.0", + "@opentelemetry/sdk-trace-web": "1.15.0", "zone.js": "0.11.4" } } From 02c1d95608d3cb05e93edb68007a46456337ec3c Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Thu, 6 Jul 2023 15:06:00 +0200 Subject: [PATCH 59/71] chore: replace istanbul-instrumenter-loader with maintained component (#3918) --- .nycrc | 1 - api/package.json | 8 ++++---- experimental/packages/api-events/package.json | 6 +++--- experimental/packages/api-logs/package.json | 6 +++--- .../exporter-logs-otlp-http/package.json | 6 +++--- .../exporter-logs-otlp-proto/package.json | 14 ++++++++++++-- .../exporter-trace-otlp-http/package.json | 6 +++--- .../exporter-trace-otlp-proto/package.json | 14 ++++++++++++-- .../opentelemetry-browser-detector/package.json | 14 ++++++++++++-- .../package.json | 6 +++--- .../package.json | 6 +++--- .../package.json | 6 +++--- .../opentelemetry-instrumentation/package.json | 6 +++--- .../opentelemetry-sdk-node/package.json | 1 - .../packages/otlp-exporter-base/package.json | 17 +++++++++++++---- .../packages/otlp-transformer/package.json | 6 +++--- experimental/packages/sdk-logs/package.json | 12 +++++++++--- karma.base.js | 10 +++++----- karma.webpack.js | 6 ++++-- .../package.json | 6 +++--- packages/opentelemetry-core/package.json | 6 +++--- .../opentelemetry-exporter-zipkin/package.json | 6 +++--- .../opentelemetry-propagator-b3/package.json | 1 - .../package.json | 6 +++--- packages/opentelemetry-resources/package.json | 6 +++--- .../opentelemetry-sdk-trace-base/package.json | 8 ++++---- .../opentelemetry-sdk-trace-web/package.json | 8 ++++---- packages/sdk-metrics/package.json | 12 +++++++++--- packages/template/package.json | 8 ++++---- tsconfig.tsbuildinfo | 1 + 30 files changed, 135 insertions(+), 84 deletions(-) create mode 100644 tsconfig.tsbuildinfo diff --git a/.nycrc b/.nycrc index 22383d8aba..eb64eeca29 100644 --- a/.nycrc +++ b/.nycrc @@ -8,7 +8,6 @@ "build/**/*.*", "src/index.ts", "src/platform/**/index.ts", - "src/platform/browser/*.ts", "src/version.ts", "test/**/*.*", ".eslintrc.js", diff --git a/api/package.json b/api/package.json index 888e602e5e..296c86d4c8 100644 --- a/api/package.json +++ b/api/package.json @@ -23,9 +23,9 @@ "docs:test": "linkinator docs/out --silent && linkinator docs/*.md *.md --markdown --silent", "lint:fix": "eslint . --ext .ts --fix", "lint": "eslint . --ext .ts", - "test:browser": "nyc karma start --single-run", + "test:browser": "karma start --single-run", "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'", - "test:webworker": "nyc karma start karma.worker.js --single-run", + "test:webworker": "karma start karma.worker.js --single-run", "cycle-check": "dpdm --exit-code circular:1 src/index.ts", "version": "node ../scripts/version-update.js", "prewatch": "npm run precompile", @@ -68,10 +68,10 @@ "codecov": "3.8.3", "cross-var": "1.1.0", "dpdm": "3.13.1", - "istanbul-instrumenter-loader": "3.0.1", + "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage-istanbul-reporter": "3.0.3", + "karma-coverage": "2.2.0", "karma-mocha": "2.0.1", "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", diff --git a/experimental/packages/api-events/package.json b/experimental/packages/api-events/package.json index 1976e7ced3..4b3f8660cc 100644 --- a/experimental/packages/api-events/package.json +++ b/experimental/packages/api-events/package.json @@ -18,7 +18,7 @@ "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "test": "nyc ts-mocha -p tsconfig.json test/**/*.test.ts", - "test:browser": "nyc karma start --single-run", + "test:browser": "karma start --single-run", "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../", "codecov:browser": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../", "build": "npm run compile", @@ -70,10 +70,10 @@ "@types/webpack-env": "1.16.3", "codecov": "3.8.3", "cross-var": "1.1.0", - "istanbul-instrumenter-loader": "3.0.1", + "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage-istanbul-reporter": "3.0.3", + "karma-coverage": "2.2.0", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/experimental/packages/api-logs/package.json b/experimental/packages/api-logs/package.json index 1591770cae..315534d6bd 100644 --- a/experimental/packages/api-logs/package.json +++ b/experimental/packages/api-logs/package.json @@ -18,7 +18,7 @@ "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "test": "nyc ts-mocha -p tsconfig.json test/**/*.test.ts", - "test:browser": "nyc karma start --single-run", + "test:browser": "karma start --single-run", "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../", "codecov:browser": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../", "build": "npm run compile", @@ -70,10 +70,10 @@ "@types/webpack-env": "1.16.3", "codecov": "3.8.3", "cross-var": "1.1.0", - "istanbul-instrumenter-loader": "3.0.1", + "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage-istanbul-reporter": "3.0.3", + "karma-coverage": "2.2.0", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index f0db30c443..b29e26ec07 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -38,7 +38,7 @@ "tdd": "npm run test -- --watch-extensions ts --watch", "tdd:browser": "karma start", "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts' --exclude 'test/browser/**/*.ts'", - "test:browser": "nyc karma start --single-run", + "test:browser": "karma start --single-run", "version": "node ../../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", @@ -82,10 +82,10 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "istanbul-instrumenter-loader": "3.0.1", + "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage-istanbul-reporter": "3.0.3", + "karma-coverage": "2.2.0", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/experimental/packages/exporter-logs-otlp-proto/package.json b/experimental/packages/exporter-logs-otlp-proto/package.json index f7f08642e8..5935d17191 100644 --- a/experimental/packages/exporter-logs-otlp-proto/package.json +++ b/experimental/packages/exporter-logs-otlp-proto/package.json @@ -21,7 +21,7 @@ "lint:fix": "eslint . --ext .ts --fix", "tdd": "npm run test -- --watch-extensions ts --watch", "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts' --exclude 'test/browser/**/*.ts'", - "test:browser": "nyc karma start --single-run", + "test:browser": "karma start --single-run", "version": "node ../../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", @@ -71,13 +71,23 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", + "babel-plugin-istanbul": "6.1.1", + "karma": "6.4.2", + "karma-chrome-launcher": "3.1.0", + "karma-coverage": "2.2.0", + "karma-mocha": "2.0.1", + "karma-spec-reporter": "0.0.36", + "karma-webpack": "4.0.2", "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", - "typescript": "4.4.4" + "typescript": "4.4.4", + "webpack": "4.46.0", + "webpack-cli": "4.10.0", + "webpack-merge": "5.9.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" diff --git a/experimental/packages/exporter-trace-otlp-http/package.json b/experimental/packages/exporter-trace-otlp-http/package.json index ac6a84593a..ce26e94630 100644 --- a/experimental/packages/exporter-trace-otlp-http/package.json +++ b/experimental/packages/exporter-trace-otlp-http/package.json @@ -23,7 +23,7 @@ "tdd": "npm run test -- --watch-extensions ts --watch", "tdd:browser": "karma start", "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts' --exclude 'test/browser/**/*.ts'", - "test:browser": "nyc karma start --single-run", + "test:browser": "karma start --single-run", "version": "node ../../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", @@ -73,10 +73,10 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "istanbul-instrumenter-loader": "3.0.1", + "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage-istanbul-reporter": "3.0.3", + "karma-coverage": "2.2.0", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/experimental/packages/exporter-trace-otlp-proto/package.json b/experimental/packages/exporter-trace-otlp-proto/package.json index f01322ce03..a812a1e7ca 100644 --- a/experimental/packages/exporter-trace-otlp-proto/package.json +++ b/experimental/packages/exporter-trace-otlp-proto/package.json @@ -21,7 +21,7 @@ "lint:fix": "eslint . --ext .ts --fix", "tdd": "npm run test -- --watch-extensions ts --watch", "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts' --exclude 'test/browser/**/*.ts'", - "test:browser": "nyc karma start --single-run", + "test:browser": "karma start --single-run", "version": "node ../../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", @@ -70,13 +70,23 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", + "babel-plugin-istanbul": "6.1.1", + "karma": "6.4.2", + "karma-chrome-launcher": "3.1.0", + "karma-coverage": "2.2.0", + "karma-mocha": "2.0.1", + "karma-spec-reporter": "0.0.36", + "karma-webpack": "4.0.2", "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", - "typescript": "4.4.4" + "typescript": "4.4.4", + "webpack": "4.46.0", + "webpack-cli": "4.10.0", + "webpack-merge": "5.9.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" diff --git a/experimental/packages/opentelemetry-browser-detector/package.json b/experimental/packages/opentelemetry-browser-detector/package.json index 0a6cd39d19..5c20aa95b0 100644 --- a/experimental/packages/opentelemetry-browser-detector/package.json +++ b/experimental/packages/opentelemetry-browser-detector/package.json @@ -14,7 +14,7 @@ "lint": "eslint . --ext .ts", "lint:fix": "eslint . --ext .ts --fix", "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'", - "test:browser": "nyc karma start --single-run", + "test:browser": "karma start --single-run", "tdd": "npm run test -- --watch-extensions ts --watch", "tdd:browser": "karma start", "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../", @@ -60,13 +60,23 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", + "babel-plugin-istanbul": "6.1.1", + "karma": "6.4.2", + "karma-chrome-launcher": "3.1.0", + "karma-coverage": "2.2.0", + "karma-mocha": "2.0.1", + "karma-spec-reporter": "0.0.36", + "karma-webpack": "4.0.2", "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", - "typescript": "4.4.4" + "typescript": "4.4.4", + "webpack": "4.46.0", + "webpack-cli": "4.10.0", + "webpack-merge": "5.9.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index 556fbf9a9c..6190a4144e 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -23,7 +23,7 @@ "tdd": "npm run test -- --watch-extensions ts --watch", "tdd:browser": "karma start", "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts' --exclude 'test/browser/**/*.ts'", - "test:browser": "nyc karma start --single-run", + "test:browser": "karma start --single-run", "version": "node ../../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", @@ -73,10 +73,10 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "istanbul-instrumenter-loader": "3.0.1", + "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage-istanbul-reporter": "3.0.3", + "karma-coverage": "2.2.0", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index bf8d325635..f641b9ec49 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -16,7 +16,7 @@ "codecov:browser": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../", "version": "node ../../../scripts/version-update.js", "tdd": "karma start", - "test:browser": "nyc karma start --single-run", + "test:browser": "karma start --single-run", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "node ../../../scripts/version-update.js", @@ -66,10 +66,10 @@ "babel-loader": "8.3.0", "codecov": "3.8.3", "cross-var": "1.1.0", - "istanbul-instrumenter-loader": "3.0.1", + "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage-istanbul-reporter": "3.0.3", + "karma-coverage": "2.2.0", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json index 62852cb31a..f628c633ef 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json @@ -16,7 +16,7 @@ "codecov:browser": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../", "version": "node ../../../scripts/version-update.js", "tdd": "karma start", - "test:browser": "nyc karma start --single-run", + "test:browser": "karma start --single-run", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "node ../../../scripts/version-update.js", @@ -66,10 +66,10 @@ "babel-loader": "8.3.0", "codecov": "3.8.3", "cross-var": "1.1.0", - "istanbul-instrumenter-loader": "3.0.1", + "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage-istanbul-reporter": "3.0.3", + "karma-coverage": "2.2.0", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index e2c06c4ff8..4141beed00 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -51,7 +51,7 @@ "test:cjs": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts' --exclude 'test/browser/**/*.ts'", "test:esm": "nyc node --experimental-loader=./hook.mjs ../../../node_modules/mocha/bin/mocha 'test/node/*.test.mjs' test/node/*.test.mjs", "test": "npm run test:cjs && npm run test:esm", - "test:browser": "nyc karma start --single-run", + "test:browser": "karma start --single-run", "version": "node ../../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", @@ -94,10 +94,10 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "istanbul-instrumenter-loader": "3.0.1", + "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage-istanbul-reporter": "3.0.3", + "karma-coverage": "2.2.0", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json index e21bf69995..9ec166cb75 100644 --- a/experimental/packages/opentelemetry-sdk-node/package.json +++ b/experimental/packages/opentelemetry-sdk-node/package.json @@ -70,7 +70,6 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "istanbul-instrumenter-loader": "3.0.1", "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/experimental/packages/otlp-exporter-base/package.json b/experimental/packages/otlp-exporter-base/package.json index b6d15f7ae2..77c49bfaa2 100644 --- a/experimental/packages/otlp-exporter-base/package.json +++ b/experimental/packages/otlp-exporter-base/package.json @@ -24,7 +24,7 @@ "tdd": "npm run test -- --watch-extensions ts --watch", "tdd:browser": "karma start", "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts' --exclude 'test/browser/**/*.ts'", - "test:browser": "nyc karma start --single-run", + "test:browser": "karma start --single-run", "version": "node ../../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", @@ -65,21 +65,30 @@ "tslib": "^2.3.1" }, "devDependencies": { + "@babel/core": "7.22.5", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "istanbul-instrumenter-loader": "3.0.1", + "babel-plugin-istanbul": "6.1.1", + "karma": "6.4.2", + "karma-chrome-launcher": "3.1.0", + "karma-coverage": "2.2.0", + "karma-mocha": "2.0.1", + "karma-spec-reporter": "0.0.36", + "karma-webpack": "4.0.2", "lerna": "7.1.1", "mocha": "10.2.0", - "nock": "13.3.1", "nyc": "15.1.0", "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", - "typescript": "4.4.4" + "typescript": "4.4.4", + "webpack": "4.46.0", + "webpack-cli": "4.10.0", + "webpack-merge": "5.9.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" diff --git a/experimental/packages/otlp-transformer/package.json b/experimental/packages/otlp-transformer/package.json index d0cb3701e3..6c020a16f4 100644 --- a/experimental/packages/otlp-transformer/package.json +++ b/experimental/packages/otlp-transformer/package.json @@ -20,7 +20,7 @@ "lint:fix": "eslint . --ext .ts --fix", "tdd": "npm run test -- --watch-extensions ts --watch", "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'", - "test:browser": "nyc karma start --single-run", + "test:browser": "karma start --single-run", "prewatch": "node ../../../scripts/version-update.js", "watch": "tsc --build -w tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "peer-api-check": "node ../../../scripts/peer-api-check.js", @@ -62,10 +62,10 @@ "@types/webpack-env": "1.16.3", "codecov": "3.8.3", "cross-var": "1.1.0", - "istanbul-instrumenter-loader": "3.0.1", + "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage-istanbul-reporter": "3.0.3", + "karma-coverage": "2.2.0", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/experimental/packages/sdk-logs/package.json b/experimental/packages/sdk-logs/package.json index 61415c040a..898bb86bed 100644 --- a/experimental/packages/sdk-logs/package.json +++ b/experimental/packages/sdk-logs/package.json @@ -33,7 +33,7 @@ "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'", - "test:browser": "nyc karma start --single-run", + "test:browser": "karma start --single-run", "tdd": "npm run test -- --watch-extensions ts --watch", "tdd:browser": "karma start", "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../", @@ -74,14 +74,16 @@ "devDependencies": { "@opentelemetry/api": ">=1.4.0 <1.5.0", "@opentelemetry/api-logs": "0.41.0", + "@babel/core": "7.22.5", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", + "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage-istanbul-reporter": "3.0.3", + "karma-coverage": "2.2.0", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", @@ -89,8 +91,12 @@ "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", + "ts-loader": "8.4.0", "ts-mocha": "10.0.0", - "typescript": "4.4.4" + "typescript": "4.4.4", + "webpack": "4.46.0", + "webpack-cli": "4.10.0", + "webpack-merge": "5.9.0" }, "dependencies": { "@opentelemetry/core": "1.15.0", diff --git a/karma.base.js b/karma.base.js index 7df76d7b13..2af2869368 100644 --- a/karma.base.js +++ b/karma.base.js @@ -19,12 +19,12 @@ module.exports = { hostname: 'localhost', browsers: ['ChromeHeadless'], frameworks: ['mocha'], - coverageIstanbulReporter: { - reports: ['html', 'json'], - dir: '.nyc_output', - fixWebpackSourcePaths: true + coverageReporter: { + type : 'json', + subdir: '.', + dir : '.nyc_output/' }, - reporters: ['spec', 'coverage-istanbul'], + reporters: ['spec', 'coverage'], files: ['test/index-webpack.ts'], preprocessors: { 'test/index-webpack*.ts': ['webpack'] diff --git a/karma.webpack.js b/karma.webpack.js index 138112547b..b7fa7acb97 100644 --- a/karma.webpack.js +++ b/karma.webpack.js @@ -31,8 +31,10 @@ module.exports = { exclude: /(node_modules|\.test\.[tj]sx?$)/, test: /\.ts$/, use: { - loader: 'istanbul-instrumenter-loader', - options: { esModules: true }, + loader: 'babel-loader', + options: { + plugins: ['babel-plugin-istanbul'], + } }, }, // This setting configures Node polyfills for the browser that will be diff --git a/packages/opentelemetry-context-zone-peer-dep/package.json b/packages/opentelemetry-context-zone-peer-dep/package.json index cf65319c1f..fa1ef04204 100644 --- a/packages/opentelemetry-context-zone-peer-dep/package.json +++ b/packages/opentelemetry-context-zone-peer-dep/package.json @@ -16,7 +16,7 @@ "codecov:browser": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../", "version": "node ../../scripts/version-update.js", "tdd": "karma start", - "test:browser": "nyc karma start --single-run", + "test:browser": "karma start --single-run", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", @@ -63,10 +63,10 @@ "babel-loader": "8.3.0", "codecov": "3.8.3", "cross-var": "1.1.0", - "istanbul-instrumenter-loader": "3.0.1", + "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage-istanbul-reporter": "3.0.3", + "karma-coverage": "2.2.0", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/packages/opentelemetry-core/package.json b/packages/opentelemetry-core/package.json index 3fa3c7b208..70d32b5dec 100644 --- a/packages/opentelemetry-core/package.json +++ b/packages/opentelemetry-core/package.json @@ -18,7 +18,7 @@ "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "test": "nyc ts-mocha -p tsconfig.json test/**/*.test.ts --exclude 'test/platform/browser/**/*.ts'", - "test:browser": "nyc karma start --single-run", + "test:browser": "karma start --single-run", "tdd": "npm run tdd:node", "tdd:node": "npm run test -- --watch-extensions ts --watch", "tdd:browser": "karma start", @@ -71,10 +71,10 @@ "@types/webpack-env": "1.16.3", "codecov": "3.8.3", "cross-var": "1.1.0", - "istanbul-instrumenter-loader": "3.0.1", + "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage-istanbul-reporter": "3.0.3", + "karma-coverage": "2.2.0", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index dc3a8aaa4e..e8bd41837e 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -23,7 +23,7 @@ "lint:fix": "eslint . --ext .ts --fix", "tdd": "npm run test -- --watch-extensions ts --watch", "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts' --exclude 'test/browser/**/*.ts'", - "test:browser": "nyc karma start --single-run", + "test:browser": "karma start --single-run", "version": "node ../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", @@ -69,10 +69,10 @@ "babel-loader": "8.3.0", "codecov": "3.8.3", "cross-var": "1.1.0", - "istanbul-instrumenter-loader": "3.0.1", + "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage-istanbul-reporter": "3.0.3", + "karma-coverage": "2.2.0", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/packages/opentelemetry-propagator-b3/package.json b/packages/opentelemetry-propagator-b3/package.json index 85bc378792..1cb95ba6b1 100644 --- a/packages/opentelemetry-propagator-b3/package.json +++ b/packages/opentelemetry-propagator-b3/package.json @@ -63,7 +63,6 @@ "@types/node": "18.6.5", "codecov": "3.8.3", "cross-var": "1.1.0", - "istanbul-instrumenter-loader": "3.0.1", "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/packages/opentelemetry-propagator-jaeger/package.json b/packages/opentelemetry-propagator-jaeger/package.json index 5d67b474c6..fdabf7a7e8 100644 --- a/packages/opentelemetry-propagator-jaeger/package.json +++ b/packages/opentelemetry-propagator-jaeger/package.json @@ -10,7 +10,7 @@ "prepublishOnly": "npm run compile", "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts' --exclude 'test/index-webpack.ts'", - "test:browser": "nyc karma start --single-run", + "test:browser": "karma start --single-run", "tdd": "npm run tdd:node", "tdd:node": "npm run test -- --watch-extensions ts --watch", "tdd:browser": "karma start", @@ -61,10 +61,10 @@ "@types/webpack-env": "1.16.3", "codecov": "3.8.3", "cross-var": "1.1.0", - "istanbul-instrumenter-loader": "3.0.1", + "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage-istanbul-reporter": "3.0.3", + "karma-coverage": "2.2.0", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/packages/opentelemetry-resources/package.json b/packages/opentelemetry-resources/package.json index b450f1d577..a5862f44d5 100644 --- a/packages/opentelemetry-resources/package.json +++ b/packages/opentelemetry-resources/package.json @@ -22,8 +22,8 @@ "lint": "eslint . --ext .ts", "lint:fix": "eslint . --ext .ts --fix", "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'", - "test:browser": "nyc karma start --single-run", - "test:webworker": "nyc karma start karma.worker.js --single-run", + "test:browser": "karma start --single-run", + "test:webworker": "karma start karma.worker.js --single-run", "tdd": "npm run test -- --watch-extensions ts --watch", "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../", "version": "node ../../scripts/version-update.js", @@ -71,7 +71,7 @@ "cross-var": "1.1.0", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage-istanbul-reporter": "3.0.3", + "karma-coverage": "2.2.0", "karma-mocha": "2.0.1", "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", diff --git a/packages/opentelemetry-sdk-trace-base/package.json b/packages/opentelemetry-sdk-trace-base/package.json index 0b08b67d82..884e0e8c73 100644 --- a/packages/opentelemetry-sdk-trace-base/package.json +++ b/packages/opentelemetry-sdk-trace-base/package.json @@ -18,8 +18,8 @@ "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts' --exclude 'test/browser/**/*.ts'", - "test:browser": "nyc karma start --single-run", - "test:webworker": "nyc karma start karma.worker.js --single-run", + "test:browser": "karma start --single-run", + "test:webworker": "karma start karma.worker.js --single-run", "tdd": "npm run tdd:node", "tdd:node": "npm run test -- --watch-extensions ts --watch", "tdd:browser": "karma start", @@ -72,10 +72,10 @@ "@types/webpack-env": "1.16.3", "codecov": "3.8.3", "cross-var": "1.1.0", - "istanbul-instrumenter-loader": "3.0.1", + "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage-istanbul-reporter": "3.0.3", + "karma-coverage": "2.2.0", "karma-mocha": "2.0.1", "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", diff --git a/packages/opentelemetry-sdk-trace-web/package.json b/packages/opentelemetry-sdk-trace-web/package.json index 551fbaab11..ab668e3c47 100644 --- a/packages/opentelemetry-sdk-trace-web/package.json +++ b/packages/opentelemetry-sdk-trace-web/package.json @@ -17,8 +17,8 @@ "codecov:webworker": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../", "version": "node ../../scripts/version-update.js", "tdd": "karma start", - "test:browser": "nyc karma start --single-run", - "test:webworker": "nyc karma start karma.worker.js --single-run", + "test:browser": "karma start --single-run", + "test:webworker": "karma start karma.worker.js --single-run", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "precompile": "cross-var lerna run version --scope $npm_package_name --include-dependencies", "prewatch": "npm run precompile", @@ -68,10 +68,10 @@ "babel-loader": "8.3.0", "codecov": "3.8.3", "cross-var": "1.1.0", - "istanbul-instrumenter-loader": "3.0.1", + "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage-istanbul-reporter": "3.0.3", + "karma-coverage": "2.2.0", "karma-jquery": "0.2.4", "karma-mocha": "2.0.1", "karma-mocha-webworker": "1.3.0", diff --git a/packages/sdk-metrics/package.json b/packages/sdk-metrics/package.json index 37184d2d0f..e7d695ca93 100644 --- a/packages/sdk-metrics/package.json +++ b/packages/sdk-metrics/package.json @@ -12,7 +12,7 @@ "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'", - "test:browser": "nyc karma start --single-run", + "test:browser": "karma start --single-run", "tdd": "npm run test -- --watch-extensions ts --watch", "tdd:browser": "karma start", "codecov": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../", @@ -56,14 +56,16 @@ "devDependencies": { "@opentelemetry/api": ">=1.3.0 <1.5.0", "@types/lodash.merge": "4.6.7", + "@babel/core": "7.22.5", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", + "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage-istanbul-reporter": "3.0.3", + "karma-coverage": "2.2.0", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", @@ -71,8 +73,12 @@ "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", + "ts-loader": "8.4.0", "ts-mocha": "10.0.0", - "typescript": "4.4.4" + "typescript": "4.4.4", + "webpack": "4.46.0", + "webpack-cli": "4.10.0", + "webpack-merge": "5.9.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.5.0" diff --git a/packages/template/package.json b/packages/template/package.json index 451da5d1e2..7d04d854ac 100644 --- a/packages/template/package.json +++ b/packages/template/package.json @@ -47,7 +47,7 @@ "Add/change these to scripts if browser is supported": { "compile": "tsc --build tsconfig.json", "clean": "tsc --build --clean tsconfig.json", - "test:browser": "nyc karma start --single-run", + "test:browser": "karma start --single-run", "codecov:browser": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../", "watch": "tsc --build --watch tsconfig.json" }, @@ -97,10 +97,10 @@ }, "Add these to devDependencies if browser is targeted": { "@types/webpack-env": "1.16.0", - "istanbul-instrumenter-loader": "3.0.1", - "karma": "5.2.3", + "babel-plugin-istanbul": "6.1.1", + "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage-istanbul-reporter": "3.0.3", + "karma-coverage": "2.2.0", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.32", "karma-webpack": "4.0.2", diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo new file mode 100644 index 0000000000..bd9c8b8eab --- /dev/null +++ b/tsconfig.tsbuildinfo @@ -0,0 +1 @@ +{"version":"4.4.4"} \ No newline at end of file From b34c39bf3223cf2a3302ab762fa5743fe83e4414 Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Thu, 6 Jul 2023 15:14:56 +0200 Subject: [PATCH 60/71] chore(deps): update dependency eslint to v8.43.0 (#3929) Co-authored-by: Renovate Bot --- api/.eslintrc.js | 2 +- eslint.config.js => eslint.base.js | 0 experimental/examples/.eslintrc.js | 2 +- experimental/packages/api-events/.eslintrc.js | 2 +- experimental/packages/api-logs/.eslintrc.js | 2 +- experimental/packages/exporter-logs-otlp-grpc/.eslintrc.js | 2 +- experimental/packages/exporter-logs-otlp-http/.eslintrc.js | 2 +- experimental/packages/exporter-logs-otlp-proto/.eslintrc.js | 2 +- experimental/packages/exporter-trace-otlp-grpc/.eslintrc.js | 2 +- experimental/packages/exporter-trace-otlp-http/.eslintrc.js | 2 +- experimental/packages/exporter-trace-otlp-proto/.eslintrc.js | 2 +- .../packages/opentelemetry-browser-detector/.eslintrc.js | 2 +- .../opentelemetry-exporter-metrics-otlp-grpc/.eslintrc.js | 2 +- .../opentelemetry-exporter-metrics-otlp-http/.eslintrc.js | 2 +- .../opentelemetry-exporter-metrics-otlp-proto/.eslintrc.js | 2 +- .../packages/opentelemetry-exporter-prometheus/.eslintrc.js | 2 +- .../packages/opentelemetry-instrumentation-fetch/.eslintrc.js | 2 +- .../packages/opentelemetry-instrumentation-grpc/.eslintrc.js | 2 +- .../packages/opentelemetry-instrumentation-http/.eslintrc.js | 2 +- .../opentelemetry-instrumentation-xml-http-request/.eslintrc.js | 2 +- .../packages/opentelemetry-instrumentation/.eslintrc.js | 2 +- experimental/packages/opentelemetry-sdk-node/.eslintrc.js | 2 +- experimental/packages/otlp-exporter-base/.eslintrc.js | 2 +- experimental/packages/otlp-grpc-exporter-base/.eslintrc.js | 2 +- experimental/packages/otlp-proto-exporter-base/.eslintrc.js | 2 +- experimental/packages/otlp-transformer/.eslintrc.js | 2 +- experimental/packages/sdk-logs/.eslintrc.js | 2 +- experimental/packages/shim-opencensus/.eslintrc.js | 2 +- package.json | 2 +- packages/opentelemetry-context-async-hooks/.eslintrc.js | 2 +- packages/opentelemetry-context-zone-peer-dep/.eslintrc.js | 2 +- packages/opentelemetry-context-zone/.eslintrc.js | 2 +- packages/opentelemetry-core/.eslintrc.js | 2 +- packages/opentelemetry-exporter-jaeger/.eslintrc.js | 2 +- packages/opentelemetry-exporter-zipkin/.eslintrc.js | 2 +- packages/opentelemetry-propagator-b3/.eslintrc.js | 2 +- packages/opentelemetry-propagator-jaeger/.eslintrc.js | 2 +- packages/opentelemetry-resources/.eslintrc.js | 2 +- packages/opentelemetry-sdk-trace-base/.eslintrc.js | 2 +- packages/opentelemetry-sdk-trace-node/.eslintrc.js | 2 +- packages/opentelemetry-sdk-trace-web/.eslintrc.js | 2 +- packages/opentelemetry-semantic-conventions/.eslintrc.js | 2 +- packages/opentelemetry-shim-opentracing/.eslintrc.js | 2 +- packages/sdk-metrics/.eslintrc.js | 2 +- packages/template/.eslintrc.js | 2 +- 45 files changed, 44 insertions(+), 44 deletions(-) rename eslint.config.js => eslint.base.js (100%) diff --git a/api/.eslintrc.js b/api/.eslintrc.js index 7d5c10c7f9..08f88d4912 100644 --- a/api/.eslintrc.js +++ b/api/.eslintrc.js @@ -4,5 +4,5 @@ module.exports = { "commonjs": true, "shared-node-browser": true }, - ...require('../eslint.config.js') + ...require('../eslint.base.js') } diff --git a/eslint.config.js b/eslint.base.js similarity index 100% rename from eslint.config.js rename to eslint.base.js diff --git a/experimental/examples/.eslintrc.js b/experimental/examples/.eslintrc.js index 7927fa0c36..3f58849df9 100644 --- a/experimental/examples/.eslintrc.js +++ b/experimental/examples/.eslintrc.js @@ -3,5 +3,5 @@ module.exports = { "mocha": true, "node": true }, - ...require('../../eslint.config.js') + ...require('../../eslint.base.js') } diff --git a/experimental/packages/api-events/.eslintrc.js b/experimental/packages/api-events/.eslintrc.js index 7654abb6ac..5cb19b0298 100644 --- a/experimental/packages/api-events/.eslintrc.js +++ b/experimental/packages/api-events/.eslintrc.js @@ -4,5 +4,5 @@ module.exports = { "commonjs": true, "shared-node-browser": true }, - ...require('../../../eslint.config.js') + ...require('../../../eslint.base.js') } diff --git a/experimental/packages/api-logs/.eslintrc.js b/experimental/packages/api-logs/.eslintrc.js index 7654abb6ac..5cb19b0298 100644 --- a/experimental/packages/api-logs/.eslintrc.js +++ b/experimental/packages/api-logs/.eslintrc.js @@ -4,5 +4,5 @@ module.exports = { "commonjs": true, "shared-node-browser": true }, - ...require('../../../eslint.config.js') + ...require('../../../eslint.base.js') } diff --git a/experimental/packages/exporter-logs-otlp-grpc/.eslintrc.js b/experimental/packages/exporter-logs-otlp-grpc/.eslintrc.js index 3ed0fbeba3..9cfb3fd423 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/.eslintrc.js +++ b/experimental/packages/exporter-logs-otlp-grpc/.eslintrc.js @@ -4,5 +4,5 @@ module.exports = { "commonjs": true, "node": true, }, - ...require('../../../eslint.config.js') + ...require('../../../eslint.base.js') } diff --git a/experimental/packages/exporter-logs-otlp-http/.eslintrc.js b/experimental/packages/exporter-logs-otlp-http/.eslintrc.js index f3f22e8617..24f29328f9 100644 --- a/experimental/packages/exporter-logs-otlp-http/.eslintrc.js +++ b/experimental/packages/exporter-logs-otlp-http/.eslintrc.js @@ -5,5 +5,5 @@ module.exports = { node: true, browser: true, }, - ...require('../../../eslint.config.js'), + ...require('../../../eslint.base.js'), }; diff --git a/experimental/packages/exporter-logs-otlp-proto/.eslintrc.js b/experimental/packages/exporter-logs-otlp-proto/.eslintrc.js index 3ed0fbeba3..9cfb3fd423 100644 --- a/experimental/packages/exporter-logs-otlp-proto/.eslintrc.js +++ b/experimental/packages/exporter-logs-otlp-proto/.eslintrc.js @@ -4,5 +4,5 @@ module.exports = { "commonjs": true, "node": true, }, - ...require('../../../eslint.config.js') + ...require('../../../eslint.base.js') } diff --git a/experimental/packages/exporter-trace-otlp-grpc/.eslintrc.js b/experimental/packages/exporter-trace-otlp-grpc/.eslintrc.js index 3ed0fbeba3..9cfb3fd423 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/.eslintrc.js +++ b/experimental/packages/exporter-trace-otlp-grpc/.eslintrc.js @@ -4,5 +4,5 @@ module.exports = { "commonjs": true, "node": true, }, - ...require('../../../eslint.config.js') + ...require('../../../eslint.base.js') } diff --git a/experimental/packages/exporter-trace-otlp-http/.eslintrc.js b/experimental/packages/exporter-trace-otlp-http/.eslintrc.js index e41d9a9299..c054089042 100644 --- a/experimental/packages/exporter-trace-otlp-http/.eslintrc.js +++ b/experimental/packages/exporter-trace-otlp-http/.eslintrc.js @@ -5,5 +5,5 @@ module.exports = { "node": true, "browser": true }, - ...require('../../../eslint.config.js') + ...require('../../../eslint.base.js') } diff --git a/experimental/packages/exporter-trace-otlp-proto/.eslintrc.js b/experimental/packages/exporter-trace-otlp-proto/.eslintrc.js index 3ed0fbeba3..9cfb3fd423 100644 --- a/experimental/packages/exporter-trace-otlp-proto/.eslintrc.js +++ b/experimental/packages/exporter-trace-otlp-proto/.eslintrc.js @@ -4,5 +4,5 @@ module.exports = { "commonjs": true, "node": true, }, - ...require('../../../eslint.config.js') + ...require('../../../eslint.base.js') } diff --git a/experimental/packages/opentelemetry-browser-detector/.eslintrc.js b/experimental/packages/opentelemetry-browser-detector/.eslintrc.js index 3ed0fbeba3..9cfb3fd423 100644 --- a/experimental/packages/opentelemetry-browser-detector/.eslintrc.js +++ b/experimental/packages/opentelemetry-browser-detector/.eslintrc.js @@ -4,5 +4,5 @@ module.exports = { "commonjs": true, "node": true, }, - ...require('../../../eslint.config.js') + ...require('../../../eslint.base.js') } diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/.eslintrc.js b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/.eslintrc.js index 3ed0fbeba3..9cfb3fd423 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/.eslintrc.js +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/.eslintrc.js @@ -4,5 +4,5 @@ module.exports = { "commonjs": true, "node": true, }, - ...require('../../../eslint.config.js') + ...require('../../../eslint.base.js') } diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/.eslintrc.js b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/.eslintrc.js index e41d9a9299..c054089042 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/.eslintrc.js +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/.eslintrc.js @@ -5,5 +5,5 @@ module.exports = { "node": true, "browser": true }, - ...require('../../../eslint.config.js') + ...require('../../../eslint.base.js') } diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/.eslintrc.js b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/.eslintrc.js index 3ed0fbeba3..9cfb3fd423 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/.eslintrc.js +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/.eslintrc.js @@ -4,5 +4,5 @@ module.exports = { "commonjs": true, "node": true, }, - ...require('../../../eslint.config.js') + ...require('../../../eslint.base.js') } diff --git a/experimental/packages/opentelemetry-exporter-prometheus/.eslintrc.js b/experimental/packages/opentelemetry-exporter-prometheus/.eslintrc.js index f756f4488b..9baf1b4956 100644 --- a/experimental/packages/opentelemetry-exporter-prometheus/.eslintrc.js +++ b/experimental/packages/opentelemetry-exporter-prometheus/.eslintrc.js @@ -3,5 +3,5 @@ module.exports = { "mocha": true, "node": true }, - ...require('../../../eslint.config.js') + ...require('../../../eslint.base.js') } diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/.eslintrc.js b/experimental/packages/opentelemetry-instrumentation-fetch/.eslintrc.js index e41d9a9299..c054089042 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/.eslintrc.js +++ b/experimental/packages/opentelemetry-instrumentation-fetch/.eslintrc.js @@ -5,5 +5,5 @@ module.exports = { "node": true, "browser": true }, - ...require('../../../eslint.config.js') + ...require('../../../eslint.base.js') } diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/.eslintrc.js b/experimental/packages/opentelemetry-instrumentation-grpc/.eslintrc.js index f756f4488b..9baf1b4956 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/.eslintrc.js +++ b/experimental/packages/opentelemetry-instrumentation-grpc/.eslintrc.js @@ -3,5 +3,5 @@ module.exports = { "mocha": true, "node": true }, - ...require('../../../eslint.config.js') + ...require('../../../eslint.base.js') } diff --git a/experimental/packages/opentelemetry-instrumentation-http/.eslintrc.js b/experimental/packages/opentelemetry-instrumentation-http/.eslintrc.js index f756f4488b..9baf1b4956 100644 --- a/experimental/packages/opentelemetry-instrumentation-http/.eslintrc.js +++ b/experimental/packages/opentelemetry-instrumentation-http/.eslintrc.js @@ -3,5 +3,5 @@ module.exports = { "mocha": true, "node": true }, - ...require('../../../eslint.config.js') + ...require('../../../eslint.base.js') } diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/.eslintrc.js b/experimental/packages/opentelemetry-instrumentation-xml-http-request/.eslintrc.js index b50dfd815b..7364a382d0 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/.eslintrc.js +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/.eslintrc.js @@ -3,5 +3,5 @@ module.exports = { "mocha": true, "browser": true, }, - ...require('../../../eslint.config.js') + ...require('../../../eslint.base.js') } diff --git a/experimental/packages/opentelemetry-instrumentation/.eslintrc.js b/experimental/packages/opentelemetry-instrumentation/.eslintrc.js index e41d9a9299..c054089042 100644 --- a/experimental/packages/opentelemetry-instrumentation/.eslintrc.js +++ b/experimental/packages/opentelemetry-instrumentation/.eslintrc.js @@ -5,5 +5,5 @@ module.exports = { "node": true, "browser": true }, - ...require('../../../eslint.config.js') + ...require('../../../eslint.base.js') } diff --git a/experimental/packages/opentelemetry-sdk-node/.eslintrc.js b/experimental/packages/opentelemetry-sdk-node/.eslintrc.js index f756f4488b..9baf1b4956 100644 --- a/experimental/packages/opentelemetry-sdk-node/.eslintrc.js +++ b/experimental/packages/opentelemetry-sdk-node/.eslintrc.js @@ -3,5 +3,5 @@ module.exports = { "mocha": true, "node": true }, - ...require('../../../eslint.config.js') + ...require('../../../eslint.base.js') } diff --git a/experimental/packages/otlp-exporter-base/.eslintrc.js b/experimental/packages/otlp-exporter-base/.eslintrc.js index e41d9a9299..c054089042 100644 --- a/experimental/packages/otlp-exporter-base/.eslintrc.js +++ b/experimental/packages/otlp-exporter-base/.eslintrc.js @@ -5,5 +5,5 @@ module.exports = { "node": true, "browser": true }, - ...require('../../../eslint.config.js') + ...require('../../../eslint.base.js') } diff --git a/experimental/packages/otlp-grpc-exporter-base/.eslintrc.js b/experimental/packages/otlp-grpc-exporter-base/.eslintrc.js index 3ed0fbeba3..9cfb3fd423 100644 --- a/experimental/packages/otlp-grpc-exporter-base/.eslintrc.js +++ b/experimental/packages/otlp-grpc-exporter-base/.eslintrc.js @@ -4,5 +4,5 @@ module.exports = { "commonjs": true, "node": true, }, - ...require('../../../eslint.config.js') + ...require('../../../eslint.base.js') } diff --git a/experimental/packages/otlp-proto-exporter-base/.eslintrc.js b/experimental/packages/otlp-proto-exporter-base/.eslintrc.js index 3ed0fbeba3..9cfb3fd423 100644 --- a/experimental/packages/otlp-proto-exporter-base/.eslintrc.js +++ b/experimental/packages/otlp-proto-exporter-base/.eslintrc.js @@ -4,5 +4,5 @@ module.exports = { "commonjs": true, "node": true, }, - ...require('../../../eslint.config.js') + ...require('../../../eslint.base.js') } diff --git a/experimental/packages/otlp-transformer/.eslintrc.js b/experimental/packages/otlp-transformer/.eslintrc.js index b9004d2025..0fe1bbf975 100644 --- a/experimental/packages/otlp-transformer/.eslintrc.js +++ b/experimental/packages/otlp-transformer/.eslintrc.js @@ -4,5 +4,5 @@ module.exports = { "commonjs": true, "shared-node-browser": true }, - ...require('../../../eslint.config.js') + ...require('../../../eslint.base.js') } diff --git a/experimental/packages/sdk-logs/.eslintrc.js b/experimental/packages/sdk-logs/.eslintrc.js index 0c986a856c..fc24af194b 100644 --- a/experimental/packages/sdk-logs/.eslintrc.js +++ b/experimental/packages/sdk-logs/.eslintrc.js @@ -3,5 +3,5 @@ module.exports = { mocha: true, node: true, }, - ...require('../../../eslint.config.js'), + ...require('../../../eslint.base.js'), }; diff --git a/experimental/packages/shim-opencensus/.eslintrc.js b/experimental/packages/shim-opencensus/.eslintrc.js index f756f4488b..9baf1b4956 100644 --- a/experimental/packages/shim-opencensus/.eslintrc.js +++ b/experimental/packages/shim-opencensus/.eslintrc.js @@ -3,5 +3,5 @@ module.exports = { "mocha": true, "node": true }, - ...require('../../../eslint.config.js') + ...require('../../../eslint.base.js') } diff --git a/package.json b/package.json index c0b6c172ef..a1fbadf6d0 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "devDependencies": { "@typescript-eslint/eslint-plugin": "5.59.11", "@typescript-eslint/parser": "5.59.11", - "eslint": "8.22.0", + "eslint": "8.43.0", "eslint-config-prettier": "8.5.0", "eslint-plugin-header": "3.1.1", "eslint-plugin-node": "11.1.0", diff --git a/packages/opentelemetry-context-async-hooks/.eslintrc.js b/packages/opentelemetry-context-async-hooks/.eslintrc.js index f726f3becb..3d9af536bb 100644 --- a/packages/opentelemetry-context-async-hooks/.eslintrc.js +++ b/packages/opentelemetry-context-async-hooks/.eslintrc.js @@ -3,5 +3,5 @@ module.exports = { "mocha": true, "node": true }, - ...require('../../eslint.config.js') + ...require('../../eslint.base.js') } diff --git a/packages/opentelemetry-context-zone-peer-dep/.eslintrc.js b/packages/opentelemetry-context-zone-peer-dep/.eslintrc.js index f21c674001..7561e7f833 100644 --- a/packages/opentelemetry-context-zone-peer-dep/.eslintrc.js +++ b/packages/opentelemetry-context-zone-peer-dep/.eslintrc.js @@ -7,5 +7,5 @@ module.exports = { "globals": { "Zone": "readonly" }, - ...require('../../eslint.config.js') + ...require('../../eslint.base.js') } diff --git a/packages/opentelemetry-context-zone/.eslintrc.js b/packages/opentelemetry-context-zone/.eslintrc.js index c21aa0e358..a374ccda6a 100644 --- a/packages/opentelemetry-context-zone/.eslintrc.js +++ b/packages/opentelemetry-context-zone/.eslintrc.js @@ -3,5 +3,5 @@ module.exports = { "browser": true, "commonjs": true }, - ...require('../../eslint.config.js') + ...require('../../eslint.base.js') } diff --git a/packages/opentelemetry-core/.eslintrc.js b/packages/opentelemetry-core/.eslintrc.js index 9dfe62f9b8..36847df9fb 100644 --- a/packages/opentelemetry-core/.eslintrc.js +++ b/packages/opentelemetry-core/.eslintrc.js @@ -5,5 +5,5 @@ module.exports = { "node": true, "browser": true }, - ...require('../../eslint.config.js') + ...require('../../eslint.base.js') } diff --git a/packages/opentelemetry-exporter-jaeger/.eslintrc.js b/packages/opentelemetry-exporter-jaeger/.eslintrc.js index f726f3becb..3d9af536bb 100644 --- a/packages/opentelemetry-exporter-jaeger/.eslintrc.js +++ b/packages/opentelemetry-exporter-jaeger/.eslintrc.js @@ -3,5 +3,5 @@ module.exports = { "mocha": true, "node": true }, - ...require('../../eslint.config.js') + ...require('../../eslint.base.js') } diff --git a/packages/opentelemetry-exporter-zipkin/.eslintrc.js b/packages/opentelemetry-exporter-zipkin/.eslintrc.js index 9dfe62f9b8..36847df9fb 100644 --- a/packages/opentelemetry-exporter-zipkin/.eslintrc.js +++ b/packages/opentelemetry-exporter-zipkin/.eslintrc.js @@ -5,5 +5,5 @@ module.exports = { "node": true, "browser": true }, - ...require('../../eslint.config.js') + ...require('../../eslint.base.js') } diff --git a/packages/opentelemetry-propagator-b3/.eslintrc.js b/packages/opentelemetry-propagator-b3/.eslintrc.js index 9dfe62f9b8..36847df9fb 100644 --- a/packages/opentelemetry-propagator-b3/.eslintrc.js +++ b/packages/opentelemetry-propagator-b3/.eslintrc.js @@ -5,5 +5,5 @@ module.exports = { "node": true, "browser": true }, - ...require('../../eslint.config.js') + ...require('../../eslint.base.js') } diff --git a/packages/opentelemetry-propagator-jaeger/.eslintrc.js b/packages/opentelemetry-propagator-jaeger/.eslintrc.js index b23ee98fc0..3913d6d94b 100644 --- a/packages/opentelemetry-propagator-jaeger/.eslintrc.js +++ b/packages/opentelemetry-propagator-jaeger/.eslintrc.js @@ -4,5 +4,5 @@ module.exports = { "commonjs": true, "browser": true, }, - ...require('../../eslint.config.js') + ...require('../../eslint.base.js') } diff --git a/packages/opentelemetry-resources/.eslintrc.js b/packages/opentelemetry-resources/.eslintrc.js index 9dfe62f9b8..36847df9fb 100644 --- a/packages/opentelemetry-resources/.eslintrc.js +++ b/packages/opentelemetry-resources/.eslintrc.js @@ -5,5 +5,5 @@ module.exports = { "node": true, "browser": true }, - ...require('../../eslint.config.js') + ...require('../../eslint.base.js') } diff --git a/packages/opentelemetry-sdk-trace-base/.eslintrc.js b/packages/opentelemetry-sdk-trace-base/.eslintrc.js index 9dfe62f9b8..36847df9fb 100644 --- a/packages/opentelemetry-sdk-trace-base/.eslintrc.js +++ b/packages/opentelemetry-sdk-trace-base/.eslintrc.js @@ -5,5 +5,5 @@ module.exports = { "node": true, "browser": true }, - ...require('../../eslint.config.js') + ...require('../../eslint.base.js') } diff --git a/packages/opentelemetry-sdk-trace-node/.eslintrc.js b/packages/opentelemetry-sdk-trace-node/.eslintrc.js index f726f3becb..3d9af536bb 100644 --- a/packages/opentelemetry-sdk-trace-node/.eslintrc.js +++ b/packages/opentelemetry-sdk-trace-node/.eslintrc.js @@ -3,5 +3,5 @@ module.exports = { "mocha": true, "node": true }, - ...require('../../eslint.config.js') + ...require('../../eslint.base.js') } diff --git a/packages/opentelemetry-sdk-trace-web/.eslintrc.js b/packages/opentelemetry-sdk-trace-web/.eslintrc.js index 86d794e2f5..359356edd4 100644 --- a/packages/opentelemetry-sdk-trace-web/.eslintrc.js +++ b/packages/opentelemetry-sdk-trace-web/.eslintrc.js @@ -3,5 +3,5 @@ module.exports = { "mocha": true, "browser": true, }, - ...require('../../eslint.config.js') + ...require('../../eslint.base.js') } diff --git a/packages/opentelemetry-semantic-conventions/.eslintrc.js b/packages/opentelemetry-semantic-conventions/.eslintrc.js index 9dfe62f9b8..36847df9fb 100644 --- a/packages/opentelemetry-semantic-conventions/.eslintrc.js +++ b/packages/opentelemetry-semantic-conventions/.eslintrc.js @@ -5,5 +5,5 @@ module.exports = { "node": true, "browser": true }, - ...require('../../eslint.config.js') + ...require('../../eslint.base.js') } diff --git a/packages/opentelemetry-shim-opentracing/.eslintrc.js b/packages/opentelemetry-shim-opentracing/.eslintrc.js index f726f3becb..3d9af536bb 100644 --- a/packages/opentelemetry-shim-opentracing/.eslintrc.js +++ b/packages/opentelemetry-shim-opentracing/.eslintrc.js @@ -3,5 +3,5 @@ module.exports = { "mocha": true, "node": true }, - ...require('../../eslint.config.js') + ...require('../../eslint.base.js') } diff --git a/packages/sdk-metrics/.eslintrc.js b/packages/sdk-metrics/.eslintrc.js index f726f3becb..3d9af536bb 100644 --- a/packages/sdk-metrics/.eslintrc.js +++ b/packages/sdk-metrics/.eslintrc.js @@ -3,5 +3,5 @@ module.exports = { "mocha": true, "node": true }, - ...require('../../eslint.config.js') + ...require('../../eslint.base.js') } diff --git a/packages/template/.eslintrc.js b/packages/template/.eslintrc.js index 9dfe62f9b8..36847df9fb 100644 --- a/packages/template/.eslintrc.js +++ b/packages/template/.eslintrc.js @@ -5,5 +5,5 @@ module.exports = { "node": true, "browser": true }, - ...require('../../eslint.config.js') + ...require('../../eslint.base.js') } From 68039c55ecc7f8ff6af15c5c430d9202b6bf9f8b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 6 Jul 2023 15:27:02 +0200 Subject: [PATCH 61/71] chore(deps): update dependency eslint to v8.44.0 (#3916) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a1fbadf6d0..2890bbe58c 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "devDependencies": { "@typescript-eslint/eslint-plugin": "5.59.11", "@typescript-eslint/parser": "5.59.11", - "eslint": "8.43.0", + "eslint": "8.44.0", "eslint-config-prettier": "8.5.0", "eslint-plugin-header": "3.1.1", "eslint-plugin-node": "11.1.0", From cab31aadb14c3e3ff3dda3e501234e717f1461e2 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 7 Jul 2023 10:10:00 +0200 Subject: [PATCH 62/71] chore(deps): update all patch versions (#3972) --- api/package.json | 2 +- experimental/packages/api-events/package.json | 2 +- experimental/packages/api-logs/package.json | 2 +- .../packages/exporter-logs-otlp-grpc/package.json | 2 +- .../packages/exporter-logs-otlp-http/package.json | 4 ++-- .../packages/exporter-logs-otlp-proto/package.json | 4 ++-- .../packages/exporter-trace-otlp-grpc/package.json | 2 +- .../packages/exporter-trace-otlp-http/package.json | 4 ++-- .../packages/exporter-trace-otlp-proto/package.json | 4 ++-- .../packages/opentelemetry-browser-detector/package.json | 4 ++-- .../opentelemetry-exporter-metrics-otlp-grpc/package.json | 2 +- .../opentelemetry-exporter-metrics-otlp-http/package.json | 4 ++-- .../package.json | 2 +- .../opentelemetry-instrumentation-fetch/package.json | 4 ++-- .../package.json | 4 ++-- .../packages/opentelemetry-instrumentation/package.json | 4 ++-- experimental/packages/otlp-exporter-base/package.json | 4 ++-- .../packages/otlp-grpc-exporter-base/package.json | 2 +- .../packages/otlp-proto-exporter-base/package.json | 2 +- experimental/packages/otlp-transformer/package.json | 2 +- experimental/packages/sdk-logs/package.json | 4 ++-- packages/opentelemetry-context-zone-peer-dep/package.json | 4 ++-- packages/opentelemetry-context-zone/package.json | 2 +- packages/opentelemetry-core/package.json | 2 +- packages/opentelemetry-exporter-zipkin/package.json | 4 ++-- packages/opentelemetry-propagator-jaeger/package.json | 2 +- packages/opentelemetry-resources/package.json | 2 +- packages/opentelemetry-sdk-trace-base/package.json | 2 +- packages/opentelemetry-sdk-trace-web/package.json | 4 ++-- packages/sdk-metrics/package.json | 4 ++-- selenium-tests/package.json | 8 ++++---- 31 files changed, 49 insertions(+), 49 deletions(-) diff --git a/api/package.json b/api/package.json index 296c86d4c8..e8952c3cf1 100644 --- a/api/package.json +++ b/api/package.json @@ -71,7 +71,7 @@ "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.0", + "karma-coverage": "2.2.1", "karma-mocha": "2.0.1", "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", diff --git a/experimental/packages/api-events/package.json b/experimental/packages/api-events/package.json index 4b3f8660cc..fe43dbc694 100644 --- a/experimental/packages/api-events/package.json +++ b/experimental/packages/api-events/package.json @@ -73,7 +73,7 @@ "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.0", + "karma-coverage": "2.2.1", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/experimental/packages/api-logs/package.json b/experimental/packages/api-logs/package.json index 315534d6bd..02cc0bc2b0 100644 --- a/experimental/packages/api-logs/package.json +++ b/experimental/packages/api-logs/package.json @@ -73,7 +73,7 @@ "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.0", + "karma-coverage": "2.2.1", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/experimental/packages/exporter-logs-otlp-grpc/package.json b/experimental/packages/exporter-logs-otlp-grpc/package.json index 9a8244e50e..1a71d47cf8 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/package.json +++ b/experimental/packages/exporter-logs-otlp-grpc/package.json @@ -48,7 +48,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.6", + "@babel/core": "7.22.8", "@grpc/proto-loader": "^0.7.3", "@opentelemetry/api": "1.4.1", "@opentelemetry/api-logs": "0.41.0", diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index b29e26ec07..459612e2c0 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -71,7 +71,7 @@ ], "sideEffects": false, "devDependencies": { - "@babel/core": "7.22.6", + "@babel/core": "7.22.8", "@opentelemetry/api-logs": "0.41.0", "@opentelemetry/resources": "1.15.0", "@types/mocha": "10.0.1", @@ -85,7 +85,7 @@ "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.0", + "karma-coverage": "2.2.1", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/experimental/packages/exporter-logs-otlp-proto/package.json b/experimental/packages/exporter-logs-otlp-proto/package.json index 5935d17191..a166f62416 100644 --- a/experimental/packages/exporter-logs-otlp-proto/package.json +++ b/experimental/packages/exporter-logs-otlp-proto/package.json @@ -63,7 +63,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.6", + "@babel/core": "7.22.8", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", @@ -74,7 +74,7 @@ "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.0", + "karma-coverage": "2.2.1", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/experimental/packages/exporter-trace-otlp-grpc/package.json b/experimental/packages/exporter-trace-otlp-grpc/package.json index 2cf8e237a6..524adb1065 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/package.json +++ b/experimental/packages/exporter-trace-otlp-grpc/package.json @@ -47,7 +47,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.6", + "@babel/core": "7.22.8", "@grpc/proto-loader": "^0.7.3", "@opentelemetry/api": "1.4.1", "@opentelemetry/otlp-exporter-base": "0.41.0", diff --git a/experimental/packages/exporter-trace-otlp-http/package.json b/experimental/packages/exporter-trace-otlp-http/package.json index ce26e94630..cdb697283a 100644 --- a/experimental/packages/exporter-trace-otlp-http/package.json +++ b/experimental/packages/exporter-trace-otlp-http/package.json @@ -63,7 +63,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.6", + "@babel/core": "7.22.8", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", @@ -76,7 +76,7 @@ "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.0", + "karma-coverage": "2.2.1", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/experimental/packages/exporter-trace-otlp-proto/package.json b/experimental/packages/exporter-trace-otlp-proto/package.json index a812a1e7ca..ef8f876acf 100644 --- a/experimental/packages/exporter-trace-otlp-proto/package.json +++ b/experimental/packages/exporter-trace-otlp-proto/package.json @@ -62,7 +62,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.6", + "@babel/core": "7.22.8", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", @@ -73,7 +73,7 @@ "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.0", + "karma-coverage": "2.2.1", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/experimental/packages/opentelemetry-browser-detector/package.json b/experimental/packages/opentelemetry-browser-detector/package.json index 5c20aa95b0..29373f3059 100644 --- a/experimental/packages/opentelemetry-browser-detector/package.json +++ b/experimental/packages/opentelemetry-browser-detector/package.json @@ -53,7 +53,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.6", + "@babel/core": "7.22.8", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", @@ -63,7 +63,7 @@ "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.0", + "karma-coverage": "2.2.1", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index 380c0e212e..15624bac4c 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -47,7 +47,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.6", + "@babel/core": "7.22.8", "@grpc/proto-loader": "^0.7.3", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index 6190a4144e..1e696f5270 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -63,7 +63,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.6", + "@babel/core": "7.22.8", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", @@ -76,7 +76,7 @@ "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.0", + "karma-coverage": "2.2.1", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index 440af69cb0..2168d2864e 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -47,7 +47,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.6", + "@babel/core": "7.22.8", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index f641b9ec49..c1213ea31a 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -54,7 +54,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.6", + "@babel/core": "7.22.8", "@opentelemetry/api": "1.4.1", "@opentelemetry/context-zone": "1.15.0", "@opentelemetry/propagator-b3": "1.15.0", @@ -69,7 +69,7 @@ "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.0", + "karma-coverage": "2.2.1", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json index f628c633ef..c7179d59d3 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json @@ -54,7 +54,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.6", + "@babel/core": "7.22.8", "@opentelemetry/api": "1.4.1", "@opentelemetry/context-zone": "1.15.0", "@opentelemetry/propagator-b3": "1.15.0", @@ -69,7 +69,7 @@ "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.0", + "karma-coverage": "2.2.1", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index 4141beed00..b788dea267 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -82,7 +82,7 @@ "@opentelemetry/api": "^1.3.0" }, "devDependencies": { - "@babel/core": "7.22.6", + "@babel/core": "7.22.8", "@opentelemetry/api": "1.4.1", "@opentelemetry/sdk-metrics": "1.15.0", "@types/mocha": "10.0.1", @@ -97,7 +97,7 @@ "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.0", + "karma-coverage": "2.2.1", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/experimental/packages/otlp-exporter-base/package.json b/experimental/packages/otlp-exporter-base/package.json index 77c49bfaa2..142f9ca886 100644 --- a/experimental/packages/otlp-exporter-base/package.json +++ b/experimental/packages/otlp-exporter-base/package.json @@ -65,7 +65,7 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@babel/core": "7.22.5", + "@babel/core": "7.22.8", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", @@ -75,7 +75,7 @@ "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.0", + "karma-coverage": "2.2.1", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/experimental/packages/otlp-grpc-exporter-base/package.json b/experimental/packages/otlp-grpc-exporter-base/package.json index c8fcd6fcda..0610cb9d4f 100644 --- a/experimental/packages/otlp-grpc-exporter-base/package.json +++ b/experimental/packages/otlp-grpc-exporter-base/package.json @@ -48,7 +48,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.6", + "@babel/core": "7.22.8", "@opentelemetry/api": "1.4.1", "@opentelemetry/otlp-transformer": "0.41.0", "@opentelemetry/resources": "1.15.0", diff --git a/experimental/packages/otlp-proto-exporter-base/package.json b/experimental/packages/otlp-proto-exporter-base/package.json index fb8a8ce047..a764299858 100644 --- a/experimental/packages/otlp-proto-exporter-base/package.json +++ b/experimental/packages/otlp-proto-exporter-base/package.json @@ -59,7 +59,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.6", + "@babel/core": "7.22.8", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", diff --git a/experimental/packages/otlp-transformer/package.json b/experimental/packages/otlp-transformer/package.json index 6c020a16f4..ca8d12685f 100644 --- a/experimental/packages/otlp-transformer/package.json +++ b/experimental/packages/otlp-transformer/package.json @@ -65,7 +65,7 @@ "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.0", + "karma-coverage": "2.2.1", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/experimental/packages/sdk-logs/package.json b/experimental/packages/sdk-logs/package.json index 898bb86bed..106a3dbf4a 100644 --- a/experimental/packages/sdk-logs/package.json +++ b/experimental/packages/sdk-logs/package.json @@ -74,7 +74,7 @@ "devDependencies": { "@opentelemetry/api": ">=1.4.0 <1.5.0", "@opentelemetry/api-logs": "0.41.0", - "@babel/core": "7.22.5", + "@babel/core": "7.22.8", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", @@ -83,7 +83,7 @@ "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.0", + "karma-coverage": "2.2.1", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/packages/opentelemetry-context-zone-peer-dep/package.json b/packages/opentelemetry-context-zone-peer-dep/package.json index fa1ef04204..8026461c6f 100644 --- a/packages/opentelemetry-context-zone-peer-dep/package.json +++ b/packages/opentelemetry-context-zone-peer-dep/package.json @@ -53,7 +53,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.6", + "@babel/core": "7.22.8", "@opentelemetry/api": ">=1.0.0 <1.5.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", @@ -66,7 +66,7 @@ "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.0", + "karma-coverage": "2.2.1", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/packages/opentelemetry-context-zone/package.json b/packages/opentelemetry-context-zone/package.json index b2735c9014..70f79503fb 100644 --- a/packages/opentelemetry-context-zone/package.json +++ b/packages/opentelemetry-context-zone/package.json @@ -50,7 +50,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.6", + "@babel/core": "7.22.8", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", diff --git a/packages/opentelemetry-core/package.json b/packages/opentelemetry-core/package.json index 70d32b5dec..1e9d1d8c66 100644 --- a/packages/opentelemetry-core/package.json +++ b/packages/opentelemetry-core/package.json @@ -74,7 +74,7 @@ "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.0", + "karma-coverage": "2.2.1", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index e8bd41837e..4b979ec13c 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -60,7 +60,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.6", + "@babel/core": "7.22.8", "@opentelemetry/api": "^1.0.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", @@ -72,7 +72,7 @@ "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.0", + "karma-coverage": "2.2.1", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/packages/opentelemetry-propagator-jaeger/package.json b/packages/opentelemetry-propagator-jaeger/package.json index fdabf7a7e8..f110f2d8d2 100644 --- a/packages/opentelemetry-propagator-jaeger/package.json +++ b/packages/opentelemetry-propagator-jaeger/package.json @@ -64,7 +64,7 @@ "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.0", + "karma-coverage": "2.2.1", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/packages/opentelemetry-resources/package.json b/packages/opentelemetry-resources/package.json index a5862f44d5..997635f42b 100644 --- a/packages/opentelemetry-resources/package.json +++ b/packages/opentelemetry-resources/package.json @@ -71,7 +71,7 @@ "cross-var": "1.1.0", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.0", + "karma-coverage": "2.2.1", "karma-mocha": "2.0.1", "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", diff --git a/packages/opentelemetry-sdk-trace-base/package.json b/packages/opentelemetry-sdk-trace-base/package.json index 884e0e8c73..4c306805cf 100644 --- a/packages/opentelemetry-sdk-trace-base/package.json +++ b/packages/opentelemetry-sdk-trace-base/package.json @@ -75,7 +75,7 @@ "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.0", + "karma-coverage": "2.2.1", "karma-mocha": "2.0.1", "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", diff --git a/packages/opentelemetry-sdk-trace-web/package.json b/packages/opentelemetry-sdk-trace-web/package.json index ab668e3c47..f7dd504e76 100644 --- a/packages/opentelemetry-sdk-trace-web/package.json +++ b/packages/opentelemetry-sdk-trace-web/package.json @@ -55,7 +55,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.6", + "@babel/core": "7.22.8", "@opentelemetry/api": ">=1.0.0 <1.5.0", "@opentelemetry/context-zone": "1.15.0", "@opentelemetry/propagator-b3": "1.15.0", @@ -71,7 +71,7 @@ "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.0", + "karma-coverage": "2.2.1", "karma-jquery": "0.2.4", "karma-mocha": "2.0.1", "karma-mocha-webworker": "1.3.0", diff --git a/packages/sdk-metrics/package.json b/packages/sdk-metrics/package.json index e7d695ca93..f85e67fafc 100644 --- a/packages/sdk-metrics/package.json +++ b/packages/sdk-metrics/package.json @@ -56,7 +56,7 @@ "devDependencies": { "@opentelemetry/api": ">=1.3.0 <1.5.0", "@types/lodash.merge": "4.6.7", - "@babel/core": "7.22.5", + "@babel/core": "7.22.8", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", @@ -65,7 +65,7 @@ "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.0", + "karma-coverage": "2.2.1", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", diff --git a/selenium-tests/package.json b/selenium-tests/package.json index 829be06e36..5c0fe40dad 100644 --- a/selenium-tests/package.json +++ b/selenium-tests/package.json @@ -31,11 +31,11 @@ "access": "restricted" }, "devDependencies": { - "@babel/core": "7.22.6", + "@babel/core": "7.22.8", "@babel/plugin-proposal-class-properties": "7.18.6", - "@babel/plugin-proposal-decorators": "7.22.6", - "@babel/plugin-transform-runtime": "7.22.6", - "@babel/preset-env": "7.22.6", + "@babel/plugin-proposal-decorators": "7.22.7", + "@babel/plugin-transform-runtime": "7.22.7", + "@babel/preset-env": "7.22.7", "@opentelemetry/api": "^1.0.0", "babel-loader": "8.3.0", "babel-polyfill": "6.26.0", From 6d13eb437932e46e021c840ac5d327d556eb3c52 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 10 Jul 2023 10:36:44 +0200 Subject: [PATCH 63/71] chore(deps): update dependency semver to v7.5.4 (#3977) --- .../packages/opentelemetry-instrumentation-grpc/package.json | 2 +- experimental/packages/opentelemetry-sdk-node/package.json | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/package.json b/experimental/packages/opentelemetry-instrumentation-grpc/package.json index ca20eade98..10019d25cc 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/package.json +++ b/experimental/packages/opentelemetry-instrumentation-grpc/package.json @@ -61,7 +61,7 @@ "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", - "semver": "7.5.3", + "semver": "7.5.4", "sinon": "15.1.2", "ts-mocha": "10.0.0", "typescript": "4.4.4" diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json index 9ec166cb75..dcf827d0fd 100644 --- a/experimental/packages/opentelemetry-sdk-node/package.json +++ b/experimental/packages/opentelemetry-sdk-node/package.json @@ -73,7 +73,7 @@ "lerna": "7.1.1", "mocha": "10.2.0", "nyc": "15.1.0", - "semver": "7.5.3", + "semver": "7.5.4", "sinon": "15.1.2", "ts-loader": "8.4.0", "ts-mocha": "10.0.0", diff --git a/package.json b/package.json index 2890bbe58c..2b8572602f 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ "linkinator": "5.0.1", "markdownlint-cli": "0.35.0", "prettier": "2.8.8", - "semver": "7.5.3", + "semver": "7.5.4", "typedoc": "0.22.18", "typedoc-plugin-missing-exports": "1.0.0", "typedoc-plugin-resolve-crossmodule-references": "0.2.2", From fc28665d090f4426ece597ea44546dbc1d95d665 Mon Sep 17 00:00:00 2001 From: Jamie Danielson Date: Mon, 10 Jul 2023 11:31:57 -0400 Subject: [PATCH 64/71] docs(sdk-metrics): add example of exponential histogram metric (#3855) Co-authored-by: Chengzhong Wu Co-authored-by: Marc Pichler --- doc/metrics.md | 8 ++--- examples/otlp-exporter-node/metrics.js | 44 ++++++++++++++++++++++---- experimental/CHANGELOG.md | 4 +++ 3 files changed, 45 insertions(+), 11 deletions(-) diff --git a/doc/metrics.md b/doc/metrics.md index 7162f43638..e2f2b5a147 100644 --- a/doc/metrics.md +++ b/doc/metrics.md @@ -20,7 +20,7 @@ _Metrics API Reference: { requestCounter.add(1, attributes); upDownCounter.add(Math.random() > 0.5 ? 1 : -1, attributes); histogram.record(Math.random(), attributes); + exponentialHistogram.record(Math.random(), attributes); }, 1000); diff --git a/experimental/CHANGELOG.md b/experimental/CHANGELOG.md index 7d22becab6..762a2b9aa6 100644 --- a/experimental/CHANGELOG.md +++ b/experimental/CHANGELOG.md @@ -4,6 +4,10 @@ All notable changes to experimental packages in this project will be documented ## Unreleased +### :books: (Refine Doc) + +* docs(sdk-metrics): add example of exponential histogram metric [#3855](https://github.com/open-telemetry/opentelemetry-js/pull/3855) @JamieDanielson + ### :boom: Breaking Change ### :rocket: (Enhancement) From 552abc822178212edf48e56123928d86bad6f092 Mon Sep 17 00:00:00 2001 From: Pushpak Prateek <56984884+psk001@users.noreply.github.com> Date: Mon, 10 Jul 2023 22:25:53 +0530 Subject: [PATCH 65/71] feat(sdk-node): logs support added (#3969) --- experimental/CHANGELOG.md | 2 + .../opentelemetry-sdk-node/package.json | 2 + .../opentelemetry-sdk-node/src/index.ts | 1 + .../opentelemetry-sdk-node/src/sdk.ts | 58 +++++++++++++++++ .../opentelemetry-sdk-node/src/types.ts | 2 + .../opentelemetry-sdk-node/test/sdk.test.ts | 63 +++++++++++++++++++ .../opentelemetry-sdk-node/tsconfig.json | 6 ++ 7 files changed, 134 insertions(+) diff --git a/experimental/CHANGELOG.md b/experimental/CHANGELOG.md index 762a2b9aa6..c629931887 100644 --- a/experimental/CHANGELOG.md +++ b/experimental/CHANGELOG.md @@ -12,6 +12,8 @@ All notable changes to experimental packages in this project will be documented ### :rocket: (Enhancement) +* feat(sdk-node): logs support added [#3969](https://github.com/open-telemetry/opentelemetry-js/pull/3969) @psk001 + ### :bug: (Bug Fix) ### :books: (Refine Doc) diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json index dcf827d0fd..a99bab01a9 100644 --- a/experimental/packages/opentelemetry-sdk-node/package.json +++ b/experimental/packages/opentelemetry-sdk-node/package.json @@ -44,6 +44,7 @@ "access": "public" }, "dependencies": { + "@opentelemetry/api-logs":"0.41.0", "@opentelemetry/core": "1.15.0", "@opentelemetry/exporter-jaeger": "1.15.0", "@opentelemetry/exporter-trace-otlp-grpc": "0.41.0", @@ -52,6 +53,7 @@ "@opentelemetry/exporter-zipkin": "1.15.0", "@opentelemetry/instrumentation": "0.41.0", "@opentelemetry/resources": "1.15.0", + "@opentelemetry/sdk-logs":"0.41.0", "@opentelemetry/sdk-metrics": "1.15.0", "@opentelemetry/sdk-trace-base": "1.15.0", "@opentelemetry/sdk-trace-node": "1.15.0", diff --git a/experimental/packages/opentelemetry-sdk-node/src/index.ts b/experimental/packages/opentelemetry-sdk-node/src/index.ts index d246174208..891288ee6e 100644 --- a/experimental/packages/opentelemetry-sdk-node/src/index.ts +++ b/experimental/packages/opentelemetry-sdk-node/src/index.ts @@ -17,6 +17,7 @@ export * as api from '@opentelemetry/api'; export * as contextBase from '@opentelemetry/api'; export * as core from '@opentelemetry/core'; +export * as logs from '@opentelemetry/sdk-logs'; export * as metrics from '@opentelemetry/sdk-metrics'; export * as node from '@opentelemetry/sdk-trace-node'; export * as resources from '@opentelemetry/resources'; diff --git a/experimental/packages/opentelemetry-sdk-node/src/sdk.ts b/experimental/packages/opentelemetry-sdk-node/src/sdk.ts index 07921a88b9..8b96dddeab 100644 --- a/experimental/packages/opentelemetry-sdk-node/src/sdk.ts +++ b/experimental/packages/opentelemetry-sdk-node/src/sdk.ts @@ -21,6 +21,7 @@ import { diag, DiagConsoleLogger, } from '@opentelemetry/api'; +import { logs } from '@opentelemetry/api-logs'; import { InstrumentationOption, registerInstrumentations, @@ -35,6 +36,7 @@ import { Resource, ResourceDetectionConfig, } from '@opentelemetry/resources'; +import { LogRecordProcessor, LoggerProvider } from '@opentelemetry/sdk-logs'; import { MeterProvider, MetricReader, View } from '@opentelemetry/sdk-metrics'; import { BatchSpanProcessor, @@ -63,6 +65,13 @@ export type MeterProviderConfig = { views?: View[]; }; +export type LoggerProviderConfig = { + /** + * Reference to the LoggerRecordProcessor instance by the NodeSDK + */ + logRecordProcessor: LogRecordProcessor; +}; + export class NodeSDK { private _tracerProviderConfig?: { tracerConfig: NodeTracerConfig; @@ -70,6 +79,7 @@ export class NodeSDK { contextManager?: ContextManager; textMapPropagator?: TextMapPropagator; }; + private _loggerProviderConfig?: LoggerProviderConfig; private _meterProviderConfig?: MeterProviderConfig; private _instrumentations: InstrumentationOption[]; @@ -79,6 +89,7 @@ export class NodeSDK { private _autoDetectResources: boolean; private _tracerProvider?: NodeTracerProvider | TracerProviderWithEnvExporters; + private _loggerProvider?: LoggerProvider; private _meterProvider?: MeterProvider; private _serviceName?: string; @@ -140,6 +151,13 @@ export class NodeSDK { ); } + if (configuration.logRecordProcessor) { + const loggerProviderConfig: LoggerProviderConfig = { + logRecordProcessor: configuration.logRecordProcessor, + }; + this.configureLoggerProvider(loggerProviderConfig); + } + if (configuration.metricReader || configuration.views) { const meterProviderConfig: MeterProviderConfig = {}; if (configuration.metricReader) { @@ -175,6 +193,30 @@ export class NodeSDK { }; } + /**Set configurations needed to register a LoggerProvider */ + public configureLoggerProvider(config: LoggerProviderConfig): void { + // nothing is set yet, we can set config and then return + if (this._loggerProviderConfig == null) { + this._loggerProviderConfig = config; + return; + } + + // make sure we do not override existing logRecordProcessor with other logRecordProcessors. + if ( + this._loggerProviderConfig.logRecordProcessor != null && + config.logRecordProcessor != null + ) { + throw new Error( + 'LogRecordProcessor passed but LogRecordProcessor has already been configured.' + ); + } + + // set logRecordProcessor, but make sure we do not override existing logRecordProcessors with null/undefined. + if (config.logRecordProcessor != null) { + this._loggerProviderConfig.logRecordProcessor = config.logRecordProcessor; + } + } + /** Set configurations needed to register a MeterProvider */ public configureMeterProvider(config: MeterProviderConfig): void { // nothing is set yet, we can set config and return. @@ -269,6 +311,19 @@ export class NodeSDK { propagator: this._tracerProviderConfig?.textMapPropagator, }); + if (this._loggerProviderConfig) { + const loggerProvider = new LoggerProvider({ + resource: this._resource, + }); + loggerProvider.addLogRecordProcessor( + this._loggerProviderConfig.logRecordProcessor + ); + + this._loggerProvider = loggerProvider; + + logs.setGlobalLoggerProvider(loggerProvider); + } + if (this._meterProviderConfig) { const meterProvider = new MeterProvider({ resource: this._resource, @@ -299,6 +354,9 @@ export class NodeSDK { if (this._tracerProvider) { promises.push(this._tracerProvider.shutdown()); } + if (this._loggerProvider) { + promises.push(this._loggerProvider.shutdown()); + } if (this._meterProvider) { promises.push(this._meterProvider.shutdown()); } diff --git a/experimental/packages/opentelemetry-sdk-node/src/types.ts b/experimental/packages/opentelemetry-sdk-node/src/types.ts index 03efc31142..9292e0ae70 100644 --- a/experimental/packages/opentelemetry-sdk-node/src/types.ts +++ b/experimental/packages/opentelemetry-sdk-node/src/types.ts @@ -18,6 +18,7 @@ import type { ContextManager } from '@opentelemetry/api'; import { TextMapPropagator } from '@opentelemetry/api'; import { InstrumentationOption } from '@opentelemetry/instrumentation'; import { Detector, DetectorSync, IResource } from '@opentelemetry/resources'; +import { LogRecordProcessor } from '@opentelemetry/sdk-logs'; import { MetricReader, View } from '@opentelemetry/sdk-metrics'; import { Sampler, @@ -31,6 +32,7 @@ export interface NodeSDKConfiguration { autoDetectResources: boolean; contextManager: ContextManager; textMapPropagator: TextMapPropagator; + logRecordProcessor: LogRecordProcessor; metricReader: MetricReader; views: View[]; instrumentations: InstrumentationOption[]; diff --git a/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts b/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts index 7a385a7604..6fb76f3dad 100644 --- a/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts +++ b/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts @@ -59,6 +59,12 @@ import { Resource, } from '@opentelemetry/resources'; import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'; +import { logs } from '@opentelemetry/api-logs'; +import { + SimpleLogRecordProcessor, + InMemoryLogRecordExporter, + LoggerProvider, +} from '@opentelemetry/sdk-logs'; const DefaultContextManager = semver.gte(process.version, '14.8.0') ? AsyncLocalStorageContextManager @@ -112,6 +118,7 @@ describe('Node SDK', () => { 'tracer provider should not have changed' ); assert.ok(!(metrics.getMeterProvider() instanceof MeterProvider)); + assert.ok(!(logs.getLoggerProvider() instanceof LoggerProvider)); delete env.OTEL_TRACES_EXPORTER; }); @@ -233,6 +240,40 @@ describe('Node SDK', () => { await sdk.shutdown(); delete env.OTEL_TRACES_EXPORTER; }); + + it('should register a logger provider if a log record processor is provided', async () => { + env.OTEL_TRACES_EXPORTER = 'none'; + const logRecordExporter = new InMemoryLogRecordExporter(); + const logRecordProcessor = new SimpleLogRecordProcessor( + logRecordExporter + ); + const sdk = new NodeSDK({ + logRecordProcessor: logRecordProcessor, + autoDetectResources: false, + }); + + sdk.start(); + + assert.strictEqual( + context['_getContextManager'](), + ctxManager, + 'context manager should not change' + ); + assert.strictEqual( + propagation['_getGlobalPropagator'](), + propagator, + 'propagator should not change' + ); + assert.strictEqual( + (trace.getTracerProvider() as ProxyTracerProvider).getDelegate(), + delegate, + 'tracer provider should not have changed' + ); + + assert.ok(logs.getLoggerProvider() instanceof LoggerProvider); + await sdk.shutdown(); + delete env.OTEL_TRACES_EXPORTER; + }); }); async function waitForNumberOfMetrics( @@ -406,6 +447,28 @@ describe('Node SDK', () => { ); }); + it('should throw error when calling configureLoggerProvider when logRecordProcessor is already configured', () => { + const logRecordExporter = new InMemoryLogRecordExporter(); + const logRecordProcessor = new SimpleLogRecordProcessor(logRecordExporter); + const sdk = new NodeSDK({ + logRecordProcessor: logRecordProcessor, + autoDetectResources: false, + }); + + assert.throws( + () => { + sdk.configureLoggerProvider({ + logRecordProcessor: logRecordProcessor, + }); + }, + (error: Error) => { + return error.message.includes( + 'LogRecordProcessor passed but LogRecordProcessor has already been configured.' + ); + } + ); + }); + describe('detectResources', async () => { beforeEach(() => { process.env.OTEL_RESOURCE_ATTRIBUTES = diff --git a/experimental/packages/opentelemetry-sdk-node/tsconfig.json b/experimental/packages/opentelemetry-sdk-node/tsconfig.json index add730f8bc..4091bf66e9 100644 --- a/experimental/packages/opentelemetry-sdk-node/tsconfig.json +++ b/experimental/packages/opentelemetry-sdk-node/tsconfig.json @@ -12,6 +12,9 @@ { "path": "../../../api" }, + { + "path": "../../packages/api-logs" + }, { "path": "../../../packages/opentelemetry-context-async-hooks" }, @@ -36,6 +39,9 @@ { "path": "../../../packages/opentelemetry-semantic-conventions" }, + { + "path": "../../packages/sdk-logs" + }, { "path": "../../../packages/sdk-metrics" }, From 013695d45d5c77dfee658ec1ee0675a87977657d Mon Sep 17 00:00:00 2001 From: Marc Pichler Date: Tue, 11 Jul 2023 08:51:11 +0200 Subject: [PATCH 66/71] docs(api-logs): add disclaimers (#3979) --- experimental/packages/api-logs/README.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/experimental/packages/api-logs/README.md b/experimental/packages/api-logs/README.md index b36d5bf06e..a4e3459f01 100644 --- a/experimental/packages/api-logs/README.md +++ b/experimental/packages/api-logs/README.md @@ -1,13 +1,19 @@ -# OpenTelemetry API for JavaScript +# OpenTelemetry Logs Bridge API for JavaScript [![NPM Published Version][npm-img]][npm-url] [![Apache License][license-image]][license-image] -This package provides everything needed to interact with the unstable OpenTelemetry Logs API, including all TypeScript interfaces, enums, and no-op implementations. It is intended for use both on the server and in the browser. +**Note: This is an experimental package under active development. New releases may include breaking changes.** -## Beta Software - Use at your own risk +This package provides everything needed to interact with the unstable OpenTelemetry Logs Bridge API, including all TypeScript interfaces, enums, and no-op implementations. It is intended for use both on the server and in the browser. -The logs API is considered alpha software and there is no guarantee of stability or long-term support. When the API is stabilized, it will be made available and supported long-term in the `@opentelemetry/api` package and this package will be deprecated. +**Note: This module defines a log backend API. The API is not intended to be called by application developers directly. +It is provided for logging library authors to build log appenders, which use this API to bridge between existing +logging libraries and the OpenTelemetry log data model.** + +## Alpha Software - Use at your own risk + +The Logs Bridge API is considered alpha software and there is no guarantee of stability or long-term support. When the API is stabilized, it will be made available and supported long-term in the `@opentelemetry/api` package and this package will be deprecated. ## Quick Start From 5352cc78b6e61a4816977e250f5e5fa279e5550f Mon Sep 17 00:00:00 2001 From: Chengzhong Wu Date: Thu, 13 Jul 2023 18:58:25 +0800 Subject: [PATCH 67/71] chore: apply update-ts-configs (#3987) --- .../packages/opentelemetry-sdk-node/tsconfig.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/experimental/packages/opentelemetry-sdk-node/tsconfig.json b/experimental/packages/opentelemetry-sdk-node/tsconfig.json index 4091bf66e9..94c80b8846 100644 --- a/experimental/packages/opentelemetry-sdk-node/tsconfig.json +++ b/experimental/packages/opentelemetry-sdk-node/tsconfig.json @@ -12,9 +12,6 @@ { "path": "../../../api" }, - { - "path": "../../packages/api-logs" - }, { "path": "../../../packages/opentelemetry-context-async-hooks" }, @@ -40,10 +37,10 @@ "path": "../../../packages/opentelemetry-semantic-conventions" }, { - "path": "../../packages/sdk-logs" + "path": "../../../packages/sdk-metrics" }, { - "path": "../../../packages/sdk-metrics" + "path": "../api-logs" }, { "path": "../exporter-trace-otlp-grpc" @@ -56,6 +53,9 @@ }, { "path": "../opentelemetry-instrumentation" + }, + { + "path": "../sdk-logs" } ] } From 65483a4fe93ff6fc265bbe469150b8b25c68562d Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Thu, 13 Jul 2023 15:49:25 +0200 Subject: [PATCH 68/71] chore(deps): update all patch versions (#3984) --- api/package.json | 2 +- experimental/packages/api-events/package.json | 2 +- experimental/packages/api-logs/package.json | 2 +- experimental/packages/exporter-logs-otlp-grpc/package.json | 4 ++-- experimental/packages/exporter-logs-otlp-http/package.json | 4 ++-- experimental/packages/exporter-logs-otlp-proto/package.json | 4 ++-- experimental/packages/exporter-trace-otlp-grpc/package.json | 4 ++-- experimental/packages/exporter-trace-otlp-http/package.json | 4 ++-- .../packages/exporter-trace-otlp-proto/package.json | 4 ++-- .../packages/opentelemetry-browser-detector/package.json | 4 ++-- .../opentelemetry-exporter-metrics-otlp-grpc/package.json | 4 ++-- .../opentelemetry-exporter-metrics-otlp-http/package.json | 4 ++-- .../opentelemetry-exporter-metrics-otlp-proto/package.json | 4 ++-- .../packages/opentelemetry-exporter-prometheus/package.json | 2 +- .../opentelemetry-instrumentation-fetch/package.json | 4 ++-- .../opentelemetry-instrumentation-grpc/package.json | 2 +- .../opentelemetry-instrumentation-http/package.json | 2 +- .../package.json | 4 ++-- .../packages/opentelemetry-instrumentation/package.json | 4 ++-- experimental/packages/opentelemetry-sdk-node/package.json | 2 +- experimental/packages/otlp-exporter-base/package.json | 4 ++-- experimental/packages/otlp-grpc-exporter-base/package.json | 4 ++-- experimental/packages/otlp-proto-exporter-base/package.json | 4 ++-- experimental/packages/otlp-transformer/package.json | 2 +- experimental/packages/sdk-logs/package.json | 4 ++-- experimental/packages/shim-opencensus/package.json | 2 +- package.json | 4 ++-- packages/opentelemetry-context-async-hooks/package.json | 2 +- packages/opentelemetry-context-zone-peer-dep/package.json | 4 ++-- packages/opentelemetry-context-zone/package.json | 4 ++-- packages/opentelemetry-core/package.json | 2 +- packages/opentelemetry-exporter-jaeger/package.json | 2 +- packages/opentelemetry-exporter-zipkin/package.json | 4 ++-- packages/opentelemetry-propagator-b3/package.json | 2 +- packages/opentelemetry-propagator-jaeger/package.json | 2 +- packages/opentelemetry-resources/package.json | 2 +- packages/opentelemetry-sdk-trace-base/package.json | 2 +- packages/opentelemetry-sdk-trace-node/package.json | 2 +- packages/opentelemetry-sdk-trace-web/package.json | 4 ++-- packages/opentelemetry-semantic-conventions/package.json | 2 +- packages/opentelemetry-shim-opentracing/package.json | 2 +- packages/sdk-metrics/package.json | 4 ++-- packages/template/package.json | 2 +- selenium-tests/package.json | 6 +++--- 44 files changed, 69 insertions(+), 69 deletions(-) diff --git a/api/package.json b/api/package.json index e8952c3cf1..d78638160d 100644 --- a/api/package.json +++ b/api/package.json @@ -76,7 +76,7 @@ "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.1.1", + "lerna": "7.1.3", "memfs": "3.5.3", "mocha": "10.2.0", "nyc": "15.1.0", diff --git a/experimental/packages/api-events/package.json b/experimental/packages/api-events/package.json index fe43dbc694..e2fed0e67e 100644 --- a/experimental/packages/api-events/package.json +++ b/experimental/packages/api-events/package.json @@ -77,7 +77,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/api-logs/package.json b/experimental/packages/api-logs/package.json index 02cc0bc2b0..15f4d1c863 100644 --- a/experimental/packages/api-logs/package.json +++ b/experimental/packages/api-logs/package.json @@ -77,7 +77,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/exporter-logs-otlp-grpc/package.json b/experimental/packages/exporter-logs-otlp-grpc/package.json index 1a71d47cf8..643ab186fc 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/package.json +++ b/experimental/packages/exporter-logs-otlp-grpc/package.json @@ -48,7 +48,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.8", + "@babel/core": "7.22.9", "@grpc/proto-loader": "^0.7.3", "@opentelemetry/api": "1.4.1", "@opentelemetry/api-logs": "0.41.0", @@ -60,7 +60,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index 459612e2c0..b77b63df22 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -71,7 +71,7 @@ ], "sideEffects": false, "devDependencies": { - "@babel/core": "7.22.8", + "@babel/core": "7.22.9", "@opentelemetry/api-logs": "0.41.0", "@opentelemetry/resources": "1.15.0", "@types/mocha": "10.0.1", @@ -89,7 +89,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-logs-otlp-proto/package.json b/experimental/packages/exporter-logs-otlp-proto/package.json index a166f62416..355e5333da 100644 --- a/experimental/packages/exporter-logs-otlp-proto/package.json +++ b/experimental/packages/exporter-logs-otlp-proto/package.json @@ -63,7 +63,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.8", + "@babel/core": "7.22.9", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", @@ -78,7 +78,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-trace-otlp-grpc/package.json b/experimental/packages/exporter-trace-otlp-grpc/package.json index 524adb1065..22a4eae703 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/package.json +++ b/experimental/packages/exporter-trace-otlp-grpc/package.json @@ -47,7 +47,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.8", + "@babel/core": "7.22.9", "@grpc/proto-loader": "^0.7.3", "@opentelemetry/api": "1.4.1", "@opentelemetry/otlp-exporter-base": "0.41.0", @@ -57,7 +57,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-trace-otlp-http/package.json b/experimental/packages/exporter-trace-otlp-http/package.json index cdb697283a..56e01988a6 100644 --- a/experimental/packages/exporter-trace-otlp-http/package.json +++ b/experimental/packages/exporter-trace-otlp-http/package.json @@ -63,7 +63,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.8", + "@babel/core": "7.22.9", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", @@ -80,7 +80,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/exporter-trace-otlp-proto/package.json b/experimental/packages/exporter-trace-otlp-proto/package.json index ef8f876acf..96c327b60f 100644 --- a/experimental/packages/exporter-trace-otlp-proto/package.json +++ b/experimental/packages/exporter-trace-otlp-proto/package.json @@ -62,7 +62,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.8", + "@babel/core": "7.22.9", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", @@ -77,7 +77,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-browser-detector/package.json b/experimental/packages/opentelemetry-browser-detector/package.json index 29373f3059..357f630611 100644 --- a/experimental/packages/opentelemetry-browser-detector/package.json +++ b/experimental/packages/opentelemetry-browser-detector/package.json @@ -53,7 +53,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.8", + "@babel/core": "7.22.9", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", @@ -67,7 +67,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index 15624bac4c..4c239a6e26 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -47,7 +47,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.8", + "@babel/core": "7.22.9", "@grpc/proto-loader": "^0.7.3", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", @@ -56,7 +56,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index 1e696f5270..89017dfb0b 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -63,7 +63,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.8", + "@babel/core": "7.22.9", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", @@ -80,7 +80,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index 2168d2864e..d98c421bc1 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -47,7 +47,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.8", + "@babel/core": "7.22.9", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", @@ -55,7 +55,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-exporter-prometheus/package.json b/experimental/packages/opentelemetry-exporter-prometheus/package.json index c9ffe2cdcc..5b44a67c37 100644 --- a/experimental/packages/opentelemetry-exporter-prometheus/package.json +++ b/experimental/packages/opentelemetry-exporter-prometheus/package.json @@ -50,7 +50,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index c1213ea31a..b36c60a677 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -54,7 +54,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.8", + "@babel/core": "7.22.9", "@opentelemetry/api": "1.4.1", "@opentelemetry/context-zone": "1.15.0", "@opentelemetry/propagator-b3": "1.15.0", @@ -73,7 +73,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/package.json b/experimental/packages/opentelemetry-instrumentation-grpc/package.json index 10019d25cc..ac047252ee 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/package.json +++ b/experimental/packages/opentelemetry-instrumentation-grpc/package.json @@ -58,7 +58,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "semver": "7.5.4", diff --git a/experimental/packages/opentelemetry-instrumentation-http/package.json b/experimental/packages/opentelemetry-instrumentation-http/package.json index 93ed303fa6..d765adc528 100644 --- a/experimental/packages/opentelemetry-instrumentation-http/package.json +++ b/experimental/packages/opentelemetry-instrumentation-http/package.json @@ -59,7 +59,7 @@ "axios": "1.4.0", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json index c7179d59d3..71585b4e00 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json @@ -54,7 +54,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.8", + "@babel/core": "7.22.9", "@opentelemetry/api": "1.4.1", "@opentelemetry/context-zone": "1.15.0", "@opentelemetry/propagator-b3": "1.15.0", @@ -73,7 +73,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index b788dea267..46ba9af641 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -82,7 +82,7 @@ "@opentelemetry/api": "^1.3.0" }, "devDependencies": { - "@babel/core": "7.22.8", + "@babel/core": "7.22.9", "@opentelemetry/api": "1.4.1", "@opentelemetry/sdk-metrics": "1.15.0", "@types/mocha": "10.0.1", @@ -101,7 +101,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json index a99bab01a9..8e6f97f27a 100644 --- a/experimental/packages/opentelemetry-sdk-node/package.json +++ b/experimental/packages/opentelemetry-sdk-node/package.json @@ -72,7 +72,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "semver": "7.5.4", diff --git a/experimental/packages/otlp-exporter-base/package.json b/experimental/packages/otlp-exporter-base/package.json index 142f9ca886..687fcdf505 100644 --- a/experimental/packages/otlp-exporter-base/package.json +++ b/experimental/packages/otlp-exporter-base/package.json @@ -65,7 +65,7 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@babel/core": "7.22.8", + "@babel/core": "7.22.9", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", @@ -79,7 +79,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/otlp-grpc-exporter-base/package.json b/experimental/packages/otlp-grpc-exporter-base/package.json index 0610cb9d4f..232b83bf6c 100644 --- a/experimental/packages/otlp-grpc-exporter-base/package.json +++ b/experimental/packages/otlp-grpc-exporter-base/package.json @@ -48,7 +48,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.8", + "@babel/core": "7.22.9", "@opentelemetry/api": "1.4.1", "@opentelemetry/otlp-transformer": "0.41.0", "@opentelemetry/resources": "1.15.0", @@ -59,7 +59,7 @@ "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "protobufjs-cli": "1.1.1", diff --git a/experimental/packages/otlp-proto-exporter-base/package.json b/experimental/packages/otlp-proto-exporter-base/package.json index a764299858..f1fd58623c 100644 --- a/experimental/packages/otlp-proto-exporter-base/package.json +++ b/experimental/packages/otlp-proto-exporter-base/package.json @@ -59,14 +59,14 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.8", + "@babel/core": "7.22.9", "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "protobufjs-cli": "1.1.1", diff --git a/experimental/packages/otlp-transformer/package.json b/experimental/packages/otlp-transformer/package.json index ca8d12685f..3a53906d50 100644 --- a/experimental/packages/otlp-transformer/package.json +++ b/experimental/packages/otlp-transformer/package.json @@ -69,7 +69,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "ts-loader": "8.4.0", diff --git a/experimental/packages/sdk-logs/package.json b/experimental/packages/sdk-logs/package.json index 106a3dbf4a..14a18889e8 100644 --- a/experimental/packages/sdk-logs/package.json +++ b/experimental/packages/sdk-logs/package.json @@ -74,7 +74,7 @@ "devDependencies": { "@opentelemetry/api": ">=1.4.0 <1.5.0", "@opentelemetry/api-logs": "0.41.0", - "@babel/core": "7.22.8", + "@babel/core": "7.22.9", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", @@ -87,7 +87,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/shim-opencensus/package.json b/experimental/packages/shim-opencensus/package.json index b57628d38f..d5ebb224de 100644 --- a/experimental/packages/shim-opencensus/package.json +++ b/experimental/packages/shim-opencensus/package.json @@ -57,7 +57,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/package.json b/package.json index 2b8572602f..8671540526 100644 --- a/package.json +++ b/package.json @@ -71,8 +71,8 @@ "eslint-plugin-node": "11.1.0", "eslint-plugin-prettier": "4.2.1", "gh-pages": "5.0.0", - "lerna": "7.1.1", - "@lerna/legacy-package-management": "7.1.1", + "lerna": "7.1.3", + "@lerna/legacy-package-management": "7.1.3", "linkinator": "5.0.1", "markdownlint-cli": "0.35.0", "prettier": "2.8.8", diff --git a/packages/opentelemetry-context-async-hooks/package.json b/packages/opentelemetry-context-async-hooks/package.json index 23e3e65eeb..a1073523bb 100644 --- a/packages/opentelemetry-context-async-hooks/package.json +++ b/packages/opentelemetry-context-async-hooks/package.json @@ -52,7 +52,7 @@ "@types/node": "18.6.5", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "ts-mocha": "10.0.0", diff --git a/packages/opentelemetry-context-zone-peer-dep/package.json b/packages/opentelemetry-context-zone-peer-dep/package.json index 8026461c6f..515059557f 100644 --- a/packages/opentelemetry-context-zone-peer-dep/package.json +++ b/packages/opentelemetry-context-zone-peer-dep/package.json @@ -53,7 +53,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.8", + "@babel/core": "7.22.9", "@opentelemetry/api": ">=1.0.0 <1.5.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", @@ -70,7 +70,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-context-zone/package.json b/packages/opentelemetry-context-zone/package.json index 70f79503fb..342c580ff9 100644 --- a/packages/opentelemetry-context-zone/package.json +++ b/packages/opentelemetry-context-zone/package.json @@ -50,7 +50,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.8", + "@babel/core": "7.22.9", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", @@ -63,7 +63,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-core/package.json b/packages/opentelemetry-core/package.json index 1e9d1d8c66..c8ba0b3647 100644 --- a/packages/opentelemetry-core/package.json +++ b/packages/opentelemetry-core/package.json @@ -78,7 +78,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-exporter-jaeger/package.json b/packages/opentelemetry-exporter-jaeger/package.json index 89e57e4c7b..9419fe1040 100644 --- a/packages/opentelemetry-exporter-jaeger/package.json +++ b/packages/opentelemetry-exporter-jaeger/package.json @@ -51,7 +51,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index 4b979ec13c..d4cdf4472d 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -60,7 +60,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.8", + "@babel/core": "7.22.9", "@opentelemetry/api": "^1.0.0", "@types/mocha": "10.0.1", "@types/node": "18.6.5", @@ -76,7 +76,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/packages/opentelemetry-propagator-b3/package.json b/packages/opentelemetry-propagator-b3/package.json index 1cb95ba6b1..69fce8a126 100644 --- a/packages/opentelemetry-propagator-b3/package.json +++ b/packages/opentelemetry-propagator-b3/package.json @@ -63,7 +63,7 @@ "@types/node": "18.6.5", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "ts-loader": "8.4.0", diff --git a/packages/opentelemetry-propagator-jaeger/package.json b/packages/opentelemetry-propagator-jaeger/package.json index f110f2d8d2..ef8d9915ab 100644 --- a/packages/opentelemetry-propagator-jaeger/package.json +++ b/packages/opentelemetry-propagator-jaeger/package.json @@ -68,7 +68,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-resources/package.json b/packages/opentelemetry-resources/package.json index 997635f42b..a56531034a 100644 --- a/packages/opentelemetry-resources/package.json +++ b/packages/opentelemetry-resources/package.json @@ -76,7 +76,7 @@ "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/packages/opentelemetry-sdk-trace-base/package.json b/packages/opentelemetry-sdk-trace-base/package.json index 4c306805cf..d220f8cae7 100644 --- a/packages/opentelemetry-sdk-trace-base/package.json +++ b/packages/opentelemetry-sdk-trace-base/package.json @@ -80,7 +80,7 @@ "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-sdk-trace-node/package.json b/packages/opentelemetry-sdk-trace-node/package.json index 1608b10f30..7afeef5bc3 100644 --- a/packages/opentelemetry-sdk-trace-node/package.json +++ b/packages/opentelemetry-sdk-trace-node/package.json @@ -54,7 +54,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-sdk-trace-web/package.json b/packages/opentelemetry-sdk-trace-web/package.json index f7dd504e76..4c1c347cd0 100644 --- a/packages/opentelemetry-sdk-trace-web/package.json +++ b/packages/opentelemetry-sdk-trace-web/package.json @@ -55,7 +55,7 @@ "access": "public" }, "devDependencies": { - "@babel/core": "7.22.8", + "@babel/core": "7.22.9", "@opentelemetry/api": ">=1.0.0 <1.5.0", "@opentelemetry/context-zone": "1.15.0", "@opentelemetry/propagator-b3": "1.15.0", @@ -77,7 +77,7 @@ "karma-mocha-webworker": "1.3.0", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-semantic-conventions/package.json b/packages/opentelemetry-semantic-conventions/package.json index 93cff0e7cf..6ccbe2ddbe 100644 --- a/packages/opentelemetry-semantic-conventions/package.json +++ b/packages/opentelemetry-semantic-conventions/package.json @@ -54,7 +54,7 @@ "@types/sinon": "10.0.15", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nock": "13.3.1", "nyc": "15.1.0", diff --git a/packages/opentelemetry-shim-opentracing/package.json b/packages/opentelemetry-shim-opentracing/package.json index 0555f0d708..6f28c3c067 100644 --- a/packages/opentelemetry-shim-opentracing/package.json +++ b/packages/opentelemetry-shim-opentracing/package.json @@ -50,7 +50,7 @@ "@types/node": "18.6.5", "codecov": "3.8.3", "cross-var": "1.1.0", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "ts-mocha": "10.0.0", diff --git a/packages/sdk-metrics/package.json b/packages/sdk-metrics/package.json index f85e67fafc..0ce67e77d4 100644 --- a/packages/sdk-metrics/package.json +++ b/packages/sdk-metrics/package.json @@ -56,7 +56,7 @@ "devDependencies": { "@opentelemetry/api": ">=1.3.0 <1.5.0", "@types/lodash.merge": "4.6.7", - "@babel/core": "7.22.8", + "@babel/core": "7.22.9", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", @@ -69,7 +69,7 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-webpack": "4.0.2", - "lerna": "7.1.1", + "lerna": "7.1.3", "mocha": "10.2.0", "nyc": "15.1.0", "sinon": "15.1.2", diff --git a/packages/template/package.json b/packages/template/package.json index 7d04d854ac..8906041279 100644 --- a/packages/template/package.json +++ b/packages/template/package.json @@ -80,7 +80,7 @@ "devDependencies": { "@types/node": "18.6.5", "cross-var": "1.1.0", - "lerna": "7.1.1", + "lerna": "7.1.3", "typescript": "4.4.4" }, "dependencies": { diff --git a/selenium-tests/package.json b/selenium-tests/package.json index 5c0fe40dad..16f2d6e9bc 100644 --- a/selenium-tests/package.json +++ b/selenium-tests/package.json @@ -31,11 +31,11 @@ "access": "restricted" }, "devDependencies": { - "@babel/core": "7.22.8", + "@babel/core": "7.22.9", "@babel/plugin-proposal-class-properties": "7.18.6", "@babel/plugin-proposal-decorators": "7.22.7", - "@babel/plugin-transform-runtime": "7.22.7", - "@babel/preset-env": "7.22.7", + "@babel/plugin-transform-runtime": "7.22.9", + "@babel/preset-env": "7.22.9", "@opentelemetry/api": "^1.0.0", "babel-loader": "8.3.0", "babel-polyfill": "6.26.0", From 87f21ef8aecaa1e52ff9200a99497276ffa2956b Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 14 Jul 2023 12:49:00 +0200 Subject: [PATCH 69/71] chore(deps): update dependency nock to v13.3.2 (#3994) --- .../packages/opentelemetry-instrumentation-http/package.json | 2 +- packages/opentelemetry-exporter-jaeger/package.json | 2 +- packages/opentelemetry-exporter-zipkin/package.json | 2 +- packages/opentelemetry-resources/package.json | 2 +- packages/opentelemetry-semantic-conventions/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/experimental/packages/opentelemetry-instrumentation-http/package.json b/experimental/packages/opentelemetry-instrumentation-http/package.json index d765adc528..2c5d28cd7f 100644 --- a/experimental/packages/opentelemetry-instrumentation-http/package.json +++ b/experimental/packages/opentelemetry-instrumentation-http/package.json @@ -61,7 +61,7 @@ "cross-var": "1.1.0", "lerna": "7.1.3", "mocha": "10.2.0", - "nock": "13.3.1", + "nock": "13.3.2", "nyc": "15.1.0", "request": "2.88.2", "request-promise-native": "1.0.9", diff --git a/packages/opentelemetry-exporter-jaeger/package.json b/packages/opentelemetry-exporter-jaeger/package.json index 9419fe1040..2158bd3066 100644 --- a/packages/opentelemetry-exporter-jaeger/package.json +++ b/packages/opentelemetry-exporter-jaeger/package.json @@ -53,7 +53,7 @@ "cross-var": "1.1.0", "lerna": "7.1.3", "mocha": "10.2.0", - "nock": "13.3.1", + "nock": "13.3.2", "nyc": "15.1.0", "sinon": "15.1.2", "ts-mocha": "10.0.0", diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index d4cdf4472d..6ef32c8de5 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -78,7 +78,7 @@ "karma-webpack": "4.0.2", "lerna": "7.1.3", "mocha": "10.2.0", - "nock": "13.3.1", + "nock": "13.3.2", "nyc": "15.1.0", "sinon": "15.1.2", "ts-loader": "8.4.0", diff --git a/packages/opentelemetry-resources/package.json b/packages/opentelemetry-resources/package.json index a56531034a..a121a1c4fd 100644 --- a/packages/opentelemetry-resources/package.json +++ b/packages/opentelemetry-resources/package.json @@ -78,7 +78,7 @@ "karma-webpack": "4.0.2", "lerna": "7.1.3", "mocha": "10.2.0", - "nock": "13.3.1", + "nock": "13.3.2", "nyc": "15.1.0", "sinon": "15.1.2", "ts-mocha": "10.0.0", diff --git a/packages/opentelemetry-semantic-conventions/package.json b/packages/opentelemetry-semantic-conventions/package.json index 6ccbe2ddbe..29b28f22f4 100644 --- a/packages/opentelemetry-semantic-conventions/package.json +++ b/packages/opentelemetry-semantic-conventions/package.json @@ -56,7 +56,7 @@ "cross-var": "1.1.0", "lerna": "7.1.3", "mocha": "10.2.0", - "nock": "13.3.1", + "nock": "13.3.2", "nyc": "15.1.0", "sinon": "15.1.2", "ts-mocha": "10.0.0", From 0f20b2a974f7830929cd690affe0d9055304f1df Mon Sep 17 00:00:00 2001 From: Daniel Dyla Date: Fri, 21 Jul 2023 09:41:09 -0400 Subject: [PATCH 70/71] Revert tslib #3914 (#4011) * Revert "feat(minification): Add noEmitHelpers, importHelpers and tslib as a dependency (#3914)" This reverts commit 74393ac6397dcb130b9d5dae35354a2bf9a0d2c3. * Changelog * Update CHANGELOG.md --- CHANGELOG.md | 3 +++ api/package.json | 3 --- examples/esm-http-ts/tsconfig.json | 3 +-- examples/opentelemetry-web/package.json | 3 +-- .../backwards-compatibility/node14/package.json | 3 +-- .../backwards-compatibility/node16/package.json | 3 +-- experimental/packages/api-events/package.json | 3 +-- experimental/packages/api-logs/package.json | 3 +-- .../packages/exporter-logs-otlp-grpc/package.json | 3 +-- .../packages/exporter-logs-otlp-http/package.json | 3 +-- .../packages/exporter-logs-otlp-proto/package.json | 3 +-- .../packages/exporter-trace-otlp-grpc/package.json | 3 +-- .../packages/exporter-trace-otlp-http/package.json | 3 +-- .../packages/exporter-trace-otlp-proto/package.json | 3 +-- .../opentelemetry-browser-detector/package.json | 3 +-- .../package.json | 3 +-- .../package.json | 3 +-- .../package.json | 3 +-- .../opentelemetry-exporter-prometheus/package.json | 3 +-- .../opentelemetry-instrumentation-fetch/package.json | 3 +-- .../opentelemetry-instrumentation-grpc/package.json | 3 +-- .../opentelemetry-instrumentation-http/package.json | 3 +-- .../package.json | 3 +-- .../opentelemetry-instrumentation/package.json | 3 +-- .../src/platform/browser/index.ts | 2 +- .../src/platform/index.ts | 8 +------- .../src/platform/node/index.ts | 11 ++++------- .../test/node/EsmInstrumentation.test.mjs | 2 +- .../packages/opentelemetry-sdk-node/package.json | 3 +-- experimental/packages/otlp-exporter-base/package.json | 3 +-- .../packages/otlp-grpc-exporter-base/package.json | 3 +-- .../packages/otlp-proto-exporter-base/package.json | 3 +-- experimental/packages/otlp-transformer/package.json | 3 +-- experimental/packages/sdk-logs/package.json | 3 +-- experimental/packages/shim-opencensus/package.json | 3 +-- .../propagation-validation-server/package.json | 3 +-- package.json | 3 +-- .../opentelemetry-context-async-hooks/package.json | 3 --- .../opentelemetry-context-zone-peer-dep/package.json | 3 --- packages/opentelemetry-context-zone/package.json | 1 - packages/opentelemetry-core/package.json | 3 +-- packages/opentelemetry-exporter-jaeger/package.json | 3 +-- packages/opentelemetry-exporter-zipkin/package.json | 3 +-- packages/opentelemetry-propagator-b3/package.json | 3 +-- packages/opentelemetry-propagator-jaeger/package.json | 3 +-- packages/opentelemetry-resources/package.json | 3 +-- packages/opentelemetry-sdk-trace-base/package.json | 3 +-- packages/opentelemetry-sdk-trace-node/package.json | 3 +-- packages/opentelemetry-sdk-trace-web/package.json | 3 +-- .../opentelemetry-semantic-conventions/package.json | 3 --- packages/opentelemetry-shim-opentracing/package.json | 3 +-- packages/sdk-metrics/package.json | 3 +-- packages/template/package.json | 3 --- tsconfig.base.json | 3 +-- 54 files changed, 53 insertions(+), 118 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f72946061..b30dce0392 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,9 @@ For experimental package changes, see the [experimental CHANGELOG](experimental/ ### :bug: (Bug Fix) +* Revert "feat(minification): Add noEmitHelpers, importHelpers and tslib as a dependency (#3914)" + [#4011](https://github.com/open-telemetry/opentelemetry-js/pull/4011) @dyladan + ### :books: (Refine Doc) ### :house: (Internal) diff --git a/api/package.json b/api/package.json index d78638160d..d857ae33f4 100644 --- a/api/package.json +++ b/api/package.json @@ -87,9 +87,6 @@ "unionfs": "4.5.1", "webpack": "4.46.0" }, - "dependencies": { - "tslib": "^2.3.1" - }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/api", "sideEffects": false } diff --git a/examples/esm-http-ts/tsconfig.json b/examples/esm-http-ts/tsconfig.json index f7c20de0d1..5f821d66c7 100644 --- a/examples/esm-http-ts/tsconfig.json +++ b/examples/esm-http-ts/tsconfig.json @@ -18,8 +18,7 @@ "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, /* Completeness */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */, - "importHelpers": true + "skipLibCheck": true /* Skip type checking all .d.ts files. */ }, "include": ["**/*.ts", "**/*.js", "*.config.js"], "exclude": ["node_modules"] diff --git a/examples/opentelemetry-web/package.json b/examples/opentelemetry-web/package.json index 762f17d65f..e57cc764a3 100644 --- a/examples/opentelemetry-web/package.json +++ b/examples/opentelemetry-web/package.json @@ -56,8 +56,7 @@ "@opentelemetry/sdk-metrics": "1.15.0", "@opentelemetry/sdk-trace-base": "1.15.0", "@opentelemetry/sdk-trace-web": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/semantic-conventions": "1.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/tracer-web" } diff --git a/experimental/backwards-compatibility/node14/package.json b/experimental/backwards-compatibility/node14/package.json index 1fc32b91f5..9414b949f5 100644 --- a/experimental/backwards-compatibility/node14/package.json +++ b/experimental/backwards-compatibility/node14/package.json @@ -10,8 +10,7 @@ }, "dependencies": { "@opentelemetry/sdk-node": "0.41.0", - "@opentelemetry/sdk-trace-base": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/sdk-trace-base": "1.15.0" }, "devDependencies": { "@types/node": "14.18.25", diff --git a/experimental/backwards-compatibility/node16/package.json b/experimental/backwards-compatibility/node16/package.json index 136ff5ff0b..ed473eae27 100644 --- a/experimental/backwards-compatibility/node16/package.json +++ b/experimental/backwards-compatibility/node16/package.json @@ -10,8 +10,7 @@ }, "dependencies": { "@opentelemetry/sdk-node": "0.41.0", - "@opentelemetry/sdk-trace-base": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/sdk-trace-base": "1.15.0" }, "devDependencies": { "@types/node": "16.11.52", diff --git a/experimental/packages/api-events/package.json b/experimental/packages/api-events/package.json index e2fed0e67e..dd4111bb3c 100644 --- a/experimental/packages/api-events/package.json +++ b/experimental/packages/api-events/package.json @@ -61,8 +61,7 @@ "access": "public" }, "dependencies": { - "@opentelemetry/api": "^1.0.0", - "tslib": "^2.3.1" + "@opentelemetry/api": "^1.0.0" }, "devDependencies": { "@types/mocha": "10.0.1", diff --git a/experimental/packages/api-logs/package.json b/experimental/packages/api-logs/package.json index 15f4d1c863..9bddeaa794 100644 --- a/experimental/packages/api-logs/package.json +++ b/experimental/packages/api-logs/package.json @@ -61,8 +61,7 @@ "access": "public" }, "dependencies": { - "@opentelemetry/api": "^1.0.0", - "tslib": "^2.3.1" + "@opentelemetry/api": "^1.0.0" }, "devDependencies": { "@types/mocha": "10.0.1", diff --git a/experimental/packages/exporter-logs-otlp-grpc/package.json b/experimental/packages/exporter-logs-otlp-grpc/package.json index 643ab186fc..6a61908731 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/package.json +++ b/experimental/packages/exporter-logs-otlp-grpc/package.json @@ -76,8 +76,7 @@ "@opentelemetry/core": "1.15.0", "@opentelemetry/otlp-grpc-exporter-base": "0.41.0", "@opentelemetry/otlp-transformer": "0.41.0", - "@opentelemetry/sdk-logs": "0.41.0", - "tslib": "^2.3.1" + "@opentelemetry/sdk-logs": "0.41.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-logs-otlp-grpc", "sideEffects": false diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index b77b63df22..428d2ed878 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -107,7 +107,6 @@ "@opentelemetry/core": "1.15.0", "@opentelemetry/otlp-exporter-base": "0.41.0", "@opentelemetry/otlp-transformer": "0.41.0", - "@opentelemetry/sdk-logs": "0.41.0", - "tslib": "^2.3.1" + "@opentelemetry/sdk-logs": "0.41.0" } } diff --git a/experimental/packages/exporter-logs-otlp-proto/package.json b/experimental/packages/exporter-logs-otlp-proto/package.json index 355e5333da..6047b0bd62 100644 --- a/experimental/packages/exporter-logs-otlp-proto/package.json +++ b/experimental/packages/exporter-logs-otlp-proto/package.json @@ -100,8 +100,7 @@ "@opentelemetry/otlp-transformer": "0.41.0", "@opentelemetry/resources": "1.15.0", "@opentelemetry/sdk-logs": "0.41.0", - "@opentelemetry/sdk-trace-base": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/sdk-trace-base": "1.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-logs-otlp-proto", "sideEffects": false diff --git a/experimental/packages/exporter-trace-otlp-grpc/package.json b/experimental/packages/exporter-trace-otlp-grpc/package.json index 22a4eae703..4c89ede04e 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/package.json +++ b/experimental/packages/exporter-trace-otlp-grpc/package.json @@ -74,8 +74,7 @@ "@opentelemetry/otlp-grpc-exporter-base": "0.41.0", "@opentelemetry/otlp-transformer": "0.41.0", "@opentelemetry/resources": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/sdk-trace-base": "1.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-trace-otlp-grpc", "sideEffects": false diff --git a/experimental/packages/exporter-trace-otlp-http/package.json b/experimental/packages/exporter-trace-otlp-http/package.json index 56e01988a6..631b0ac6d5 100644 --- a/experimental/packages/exporter-trace-otlp-http/package.json +++ b/experimental/packages/exporter-trace-otlp-http/package.json @@ -99,8 +99,7 @@ "@opentelemetry/otlp-exporter-base": "0.41.0", "@opentelemetry/otlp-transformer": "0.41.0", "@opentelemetry/resources": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/sdk-trace-base": "1.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-trace-otlp-http", "sideEffects": false diff --git a/experimental/packages/exporter-trace-otlp-proto/package.json b/experimental/packages/exporter-trace-otlp-proto/package.json index 96c327b60f..84a44cb055 100644 --- a/experimental/packages/exporter-trace-otlp-proto/package.json +++ b/experimental/packages/exporter-trace-otlp-proto/package.json @@ -97,8 +97,7 @@ "@opentelemetry/otlp-proto-exporter-base": "0.41.0", "@opentelemetry/otlp-transformer": "0.41.0", "@opentelemetry/resources": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/sdk-trace-base": "1.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-trace-otlp-proto", "sideEffects": false diff --git a/experimental/packages/opentelemetry-browser-detector/package.json b/experimental/packages/opentelemetry-browser-detector/package.json index 357f630611..9c90b945e4 100644 --- a/experimental/packages/opentelemetry-browser-detector/package.json +++ b/experimental/packages/opentelemetry-browser-detector/package.json @@ -83,8 +83,7 @@ }, "dependencies": { "@opentelemetry/resources": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/semantic-conventions": "1.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/browser-detector" } diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index 4c239a6e26..414dae9354 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -74,8 +74,7 @@ "@opentelemetry/otlp-grpc-exporter-base": "0.41.0", "@opentelemetry/otlp-transformer": "0.41.0", "@opentelemetry/resources": "1.15.0", - "@opentelemetry/sdk-metrics": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/sdk-metrics": "1.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc", "sideEffects": false diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index 89017dfb0b..6f83683c86 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -99,8 +99,7 @@ "@opentelemetry/otlp-exporter-base": "0.41.0", "@opentelemetry/otlp-transformer": "0.41.0", "@opentelemetry/resources": "1.15.0", - "@opentelemetry/sdk-metrics": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/sdk-metrics": "1.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-http", "sideEffects": false diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index d98c421bc1..c92aaae08b 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -73,8 +73,7 @@ "@opentelemetry/otlp-proto-exporter-base": "0.41.0", "@opentelemetry/otlp-transformer": "0.41.0", "@opentelemetry/resources": "1.15.0", - "@opentelemetry/sdk-metrics": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/sdk-metrics": "1.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-proto", "sideEffects": false diff --git a/experimental/packages/opentelemetry-exporter-prometheus/package.json b/experimental/packages/opentelemetry-exporter-prometheus/package.json index 5b44a67c37..b87439eb40 100644 --- a/experimental/packages/opentelemetry-exporter-prometheus/package.json +++ b/experimental/packages/opentelemetry-exporter-prometheus/package.json @@ -63,8 +63,7 @@ "dependencies": { "@opentelemetry/core": "1.15.0", "@opentelemetry/resources": "1.15.0", - "@opentelemetry/sdk-metrics": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/sdk-metrics": "1.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-prometheus", "sideEffects": false diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index b36c60a677..bbb989e09c 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -91,8 +91,7 @@ "@opentelemetry/core": "1.15.0", "@opentelemetry/instrumentation": "0.41.0", "@opentelemetry/sdk-trace-web": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/semantic-conventions": "1.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-fetch", "sideEffects": false diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/package.json b/experimental/packages/opentelemetry-instrumentation-grpc/package.json index ac047252ee..8a7d6af1f0 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/package.json +++ b/experimental/packages/opentelemetry-instrumentation-grpc/package.json @@ -71,8 +71,7 @@ }, "dependencies": { "@opentelemetry/instrumentation": "0.41.0", - "@opentelemetry/semantic-conventions": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/semantic-conventions": "1.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-grpc", "sideEffects": false diff --git a/experimental/packages/opentelemetry-instrumentation-http/package.json b/experimental/packages/opentelemetry-instrumentation-http/package.json index 2c5d28cd7f..50f9c5ea80 100644 --- a/experimental/packages/opentelemetry-instrumentation-http/package.json +++ b/experimental/packages/opentelemetry-instrumentation-http/package.json @@ -77,8 +77,7 @@ "@opentelemetry/core": "1.15.0", "@opentelemetry/instrumentation": "0.41.0", "@opentelemetry/semantic-conventions": "1.15.0", - "semver": "^7.5.1", - "tslib": "^2.3.1" + "semver": "^7.5.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-http", "sideEffects": false diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json index 71585b4e00..d823392acf 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json @@ -91,8 +91,7 @@ "@opentelemetry/core": "1.15.0", "@opentelemetry/instrumentation": "0.41.0", "@opentelemetry/sdk-trace-web": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/semantic-conventions": "1.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-xml-http-request", "sideEffects": false diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index 46ba9af641..b3e1a2aadf 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -75,8 +75,7 @@ "import-in-the-middle": "1.4.1", "require-in-the-middle": "^7.1.1", "semver": "^7.5.1", - "shimmer": "^1.2.1", - "tslib": "^2.3.1" + "shimmer": "^1.2.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" diff --git a/experimental/packages/opentelemetry-instrumentation/src/platform/browser/index.ts b/experimental/packages/opentelemetry-instrumentation/src/platform/browser/index.ts index 0b238b42b8..24c76056a1 100644 --- a/experimental/packages/opentelemetry-instrumentation/src/platform/browser/index.ts +++ b/experimental/packages/opentelemetry-instrumentation/src/platform/browser/index.ts @@ -14,4 +14,4 @@ * limitations under the License. */ -export { InstrumentationBase } from './instrumentation'; +export * from './instrumentation'; diff --git a/experimental/packages/opentelemetry-instrumentation/src/platform/index.ts b/experimental/packages/opentelemetry-instrumentation/src/platform/index.ts index 1fc5f5e14a..cdaf8858ce 100644 --- a/experimental/packages/opentelemetry-instrumentation/src/platform/index.ts +++ b/experimental/packages/opentelemetry-instrumentation/src/platform/index.ts @@ -14,10 +14,4 @@ * limitations under the License. */ -export { - InstrumentationBase, - InstrumentationModuleDefinition, - InstrumentationModuleFile, - InstrumentationNodeModuleDefinition, - InstrumentationNodeModuleFile, -} from './node'; +export * from './node'; diff --git a/experimental/packages/opentelemetry-instrumentation/src/platform/node/index.ts b/experimental/packages/opentelemetry-instrumentation/src/platform/node/index.ts index d3df10491f..842797c341 100644 --- a/experimental/packages/opentelemetry-instrumentation/src/platform/node/index.ts +++ b/experimental/packages/opentelemetry-instrumentation/src/platform/node/index.ts @@ -13,10 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -export { InstrumentationBase } from './instrumentation'; -export { InstrumentationNodeModuleDefinition } from './instrumentationNodeModuleDefinition'; -export { InstrumentationNodeModuleFile } from './instrumentationNodeModuleFile'; -export { - InstrumentationModuleDefinition, - InstrumentationModuleFile, -} from './types'; +export * from './instrumentation'; +export * from './instrumentationNodeModuleDefinition'; +export * from './instrumentationNodeModuleFile'; +export * from './types'; diff --git a/experimental/packages/opentelemetry-instrumentation/test/node/EsmInstrumentation.test.mjs b/experimental/packages/opentelemetry-instrumentation/test/node/EsmInstrumentation.test.mjs index 715dbdbff2..f09097cd79 100644 --- a/experimental/packages/opentelemetry-instrumentation/test/node/EsmInstrumentation.test.mjs +++ b/experimental/packages/opentelemetry-instrumentation/test/node/EsmInstrumentation.test.mjs @@ -18,7 +18,7 @@ import * as assert from 'assert'; import { InstrumentationBase, InstrumentationNodeModuleDefinition, -} from '../../build/src/platform/index.js'; +} from '../../build/src/index.js'; import * as exported from 'test-esm-module'; class TestInstrumentationWrapFn extends InstrumentationBase { diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json index 8e6f97f27a..acaad73e01 100644 --- a/experimental/packages/opentelemetry-sdk-node/package.json +++ b/experimental/packages/opentelemetry-sdk-node/package.json @@ -57,8 +57,7 @@ "@opentelemetry/sdk-metrics": "1.15.0", "@opentelemetry/sdk-trace-base": "1.15.0", "@opentelemetry/sdk-trace-node": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/semantic-conventions": "1.15.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.5.0" diff --git a/experimental/packages/otlp-exporter-base/package.json b/experimental/packages/otlp-exporter-base/package.json index 687fcdf505..1b37716bef 100644 --- a/experimental/packages/otlp-exporter-base/package.json +++ b/experimental/packages/otlp-exporter-base/package.json @@ -61,8 +61,7 @@ "access": "public" }, "dependencies": { - "@opentelemetry/core": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/core": "1.15.0" }, "devDependencies": { "@babel/core": "7.22.9", diff --git a/experimental/packages/otlp-grpc-exporter-base/package.json b/experimental/packages/otlp-grpc-exporter-base/package.json index 232b83bf6c..4db399497b 100644 --- a/experimental/packages/otlp-grpc-exporter-base/package.json +++ b/experimental/packages/otlp-grpc-exporter-base/package.json @@ -75,8 +75,7 @@ "@grpc/grpc-js": "^1.7.1", "@opentelemetry/core": "1.15.0", "@opentelemetry/otlp-exporter-base": "0.41.0", - "protobufjs": "^7.2.3", - "tslib": "^2.3.1" + "protobufjs": "^7.2.3" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/otlp-grpc-exporter-base", "sideEffects": false diff --git a/experimental/packages/otlp-proto-exporter-base/package.json b/experimental/packages/otlp-proto-exporter-base/package.json index f1fd58623c..5480ef6ce7 100644 --- a/experimental/packages/otlp-proto-exporter-base/package.json +++ b/experimental/packages/otlp-proto-exporter-base/package.json @@ -81,8 +81,7 @@ "dependencies": { "@opentelemetry/core": "1.15.0", "@opentelemetry/otlp-exporter-base": "0.41.0", - "protobufjs": "^7.2.3", - "tslib": "^2.3.1" + "protobufjs": "^7.2.3" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/otlp-proto-exporter-base", "sideEffects": false diff --git a/experimental/packages/otlp-transformer/package.json b/experimental/packages/otlp-transformer/package.json index 3a53906d50..66e4244291 100644 --- a/experimental/packages/otlp-transformer/package.json +++ b/experimental/packages/otlp-transformer/package.json @@ -83,8 +83,7 @@ "@opentelemetry/resources": "1.15.0", "@opentelemetry/sdk-logs": "0.41.0", "@opentelemetry/sdk-metrics": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/sdk-trace-base": "1.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/otlp-transformer", "sideEffects": false diff --git a/experimental/packages/sdk-logs/package.json b/experimental/packages/sdk-logs/package.json index 14a18889e8..54d9063d6f 100644 --- a/experimental/packages/sdk-logs/package.json +++ b/experimental/packages/sdk-logs/package.json @@ -100,7 +100,6 @@ }, "dependencies": { "@opentelemetry/core": "1.15.0", - "@opentelemetry/resources": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/resources": "1.15.0" } } diff --git a/experimental/packages/shim-opencensus/package.json b/experimental/packages/shim-opencensus/package.json index d5ebb224de..cf637d1a8d 100644 --- a/experimental/packages/shim-opencensus/package.json +++ b/experimental/packages/shim-opencensus/package.json @@ -71,8 +71,7 @@ "dependencies": { "@opentelemetry/core": "1.15.0", "require-in-the-middle": "^7.1.1", - "semver": "^7.5.1", - "tslib": "^2.3.1" + "semver": "^7.5.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/shim-opencensus", "sideEffects": false diff --git a/integration-tests/propagation-validation-server/package.json b/integration-tests/propagation-validation-server/package.json index 8d577ea659..0158a21f68 100644 --- a/integration-tests/propagation-validation-server/package.json +++ b/integration-tests/propagation-validation-server/package.json @@ -17,8 +17,7 @@ "@opentelemetry/sdk-trace-base": "1.15.0", "axios": "1.4.0", "body-parser": "1.19.0", - "express": "4.17.3", - "tslib": "^2.3.1" + "express": "4.17.3" }, "devDependencies": { "typescript": "4.4.4" diff --git a/package.json b/package.json index 8671540526..2a6cffca35 100644 --- a/package.json +++ b/package.json @@ -80,8 +80,7 @@ "typedoc": "0.22.18", "typedoc-plugin-missing-exports": "1.0.0", "typedoc-plugin-resolve-crossmodule-references": "0.2.2", - "typescript": "4.4.4", - "tslib": "^2.3.1" + "typescript": "4.4.4" }, "changelog": { "repo": "open-telemetry/opentelemetry-js", diff --git a/packages/opentelemetry-context-async-hooks/package.json b/packages/opentelemetry-context-async-hooks/package.json index a1073523bb..01439b30f9 100644 --- a/packages/opentelemetry-context-async-hooks/package.json +++ b/packages/opentelemetry-context-async-hooks/package.json @@ -43,9 +43,6 @@ "publishConfig": { "access": "public" }, - "dependencies": { - "tslib": "^2.3.1" - }, "devDependencies": { "@opentelemetry/api": ">=1.0.0 <1.5.0", "@types/mocha": "10.0.1", diff --git a/packages/opentelemetry-context-zone-peer-dep/package.json b/packages/opentelemetry-context-zone-peer-dep/package.json index 515059557f..0a7cab2c00 100644 --- a/packages/opentelemetry-context-zone-peer-dep/package.json +++ b/packages/opentelemetry-context-zone-peer-dep/package.json @@ -85,9 +85,6 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0", "zone.js": "^0.10.2 || ^0.11.0" }, - "dependencies": { - "tslib": "^2.3.1" - }, "sideEffects": false, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-context-zone-peer-dep" } diff --git a/packages/opentelemetry-context-zone/package.json b/packages/opentelemetry-context-zone/package.json index 342c580ff9..01fafc419f 100644 --- a/packages/opentelemetry-context-zone/package.json +++ b/packages/opentelemetry-context-zone/package.json @@ -76,7 +76,6 @@ }, "dependencies": { "@opentelemetry/context-zone-peer-dep": "1.15.0", - "tslib": "^2.3.1", "zone.js": "^0.11.0" }, "sideEffects": true, diff --git a/packages/opentelemetry-core/package.json b/packages/opentelemetry-core/package.json index c8ba0b3647..5340df9514 100644 --- a/packages/opentelemetry-core/package.json +++ b/packages/opentelemetry-core/package.json @@ -91,8 +91,7 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/semantic-conventions": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/semantic-conventions": "1.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-core", "sideEffects": false diff --git a/packages/opentelemetry-exporter-jaeger/package.json b/packages/opentelemetry-exporter-jaeger/package.json index 2158bd3066..a595bf3e4c 100644 --- a/packages/opentelemetry-exporter-jaeger/package.json +++ b/packages/opentelemetry-exporter-jaeger/package.json @@ -66,8 +66,7 @@ "@opentelemetry/core": "1.15.0", "@opentelemetry/sdk-trace-base": "1.15.0", "@opentelemetry/semantic-conventions": "1.15.0", - "jaeger-client": "^3.15.0", - "tslib": "^2.3.1" + "jaeger-client": "^3.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-exporter-jaeger", "sideEffects": false diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index 6ef32c8de5..0de3f4a5de 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -95,8 +95,7 @@ "@opentelemetry/core": "1.15.0", "@opentelemetry/resources": "1.15.0", "@opentelemetry/sdk-trace-base": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/semantic-conventions": "1.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-exporter-zipkin", "sideEffects": false diff --git a/packages/opentelemetry-propagator-b3/package.json b/packages/opentelemetry-propagator-b3/package.json index 69fce8a126..2d0bbb4c51 100644 --- a/packages/opentelemetry-propagator-b3/package.json +++ b/packages/opentelemetry-propagator-b3/package.json @@ -51,8 +51,7 @@ "access": "public" }, "dependencies": { - "@opentelemetry/core": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/core": "1.15.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.5.0" diff --git a/packages/opentelemetry-propagator-jaeger/package.json b/packages/opentelemetry-propagator-jaeger/package.json index ef8d9915ab..a9b2e15612 100644 --- a/packages/opentelemetry-propagator-jaeger/package.json +++ b/packages/opentelemetry-propagator-jaeger/package.json @@ -81,8 +81,7 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/core": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/core": "1.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-propagator-jaeger", "sideEffects": false diff --git a/packages/opentelemetry-resources/package.json b/packages/opentelemetry-resources/package.json index a121a1c4fd..dac50ececf 100644 --- a/packages/opentelemetry-resources/package.json +++ b/packages/opentelemetry-resources/package.json @@ -92,8 +92,7 @@ }, "dependencies": { "@opentelemetry/core": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/semantic-conventions": "1.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-resources", "sideEffects": false diff --git a/packages/opentelemetry-sdk-trace-base/package.json b/packages/opentelemetry-sdk-trace-base/package.json index d220f8cae7..c0285dd5f4 100644 --- a/packages/opentelemetry-sdk-trace-base/package.json +++ b/packages/opentelemetry-sdk-trace-base/package.json @@ -95,8 +95,7 @@ "dependencies": { "@opentelemetry/core": "1.15.0", "@opentelemetry/resources": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/semantic-conventions": "1.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-base", "sideEffects": false diff --git a/packages/opentelemetry-sdk-trace-node/package.json b/packages/opentelemetry-sdk-trace-node/package.json index 7afeef5bc3..fe776628b0 100644 --- a/packages/opentelemetry-sdk-trace-node/package.json +++ b/packages/opentelemetry-sdk-trace-node/package.json @@ -70,8 +70,7 @@ "@opentelemetry/propagator-b3": "1.15.0", "@opentelemetry/propagator-jaeger": "1.15.0", "@opentelemetry/sdk-trace-base": "1.15.0", - "semver": "^7.5.1", - "tslib": "^2.3.1" + "semver": "^7.5.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node", "sideEffects": false diff --git a/packages/opentelemetry-sdk-trace-web/package.json b/packages/opentelemetry-sdk-trace-web/package.json index 4c1c347cd0..e19b365b23 100644 --- a/packages/opentelemetry-sdk-trace-web/package.json +++ b/packages/opentelemetry-sdk-trace-web/package.json @@ -94,8 +94,7 @@ "dependencies": { "@opentelemetry/core": "1.15.0", "@opentelemetry/sdk-trace-base": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0", - "tslib": "^2.3.1" + "@opentelemetry/semantic-conventions": "1.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-web", "sideEffects": false diff --git a/packages/opentelemetry-semantic-conventions/package.json b/packages/opentelemetry-semantic-conventions/package.json index 29b28f22f4..367416299a 100644 --- a/packages/opentelemetry-semantic-conventions/package.json +++ b/packages/opentelemetry-semantic-conventions/package.json @@ -62,9 +62,6 @@ "ts-mocha": "10.0.0", "typescript": "4.4.4" }, - "dependencies": { - "tslib": "^2.3.1" - }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-semantic-conventions", "sideEffects": false } diff --git a/packages/opentelemetry-shim-opentracing/package.json b/packages/opentelemetry-shim-opentracing/package.json index 6f28c3c067..fbbb58096c 100644 --- a/packages/opentelemetry-shim-opentracing/package.json +++ b/packages/opentelemetry-shim-opentracing/package.json @@ -62,8 +62,7 @@ "dependencies": { "@opentelemetry/core": "1.15.0", "@opentelemetry/semantic-conventions": "1.15.0", - "opentracing": "^0.14.4", - "tslib": "^2.3.1" + "opentracing": "^0.14.4" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-shim-opentracing", "sideEffects": false diff --git a/packages/sdk-metrics/package.json b/packages/sdk-metrics/package.json index 0ce67e77d4..7aaf05fd68 100644 --- a/packages/sdk-metrics/package.json +++ b/packages/sdk-metrics/package.json @@ -86,8 +86,7 @@ "dependencies": { "@opentelemetry/core": "1.15.0", "@opentelemetry/resources": "1.15.0", - "lodash.merge": "^4.6.2", - "tslib": "^2.3.1" + "lodash.merge": "^4.6.2" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/sdk-metrics", "sideEffects": false diff --git a/packages/template/package.json b/packages/template/package.json index 8906041279..3949c871fa 100644 --- a/packages/template/package.json +++ b/packages/template/package.json @@ -83,9 +83,6 @@ "lerna": "7.1.3", "typescript": "4.4.4" }, - "dependencies": { - "tslib": "^2.3.1" - }, "Add these to devDependencies for testing": { "@types/mocha": "9.1.1", "@types/sinon": "10.0.13", diff --git a/tsconfig.base.json b/tsconfig.base.json index 84e684c8a5..cbafb67678 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -21,8 +21,7 @@ "strict": true, "strictNullChecks": true, "target": "es2017", - "useUnknownInCatchVariables": false, - "importHelpers": true + "useUnknownInCatchVariables": false }, "exclude": [ "node_modules" From 9f71800fdc2a5ee5055684037a12498af71955f2 Mon Sep 17 00:00:00 2001 From: Daniel Dyla Date: Mon, 24 Jul 2023 09:44:44 -0400 Subject: [PATCH 71/71] chore: prepare release 1.15.1/0.41.1 (#4016) --- CHANGELOG.md | 10 ++++-- examples/esm-http-ts/package.json | 16 +++++----- examples/http/package.json | 18 +++++------ examples/https/package.json | 18 +++++------ examples/opentelemetry-web/package.json | 30 ++++++++--------- examples/otlp-exporter-node/package.json | 24 +++++++------- experimental/CHANGELOG.md | 19 +++++++++-- .../node14/package.json | 6 ++-- .../node16/package.json | 6 ++-- .../examples/opencensus-shim/package.json | 12 +++---- experimental/examples/prometheus/package.json | 6 ++-- experimental/packages/api-events/package.json | 4 +-- experimental/packages/api-logs/package.json | 4 +-- .../exporter-logs-otlp-grpc/package.json | 16 +++++----- .../exporter-logs-otlp-http/package.json | 16 +++++----- .../exporter-logs-otlp-proto/package.json | 20 ++++++------ .../exporter-trace-otlp-grpc/package.json | 14 ++++---- .../exporter-trace-otlp-http/package.json | 14 ++++---- .../exporter-trace-otlp-proto/package.json | 16 +++++----- .../package.json | 8 ++--- .../package.json | 14 ++++---- .../package.json | 14 ++++---- .../package.json | 16 +++++----- .../package.json | 10 +++--- .../package.json | 18 +++++------ .../package.json | 14 ++++---- .../package.json | 16 +++++----- .../package.json | 18 +++++------ .../package.json | 6 ++-- .../opentelemetry-sdk-node/package.json | 32 +++++++++---------- .../packages/otlp-exporter-base/package.json | 6 ++-- .../otlp-grpc-exporter-base/package.json | 12 +++---- .../otlp-proto-exporter-base/package.json | 6 ++-- .../packages/otlp-transformer/package.json | 16 +++++----- experimental/packages/sdk-logs/package.json | 12 +++---- .../packages/shim-opencensus/package.json | 8 ++--- .../package.json | 8 ++--- .../package.json | 2 +- .../package.json | 4 +-- .../opentelemetry-context-zone/package.json | 4 +-- packages/opentelemetry-core/package.json | 6 ++-- .../package.json | 10 +++--- .../package.json | 12 +++---- .../opentelemetry-propagator-b3/package.json | 4 +-- .../package.json | 6 ++-- packages/opentelemetry-resources/package.json | 6 ++-- .../opentelemetry-sdk-trace-base/package.json | 10 +++--- .../opentelemetry-sdk-trace-node/package.json | 16 +++++----- .../opentelemetry-sdk-trace-web/package.json | 16 +++++----- .../package.json | 2 +- .../package.json | 12 +++---- packages/sdk-metrics/package.json | 10 +++--- packages/template/package.json | 2 +- selenium-tests/package.json | 22 ++++++------- 54 files changed, 332 insertions(+), 315 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b30dce0392..ea4e3c0caa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,13 +13,17 @@ For experimental package changes, see the [experimental CHANGELOG](experimental/ ### :bug: (Bug Fix) -* Revert "feat(minification): Add noEmitHelpers, importHelpers and tslib as a dependency (#3914)" - [#4011](https://github.com/open-telemetry/opentelemetry-js/pull/4011) @dyladan - ### :books: (Refine Doc) ### :house: (Internal) +## 1.15.1 + +### :bug: (Bug Fix) + +* Revert "feat(minification): Add noEmitHelpers, importHelpers and tslib as a dependency (#3914)" + [#4011](https://github.com/open-telemetry/opentelemetry-js/pull/4011) @dyladan + ## 1.15.0 ### :bug: (Bug Fix) diff --git a/examples/esm-http-ts/package.json b/examples/esm-http-ts/package.json index 4dcbbf6009..a36bbf7225 100644 --- a/examples/esm-http-ts/package.json +++ b/examples/esm-http-ts/package.json @@ -1,7 +1,7 @@ { "name": "esm-http-ts", "private": true, - "version": "0.41.0", + "version": "0.41.1", "description": "Example of HTTP integration with OpenTelemetry using ESM and TypeScript", "main": "build/index.js", "type": "module", @@ -31,12 +31,12 @@ "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/", "dependencies": { "@opentelemetry/api": "1.4.1", - "@opentelemetry/exporter-trace-otlp-proto": "0.41.0", - "@opentelemetry/instrumentation": "0.41.0", - "@opentelemetry/instrumentation-http": "0.41.0", - "@opentelemetry/resources": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0", - "@opentelemetry/sdk-trace-node": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0" + "@opentelemetry/exporter-trace-otlp-proto": "0.41.1", + "@opentelemetry/instrumentation": "0.41.1", + "@opentelemetry/instrumentation-http": "0.41.1", + "@opentelemetry/resources": "1.15.1", + "@opentelemetry/sdk-trace-base": "1.15.1", + "@opentelemetry/sdk-trace-node": "1.15.1", + "@opentelemetry/semantic-conventions": "1.15.1" } } diff --git a/examples/http/package.json b/examples/http/package.json index 22d3d29d9c..1452ccbd8c 100644 --- a/examples/http/package.json +++ b/examples/http/package.json @@ -1,7 +1,7 @@ { "name": "http-example", "private": true, - "version": "0.41.0", + "version": "0.41.1", "description": "Example of HTTP integration with OpenTelemetry", "main": "index.js", "scripts": { @@ -29,14 +29,14 @@ }, "dependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/exporter-jaeger": "1.15.0", - "@opentelemetry/exporter-zipkin": "1.15.0", - "@opentelemetry/instrumentation": "0.41.0", - "@opentelemetry/instrumentation-http": "0.41.0", - "@opentelemetry/resources": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0", - "@opentelemetry/sdk-trace-node": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0" + "@opentelemetry/exporter-jaeger": "1.15.1", + "@opentelemetry/exporter-zipkin": "1.15.1", + "@opentelemetry/instrumentation": "0.41.1", + "@opentelemetry/instrumentation-http": "0.41.1", + "@opentelemetry/resources": "1.15.1", + "@opentelemetry/sdk-trace-base": "1.15.1", + "@opentelemetry/sdk-trace-node": "1.15.1", + "@opentelemetry/semantic-conventions": "1.15.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/http", "devDependencies": { diff --git a/examples/https/package.json b/examples/https/package.json index 15b3ac513d..2241782992 100644 --- a/examples/https/package.json +++ b/examples/https/package.json @@ -1,7 +1,7 @@ { "name": "https-example", "private": true, - "version": "0.41.0", + "version": "0.41.1", "description": "Example of HTTPs integration with OpenTelemetry", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -33,14 +33,14 @@ }, "dependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/exporter-jaeger": "1.15.0", - "@opentelemetry/exporter-zipkin": "1.15.0", - "@opentelemetry/instrumentation": "0.41.0", - "@opentelemetry/instrumentation-http": "0.41.0", - "@opentelemetry/resources": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0", - "@opentelemetry/sdk-trace-node": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0" + "@opentelemetry/exporter-jaeger": "1.15.1", + "@opentelemetry/exporter-zipkin": "1.15.1", + "@opentelemetry/instrumentation": "0.41.1", + "@opentelemetry/instrumentation-http": "0.41.1", + "@opentelemetry/resources": "1.15.1", + "@opentelemetry/sdk-trace-base": "1.15.1", + "@opentelemetry/sdk-trace-node": "1.15.1", + "@opentelemetry/semantic-conventions": "1.15.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/https", "devDependencies": { diff --git a/examples/opentelemetry-web/package.json b/examples/opentelemetry-web/package.json index e57cc764a3..6f70a428ae 100644 --- a/examples/opentelemetry-web/package.json +++ b/examples/opentelemetry-web/package.json @@ -1,7 +1,7 @@ { "name": "web-opentelemetry-example", "private": true, - "version": "0.41.0", + "version": "0.41.1", "description": "Example of using @opentelemetry/sdk-trace-web and @opentelemetry/sdk-metrics in browser", "main": "index.js", "scripts": { @@ -43,20 +43,20 @@ }, "dependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-zone": "1.15.0", - "@opentelemetry/core": "1.15.0", - "@opentelemetry/exporter-metrics-otlp-http": "0.41.0", - "@opentelemetry/exporter-trace-otlp-http": "0.41.0", - "@opentelemetry/exporter-trace-otlp-proto": "0.41.0", - "@opentelemetry/exporter-zipkin": "1.15.0", - "@opentelemetry/instrumentation": "0.41.0", - "@opentelemetry/instrumentation-fetch": "0.41.0", - "@opentelemetry/instrumentation-xml-http-request": "0.41.0", - "@opentelemetry/propagator-b3": "1.15.0", - "@opentelemetry/sdk-metrics": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0", - "@opentelemetry/sdk-trace-web": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0" + "@opentelemetry/context-zone": "1.15.1", + "@opentelemetry/core": "1.15.1", + "@opentelemetry/exporter-metrics-otlp-http": "0.41.1", + "@opentelemetry/exporter-trace-otlp-http": "0.41.1", + "@opentelemetry/exporter-trace-otlp-proto": "0.41.1", + "@opentelemetry/exporter-zipkin": "1.15.1", + "@opentelemetry/instrumentation": "0.41.1", + "@opentelemetry/instrumentation-fetch": "0.41.1", + "@opentelemetry/instrumentation-xml-http-request": "0.41.1", + "@opentelemetry/propagator-b3": "1.15.1", + "@opentelemetry/sdk-metrics": "1.15.1", + "@opentelemetry/sdk-trace-base": "1.15.1", + "@opentelemetry/sdk-trace-web": "1.15.1", + "@opentelemetry/semantic-conventions": "1.15.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/tracer-web" } diff --git a/examples/otlp-exporter-node/package.json b/examples/otlp-exporter-node/package.json index 888a0b1be8..c16a341a26 100644 --- a/examples/otlp-exporter-node/package.json +++ b/examples/otlp-exporter-node/package.json @@ -1,7 +1,7 @@ { "name": "example-otlp-exporter-node", "private": true, - "version": "0.41.0", + "version": "0.41.1", "description": "Example of using @opentelemetry/collector-exporter in Node.js", "main": "index.js", "scripts": { @@ -29,17 +29,17 @@ }, "dependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/core": "1.15.0", - "@opentelemetry/exporter-metrics-otlp-grpc": "0.41.0", - "@opentelemetry/exporter-metrics-otlp-http": "0.41.0", - "@opentelemetry/exporter-metrics-otlp-proto": "0.41.0", - "@opentelemetry/exporter-trace-otlp-grpc": "0.41.0", - "@opentelemetry/exporter-trace-otlp-http": "0.41.0", - "@opentelemetry/exporter-trace-otlp-proto": "0.41.0", - "@opentelemetry/resources": "1.15.0", - "@opentelemetry/sdk-metrics": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0" + "@opentelemetry/core": "1.15.1", + "@opentelemetry/exporter-metrics-otlp-grpc": "0.41.1", + "@opentelemetry/exporter-metrics-otlp-http": "0.41.1", + "@opentelemetry/exporter-metrics-otlp-proto": "0.41.1", + "@opentelemetry/exporter-trace-otlp-grpc": "0.41.1", + "@opentelemetry/exporter-trace-otlp-http": "0.41.1", + "@opentelemetry/exporter-trace-otlp-proto": "0.41.1", + "@opentelemetry/resources": "1.15.1", + "@opentelemetry/sdk-metrics": "1.15.1", + "@opentelemetry/sdk-trace-base": "1.15.1", + "@opentelemetry/semantic-conventions": "1.15.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/otlp-exporter-node" } diff --git a/experimental/CHANGELOG.md b/experimental/CHANGELOG.md index c629931887..38d9b83974 100644 --- a/experimental/CHANGELOG.md +++ b/experimental/CHANGELOG.md @@ -6,13 +6,11 @@ All notable changes to experimental packages in this project will be documented ### :books: (Refine Doc) -* docs(sdk-metrics): add example of exponential histogram metric [#3855](https://github.com/open-telemetry/opentelemetry-js/pull/3855) @JamieDanielson - ### :boom: Breaking Change ### :rocket: (Enhancement) -* feat(sdk-node): logs support added [#3969](https://github.com/open-telemetry/opentelemetry-js/pull/3969) @psk001 +### :bug: (Bug Fix) ### :bug: (Bug Fix) @@ -20,6 +18,21 @@ All notable changes to experimental packages in this project will be documented ### :house: (Internal) +## 0.41.1 + +### :books: (Refine Doc) + +* docs(sdk-metrics): add example of exponential histogram metric [#3855](https://github.com/open-telemetry/opentelemetry-js/pull/3855) @JamieDanielson + +### :rocket: (Enhancement) + +* feat(sdk-node): logs support added [#3969](https://github.com/open-telemetry/opentelemetry-js/pull/3969) @psk001 + +### :bug: (Bug Fix) + +* Revert "feat(minification): Add noEmitHelpers, importHelpers and tslib as a dependency (#3914)" + [#4011](https://github.com/open-telemetry/opentelemetry-js/pull/4011) @dyladan + ## 0.41.0 ### :boom: Breaking Change diff --git a/experimental/backwards-compatibility/node14/package.json b/experimental/backwards-compatibility/node14/package.json index 9414b949f5..cf9cc50bec 100644 --- a/experimental/backwards-compatibility/node14/package.json +++ b/experimental/backwards-compatibility/node14/package.json @@ -1,6 +1,6 @@ { "name": "backcompat-node14", - "version": "0.41.0", + "version": "0.41.1", "private": true, "description": "Backwards compatibility app for node 14 types and the OpenTelemetry Node.js SDK", "main": "index.js", @@ -9,8 +9,8 @@ "peer-api-check": "node ../../../scripts/peer-api-check.js" }, "dependencies": { - "@opentelemetry/sdk-node": "0.41.0", - "@opentelemetry/sdk-trace-base": "1.15.0" + "@opentelemetry/sdk-node": "0.41.1", + "@opentelemetry/sdk-trace-base": "1.15.1" }, "devDependencies": { "@types/node": "14.18.25", diff --git a/experimental/backwards-compatibility/node16/package.json b/experimental/backwards-compatibility/node16/package.json index ed473eae27..92f16e43e5 100644 --- a/experimental/backwards-compatibility/node16/package.json +++ b/experimental/backwards-compatibility/node16/package.json @@ -1,6 +1,6 @@ { "name": "backcompat-node16", - "version": "0.41.0", + "version": "0.41.1", "private": true, "description": "Backwards compatibility app for node 16 types and the OpenTelemetry Node.js SDK", "main": "index.js", @@ -9,8 +9,8 @@ "peer-api-check": "node ../../../scripts/peer-api-check.js" }, "dependencies": { - "@opentelemetry/sdk-node": "0.41.0", - "@opentelemetry/sdk-trace-base": "1.15.0" + "@opentelemetry/sdk-node": "0.41.1", + "@opentelemetry/sdk-trace-base": "1.15.1" }, "devDependencies": { "@types/node": "16.11.52", diff --git a/experimental/examples/opencensus-shim/package.json b/experimental/examples/opencensus-shim/package.json index ee201e1171..ee2bb6e08b 100644 --- a/experimental/examples/opencensus-shim/package.json +++ b/experimental/examples/opencensus-shim/package.json @@ -1,7 +1,7 @@ { "name": "opencensus-shim", "private": true, - "version": "0.41.0", + "version": "0.41.1", "description": "Example of using @opentelemetry/shim-opencensus in Node.js", "main": "index.js", "scripts": { @@ -30,11 +30,11 @@ "@opencensus/core": "0.1.0", "@opencensus/nodejs-base": "0.1.0", "@opentelemetry/api": "1.4.1", - "@opentelemetry/exporter-trace-otlp-grpc": "0.41.0", - "@opentelemetry/resources": "1.15.0", - "@opentelemetry/sdk-trace-node": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0", - "@opentelemetry/shim-opencensus": "0.41.0" + "@opentelemetry/exporter-trace-otlp-grpc": "0.41.1", + "@opentelemetry/resources": "1.15.1", + "@opentelemetry/sdk-trace-node": "1.15.1", + "@opentelemetry/semantic-conventions": "1.15.1", + "@opentelemetry/shim-opencensus": "0.41.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/examples/opencensus-shim" } diff --git a/experimental/examples/prometheus/package.json b/experimental/examples/prometheus/package.json index 45c9f661dc..9b51db4a97 100644 --- a/experimental/examples/prometheus/package.json +++ b/experimental/examples/prometheus/package.json @@ -1,6 +1,6 @@ { "name": "prometheus-example", - "version": "0.41.0", + "version": "0.41.1", "private": true, "description": "Example of using @opentelemetry/sdk-metrics and @opentelemetry/exporter-prometheus", "main": "index.js", @@ -11,7 +11,7 @@ "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/exporter-prometheus": "0.41.0", - "@opentelemetry/sdk-metrics": "1.15.0" + "@opentelemetry/exporter-prometheus": "0.41.1", + "@opentelemetry/sdk-metrics": "1.15.1" } } diff --git a/experimental/packages/api-events/package.json b/experimental/packages/api-events/package.json index dd4111bb3c..94c3ce510d 100644 --- a/experimental/packages/api-events/package.json +++ b/experimental/packages/api-events/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/api-events", - "version": "0.41.0", + "version": "0.41.1", "description": "Public events API for OpenTelemetry", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -67,9 +67,9 @@ "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/webpack-env": "1.16.3", + "babel-plugin-istanbul": "6.1.1", "codecov": "3.8.3", "cross-var": "1.1.0", - "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.2.1", diff --git a/experimental/packages/api-logs/package.json b/experimental/packages/api-logs/package.json index 9bddeaa794..e99c9fd651 100644 --- a/experimental/packages/api-logs/package.json +++ b/experimental/packages/api-logs/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/api-logs", - "version": "0.41.0", + "version": "0.41.1", "description": "Public logs API for OpenTelemetry", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -67,9 +67,9 @@ "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/webpack-env": "1.16.3", + "babel-plugin-istanbul": "6.1.1", "codecov": "3.8.3", "cross-var": "1.1.0", - "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.2.1", diff --git a/experimental/packages/exporter-logs-otlp-grpc/package.json b/experimental/packages/exporter-logs-otlp-grpc/package.json index 6a61908731..bbd94bea1a 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/package.json +++ b/experimental/packages/exporter-logs-otlp-grpc/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-logs-otlp-grpc", - "version": "0.41.0", + "version": "0.41.1", "description": "OpenTelemetry Collector Exporter allows user to send collected log records to the OpenTelemetry Collector", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -51,9 +51,9 @@ "@babel/core": "7.22.9", "@grpc/proto-loader": "^0.7.3", "@opentelemetry/api": "1.4.1", - "@opentelemetry/api-logs": "0.41.0", - "@opentelemetry/otlp-exporter-base": "0.41.0", - "@opentelemetry/resources": "1.15.0", + "@opentelemetry/api-logs": "0.41.1", + "@opentelemetry/otlp-exporter-base": "0.41.1", + "@opentelemetry/resources": "1.15.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", @@ -73,10 +73,10 @@ }, "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.15.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.41.0", - "@opentelemetry/otlp-transformer": "0.41.0", - "@opentelemetry/sdk-logs": "0.41.0" + "@opentelemetry/core": "1.15.1", + "@opentelemetry/otlp-grpc-exporter-base": "0.41.1", + "@opentelemetry/otlp-transformer": "0.41.1", + "@opentelemetry/sdk-logs": "0.41.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-logs-otlp-grpc", "sideEffects": false diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index 428d2ed878..49e2f2eab5 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-logs-otlp-http", - "version": "0.41.0", + "version": "0.41.1", "publishConfig": { "access": "public" }, @@ -72,17 +72,17 @@ "sideEffects": false, "devDependencies": { "@babel/core": "7.22.9", - "@opentelemetry/api-logs": "0.41.0", - "@opentelemetry/resources": "1.15.0", + "@opentelemetry/api-logs": "0.41.1", + "@opentelemetry/resources": "1.15.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "babel-loader": "8.3.0", + "babel-plugin-istanbul": "6.1.1", "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.2.1", @@ -104,9 +104,9 @@ "@opentelemetry/api-logs": ">=0.38.0" }, "dependencies": { - "@opentelemetry/core": "1.15.0", - "@opentelemetry/otlp-exporter-base": "0.41.0", - "@opentelemetry/otlp-transformer": "0.41.0", - "@opentelemetry/sdk-logs": "0.41.0" + "@opentelemetry/core": "1.15.1", + "@opentelemetry/otlp-exporter-base": "0.41.1", + "@opentelemetry/otlp-transformer": "0.41.1", + "@opentelemetry/sdk-logs": "0.41.1" } } diff --git a/experimental/packages/exporter-logs-otlp-proto/package.json b/experimental/packages/exporter-logs-otlp-proto/package.json index 6047b0bd62..f24ffbaacd 100644 --- a/experimental/packages/exporter-logs-otlp-proto/package.json +++ b/experimental/packages/exporter-logs-otlp-proto/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-logs-otlp-proto", - "version": "0.41.0", + "version": "0.41.1", "description": "An OTLP exporter to send logs using protobuf over HTTP", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -68,10 +68,10 @@ "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", + "babel-plugin-istanbul": "6.1.1", "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.2.1", @@ -93,14 +93,14 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/api-logs": "0.41.0", - "@opentelemetry/core": "1.15.0", - "@opentelemetry/otlp-exporter-base": "0.41.0", - "@opentelemetry/otlp-proto-exporter-base": "0.41.0", - "@opentelemetry/otlp-transformer": "0.41.0", - "@opentelemetry/resources": "1.15.0", - "@opentelemetry/sdk-logs": "0.41.0", - "@opentelemetry/sdk-trace-base": "1.15.0" + "@opentelemetry/api-logs": "0.41.1", + "@opentelemetry/core": "1.15.1", + "@opentelemetry/otlp-exporter-base": "0.41.1", + "@opentelemetry/otlp-proto-exporter-base": "0.41.1", + "@opentelemetry/otlp-transformer": "0.41.1", + "@opentelemetry/resources": "1.15.1", + "@opentelemetry/sdk-logs": "0.41.1", + "@opentelemetry/sdk-trace-base": "1.15.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-logs-otlp-proto", "sideEffects": false diff --git a/experimental/packages/exporter-trace-otlp-grpc/package.json b/experimental/packages/exporter-trace-otlp-grpc/package.json index 4c89ede04e..1a6a0114ef 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/package.json +++ b/experimental/packages/exporter-trace-otlp-grpc/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-trace-otlp-grpc", - "version": "0.41.0", + "version": "0.41.1", "description": "OpenTelemetry Collector Exporter allows user to send collected traces to the OpenTelemetry Collector", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -50,7 +50,7 @@ "@babel/core": "7.22.9", "@grpc/proto-loader": "^0.7.3", "@opentelemetry/api": "1.4.1", - "@opentelemetry/otlp-exporter-base": "0.41.0", + "@opentelemetry/otlp-exporter-base": "0.41.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", @@ -70,11 +70,11 @@ }, "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.15.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.41.0", - "@opentelemetry/otlp-transformer": "0.41.0", - "@opentelemetry/resources": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0" + "@opentelemetry/core": "1.15.1", + "@opentelemetry/otlp-grpc-exporter-base": "0.41.1", + "@opentelemetry/otlp-transformer": "0.41.1", + "@opentelemetry/resources": "1.15.1", + "@opentelemetry/sdk-trace-base": "1.15.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-trace-otlp-grpc", "sideEffects": false diff --git a/experimental/packages/exporter-trace-otlp-http/package.json b/experimental/packages/exporter-trace-otlp-http/package.json index 631b0ac6d5..0b51ceb782 100644 --- a/experimental/packages/exporter-trace-otlp-http/package.json +++ b/experimental/packages/exporter-trace-otlp-http/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-trace-otlp-http", - "version": "0.41.0", + "version": "0.41.1", "description": "OpenTelemetry Collector Trace Exporter allows user to send collected traces to the OpenTelemetry Collector", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -70,10 +70,10 @@ "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "babel-loader": "8.3.0", + "babel-plugin-istanbul": "6.1.1", "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.2.1", @@ -95,11 +95,11 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.15.0", - "@opentelemetry/otlp-exporter-base": "0.41.0", - "@opentelemetry/otlp-transformer": "0.41.0", - "@opentelemetry/resources": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0" + "@opentelemetry/core": "1.15.1", + "@opentelemetry/otlp-exporter-base": "0.41.1", + "@opentelemetry/otlp-transformer": "0.41.1", + "@opentelemetry/resources": "1.15.1", + "@opentelemetry/sdk-trace-base": "1.15.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-trace-otlp-http", "sideEffects": false diff --git a/experimental/packages/exporter-trace-otlp-proto/package.json b/experimental/packages/exporter-trace-otlp-proto/package.json index 84a44cb055..bf01be8e55 100644 --- a/experimental/packages/exporter-trace-otlp-proto/package.json +++ b/experimental/packages/exporter-trace-otlp-proto/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-trace-otlp-proto", - "version": "0.41.0", + "version": "0.41.1", "description": "OpenTelemetry Collector Exporter allows user to send collected traces to the OpenTelemetry Collector using protobuf over HTTP", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -67,10 +67,10 @@ "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", + "babel-plugin-istanbul": "6.1.1", "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.2.1", @@ -92,12 +92,12 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.15.0", - "@opentelemetry/otlp-exporter-base": "0.41.0", - "@opentelemetry/otlp-proto-exporter-base": "0.41.0", - "@opentelemetry/otlp-transformer": "0.41.0", - "@opentelemetry/resources": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0" + "@opentelemetry/core": "1.15.1", + "@opentelemetry/otlp-exporter-base": "0.41.1", + "@opentelemetry/otlp-proto-exporter-base": "0.41.1", + "@opentelemetry/otlp-transformer": "0.41.1", + "@opentelemetry/resources": "1.15.1", + "@opentelemetry/sdk-trace-base": "1.15.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-trace-otlp-proto", "sideEffects": false diff --git a/experimental/packages/opentelemetry-browser-detector/package.json b/experimental/packages/opentelemetry-browser-detector/package.json index 9c90b945e4..bdf8566924 100644 --- a/experimental/packages/opentelemetry-browser-detector/package.json +++ b/experimental/packages/opentelemetry-browser-detector/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/opentelemetry-browser-detector", - "version": "0.41.0", + "version": "0.41.1", "description": "OpenTelemetry Resource Detector for Browser", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -58,9 +58,9 @@ "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", + "babel-plugin-istanbul": "6.1.1", "codecov": "3.8.3", "cross-var": "1.1.0", - "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.2.1", @@ -82,8 +82,8 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/resources": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0" + "@opentelemetry/resources": "1.15.1", + "@opentelemetry/semantic-conventions": "1.15.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/browser-detector" } diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index 414dae9354..c5fffbadb2 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-metrics-otlp-grpc", - "version": "0.41.0", + "version": "0.41.1", "description": "OpenTelemetry Collector Metrics Exporter allows user to send collected metrics to the OpenTelemetry Collector", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -69,12 +69,12 @@ }, "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.15.0", - "@opentelemetry/exporter-metrics-otlp-http": "0.41.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.41.0", - "@opentelemetry/otlp-transformer": "0.41.0", - "@opentelemetry/resources": "1.15.0", - "@opentelemetry/sdk-metrics": "1.15.0" + "@opentelemetry/core": "1.15.1", + "@opentelemetry/exporter-metrics-otlp-http": "0.41.1", + "@opentelemetry/otlp-grpc-exporter-base": "0.41.1", + "@opentelemetry/otlp-transformer": "0.41.1", + "@opentelemetry/resources": "1.15.1", + "@opentelemetry/sdk-metrics": "1.15.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc", "sideEffects": false diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index 6f83683c86..6adc7387e7 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-metrics-otlp-http", - "version": "0.41.0", + "version": "0.41.1", "description": "OpenTelemetry Collector Metrics Exporter allows user to send collected metrics to the OpenTelemetry Collector", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -70,10 +70,10 @@ "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "babel-loader": "8.3.0", + "babel-plugin-istanbul": "6.1.1", "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.2.1", @@ -95,11 +95,11 @@ "@opentelemetry/api": "^1.3.0" }, "dependencies": { - "@opentelemetry/core": "1.15.0", - "@opentelemetry/otlp-exporter-base": "0.41.0", - "@opentelemetry/otlp-transformer": "0.41.0", - "@opentelemetry/resources": "1.15.0", - "@opentelemetry/sdk-metrics": "1.15.0" + "@opentelemetry/core": "1.15.1", + "@opentelemetry/otlp-exporter-base": "0.41.1", + "@opentelemetry/otlp-transformer": "0.41.1", + "@opentelemetry/resources": "1.15.1", + "@opentelemetry/sdk-metrics": "1.15.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-http", "sideEffects": false diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index c92aaae08b..59b19416e7 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-metrics-otlp-proto", - "version": "0.41.0", + "version": "0.41.1", "description": "OpenTelemetry Collector Metrics Exporter allows user to send collected metrics to the OpenTelemetry Collector using protobuf over HTTP", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -67,13 +67,13 @@ "@opentelemetry/api": "^1.3.0" }, "dependencies": { - "@opentelemetry/core": "1.15.0", - "@opentelemetry/exporter-metrics-otlp-http": "0.41.0", - "@opentelemetry/otlp-exporter-base": "0.41.0", - "@opentelemetry/otlp-proto-exporter-base": "0.41.0", - "@opentelemetry/otlp-transformer": "0.41.0", - "@opentelemetry/resources": "1.15.0", - "@opentelemetry/sdk-metrics": "1.15.0" + "@opentelemetry/core": "1.15.1", + "@opentelemetry/exporter-metrics-otlp-http": "0.41.1", + "@opentelemetry/otlp-exporter-base": "0.41.1", + "@opentelemetry/otlp-proto-exporter-base": "0.41.1", + "@opentelemetry/otlp-transformer": "0.41.1", + "@opentelemetry/resources": "1.15.1", + "@opentelemetry/sdk-metrics": "1.15.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-proto", "sideEffects": false diff --git a/experimental/packages/opentelemetry-exporter-prometheus/package.json b/experimental/packages/opentelemetry-exporter-prometheus/package.json index b87439eb40..8b9a7251f1 100644 --- a/experimental/packages/opentelemetry-exporter-prometheus/package.json +++ b/experimental/packages/opentelemetry-exporter-prometheus/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-prometheus", - "version": "0.41.0", + "version": "0.41.1", "description": "OpenTelemetry Exporter Prometheus provides a metrics endpoint for Prometheus", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -44,7 +44,7 @@ }, "devDependencies": { "@opentelemetry/api": "1.4.1", - "@opentelemetry/semantic-conventions": "1.15.0", + "@opentelemetry/semantic-conventions": "1.15.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", @@ -61,9 +61,9 @@ "@opentelemetry/api": "^1.3.0" }, "dependencies": { - "@opentelemetry/core": "1.15.0", - "@opentelemetry/resources": "1.15.0", - "@opentelemetry/sdk-metrics": "1.15.0" + "@opentelemetry/core": "1.15.1", + "@opentelemetry/resources": "1.15.1", + "@opentelemetry/sdk-metrics": "1.15.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-prometheus", "sideEffects": false diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index bbb989e09c..55b7b3565c 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-fetch", - "version": "0.41.0", + "version": "0.41.1", "description": "OpenTelemetry fetch automatic instrumentation package.", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -56,17 +56,17 @@ "devDependencies": { "@babel/core": "7.22.9", "@opentelemetry/api": "1.4.1", - "@opentelemetry/context-zone": "1.15.0", - "@opentelemetry/propagator-b3": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0", + "@opentelemetry/context-zone": "1.15.1", + "@opentelemetry/propagator-b3": "1.15.1", + "@opentelemetry/sdk-trace-base": "1.15.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "babel-loader": "8.3.0", + "babel-plugin-istanbul": "6.1.1", "codecov": "3.8.3", "cross-var": "1.1.0", - "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.2.1", @@ -88,10 +88,10 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.15.0", - "@opentelemetry/instrumentation": "0.41.0", - "@opentelemetry/sdk-trace-web": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0" + "@opentelemetry/core": "1.15.1", + "@opentelemetry/instrumentation": "0.41.1", + "@opentelemetry/sdk-trace-web": "1.15.1", + "@opentelemetry/semantic-conventions": "1.15.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-fetch", "sideEffects": false diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/package.json b/experimental/packages/opentelemetry-instrumentation-grpc/package.json index 8a7d6af1f0..51b6358759 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/package.json +++ b/experimental/packages/opentelemetry-instrumentation-grpc/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-grpc", - "version": "0.41.0", + "version": "0.41.1", "description": "OpenTelemetry grpc automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -48,10 +48,10 @@ "@grpc/grpc-js": "^1.7.1", "@grpc/proto-loader": "^0.7.3", "@opentelemetry/api": "1.4.1", - "@opentelemetry/context-async-hooks": "1.15.0", - "@opentelemetry/core": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0", - "@opentelemetry/sdk-trace-node": "1.15.0", + "@opentelemetry/context-async-hooks": "1.15.1", + "@opentelemetry/core": "1.15.1", + "@opentelemetry/sdk-trace-base": "1.15.1", + "@opentelemetry/sdk-trace-node": "1.15.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/semver": "7.5.0", @@ -70,8 +70,8 @@ "@opentelemetry/api": "^1.3.0" }, "dependencies": { - "@opentelemetry/instrumentation": "0.41.0", - "@opentelemetry/semantic-conventions": "1.15.0" + "@opentelemetry/instrumentation": "0.41.1", + "@opentelemetry/semantic-conventions": "1.15.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-grpc", "sideEffects": false diff --git a/experimental/packages/opentelemetry-instrumentation-http/package.json b/experimental/packages/opentelemetry-instrumentation-http/package.json index 50f9c5ea80..f945fbefc1 100644 --- a/experimental/packages/opentelemetry-instrumentation-http/package.json +++ b/experimental/packages/opentelemetry-instrumentation-http/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-http", - "version": "0.41.0", + "version": "0.41.1", "description": "OpenTelemetry http/https automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,10 +46,10 @@ }, "devDependencies": { "@opentelemetry/api": "1.4.1", - "@opentelemetry/context-async-hooks": "1.15.0", - "@opentelemetry/sdk-metrics": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0", - "@opentelemetry/sdk-trace-node": "1.15.0", + "@opentelemetry/context-async-hooks": "1.15.1", + "@opentelemetry/sdk-metrics": "1.15.1", + "@opentelemetry/sdk-trace-base": "1.15.1", + "@opentelemetry/sdk-trace-node": "1.15.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/request-promise-native": "1.0.18", @@ -74,9 +74,9 @@ "@opentelemetry/api": "^1.3.0" }, "dependencies": { - "@opentelemetry/core": "1.15.0", - "@opentelemetry/instrumentation": "0.41.0", - "@opentelemetry/semantic-conventions": "1.15.0", + "@opentelemetry/core": "1.15.1", + "@opentelemetry/instrumentation": "0.41.1", + "@opentelemetry/semantic-conventions": "1.15.1", "semver": "^7.5.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-http", diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json index d823392acf..3c729d4009 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-xml-http-request", - "version": "0.41.0", + "version": "0.41.1", "description": "OpenTelemetry XMLHttpRequest automatic instrumentation package.", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -56,17 +56,17 @@ "devDependencies": { "@babel/core": "7.22.9", "@opentelemetry/api": "1.4.1", - "@opentelemetry/context-zone": "1.15.0", - "@opentelemetry/propagator-b3": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0", + "@opentelemetry/context-zone": "1.15.1", + "@opentelemetry/propagator-b3": "1.15.1", + "@opentelemetry/sdk-trace-base": "1.15.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "babel-loader": "8.3.0", + "babel-plugin-istanbul": "6.1.1", "codecov": "3.8.3", "cross-var": "1.1.0", - "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.2.1", @@ -88,10 +88,10 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.15.0", - "@opentelemetry/instrumentation": "0.41.0", - "@opentelemetry/sdk-trace-web": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0" + "@opentelemetry/core": "1.15.1", + "@opentelemetry/instrumentation": "0.41.1", + "@opentelemetry/sdk-trace-web": "1.15.1", + "@opentelemetry/semantic-conventions": "1.15.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-xml-http-request", "sideEffects": false diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index b3e1a2aadf..faa4b5a883 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation", - "version": "0.41.0", + "version": "0.41.1", "description": "Base class for node which OpenTelemetry instrumentation modules extend", "author": "OpenTelemetry Authors", "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation", @@ -83,17 +83,17 @@ "devDependencies": { "@babel/core": "7.22.9", "@opentelemetry/api": "1.4.1", - "@opentelemetry/sdk-metrics": "1.15.0", + "@opentelemetry/sdk-metrics": "1.15.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/semver": "7.5.0", "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "babel-loader": "8.3.0", + "babel-plugin-istanbul": "6.1.1", "codecov": "3.8.3", "cpx": "1.5.0", "cross-var": "1.1.0", - "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.2.1", diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json index acaad73e01..a00499ab74 100644 --- a/experimental/packages/opentelemetry-sdk-node/package.json +++ b/experimental/packages/opentelemetry-sdk-node/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sdk-node", - "version": "0.41.0", + "version": "0.41.1", "description": "OpenTelemetry SDK for Node.js", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -44,27 +44,27 @@ "access": "public" }, "dependencies": { - "@opentelemetry/api-logs":"0.41.0", - "@opentelemetry/core": "1.15.0", - "@opentelemetry/exporter-jaeger": "1.15.0", - "@opentelemetry/exporter-trace-otlp-grpc": "0.41.0", - "@opentelemetry/exporter-trace-otlp-http": "0.41.0", - "@opentelemetry/exporter-trace-otlp-proto": "0.41.0", - "@opentelemetry/exporter-zipkin": "1.15.0", - "@opentelemetry/instrumentation": "0.41.0", - "@opentelemetry/resources": "1.15.0", - "@opentelemetry/sdk-logs":"0.41.0", - "@opentelemetry/sdk-metrics": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0", - "@opentelemetry/sdk-trace-node": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0" + "@opentelemetry/api-logs": "0.41.1", + "@opentelemetry/core": "1.15.1", + "@opentelemetry/exporter-jaeger": "1.15.1", + "@opentelemetry/exporter-trace-otlp-grpc": "0.41.1", + "@opentelemetry/exporter-trace-otlp-http": "0.41.1", + "@opentelemetry/exporter-trace-otlp-proto": "0.41.1", + "@opentelemetry/exporter-zipkin": "1.15.1", + "@opentelemetry/instrumentation": "0.41.1", + "@opentelemetry/resources": "1.15.1", + "@opentelemetry/sdk-logs": "0.41.1", + "@opentelemetry/sdk-metrics": "1.15.1", + "@opentelemetry/sdk-trace-base": "1.15.1", + "@opentelemetry/sdk-trace-node": "1.15.1", + "@opentelemetry/semantic-conventions": "1.15.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.5.0" }, "devDependencies": { "@opentelemetry/api": "1.4.1", - "@opentelemetry/context-async-hooks": "1.15.0", + "@opentelemetry/context-async-hooks": "1.15.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/semver": "7.5.0", diff --git a/experimental/packages/otlp-exporter-base/package.json b/experimental/packages/otlp-exporter-base/package.json index 1b37716bef..2d3a61a5b8 100644 --- a/experimental/packages/otlp-exporter-base/package.json +++ b/experimental/packages/otlp-exporter-base/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/otlp-exporter-base", - "version": "0.41.0", + "version": "0.41.1", "description": "OpenTelemetry OTLP Exporter base (for internal use only)", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -61,7 +61,7 @@ "access": "public" }, "dependencies": { - "@opentelemetry/core": "1.15.0" + "@opentelemetry/core": "1.15.1" }, "devDependencies": { "@babel/core": "7.22.9", @@ -69,9 +69,9 @@ "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", + "babel-plugin-istanbul": "6.1.1", "codecov": "3.8.3", "cross-var": "1.1.0", - "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.2.1", diff --git a/experimental/packages/otlp-grpc-exporter-base/package.json b/experimental/packages/otlp-grpc-exporter-base/package.json index 4db399497b..67330ada1e 100644 --- a/experimental/packages/otlp-grpc-exporter-base/package.json +++ b/experimental/packages/otlp-grpc-exporter-base/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/otlp-grpc-exporter-base", - "version": "0.41.0", + "version": "0.41.1", "description": "OpenTelemetry OTLP-gRPC Exporter base (for internal use only)", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -50,9 +50,9 @@ "devDependencies": { "@babel/core": "7.22.9", "@opentelemetry/api": "1.4.1", - "@opentelemetry/otlp-transformer": "0.41.0", - "@opentelemetry/resources": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0", + "@opentelemetry/otlp-transformer": "0.41.1", + "@opentelemetry/resources": "1.15.1", + "@opentelemetry/sdk-trace-base": "1.15.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", @@ -73,8 +73,8 @@ }, "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "1.15.0", - "@opentelemetry/otlp-exporter-base": "0.41.0", + "@opentelemetry/core": "1.15.1", + "@opentelemetry/otlp-exporter-base": "0.41.1", "protobufjs": "^7.2.3" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/otlp-grpc-exporter-base", diff --git a/experimental/packages/otlp-proto-exporter-base/package.json b/experimental/packages/otlp-proto-exporter-base/package.json index 5480ef6ce7..a411fb4a97 100644 --- a/experimental/packages/otlp-proto-exporter-base/package.json +++ b/experimental/packages/otlp-proto-exporter-base/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/otlp-proto-exporter-base", - "version": "0.41.0", + "version": "0.41.1", "description": "OpenTelemetry OTLP-HTTP-protobuf Exporter base (for internal use only)", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -79,8 +79,8 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.15.0", - "@opentelemetry/otlp-exporter-base": "0.41.0", + "@opentelemetry/core": "1.15.1", + "@opentelemetry/otlp-exporter-base": "0.41.1", "protobufjs": "^7.2.3" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/otlp-proto-exporter-base", diff --git a/experimental/packages/otlp-transformer/package.json b/experimental/packages/otlp-transformer/package.json index 66e4244291..1ea9fa0db4 100644 --- a/experimental/packages/otlp-transformer/package.json +++ b/experimental/packages/otlp-transformer/package.json @@ -4,7 +4,7 @@ "publishConfig": { "access": "public" }, - "version": "0.41.0", + "version": "0.41.1", "description": "Transform OpenTelemetry SDK data into OTLP", "module": "build/esm/index.js", "esnext": "build/esnext/index.js", @@ -60,9 +60,9 @@ "@opentelemetry/api": "1.4.1", "@types/mocha": "10.0.1", "@types/webpack-env": "1.16.3", + "babel-plugin-istanbul": "6.1.1", "codecov": "3.8.3", "cross-var": "1.1.0", - "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.2.1", @@ -78,12 +78,12 @@ "webpack": "4.46.0" }, "dependencies": { - "@opentelemetry/api-logs": "0.41.0", - "@opentelemetry/core": "1.15.0", - "@opentelemetry/resources": "1.15.0", - "@opentelemetry/sdk-logs": "0.41.0", - "@opentelemetry/sdk-metrics": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0" + "@opentelemetry/api-logs": "0.41.1", + "@opentelemetry/core": "1.15.1", + "@opentelemetry/resources": "1.15.1", + "@opentelemetry/sdk-logs": "0.41.1", + "@opentelemetry/sdk-metrics": "1.15.1", + "@opentelemetry/sdk-trace-base": "1.15.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/otlp-transformer", "sideEffects": false diff --git a/experimental/packages/sdk-logs/package.json b/experimental/packages/sdk-logs/package.json index 54d9063d6f..3ac1aba876 100644 --- a/experimental/packages/sdk-logs/package.json +++ b/experimental/packages/sdk-logs/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sdk-logs", - "version": "0.41.0", + "version": "0.41.1", "publishConfig": { "access": "public" }, @@ -72,15 +72,15 @@ "@opentelemetry/api-logs": ">=0.39.1" }, "devDependencies": { - "@opentelemetry/api": ">=1.4.0 <1.5.0", - "@opentelemetry/api-logs": "0.41.0", "@babel/core": "7.22.9", + "@opentelemetry/api": ">=1.4.0 <1.5.0", + "@opentelemetry/api-logs": "0.41.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", + "babel-plugin-istanbul": "6.1.1", "codecov": "3.8.3", "cross-var": "1.1.0", - "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.2.1", @@ -99,7 +99,7 @@ "webpack-merge": "5.9.0" }, "dependencies": { - "@opentelemetry/core": "1.15.0", - "@opentelemetry/resources": "1.15.0" + "@opentelemetry/core": "1.15.1", + "@opentelemetry/resources": "1.15.1" } } diff --git a/experimental/packages/shim-opencensus/package.json b/experimental/packages/shim-opencensus/package.json index cf637d1a8d..b1724c988a 100644 --- a/experimental/packages/shim-opencensus/package.json +++ b/experimental/packages/shim-opencensus/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/shim-opencensus", - "version": "0.41.0", + "version": "0.41.1", "description": "OpenCensus to OpenTelemetry shim", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -50,8 +50,8 @@ "devDependencies": { "@opencensus/core": "0.1.0", "@opentelemetry/api": "1.4.1", - "@opentelemetry/context-async-hooks": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0", + "@opentelemetry/context-async-hooks": "1.15.1", + "@opentelemetry/sdk-trace-base": "1.15.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", @@ -69,7 +69,7 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.15.0", + "@opentelemetry/core": "1.15.1", "require-in-the-middle": "^7.1.1", "semver": "^7.5.1" }, diff --git a/integration-tests/propagation-validation-server/package.json b/integration-tests/propagation-validation-server/package.json index 0158a21f68..c027ea34c3 100644 --- a/integration-tests/propagation-validation-server/package.json +++ b/integration-tests/propagation-validation-server/package.json @@ -1,6 +1,6 @@ { "name": "propagation-validation-server", - "version": "1.15.0", + "version": "1.15.1", "description": "server for w3c tests", "main": "validation_server.js", "private": true, @@ -12,9 +12,9 @@ }, "dependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/context-async-hooks": "1.15.0", - "@opentelemetry/core": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0", + "@opentelemetry/context-async-hooks": "1.15.1", + "@opentelemetry/core": "1.15.1", + "@opentelemetry/sdk-trace-base": "1.15.1", "axios": "1.4.0", "body-parser": "1.19.0", "express": "4.17.3" diff --git a/packages/opentelemetry-context-async-hooks/package.json b/packages/opentelemetry-context-async-hooks/package.json index 01439b30f9..a753211702 100644 --- a/packages/opentelemetry-context-async-hooks/package.json +++ b/packages/opentelemetry-context-async-hooks/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/context-async-hooks", - "version": "1.15.0", + "version": "1.15.1", "description": "OpenTelemetry AsyncHooks-based Context Manager", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/packages/opentelemetry-context-zone-peer-dep/package.json b/packages/opentelemetry-context-zone-peer-dep/package.json index 0a7cab2c00..b375a49f9e 100644 --- a/packages/opentelemetry-context-zone-peer-dep/package.json +++ b/packages/opentelemetry-context-zone-peer-dep/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/context-zone-peer-dep", - "version": "1.15.0", + "version": "1.15.1", "description": "OpenTelemetry Context Zone with peer dependency for zone.js", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -61,9 +61,9 @@ "@types/webpack-env": "1.16.3", "@types/zone.js": "0.5.12", "babel-loader": "8.3.0", + "babel-plugin-istanbul": "6.1.1", "codecov": "3.8.3", "cross-var": "1.1.0", - "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.2.1", diff --git a/packages/opentelemetry-context-zone/package.json b/packages/opentelemetry-context-zone/package.json index 01fafc419f..ee7ba24069 100644 --- a/packages/opentelemetry-context-zone/package.json +++ b/packages/opentelemetry-context-zone/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/context-zone", - "version": "1.15.0", + "version": "1.15.1", "description": "OpenTelemetry Context Zone", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -75,7 +75,7 @@ "webpack-merge": "5.9.0" }, "dependencies": { - "@opentelemetry/context-zone-peer-dep": "1.15.0", + "@opentelemetry/context-zone-peer-dep": "1.15.1", "zone.js": "^0.11.0" }, "sideEffects": true, diff --git a/packages/opentelemetry-core/package.json b/packages/opentelemetry-core/package.json index 5340df9514..974185bdf0 100644 --- a/packages/opentelemetry-core/package.json +++ b/packages/opentelemetry-core/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/core", - "version": "1.15.0", + "version": "1.15.1", "description": "OpenTelemetry Core provides constants and utilities shared by all OpenTelemetry SDK packages.", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -69,9 +69,9 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", + "babel-plugin-istanbul": "6.1.1", "codecov": "3.8.3", "cross-var": "1.1.0", - "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.2.1", @@ -91,7 +91,7 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/semantic-conventions": "1.15.0" + "@opentelemetry/semantic-conventions": "1.15.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-core", "sideEffects": false diff --git a/packages/opentelemetry-exporter-jaeger/package.json b/packages/opentelemetry-exporter-jaeger/package.json index a595bf3e4c..437b2b1919 100644 --- a/packages/opentelemetry-exporter-jaeger/package.json +++ b/packages/opentelemetry-exporter-jaeger/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-jaeger", - "version": "1.15.0", + "version": "1.15.1", "description": "OpenTelemetry Exporter Jaeger allows user to send collected traces to Jaeger", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -45,7 +45,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/resources": "1.15.0", + "@opentelemetry/resources": "1.15.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", @@ -63,9 +63,9 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0", + "@opentelemetry/core": "1.15.1", + "@opentelemetry/sdk-trace-base": "1.15.1", + "@opentelemetry/semantic-conventions": "1.15.1", "jaeger-client": "^3.15.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-exporter-jaeger", diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index 0de3f4a5de..ff789993ae 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-zipkin", - "version": "1.15.0", + "version": "1.15.1", "description": "OpenTelemetry Zipkin Exporter allows the user to send collected traces to Zipkin.", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -67,9 +67,9 @@ "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "babel-loader": "8.3.0", + "babel-plugin-istanbul": "6.1.1", "codecov": "3.8.3", "cross-var": "1.1.0", - "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.2.1", @@ -92,10 +92,10 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.15.0", - "@opentelemetry/resources": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0" + "@opentelemetry/core": "1.15.1", + "@opentelemetry/resources": "1.15.1", + "@opentelemetry/sdk-trace-base": "1.15.1", + "@opentelemetry/semantic-conventions": "1.15.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-exporter-zipkin", "sideEffects": false diff --git a/packages/opentelemetry-propagator-b3/package.json b/packages/opentelemetry-propagator-b3/package.json index 2d0bbb4c51..dc771041f5 100644 --- a/packages/opentelemetry-propagator-b3/package.json +++ b/packages/opentelemetry-propagator-b3/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/propagator-b3", - "version": "1.15.0", + "version": "1.15.1", "description": "OpenTelemetry B3 propagator provides context propagation for systems that are using the B3 header format", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -51,7 +51,7 @@ "access": "public" }, "dependencies": { - "@opentelemetry/core": "1.15.0" + "@opentelemetry/core": "1.15.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.5.0" diff --git a/packages/opentelemetry-propagator-jaeger/package.json b/packages/opentelemetry-propagator-jaeger/package.json index a9b2e15612..487e6efa23 100644 --- a/packages/opentelemetry-propagator-jaeger/package.json +++ b/packages/opentelemetry-propagator-jaeger/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/propagator-jaeger", - "version": "1.15.0", + "version": "1.15.1", "description": "OpenTelemetry Jaeger propagator provides HTTP header propagation for systems that are using Jaeger HTTP header format.", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -59,9 +59,9 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", + "babel-plugin-istanbul": "6.1.1", "codecov": "3.8.3", "cross-var": "1.1.0", - "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.2.1", @@ -81,7 +81,7 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/core": "1.15.0" + "@opentelemetry/core": "1.15.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-propagator-jaeger", "sideEffects": false diff --git a/packages/opentelemetry-resources/package.json b/packages/opentelemetry-resources/package.json index dac50ececf..8889e298c6 100644 --- a/packages/opentelemetry-resources/package.json +++ b/packages/opentelemetry-resources/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resources", - "version": "1.15.0", + "version": "1.15.1", "description": "OpenTelemetry SDK resources", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -91,8 +91,8 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/core": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0" + "@opentelemetry/core": "1.15.1", + "@opentelemetry/semantic-conventions": "1.15.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-resources", "sideEffects": false diff --git a/packages/opentelemetry-sdk-trace-base/package.json b/packages/opentelemetry-sdk-trace-base/package.json index c0285dd5f4..7f9cdfe0a5 100644 --- a/packages/opentelemetry-sdk-trace-base/package.json +++ b/packages/opentelemetry-sdk-trace-base/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sdk-trace-base", - "version": "1.15.0", + "version": "1.15.1", "description": "OpenTelemetry Tracing", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -70,9 +70,9 @@ "@types/node": "18.6.5", "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", + "babel-plugin-istanbul": "6.1.1", "codecov": "3.8.3", "cross-var": "1.1.0", - "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.2.1", @@ -93,9 +93,9 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/core": "1.15.0", - "@opentelemetry/resources": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0" + "@opentelemetry/core": "1.15.1", + "@opentelemetry/resources": "1.15.1", + "@opentelemetry/semantic-conventions": "1.15.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-base", "sideEffects": false diff --git a/packages/opentelemetry-sdk-trace-node/package.json b/packages/opentelemetry-sdk-trace-node/package.json index fe776628b0..97b12571bb 100644 --- a/packages/opentelemetry-sdk-trace-node/package.json +++ b/packages/opentelemetry-sdk-trace-node/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sdk-trace-node", - "version": "1.15.0", + "version": "1.15.1", "description": "OpenTelemetry Node SDK provides automatic telemetry (tracing, metrics, etc) for Node.js applications", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,8 +46,8 @@ }, "devDependencies": { "@opentelemetry/api": ">=1.0.0 <1.5.0", - "@opentelemetry/resources": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0", + "@opentelemetry/resources": "1.15.1", + "@opentelemetry/semantic-conventions": "1.15.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/semver": "7.5.0", @@ -65,11 +65,11 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/context-async-hooks": "1.15.0", - "@opentelemetry/core": "1.15.0", - "@opentelemetry/propagator-b3": "1.15.0", - "@opentelemetry/propagator-jaeger": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0", + "@opentelemetry/context-async-hooks": "1.15.1", + "@opentelemetry/core": "1.15.1", + "@opentelemetry/propagator-b3": "1.15.1", + "@opentelemetry/propagator-jaeger": "1.15.1", + "@opentelemetry/sdk-trace-base": "1.15.1", "semver": "^7.5.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node", diff --git a/packages/opentelemetry-sdk-trace-web/package.json b/packages/opentelemetry-sdk-trace-web/package.json index e19b365b23..bcc00574fc 100644 --- a/packages/opentelemetry-sdk-trace-web/package.json +++ b/packages/opentelemetry-sdk-trace-web/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sdk-trace-web", - "version": "1.15.0", + "version": "1.15.1", "description": "OpenTelemetry Web Tracer", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -57,18 +57,18 @@ "devDependencies": { "@babel/core": "7.22.9", "@opentelemetry/api": ">=1.0.0 <1.5.0", - "@opentelemetry/context-zone": "1.15.0", - "@opentelemetry/propagator-b3": "1.15.0", - "@opentelemetry/resources": "1.15.0", + "@opentelemetry/context-zone": "1.15.1", + "@opentelemetry/propagator-b3": "1.15.1", + "@opentelemetry/resources": "1.15.1", "@types/jquery": "3.5.16", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", "@types/webpack-env": "1.16.3", "babel-loader": "8.3.0", + "babel-plugin-istanbul": "6.1.1", "codecov": "3.8.3", "cross-var": "1.1.0", - "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.2.1", @@ -92,9 +92,9 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/core": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0" + "@opentelemetry/core": "1.15.1", + "@opentelemetry/sdk-trace-base": "1.15.1", + "@opentelemetry/semantic-conventions": "1.15.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-web", "sideEffects": false diff --git a/packages/opentelemetry-semantic-conventions/package.json b/packages/opentelemetry-semantic-conventions/package.json index 367416299a..59473df709 100644 --- a/packages/opentelemetry-semantic-conventions/package.json +++ b/packages/opentelemetry-semantic-conventions/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/semantic-conventions", - "version": "1.15.0", + "version": "1.15.1", "description": "OpenTelemetry semantic conventions", "main": "build/src/index.js", "module": "build/esm/index.js", diff --git a/packages/opentelemetry-shim-opentracing/package.json b/packages/opentelemetry-shim-opentracing/package.json index fbbb58096c..26a8ba076e 100644 --- a/packages/opentelemetry-shim-opentracing/package.json +++ b/packages/opentelemetry-shim-opentracing/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/shim-opentracing", - "version": "1.15.0", + "version": "1.15.1", "description": "OpenTracing to OpenTelemetry shim", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -43,9 +43,9 @@ }, "devDependencies": { "@opentelemetry/api": ">=1.0.0 <1.5.0", - "@opentelemetry/propagator-b3": "1.15.0", - "@opentelemetry/propagator-jaeger": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0", + "@opentelemetry/propagator-b3": "1.15.1", + "@opentelemetry/propagator-jaeger": "1.15.1", + "@opentelemetry/sdk-trace-base": "1.15.1", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "codecov": "3.8.3", @@ -60,8 +60,8 @@ "@opentelemetry/api": ">=1.0.0 <1.5.0" }, "dependencies": { - "@opentelemetry/core": "1.15.0", - "@opentelemetry/semantic-conventions": "1.15.0", + "@opentelemetry/core": "1.15.1", + "@opentelemetry/semantic-conventions": "1.15.1", "opentracing": "^0.14.4" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-shim-opentracing", diff --git a/packages/sdk-metrics/package.json b/packages/sdk-metrics/package.json index 7aaf05fd68..f0abbe927a 100644 --- a/packages/sdk-metrics/package.json +++ b/packages/sdk-metrics/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sdk-metrics", - "version": "1.15.0", + "version": "1.15.1", "description": "OpenTelemetry metrics SDK", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -54,15 +54,15 @@ "access": "public" }, "devDependencies": { + "@babel/core": "7.22.9", "@opentelemetry/api": ">=1.3.0 <1.5.0", "@types/lodash.merge": "4.6.7", - "@babel/core": "7.22.9", "@types/mocha": "10.0.1", "@types/node": "18.6.5", "@types/sinon": "10.0.15", + "babel-plugin-istanbul": "6.1.1", "codecov": "3.8.3", "cross-var": "1.1.0", - "babel-plugin-istanbul": "6.1.1", "karma": "6.4.2", "karma-chrome-launcher": "3.1.0", "karma-coverage": "2.2.1", @@ -84,8 +84,8 @@ "@opentelemetry/api": ">=1.3.0 <1.5.0" }, "dependencies": { - "@opentelemetry/core": "1.15.0", - "@opentelemetry/resources": "1.15.0", + "@opentelemetry/core": "1.15.1", + "@opentelemetry/resources": "1.15.1", "lodash.merge": "^4.6.2" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/sdk-metrics", diff --git a/packages/template/package.json b/packages/template/package.json index 3949c871fa..4cbc426dde 100644 --- a/packages/template/package.json +++ b/packages/template/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/template", - "version": "1.15.0", + "version": "1.15.1", "private": true, "publishConfig": { "access": "restricted" diff --git a/selenium-tests/package.json b/selenium-tests/package.json index 16f2d6e9bc..04d420abec 100644 --- a/selenium-tests/package.json +++ b/selenium-tests/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/selenium-tests", - "version": "1.15.0", + "version": "1.15.1", "private": true, "description": "OpenTelemetry Selenium Tests", "main": "index.js", @@ -56,16 +56,16 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/context-zone-peer-dep": "1.15.0", - "@opentelemetry/core": "1.15.0", - "@opentelemetry/exporter-trace-otlp-http": "0.41.0", - "@opentelemetry/exporter-zipkin": "1.15.0", - "@opentelemetry/instrumentation": "0.41.0", - "@opentelemetry/instrumentation-fetch": "0.41.0", - "@opentelemetry/instrumentation-xml-http-request": "0.41.0", - "@opentelemetry/sdk-metrics": "1.15.0", - "@opentelemetry/sdk-trace-base": "1.15.0", - "@opentelemetry/sdk-trace-web": "1.15.0", + "@opentelemetry/context-zone-peer-dep": "1.15.1", + "@opentelemetry/core": "1.15.1", + "@opentelemetry/exporter-trace-otlp-http": "0.41.1", + "@opentelemetry/exporter-zipkin": "1.15.1", + "@opentelemetry/instrumentation": "0.41.1", + "@opentelemetry/instrumentation-fetch": "0.41.1", + "@opentelemetry/instrumentation-xml-http-request": "0.41.1", + "@opentelemetry/sdk-metrics": "1.15.1", + "@opentelemetry/sdk-trace-base": "1.15.1", + "@opentelemetry/sdk-trace-web": "1.15.1", "zone.js": "0.11.4" } }