From e966dc535bd38b8c9e6cfc6807b3cad421cff79e Mon Sep 17 00:00:00 2001 From: Godfrey Chan <godfreykfc@gmail.com> Date: Wed, 29 Jan 2025 01:57:47 -0800 Subject: [PATCH 01/16] refactor(sdk-metrics): fix eslint warning (#5386) --- packages/sdk-metrics/src/state/DeltaMetricProcessor.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/sdk-metrics/src/state/DeltaMetricProcessor.ts b/packages/sdk-metrics/src/state/DeltaMetricProcessor.ts index 288885f8f93..926bbf952ff 100644 --- a/packages/sdk-metrics/src/state/DeltaMetricProcessor.ts +++ b/packages/sdk-metrics/src/state/DeltaMetricProcessor.ts @@ -93,6 +93,8 @@ export class DeltaMetricProcessor<T extends Maybe<Accumulation>> { attributes = this._overflowAttributes; hashCode = this._overflowHashCode; if (this._cumulativeMemoStorage.has(attributes, hashCode)) { + // has() returned true, previous is present. + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const previous = this._cumulativeMemoStorage.get( attributes, hashCode @@ -103,7 +105,7 @@ export class DeltaMetricProcessor<T extends Maybe<Accumulation>> { } // Merge with uncollected active delta. if (this._activeCollectionStorage.has(attributes, hashCode)) { - // has() returned true, previous is present. + // has() returned true, active is present. // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const active = this._activeCollectionStorage.get( attributes, From d2812d2810a812f069f7d40fb9c6c870e30fb8e0 Mon Sep 17 00:00:00 2001 From: Godfrey Chan <godfreykfc@gmail.com> Date: Wed, 29 Jan 2025 02:08:18 -0800 Subject: [PATCH 02/16] refactor(instrumentation): fix eslint warnings (#5389) --- .../opentelemetry-instrumentation/src/types.ts | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/experimental/packages/opentelemetry-instrumentation/src/types.ts b/experimental/packages/opentelemetry-instrumentation/src/types.ts index 27a8574fcd1..6df94e6c39a 100644 --- a/experimental/packages/opentelemetry-instrumentation/src/types.ts +++ b/experimental/packages/opentelemetry-instrumentation/src/types.ts @@ -135,15 +135,12 @@ export interface InstrumentationModuleDefinition { includePrerelease?: boolean; /** Method to patch the instrumentation */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - patch?: - | ((moduleExports: any, moduleVersion?: string | undefined) => any) - | undefined; + patch?: // eslint-disable-next-line @typescript-eslint/no-explicit-any + ((moduleExports: any, moduleVersion?: string | undefined) => any) | undefined; /** Method to unpatch the instrumentation */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - unpatch?: - | ((moduleExports: any, moduleVersion?: string | undefined) => void) + unpatch?: // eslint-disable-next-line @typescript-eslint/no-explicit-any + | ((moduleExports: any, moduleVersion?: string | undefined) => void) | undefined; } From 682ab65f7ce3971064f8f27b4118c5338e4c98ca Mon Sep 17 00:00:00 2001 From: Godfrey Chan <godfreykfc@gmail.com> Date: Wed, 29 Jan 2025 02:12:21 -0800 Subject: [PATCH 03/16] refactor(sdk-trace-web): fix eslint warning (#5388) --- packages/opentelemetry-sdk-trace-web/src/utils.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/opentelemetry-sdk-trace-web/src/utils.ts b/packages/opentelemetry-sdk-trace-web/src/utils.ts index e8fe4ef1d69..fb6df1d5cb6 100644 --- a/packages/opentelemetry-sdk-trace-web/src/utils.ts +++ b/packages/opentelemetry-sdk-trace-web/src/utils.ts @@ -46,10 +46,9 @@ function getUrlNormalizingAnchor(): HTMLAnchorElement { * @param obj * @param key */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any export function hasKey<O extends object>( obj: O, - key: keyof any + key: PropertyKey ): key is keyof O { return key in obj; } @@ -67,8 +66,8 @@ export function addSpanNetworkEvent( entries: PerformanceEntries, refPerfName?: string ): api.Span | undefined { - let perfTime = undefined; - let refTime = undefined; + let perfTime: number | undefined; + let refTime: number | undefined; if ( hasKey(entries, performanceName) && typeof entries[performanceName] === 'number' From 23adb2bdc57b9ef6935b9c07504017fef6da7baa Mon Sep 17 00:00:00 2001 From: Marc Pichler <marc.pichler@dynatrace.com> Date: Wed, 29 Jan 2025 11:12:46 +0100 Subject: [PATCH 04/16] docs(instrumenation-http): reword documentation about what is geneated (#5378) --- .../packages/opentelemetry-instrumentation-http/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/experimental/packages/opentelemetry-instrumentation-http/README.md b/experimental/packages/opentelemetry-instrumentation-http/README.md index 8237f30d1bc..5d00dcaecc8 100644 --- a/experimental/packages/opentelemetry-instrumentation-http/README.md +++ b/experimental/packages/opentelemetry-instrumentation-http/README.md @@ -22,7 +22,7 @@ npm install --save @opentelemetry/instrumentation-http ## Usage -OpenTelemetry HTTP Instrumentation allows the user to automatically collect trace data and export them to their backend of choice, to give observability to distributed systems. +OpenTelemetry HTTP Instrumentation allows the user to automatically collect telemetry and export it to their backend of choice, to give observability to distributed systems. To load a specific instrumentation (HTTP in this case), specify it in the Node Tracer's configuration. From 2759d73ed56c0ecce6de5ad66a30b0fc6048e386 Mon Sep 17 00:00:00 2001 From: Godfrey Chan <godfreykfc@gmail.com> Date: Wed, 29 Jan 2025 02:17:47 -0800 Subject: [PATCH 05/16] refactor(sdk-trace-node): fix eslint warning (#5387) --- .../test/registration.test.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/opentelemetry-sdk-trace-node/test/registration.test.ts b/packages/opentelemetry-sdk-trace-node/test/registration.test.ts index 2b1466b1791..0a185b60763 100644 --- a/packages/opentelemetry-sdk-trace-node/test/registration.test.ts +++ b/packages/opentelemetry-sdk-trace-node/test/registration.test.ts @@ -27,10 +27,13 @@ import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-ho import { CompositePropagator } from '@opentelemetry/core'; import { NodeTracerProvider } from '../src'; -const assertInstanceOf = (actual: object, ExpectedInstance: Function) => { +// Here we are looking for a `AnyConstructor` type, and `Function` is a close +// enough approximation that exists in the standard library. +// eslint-disable-next-line @typescript-eslint/ban-types +const assertInstanceOf = (actual: object, ExpectedConstructor: Function) => { assert.ok( - actual instanceof ExpectedInstance, - `Expected ${inspect(actual)} to be instance of ${ExpectedInstance.name}` + actual instanceof ExpectedConstructor, + `Expected ${inspect(actual)} to be instance of ${ExpectedConstructor.name}` ); }; From 22569aca32284d549101c930940ee14db6cadf6e Mon Sep 17 00:00:00 2001 From: Godfrey Chan <godfreykfc@gmail.com> Date: Wed, 29 Jan 2025 03:53:18 -0800 Subject: [PATCH 06/16] fix(exporter-zipkin): remove deprecated `url.parse` usage (#5390) --- CHANGELOG.md | 1 + .../src/platform/node/util.ts | 22 ++++++++----------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f1925505a06..a0c9f2ea360 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -61,6 +61,7 @@ For semantic convention package changes, see the [semconv CHANGELOG](packages/se ### :bug: (Bug Fix) +* fix(exporter-zipkin): remove usages of deprecated `url.parse` from `node:url` [#5390](https://github.com/open-telemetry/opentelemetry-js/pull/5390) @chancancode * fix(sdk-metrics): do not export from `PeriodicExportingMetricReader` when there are no metrics to export. [#5288](https://github.com/open-telemetry/opentelemetry-js/pull/5288) @jacksonweber ### :books: (Refine Doc) diff --git a/packages/opentelemetry-exporter-zipkin/src/platform/node/util.ts b/packages/opentelemetry-exporter-zipkin/src/platform/node/util.ts index 8835177ccda..93d29ccd0da 100644 --- a/packages/opentelemetry-exporter-zipkin/src/platform/node/util.ts +++ b/packages/opentelemetry-exporter-zipkin/src/platform/node/util.ts @@ -18,7 +18,6 @@ import { diag } from '@opentelemetry/api'; import { ExportResult, ExportResultCode } from '@opentelemetry/core'; import * as http from 'http'; import * as https from 'https'; -import * as url from 'url'; import * as zipkinTypes from '../../types'; /** @@ -31,18 +30,15 @@ export function prepareSend( urlStr: string, headers?: Record<string, string> ): zipkinTypes.SendFn { - const urlOpts = url.parse(urlStr); + const url = new URL(urlStr); - const reqOpts: http.RequestOptions = Object.assign( - { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - ...headers, - }, + const reqOpts: http.RequestOptions = Object.assign({ + method: 'POST', + headers: { + 'Content-Type': 'application/json', + ...headers, }, - urlOpts - ); + }); /** * Send spans to the remote Zipkin service. @@ -56,8 +52,8 @@ export function prepareSend( return done({ code: ExportResultCode.SUCCESS }); } - const { request } = reqOpts.protocol === 'http:' ? http : https; - const req = request(reqOpts, (res: http.IncomingMessage) => { + const { request } = url.protocol === 'http:' ? http : https; + const req = request(url, reqOpts, (res: http.IncomingMessage) => { let rawData = ''; res.on('data', chunk => { rawData += chunk; From a686b88bf562c074a14fc346ef94828e2928a7ad Mon Sep 17 00:00:00 2001 From: Godfrey Chan <godfreykfc@gmail.com> Date: Wed, 29 Jan 2025 03:54:56 -0800 Subject: [PATCH 07/16] refactor(browser-detector): fix eslint warning (#5384) --- .../opentelemetry-browser-detector/src/BrowserDetector.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/experimental/packages/opentelemetry-browser-detector/src/BrowserDetector.ts b/experimental/packages/opentelemetry-browser-detector/src/BrowserDetector.ts index 5d82f5be717..041781490f5 100644 --- a/experimental/packages/opentelemetry-browser-detector/src/BrowserDetector.ts +++ b/experimental/packages/opentelemetry-browser-detector/src/BrowserDetector.ts @@ -63,8 +63,9 @@ class BrowserDetector implements Detector { // Add Browser related attributes to resources function getBrowserAttributes(): Attributes { const browserAttribs: Attributes = {}; - const userAgentData: UserAgentData | undefined = (navigator as any) - .userAgentData; + const userAgentData = ( + navigator as Navigator & { userAgentData?: UserAgentData } + ).userAgentData; if (userAgentData) { browserAttribs[BROWSER_ATTRIBUTES.PLATFORM] = userAgentData.platform; browserAttribs[BROWSER_ATTRIBUTES.BRANDS] = userAgentData.brands.map( From 1c6c39b45451b0603074bfabb2352ae56541fa8c Mon Sep 17 00:00:00 2001 From: Godfrey Chan <godfreykfc@gmail.com> Date: Wed, 29 Jan 2025 03:57:53 -0800 Subject: [PATCH 08/16] refactor(core): fix eslint warning (#5382) --- .../src/utils/lodash.merge.ts | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/packages/opentelemetry-core/src/utils/lodash.merge.ts b/packages/opentelemetry-core/src/utils/lodash.merge.ts index 25e092b8d6b..8aa649d6848 100644 --- a/packages/opentelemetry-core/src/utils/lodash.merge.ts +++ b/packages/opentelemetry-core/src/utils/lodash.merge.ts @@ -27,26 +27,12 @@ const undefinedTag = '[object Undefined]'; const funcProto = Function.prototype; const funcToString = funcProto.toString; const objectCtorString = funcToString.call(Object); -const getPrototype = overArg(Object.getPrototypeOf, Object); +const getPrototypeOf = Object.getPrototypeOf; const objectProto = Object.prototype; const hasOwnProperty = objectProto.hasOwnProperty; const symToStringTag = Symbol ? Symbol.toStringTag : undefined; const nativeObjectToString = objectProto.toString; -/** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ -function overArg(func: Function, transform: any): any { - return function (arg: any) { - return func(transform(arg)); - }; -} - /** * Checks if `value` is a plain object, that is, an object created by the * `Object` constructor or one with a `[[Prototype]]` of `null`. @@ -79,7 +65,7 @@ export function isPlainObject(value: any) { if (!isObjectLike(value) || baseGetTag(value) !== objectTag) { return false; } - const proto = getPrototype(value); + const proto = getPrototypeOf(value); if (proto === null) { return true; } From 3c040c4ef0ca372dcab9c76693ea5de3e3e79b52 Mon Sep 17 00:00:00 2001 From: Godfrey Chan <godfreykfc@gmail.com> Date: Wed, 29 Jan 2025 09:49:04 -0800 Subject: [PATCH 09/16] fix(inst-fetch,inst-xhr) Ignore network events with zero-timing (#5332) --- experimental/CHANGELOG.md | 1 + .../test/fetch.test.ts | 48 +++-- .../test/xhr.test.ts | 53 +++-- .../src/enums/PerformanceTimingNames.ts | 1 + .../opentelemetry-sdk-trace-web/src/types.ts | 1 + .../opentelemetry-sdk-trace-web/src/utils.ts | 60 +++--- .../test/utils.test.ts | 195 +++++++++++------- 7 files changed, 208 insertions(+), 151 deletions(-) diff --git a/experimental/CHANGELOG.md b/experimental/CHANGELOG.md index 78474085545..d19f5000370 100644 --- a/experimental/CHANGELOG.md +++ b/experimental/CHANGELOG.md @@ -25,6 +25,7 @@ All notable changes to experimental packages in this project will be documented * fix(instrumentation-grpc): monitor error events with events.errorMonitor [#5369](https://github.com/open-telemetry/opentelemetry-js/pull/5369) @cjihrig * fix(exporter-metrics-otlp-http): browser OTLPMetricExporter was not passing config to OTLPMetricExporterBase super class [#5331](https://github.com/open-telemetry/opentelemetry-js/pull/5331) @trentm +* fix(instrumentation-fetch, instrumentation-xhr): Ignore network events with zero-timings [#5332](https://github.com/open-telemetry/opentelemetry-js/pull/5332) @chancancode ### :books: (Refine Doc) diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/test/fetch.test.ts b/experimental/packages/opentelemetry-instrumentation-fetch/test/fetch.test.ts index f81336ae4f6..faf2f6b6502 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/test/fetch.test.ts +++ b/experimental/packages/opentelemetry-instrumentation-fetch/test/fetch.test.ts @@ -90,27 +90,27 @@ const textToReadableStream = (msg: string): ReadableStream => { const CUSTOM_ATTRIBUTE_KEY = 'span kind'; const defaultResource = { - connectEnd: 15, - connectStart: 13, - decodedBodySize: 0, - domainLookupEnd: 12, - domainLookupStart: 11, - encodedBodySize: 0, - fetchStart: 10.1, + entryType: 'resource', + name: '', initiatorType: 'fetch', - nextHopProtocol: '', - redirectEnd: 0, + startTime: 10.1, redirectStart: 0, + redirectEnd: 0, + workerStart: 0, + fetchStart: 10.1, + domainLookupStart: 11, + domainLookupEnd: 12, + connectStart: 13, + secureConnectionStart: 0, + connectEnd: 15, requestStart: 16, - responseEnd: 20.5, responseStart: 17, - secureConnectionStart: 14, + responseEnd: 20.5, + duration: 10.4, + decodedBodySize: 30, + encodedBodySize: 30, transferSize: 0, - workerStart: 0, - duration: 0, - entryType: '', - name: '', - startTime: 0, + nextHopProtocol: '', }; function createResource(resource = {}): PerformanceResourceTiming { @@ -124,7 +124,7 @@ function createResource(resource = {}): PerformanceResourceTiming { function createMainResource(resource = {}): PerformanceResourceTiming { const mainResource: any = createResource(resource); Object.keys(mainResource).forEach((key: string) => { - if (typeof mainResource[key] === 'number') { + if (typeof mainResource[key] === 'number' && mainResource[key] !== 0) { mainResource[key] = mainResource[key] + 30; } }); @@ -139,8 +139,14 @@ function createFakePerformanceObs(url: string) { const resources: PerformanceObserverEntryList = { getEntries(): PerformanceEntryList { return [ - createResource({ name: absoluteUrl }) as any, - createMainResource({ name: absoluteUrl }) as any, + createResource({ + name: absoluteUrl, + [PTN.SECURE_CONNECTION_START]: url.startsWith('https:') ? 14 : 0, + }) as any, + createMainResource({ + name: absoluteUrl, + [PTN.SECURE_CONNECTION_START]: url.startsWith('https:') ? 14 : 0, + }) as any, ]; }, getEntriesByName(): PerformanceEntryList { @@ -458,7 +464,7 @@ describe('fetch', () => { ] as number; assert.strictEqual( responseContentLength, - 30, + 60, `attributes ${SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH} is <= 0` ); @@ -1217,7 +1223,7 @@ describe('fetch', () => { ] as number; assert.strictEqual( responseContentLength, - 30, + 60, `attributes ${SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH} is <= 0` ); }); 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 cd9d18e84b7..823d6f942e9 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 @@ -134,28 +134,37 @@ const postData = ( function createResource(resource = {}): PerformanceResourceTiming { const defaultResource = { - connectEnd: 15, - connectStart: 13, - decodedBodySize: 0, - domainLookupEnd: 12, - domainLookupStart: 11, - encodedBodySize: 0, - fetchStart: 10.1, + entryType: 'resource', + name: '', initiatorType: 'xmlhttprequest', - nextHopProtocol: '', - redirectEnd: 0, + startTime: 10.1, redirectStart: 0, + redirectEnd: 0, + workerStart: 0, + fetchStart: 10.1, + domainLookupStart: 11, + domainLookupEnd: 12, + connectStart: 13, + secureConnectionStart: 0, + connectEnd: 15, requestStart: 16, - responseEnd: 20.5, responseStart: 17, - secureConnectionStart: 14, + responseEnd: 20.5, + duration: 10.4, + decodedBodySize: 30, + encodedBodySize: 30, transferSize: 0, - workerStart: 0, - duration: 0, - entryType: '', - name: '', - startTime: 0, + nextHopProtocol: '', }; + + if ( + 'name' in resource && + typeof resource.name === 'string' && + resource.name.startsWith('https:') + ) { + defaultResource.secureConnectionStart = 14; + } + return Object.assign( {}, defaultResource, @@ -166,7 +175,7 @@ function createResource(resource = {}): PerformanceResourceTiming { function createMainResource(resource = {}): PerformanceResourceTiming { const mainResource: any = createResource(resource); Object.keys(mainResource).forEach((key: string) => { - if (typeof mainResource[key] === 'number') { + if (typeof mainResource[key] === 'number' && mainResource[key] !== 0) { mainResource[key] = mainResource[key] + 30; } }); @@ -424,7 +433,7 @@ describe('xhr', () => { ] as number; assert.strictEqual( responseContentLength, - 30, + 60, `attributes ${SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH} <= 0` ); assert.strictEqual( @@ -868,7 +877,7 @@ describe('xhr', () => { ] as number; assert.strictEqual( responseContentLength, - 30, + 60, `attributes ${SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH} is <= 0` ); }); @@ -1052,7 +1061,7 @@ describe('xhr', () => { ] as number; assert.strictEqual( responseContentLength, - 0, + 30, `attributes ${SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH} <= 0` ); assert.strictEqual( @@ -1622,7 +1631,7 @@ describe('xhr', () => { ] as number; assert.strictEqual( responseContentLength, - 30, + 60, `attributes ${SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH} <= 0` ); assert.strictEqual( @@ -2236,7 +2245,7 @@ describe('xhr', () => { ] as number; assert.strictEqual( responseContentLength, - 0, + 30, `attributes ${SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH} <= 0` ); assert.strictEqual( diff --git a/packages/opentelemetry-sdk-trace-web/src/enums/PerformanceTimingNames.ts b/packages/opentelemetry-sdk-trace-web/src/enums/PerformanceTimingNames.ts index 6730e5e2c11..252562af981 100644 --- a/packages/opentelemetry-sdk-trace-web/src/enums/PerformanceTimingNames.ts +++ b/packages/opentelemetry-sdk-trace-web/src/enums/PerformanceTimingNames.ts @@ -35,6 +35,7 @@ export enum PerformanceTimingNames { RESPONSE_END = 'responseEnd', RESPONSE_START = 'responseStart', SECURE_CONNECTION_START = 'secureConnectionStart', + START_TIME = 'startTime', UNLOAD_EVENT_END = 'unloadEventEnd', UNLOAD_EVENT_START = 'unloadEventStart', } diff --git a/packages/opentelemetry-sdk-trace-web/src/types.ts b/packages/opentelemetry-sdk-trace-web/src/types.ts index 076665cc3f6..00664234d08 100644 --- a/packages/opentelemetry-sdk-trace-web/src/types.ts +++ b/packages/opentelemetry-sdk-trace-web/src/types.ts @@ -35,6 +35,7 @@ export type PerformanceEntries = { [PerformanceTimingNames.RESPONSE_END]?: number; [PerformanceTimingNames.RESPONSE_START]?: number; [PerformanceTimingNames.SECURE_CONNECTION_START]?: number; + [PerformanceTimingNames.START_TIME]?: number; [PerformanceTimingNames.UNLOAD_EVENT_END]?: number; [PerformanceTimingNames.UNLOAD_EVENT_START]?: number; }; diff --git a/packages/opentelemetry-sdk-trace-web/src/utils.ts b/packages/opentelemetry-sdk-trace-web/src/utils.ts index fb6df1d5cb6..2767b3ea5d3 100644 --- a/packages/opentelemetry-sdk-trace-web/src/utils.ts +++ b/packages/opentelemetry-sdk-trace-web/src/utils.ts @@ -58,32 +58,22 @@ export function hasKey<O extends object>( * @param span * @param performanceName name of performance entry for time start * @param entries - * @param refPerfName name of performance entry to use for reference + * @param ignoreZeros */ export function addSpanNetworkEvent( span: api.Span, performanceName: string, entries: PerformanceEntries, - refPerfName?: string + ignoreZeros = true ): api.Span | undefined { - let perfTime: number | undefined; - let refTime: number | undefined; if ( hasKey(entries, performanceName) && - typeof entries[performanceName] === 'number' + typeof entries[performanceName] === 'number' && + !(ignoreZeros && entries[performanceName] === 0) ) { - perfTime = entries[performanceName]; - } - const refName = refPerfName || PTN.FETCH_START; - // Use a reference time which is the earliest possible value so that the performance timings that are earlier should not be added - // using FETCH START time in case no reference is provided - if (hasKey(entries, refName) && typeof entries[refName] === 'number') { - refTime = entries[refName]; - } - if (perfTime !== undefined && refTime !== undefined && perfTime >= refTime) { - span.addEvent(performanceName, perfTime); - return span; + return span.addEvent(performanceName, entries[performanceName]); } + return undefined; } @@ -92,32 +82,40 @@ export function addSpanNetworkEvent( * @param span * @param resource * @param ignoreNetworkEvents + * @param ignoreZeros */ export function addSpanNetworkEvents( span: api.Span, resource: PerformanceEntries, - ignoreNetworkEvents = false + ignoreNetworkEvents = false, + ignoreZeros?: boolean ): void { + if (ignoreZeros === undefined) { + ignoreZeros = resource[PTN.START_TIME] !== 0; + } + if (!ignoreNetworkEvents) { - addSpanNetworkEvent(span, PTN.FETCH_START, resource); - addSpanNetworkEvent(span, PTN.DOMAIN_LOOKUP_START, resource); - addSpanNetworkEvent(span, PTN.DOMAIN_LOOKUP_END, resource); - addSpanNetworkEvent(span, PTN.CONNECT_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); - addSpanNetworkEvent(span, PTN.RESPONSE_END, resource); + addSpanNetworkEvent(span, PTN.FETCH_START, resource, ignoreZeros); + addSpanNetworkEvent(span, PTN.DOMAIN_LOOKUP_START, resource, ignoreZeros); + addSpanNetworkEvent(span, PTN.DOMAIN_LOOKUP_END, resource, ignoreZeros); + addSpanNetworkEvent(span, PTN.CONNECT_START, resource, ignoreZeros); + addSpanNetworkEvent( + span, + PTN.SECURE_CONNECTION_START, + resource, + ignoreZeros + ); + addSpanNetworkEvent(span, PTN.CONNECT_END, resource, ignoreZeros); + addSpanNetworkEvent(span, PTN.REQUEST_START, resource, ignoreZeros); + addSpanNetworkEvent(span, PTN.RESPONSE_START, resource, ignoreZeros); + addSpanNetworkEvent(span, PTN.RESPONSE_END, resource, ignoreZeros); } + const encodedLength = resource[PTN.ENCODED_BODY_SIZE]; if (encodedLength !== undefined) { span.setAttribute(SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH, encodedLength); } + const decodedLength = resource[PTN.DECODED_BODY_SIZE]; // Spec: Not set if transport encoding not used (in which case encoded and decoded sizes match) if (decodedLength !== undefined && encodedLength !== decodedLength) { diff --git a/packages/opentelemetry-sdk-trace-web/test/utils.test.ts b/packages/opentelemetry-sdk-trace-web/test/utils.test.ts index 0011dde1485..46e9ed33c26 100644 --- a/packages/opentelemetry-sdk-trace-web/test/utils.test.ts +++ b/packages/opentelemetry-sdk-trace-web/test/utils.test.ts @@ -100,6 +100,7 @@ describe('utils', () => { setAttribute: setAttributeSpy, } as unknown as tracing.Span; const entries = { + [PTN.START_TIME]: 123, [PTN.FETCH_START]: 123, [PTN.DOMAIN_LOOKUP_START]: 123, [PTN.DOMAIN_LOOKUP_END]: 123, @@ -113,21 +114,13 @@ describe('utils', () => { [PTN.ENCODED_BODY_SIZE]: 61, } as PerformanceEntries; + assert.strictEqual(setAttributeSpy.callCount, 0); assert.strictEqual(addEventSpy.callCount, 0); addSpanNetworkEvents(span, entries); 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 ignore network events when ignoreNetworkEvents is true', () => { const addEventSpy = sinon.spy(); const setAttributeSpy = sinon.spy(); @@ -136,6 +129,7 @@ describe('utils', () => { setAttribute: setAttributeSpy, } as unknown as tracing.Span; const entries = { + [PTN.START_TIME]: 123, [PTN.FETCH_START]: 123, [PTN.DOMAIN_LOOKUP_START]: 123, [PTN.DOMAIN_LOOKUP_END]: 123, @@ -149,13 +143,100 @@ describe('utils', () => { [PTN.ENCODED_BODY_SIZE]: 61, } as PerformanceEntries; + assert.strictEqual(setAttributeSpy.callCount, 0); assert.strictEqual(addEventSpy.callCount, 0); addSpanNetworkEvents(span, entries, true); assert.strictEqual(setAttributeSpy.callCount, 2); - //secure connect start should not be added to non-https resource assert.strictEqual(addEventSpy.callCount, 0); }); + it('should ignore zero timings by default', () => { + const addEventSpy = sinon.spy(); + const setAttributeSpy = sinon.spy(); + const span = { + addEvent: addEventSpy, + setAttribute: setAttributeSpy, + } as unknown as tracing.Span; + const entries = { + [PTN.START_TIME]: 123, + [PTN.FETCH_START]: 123, + [PTN.DOMAIN_LOOKUP_START]: 0, + [PTN.DOMAIN_LOOKUP_END]: 0, + [PTN.CONNECT_START]: 0, + [PTN.SECURE_CONNECTION_START]: 0, + [PTN.CONNECT_END]: 0, + [PTN.REQUEST_START]: 0, + [PTN.RESPONSE_START]: 0, + [PTN.RESPONSE_END]: 130, + [PTN.DECODED_BODY_SIZE]: 0, + [PTN.ENCODED_BODY_SIZE]: 0, + } as PerformanceEntries; + + assert.strictEqual(setAttributeSpy.callCount, 0); + assert.strictEqual(addEventSpy.callCount, 0); + + addSpanNetworkEvents(span, entries); + assert.strictEqual(setAttributeSpy.callCount, 1); + assert.strictEqual(addEventSpy.callCount, 2); + }); + it('should not ignore zero timings by default if startTime = 0', () => { + const addEventSpy = sinon.spy(); + const setAttributeSpy = sinon.spy(); + const span = { + addEvent: addEventSpy, + setAttribute: setAttributeSpy, + } as unknown as tracing.Span; + const entries = { + [PTN.START_TIME]: 0, + [PTN.FETCH_START]: 0, + [PTN.DOMAIN_LOOKUP_START]: 0, + [PTN.DOMAIN_LOOKUP_END]: 0, + [PTN.CONNECT_START]: 0, + [PTN.SECURE_CONNECTION_START]: 0, + [PTN.CONNECT_END]: 1, + [PTN.REQUEST_START]: 2, + [PTN.RESPONSE_START]: 3, + [PTN.RESPONSE_END]: 4, + [PTN.DECODED_BODY_SIZE]: 123, + [PTN.ENCODED_BODY_SIZE]: 61, + } as PerformanceEntries; + + assert.strictEqual(setAttributeSpy.callCount, 0); + assert.strictEqual(addEventSpy.callCount, 0); + + addSpanNetworkEvents(span, entries); + assert.strictEqual(setAttributeSpy.callCount, 2); + assert.strictEqual(addEventSpy.callCount, 9); + }); + it('should not ignore zero timings if ignoreZeros = false', () => { + const addEventSpy = sinon.spy(); + const setAttributeSpy = sinon.spy(); + const span = { + addEvent: addEventSpy, + setAttribute: setAttributeSpy, + } as unknown as tracing.Span; + const entries = { + [PTN.START_TIME]: 123, + [PTN.FETCH_START]: 123, + [PTN.DOMAIN_LOOKUP_START]: 0, + [PTN.DOMAIN_LOOKUP_END]: 0, + [PTN.CONNECT_START]: 0, + [PTN.SECURE_CONNECTION_START]: 0, + [PTN.CONNECT_END]: 0, + [PTN.REQUEST_START]: 0, + [PTN.RESPONSE_START]: 0, + [PTN.RESPONSE_END]: 130, + [PTN.DECODED_BODY_SIZE]: 0, + [PTN.ENCODED_BODY_SIZE]: 0, + } as PerformanceEntries; + + assert.strictEqual(setAttributeSpy.callCount, 0); + assert.strictEqual(addEventSpy.callCount, 0); + + addSpanNetworkEvents(span, entries, false, false); + assert.strictEqual(setAttributeSpy.callCount, 1); + assert.strictEqual(addEventSpy.callCount, 9); + }); it('should only include encoded size when content encoding is being used', () => { const addEventSpy = sinon.spy(); const setAttributeSpy = sinon.spy(); @@ -177,7 +258,7 @@ describe('utils', () => { }); }); describe('addSpanNetworkEvent', () => { - [0, -2, 123].forEach(value => { + [-2, 123].forEach(value => { describe(`when entry is ${value}`, () => { it('should add event to span', () => { const addEventSpy = sinon.spy(); @@ -200,122 +281,82 @@ describe('utils', () => { }); }); }); - describe('when entry is not numeric', () => { - it('should NOT add event to span', () => { + describe(`when entry is zero`, () => { + it('should not add event to span by default', () => { const addEventSpy = sinon.spy(); const span = { addEvent: addEventSpy, } as unknown as tracing.Span; const entries = { - [PTN.FETCH_START]: 'non-numeric', - } as unknown; + [PTN.SECURE_CONNECTION_START]: 0, + } as PerformanceEntries; assert.strictEqual(addEventSpy.callCount, 0); - addSpanNetworkEvent( - span, - PTN.FETCH_START, - entries as PerformanceEntries - ); + addSpanNetworkEvent(span, PTN.SECURE_CONNECTION_START, entries); assert.strictEqual(addEventSpy.callCount, 0); }); - }); - describe('when entries does NOT contain the performance', () => { - it('should NOT add event to span', () => { + it('should add event to span if ignoreZeros = false', () => { const addEventSpy = sinon.spy(); const span = { addEvent: addEventSpy, } as unknown as tracing.Span; const entries = { - [PTN.FETCH_START]: 123, + [PTN.SECURE_CONNECTION_START]: 0, } as PerformanceEntries; assert.strictEqual(addEventSpy.callCount, 0); - addSpanNetworkEvent(span, 'foo', entries); + addSpanNetworkEvent(span, PTN.SECURE_CONNECTION_START, entries, false); - assert.strictEqual( - addEventSpy.callCount, - 0, - 'should not call addEvent' - ); + assert.strictEqual(addEventSpy.callCount, 1); + const args = addEventSpy.args[0]; + + assert.strictEqual(args[0], 'secureConnectionStart'); + assert.strictEqual(args[1], 0); }); }); - describe('when entries contain invalid performance timing', () => { - it('should only add events with time greater that or equal to reference value to span', () => { + describe('when entry is not numeric', () => { + it('should NOT add event to span', () => { const addEventSpy = sinon.spy(); const span = { addEvent: addEventSpy, } as unknown as tracing.Span; const entries = { - [PTN.FETCH_START]: 123, // default reference time - [PTN.CONNECT_START]: 0, - [PTN.REQUEST_START]: 140, - } as PerformanceEntries; + [PTN.FETCH_START]: 'non-numeric', + } as unknown; assert.strictEqual(addEventSpy.callCount, 0); - addSpanNetworkEvent(span, PTN.CONNECT_START, entries); - - assert.strictEqual( - addEventSpy.callCount, - 0, - 'should not call addEvent' + addSpanNetworkEvent( + span, + PTN.FETCH_START, + entries as PerformanceEntries ); - addSpanNetworkEvent(span, PTN.REQUEST_START, entries); - - assert.strictEqual( - addEventSpy.callCount, - 1, - 'should call addEvent for valid value' - ); + assert.strictEqual(addEventSpy.callCount, 0); }); }); - - describe('when entries contain invalid performance timing and a reference event', () => { - it('should only add events with time greater that or equal to reference value to span', () => { + describe('when entries does NOT contain the performance', () => { + it('should NOT add event to span', () => { const addEventSpy = sinon.spy(); const span = { addEvent: addEventSpy, } as unknown as tracing.Span; const entries = { - [PTN.FETCH_START]: 120, - [PTN.CONNECT_START]: 120, // this is used as reference time here - [PTN.REQUEST_START]: 10, + [PTN.FETCH_START]: 123, } as PerformanceEntries; assert.strictEqual(addEventSpy.callCount, 0); - addSpanNetworkEvent( - span, - PTN.REQUEST_START, - entries, - PTN.CONNECT_START - ); + addSpanNetworkEvent(span, 'foo', entries); assert.strictEqual( addEventSpy.callCount, 0, 'should not call addEvent' ); - - addSpanNetworkEvent(span, PTN.FETCH_START, entries, PTN.CONNECT_START); - - assert.strictEqual( - addEventSpy.callCount, - 1, - 'should call addEvent for valid value' - ); - - addEventSpy.resetHistory(); - addSpanNetworkEvent(span, PTN.CONNECT_START, entries, 'foo'); // invalid reference , not adding event to span - assert.strictEqual( - addEventSpy.callCount, - 0, - 'should not call addEvent for invalid reference(non-existent)' - ); }); }); }); From 27bdf71519f36655a4af0dd2e1e5a39ec247b95f Mon Sep 17 00:00:00 2001 From: Godfrey Chan <godfreykfc@gmail.com> Date: Thu, 30 Jan 2025 04:01:02 -0800 Subject: [PATCH 10/16] [instrumentation-fetch] Use `msw` for fetch instrumentation tests (#5282) Co-authored-by: Marc Pichler <marc.pichler@dynatrace.com> --- .../karma.conf.js | 6 +- .../package.json | 8 +- .../test/fetch.test.ts | 2718 +++++++++++------ .../test/mockServiceWorker.js | 307 ++ package-lock.json | 841 +++++ 5 files changed, 2885 insertions(+), 995 deletions(-) create mode 100644 experimental/packages/opentelemetry-instrumentation-fetch/test/mockServiceWorker.js diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/karma.conf.js b/experimental/packages/opentelemetry-instrumentation-fetch/karma.conf.js index 5e6d4aae416..4c390294d4c 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/karma.conf.js +++ b/experimental/packages/opentelemetry-instrumentation-fetch/karma.conf.js @@ -19,6 +19,10 @@ const karmaBaseConfig = require('../../../karma.base'); module.exports = (config) => { config.set(Object.assign({}, karmaBaseConfig, { - webpack: karmaWebpackConfig + proxies: { + '/mockServiceWorker.js': '/base/test/mockServiceWorker.js', + }, + files: [...karmaBaseConfig.files, 'test/mockServiceWorker.js'], + webpack: karmaWebpackConfig, })) }; diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index ce40e814761..ec5fa554fdf 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -75,6 +75,7 @@ "karma-webpack": "5.0.1", "lerna": "6.6.2", "mocha": "10.8.2", + "msw": "^2.7.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -92,5 +93,10 @@ "@opentelemetry/semantic-conventions": "1.28.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-fetch", - "sideEffects": false + "sideEffects": false, + "msw": { + "workerDirectory": [ + "test" + ] + } } diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/test/fetch.test.ts b/experimental/packages/opentelemetry-instrumentation-fetch/test/fetch.test.ts index faf2f6b6502..628aefb988f 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/test/fetch.test.ts +++ b/experimental/packages/opentelemetry-instrumentation-fetch/test/fetch.test.ts @@ -13,8 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import * as api from '@opentelemetry/api'; -import * as core from '@opentelemetry/core'; import { isWrapped, registerInstrumentations, @@ -36,9 +36,9 @@ import { import * as assert from 'assert'; import * as sinon from 'sinon'; import { + FetchCustomAttributeFunction, FetchInstrumentation, FetchInstrumentationConfig, - FetchCustomAttributeFunction, } from '../src'; import { AttributeNames } from '../src/enums/AttributeNames'; import { @@ -52,8 +52,18 @@ import { SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED, } from '@opentelemetry/semantic-conventions'; +import * as msw from 'msw'; +import { setupWorker } from 'msw/browser'; + +// This should match the unexported constant with the same name in fetch.ts +const OBSERVER_WAIT_TIME_MS = 300; + class DummySpanExporter implements tracing.SpanExporter { - export(spans: any) {} + readonly exported: tracing.ReadableSpan[][] = []; + + export(spans: tracing.ReadableSpan[]) { + this.exported.push(spans); + } shutdown() { return Promise.resolve(); @@ -64,108 +74,7 @@ class DummySpanExporter implements tracing.SpanExporter { } } -const getData = (url: string, method?: string) => { - return fetch(url, { - method: method || 'GET', - headers: { - foo: 'bar', - Accept: 'application/json', - 'Content-Type': 'application/json', - }, - }); -}; - -const ENCODER = new TextEncoder(); -const textToReadableStream = (msg: string): ReadableStream => { - return new ReadableStream({ - start: controller => { - controller.enqueue(ENCODER.encode(msg)); - controller.close(); - }, - cancel: controller => { - controller.close(); - }, - }); -}; - -const CUSTOM_ATTRIBUTE_KEY = 'span kind'; -const defaultResource = { - entryType: 'resource', - name: '', - initiatorType: 'fetch', - startTime: 10.1, - redirectStart: 0, - redirectEnd: 0, - workerStart: 0, - fetchStart: 10.1, - domainLookupStart: 11, - domainLookupEnd: 12, - connectStart: 13, - secureConnectionStart: 0, - connectEnd: 15, - requestStart: 16, - responseStart: 17, - responseEnd: 20.5, - duration: 10.4, - decodedBodySize: 30, - encodedBodySize: 30, - transferSize: 0, - nextHopProtocol: '', -}; - -function createResource(resource = {}): PerformanceResourceTiming { - return Object.assign( - {}, - defaultResource, - resource - ) as PerformanceResourceTiming; -} - -function createMainResource(resource = {}): PerformanceResourceTiming { - const mainResource: any = createResource(resource); - Object.keys(mainResource).forEach((key: string) => { - if (typeof mainResource[key] === 'number' && mainResource[key] !== 0) { - mainResource[key] = mainResource[key] + 30; - } - }); - return mainResource; -} - -function createFakePerformanceObs(url: string) { - class FakePerfObs implements PerformanceObserver { - constructor(private readonly cb: PerformanceObserverCallback) {} - observe() { - const absoluteUrl = url.startsWith('http') ? url : location.origin + url; - const resources: PerformanceObserverEntryList = { - getEntries(): PerformanceEntryList { - return [ - createResource({ - name: absoluteUrl, - [PTN.SECURE_CONNECTION_START]: url.startsWith('https:') ? 14 : 0, - }) as any, - createMainResource({ - name: absoluteUrl, - [PTN.SECURE_CONNECTION_START]: url.startsWith('https:') ? 14 : 0, - }) as any, - ]; - }, - getEntriesByName(): PerformanceEntryList { - return []; - }, - getEntriesByType(): PerformanceEntryList { - return []; - }, - }; - this.cb(resources, this); - } - disconnect() {} - takeRecords(): PerformanceEntryList { - return []; - } - } - - return FakePerfObs; -} +const worker = setupWorker(); function testForCorrectEvents( events: tracing.TimedEvent[], @@ -180,362 +89,216 @@ function testForCorrectEvents( } } -describe('fetch', () => { - let contextManager: ZoneContextManager; - let lastResponse: Response | undefined; - let requestBody: any | undefined; - let webTracerWithZone: api.Tracer; - let webTracerProviderWithZone: WebTracerProvider; - let dummySpanExporter: DummySpanExporter; - let exportSpy: any; - let clearResourceTimingsSpy: any; - let rootSpan: api.Span; - let fakeNow = 0; - let fetchInstrumentation: FetchInstrumentation; - - const url = 'http://localhost:8090/get'; - const secureUrl = 'https://localhost:8090/get'; - const badUrl = 'http://foo.bar.com/get'; - - const clearData = () => { - sinon.restore(); - lastResponse = undefined; - requestBody = undefined; - }; +// "http://localhost:9876" +const ORIGIN = location.origin; +// "localhost:9876" +const ORIGIN_HOST = new URL(ORIGIN).host; - const prepareData = async ( - fileUrl: string, - apiCall: () => Promise<any>, - config: FetchInstrumentationConfig, - disablePerfObserver?: boolean, - disableGetEntries?: boolean - ) => { - sinon.useFakeTimers(); - - sinon.stub(core.otperformance, 'timeOrigin').value(0); - sinon.stub(core.otperformance, 'now').callsFake(() => fakeNow); - - function fakeFetch(input: RequestInfo | Request, init: RequestInit = {}) { - // Once upon a time, there was a bug (#2411), causing a `Request` object - // to be incorrectly passed to `fetch()` as the second argument - assert.ok(!(init instanceof Request)); - - return new Promise((resolve, reject) => { - const responseInit: ResponseInit = {}; - - // This is the default response body expected by the few tests that care - let responseBody = JSON.stringify({ - isServerResponse: true, - request: { - url: fileUrl, - headers: { ...init.headers }, - }, - }); +interface Resolvers<T> { + promise: Promise<T>; + resolve: (value: T) => void; + reject: (reason: any) => void; +} - // get the request body - if (typeof input === 'string') { - const body = init.body; - if (body instanceof ReadableStream) { - const decoder = new TextDecoder(); - requestBody = ''; - const read = async () => { - // @ts-expect-error -- iterator symbol was removed from types - for await (const c of body) { - requestBody += decoder.decode(c); - } - }; - read(); - } else { - requestBody = init.body; - } - } else { - input.text().then(r => (requestBody = r)); - } - if (init.method === 'DELETE') { - responseInit.status = 405; - responseInit.statusText = 'OK'; - responseBody = 'foo'; - } else if ( - (input instanceof Request && input.url === url) || - input === url - ) { - responseInit.status = 200; - responseInit.statusText = 'OK'; - } else { - responseInit.status = 404; - responseInit.statusText = 'Not found'; - } +// Use Promise.withResolvers when we can +function withResolvers<T>(): Resolvers<T> { + let resolve: (value: T) => void; + let reject: (reason: any) => void; + const promise = new Promise<T>((res, rej) => { + resolve = res; + reject = rej; + }); - resolve(new window.Response(responseBody, responseInit)); - }); - } + return { + promise, + resolve: resolve!, + reject: reject!, + }; +} - sinon.stub(window, 'fetch').callsFake(fakeFetch as any); +function waitFor(timeout: number): Promise<void> { + return new Promise(resolve => { + setTimeout(resolve, timeout); + }); +} - const resources: PerformanceResourceTiming[] = []; - resources.push( - createResource({ - name: fileUrl, - }), - createMainResource({ - name: fileUrl, - }) - ); +describe('fetch', () => { + let workerStarted = false; - if (disablePerfObserver) { - sinon.stub(window, 'PerformanceObserver').value(undefined); - } else { - sinon - .stub(window, 'PerformanceObserver') - .value(createFakePerformanceObs(fileUrl)); - } + const startWorker = async ( + ...handlers: msw.RequestHandler[] + ): Promise<void> => { + worker.use(...handlers); + await worker.start({ + onUnhandledRequest: 'error', + quiet: true, + }); + workerStarted = true; + }; - if (disableGetEntries) { - sinon.stub(performance, 'getEntriesByType').value(undefined); - } else { - const spyEntries = sinon.stub(performance, 'getEntriesByType'); - spyEntries.withArgs('resource').returns(resources); - } + let pendingObservers = 0; + let waitForPerformanceObservers = async () => {}; - fetchInstrumentation = new FetchInstrumentation(config); - dummySpanExporter = new DummySpanExporter(); - webTracerProviderWithZone = new WebTracerProvider({ - spanProcessors: [new tracing.SimpleSpanProcessor(dummySpanExporter)], - }); - registerInstrumentations({ - tracerProvider: webTracerProviderWithZone, - instrumentations: [fetchInstrumentation], - }); - webTracerWithZone = webTracerProviderWithZone.getTracer('fetch-test'); - exportSpy = sinon.stub(dummySpanExporter, 'export'); - clearResourceTimingsSpy = sinon.stub(performance, 'clearResourceTimings'); - - // endSpan is called after the whole response body is read - // this process is scheduled at the same time the fetch promise is resolved - // due to this we can't rely on getData resolution to know that the span has ended - let resolveEndSpan: (value: unknown) => void; - const spanEnded = new Promise(r => (resolveEndSpan = r)); - const readSpy = sinon.spy( - window.ReadableStreamDefaultReader.prototype, - 'read' - ); - const endSpanStub: sinon.SinonStub<any> = sinon - .stub(FetchInstrumentation.prototype, '_endSpan' as any) - .callsFake(async function (this: FetchInstrumentation, ...args: any[]) { - resolveEndSpan({}); - return endSpanStub.wrappedMethod.apply(this, args); - }); + beforeEach(() => { + if (PerformanceObserver) { + assert.strictEqual( + pendingObservers, + 0, + 'Did a previous test leak a PerformanceObserver?' + ); - rootSpan = webTracerWithZone.startSpan('root'); - await api.context.with( - api.trace.setSpan(api.context.active(), rootSpan), - async () => { - fakeNow = 0; - lastResponse = undefined; + let resolvers: Resolvers<void> | undefined; - const responsePromise = apiCall(); - fakeNow = 300; - lastResponse = await responsePromise; + const _observe = PerformanceObserver.prototype.observe; + const _disconnect = PerformanceObserver.prototype.disconnect; - // if the url is not ignored, body.read should be called by now - // awaiting for the span to end - if (readSpy.callCount > 0) await spanEnded; + sinon.stub(PerformanceObserver.prototype, 'observe').callsFake(function ( + this: PerformanceObserver, + ...args + ) { + _observe.call(this, ...args); + pendingObservers++; - await sinon.clock.runAllAsync(); - } - ); - }; + if (!resolvers) { + resolvers = withResolvers(); + } + }); - beforeEach(() => { - contextManager = new ZoneContextManager().enable(); - api.context.setGlobalContextManager(contextManager); + sinon + .stub(PerformanceObserver.prototype, 'disconnect') + .callsFake(function (this: PerformanceObserver, ...args) { + _disconnect.call(this, ...args); + pendingObservers--; + + if (pendingObservers === 0) { + resolvers?.resolve(); + resolvers = undefined; + } + }); + + waitForPerformanceObservers = async (): Promise<void> => { + while (resolvers) { + await resolvers.promise; + } + }; + } }); afterEach(() => { - api.context.disable(); - }); + try { + if (workerStarted) { + worker.stop(); + workerStarted = false; + } - before(() => { - api.propagation.setGlobalPropagator( - new B3Propagator({ - injectEncoding: B3InjectEncoding.MULTI_HEADER, - }) - ); + const _pendingObservers = pendingObservers; + + pendingObservers = 0; + waitForPerformanceObservers = async () => {}; + + assert.strictEqual( + _pendingObservers, + 0, + `Test leaked ${_pendingObservers} \`PerformanceObserver\`(s)!` + ); + } finally { + sinon.restore(); + } }); - describe('when request is successful', () => { - beforeEach(async () => { - const propagateTraceHeaderCorsUrls = [url]; - await prepareData(url, () => getData(url), { - propagateTraceHeaderCorsUrls, - }); - }); + describe('enabling/disabling', () => { + let fetchInstrumentation: FetchInstrumentation | undefined; afterEach(() => { - clearData(); + fetchInstrumentation?.disable(); + fetchInstrumentation = undefined; }); - it('should wrap methods', () => { + it('should wrap global fetch when instantiated', () => { + assert.ok(!isWrapped(window.fetch)); + fetchInstrumentation = new FetchInstrumentation(); assert.ok(isWrapped(window.fetch)); + }); + + it('should not wrap global fetch when instantiated with `enabled: false`', () => { + assert.ok(!isWrapped(window.fetch)); + fetchInstrumentation = new FetchInstrumentation({ enabled: false }); + assert.ok(!isWrapped(window.fetch)); fetchInstrumentation.enable(); assert.ok(isWrapped(window.fetch)); }); - it('should unwrap methods', () => { + it('should unwrap global fetch when disabled', () => { + fetchInstrumentation = new FetchInstrumentation(); assert.ok(isWrapped(window.fetch)); fetchInstrumentation.disable(); assert.ok(!isWrapped(window.fetch)); - }); - - it('should create a span with correct root span', () => { - const span: tracing.ReadableSpan = exportSpy.args[1][0][0]; - assert.strictEqual( - span.parentSpanId, - rootSpan.spanContext().spanId, - 'parent span is not root span' - ); - }); - it('span should have correct name', () => { - const span: tracing.ReadableSpan = exportSpy.args[1][0][0]; - assert.strictEqual(span.name, 'HTTP GET', 'span has wrong name'); + // Avoids ERROR in the logs when calling `disable()` again during cleanup + fetchInstrumentation = undefined; }); + }); - it('span should have correct kind', () => { - const span: tracing.ReadableSpan = exportSpy.args[1][0][0]; - assert.strictEqual(span.kind, api.SpanKind.CLIENT, 'span has wrong kind'); - }); - - it('span should have correct attributes', () => { - const span: tracing.ReadableSpan = exportSpy.args[1][0][0]; - const attributes = span.attributes; - const keys = Object.keys(attributes); - assert.notStrictEqual( - attributes[AttributeNames.COMPONENT], - '', - `attributes ${AttributeNames.COMPONENT} is not defined` - ); - - assert.strictEqual( - attributes[SEMATTRS_HTTP_METHOD], - 'GET', - `attributes ${SEMATTRS_HTTP_METHOD} is wrong` - ); - assert.strictEqual( - attributes[SEMATTRS_HTTP_URL], - url, - `attributes ${SEMATTRS_HTTP_URL} is wrong` - ); - assert.strictEqual( - attributes[SEMATTRS_HTTP_STATUS_CODE], - 200, - `attributes ${SEMATTRS_HTTP_STATUS_CODE} is wrong` - ); - const statusText = attributes[AttributeNames.HTTP_STATUS_TEXT]; - assert.ok( - statusText === 'OK' || statusText === '', - `attributes ${AttributeNames.HTTP_STATUS_TEXT} is wrong` - ); - assert.ok( - (attributes[SEMATTRS_HTTP_HOST] as string).indexOf('localhost') === 0, - `attributes ${SEMATTRS_HTTP_HOST} is wrong` - ); - - const httpScheme = attributes[SEMATTRS_HTTP_SCHEME]; - assert.ok( - httpScheme === 'http' || httpScheme === 'https', - `attributes ${SEMATTRS_HTTP_SCHEME} is wrong` - ); - assert.notStrictEqual( - attributes[SEMATTRS_HTTP_USER_AGENT], - '', - `attributes ${SEMATTRS_HTTP_USER_AGENT} is not defined` - ); - const requestContentLength = attributes[ - SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED - ] as number; - assert.strictEqual( - requestContentLength, - undefined, - `attributes ${SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED} is defined` - ); - const responseContentLength = attributes[ - SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH - ] as number; - assert.strictEqual( - responseContentLength, - 60, - `attributes ${SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH} is <= 0` - ); - - assert.strictEqual(keys.length, 9, 'number of attributes is wrong'); - }); + describe('instrumentation', () => { + let exportedSpans: tracing.ReadableSpan[] = []; + + const trace = async ( + callback: () => Promise<void>, + config: FetchInstrumentationConfig = {}, + expectExport = true + ): Promise<api.Span> => { + try { + const contextManager = new ZoneContextManager().enable(); + api.context.setGlobalContextManager(contextManager); + + const fetchInstrumentation: FetchInstrumentation = + new FetchInstrumentation(config); + const dummySpanExporter = new DummySpanExporter(); + const webTracerProviderWithZone = new WebTracerProvider({ + spanProcessors: [new tracing.SimpleSpanProcessor(dummySpanExporter)], + }); + registerInstrumentations({ + tracerProvider: webTracerProviderWithZone, + instrumentations: [fetchInstrumentation], + }); + const webTracerWithZone = + webTracerProviderWithZone.getTracer('fetch-test'); - it('span should have correct events', () => { - const span: tracing.ReadableSpan = exportSpy.args[1][0][0]; - const events = span.events; - 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, - PTN.RESPONSE_START, - PTN.RESPONSE_END, - ]); - }); + const rootSpan = webTracerWithZone.startSpan('root'); + await api.context.with( + api.trace.setSpan(api.context.active(), rootSpan), + callback + ); - it('should create a span for preflight request', () => { - const span: tracing.ReadableSpan = exportSpy.args[0][0][0]; - const parentSpan: tracing.ReadableSpan = exportSpy.args[1][0][0]; - assert.strictEqual( - span.parentSpanId, - parentSpan.spanContext().spanId, - 'parent span is not root span' - ); - }); + await waitForPerformanceObservers(); - it('preflight request span should have correct name', () => { - const span: tracing.ReadableSpan = exportSpy.args[0][0][0]; - assert.strictEqual( - span.name, - 'CORS Preflight', - 'preflight request span has wrong name' - ); - }); + if (expectExport) { + // This isn't intended to be an invariant, but in the current setup we + // don't expect multiple exports, it's easier to assert and unwrap the + // array of arrays here, than have every single test deal with that + // downstream. + assert.strictEqual(dummySpanExporter.exported.length, 1); + exportedSpans = dummySpanExporter.exported[0]; + } else { + assert.strictEqual(dummySpanExporter.exported.length, 0); + } - it('preflight request span should have correct kind', () => { - const span: tracing.ReadableSpan = exportSpy.args[0][0][0]; - assert.strictEqual( - span.kind, - api.SpanKind.INTERNAL, - 'span has wrong kind' - ); - }); + return rootSpan; + } finally { + api.context.disable(); + } + }; - 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, 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, - PTN.RESPONSE_START, - PTN.RESPONSE_END, - ]); + afterEach(() => { + exportedSpans = []; }); - it('should set trace headers', async () => { - const span: api.Span = exportSpy.args[1][0][0]; - assert.ok(lastResponse instanceof Response); + const assertPropagationHeaders = async ( + response: Response + ): Promise<Record<string, string>> => { + const { request } = await response.json(); - const { request } = await lastResponse.json(); + const span: tracing.ReadableSpan = exportedSpans[0]; assert.strictEqual( request.headers[X_B3_TRACE_ID], @@ -552,680 +315,1649 @@ describe('fetch', () => { String(span.spanContext().traceFlags), `trace header '${X_B3_SAMPLED}' not set` ); - }); - it('should set trace headers with a request object', () => { - const r = new Request('url'); - window.fetch(r).catch(() => {}); - assert.ok(typeof r.headers.get(X_B3_TRACE_ID) === 'string'); - }); + return request.headers; + }; - it('should keep custom headers with a request object and a headers object', () => { - const r = new Request('url', { - headers: new Headers({ foo: 'bar' }), - }); - window.fetch(r).catch(() => {}); - assert.ok(r.headers.get('foo') === 'bar'); - }); + const assertNoPropagationHeaders = async ( + response: Response + ): Promise<Record<string, string>> => { + const { request } = await response.json(); - it('should keep custom headers with url, untyped request object and typed (Headers) headers object', () => { - const url = 'url'; - const init = { - headers: new Headers({ foo: 'bar' }), - }; - window.fetch(url, init).catch(() => {}); - assert.ok(init.headers.get('foo') === 'bar'); - }); + assert.ok( + !(X_B3_TRACE_ID in request.headers), + `trace header '${X_B3_TRACE_ID}' should not be set` + ); + assert.ok( + !(X_B3_SPAN_ID in request.headers), + `trace header '${X_B3_SPAN_ID}' should not be set` + ); + assert.ok( + !(X_B3_SAMPLED in request.headers), + `trace header '${X_B3_SAMPLED}' should not be set` + ); - it('should keep custom headers with url, untyped request object and untyped headers object', () => { - const url = 'url'; - const init = { - headers: { foo: 'bar' }, - }; - window.fetch(url, init).catch(() => {}); - assert.ok(init.headers['foo'] === 'bar'); - }); + return request.headers; + }; - it('should keep custom headers with url, untyped request object and typed (Map) headers object', () => { - const url = 'url'; - const init = { - headers: new Map().set('foo', 'bar'), + describe('same origin requests', () => { + const tracedFetch = async ({ + handlers = [ + msw.http.get('/api/status.json', () => { + return msw.HttpResponse.json({ ok: true }); + }), + msw.http.get('/api/echo-headers.json', ({ request }) => { + return msw.HttpResponse.json({ + request: { + headers: Object.fromEntries(request.headers), + }, + }); + }), + ], + callback = () => fetch('/api/status.json'), + config = {}, + }: { + handlers?: msw.RequestHandler[]; + callback?: () => Promise<Response>; + config?: FetchInstrumentationConfig; + } = {}): Promise<{ rootSpan: api.Span; response: Response }> => { + let response: Response | undefined; + + await startWorker(...handlers); + + const rootSpan = await trace(async () => { + response = await callback(); + }, config); + + assert.ok(response instanceof Response); + assert.strictEqual(exportedSpans.length, 1); + + return { rootSpan, response }; }; - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore variable init not of RequestInit type - window.fetch(url, init).catch(() => {}); - assert.ok(init.headers.get('foo') === 'bar'); - }); - it('should NOT clear the resources', () => { - assert.strictEqual( - clearResourceTimingsSpy.args.length, - 0, - 'resources have been cleared' - ); - }); + describe('simple request', () => { + let rootSpan: api.Span | undefined; + let response: Response | undefined; - describe('when propagateTraceHeaderCorsUrls does NOT MATCH', () => { - let spyDebug: sinon.SinonSpy; - beforeEach(async () => { - const diagLogger = new api.DiagConsoleLogger(); - spyDebug = sinon.spy(); - diagLogger.debug = spyDebug; - api.diag.setLogger(diagLogger, api.DiagLogLevel.ALL); - clearData(); - await prepareData(url, () => getData(url), {}); - }); - afterEach(() => { - sinon.restore(); + beforeEach(async () => { + const result = await tracedFetch(); + rootSpan = result.rootSpan; + response = result.response; + }); + + afterEach(() => { + rootSpan = undefined; + response = undefined; + }); + + it('should create a span with correct root span', () => { + assert.strictEqual( + exportedSpans.length, + 1, + 'creates a single span for the fetch() request' + ); + + const span: tracing.ReadableSpan = exportedSpans[0]; + + assert.strictEqual( + span.parentSpanId, + rootSpan!.spanContext().spanId, + 'parent span is not root span' + ); + }); + + it('span should have correct name', () => { + const span: tracing.ReadableSpan = exportedSpans[0]; + assert.strictEqual(span.name, 'HTTP GET', 'span has wrong name'); + }); + + it('span should have correct kind', () => { + const span: tracing.ReadableSpan = exportedSpans[0]; + assert.strictEqual( + span.kind, + api.SpanKind.CLIENT, + 'span has wrong kind' + ); + }); + + it('span should have correct attributes', () => { + const span: tracing.ReadableSpan = exportedSpans[0]; + const attributes = span.attributes; + const keys = Object.keys(attributes); + assert.notStrictEqual( + attributes[AttributeNames.COMPONENT], + '', + `attributes ${AttributeNames.COMPONENT} is not defined` + ); + + assert.strictEqual( + attributes[SEMATTRS_HTTP_METHOD], + 'GET', + `attributes ${SEMATTRS_HTTP_METHOD} is wrong` + ); + assert.strictEqual( + attributes[SEMATTRS_HTTP_URL], + `${ORIGIN}/api/status.json`, + `attributes ${SEMATTRS_HTTP_URL} is wrong` + ); + assert.strictEqual( + attributes[SEMATTRS_HTTP_STATUS_CODE], + 200, + `attributes ${SEMATTRS_HTTP_STATUS_CODE} is wrong` + ); + assert.strictEqual( + attributes[AttributeNames.HTTP_STATUS_TEXT], + 'OK', + `attributes ${AttributeNames.HTTP_STATUS_TEXT} is wrong` + ); + assert.strictEqual( + attributes[SEMATTRS_HTTP_HOST], + ORIGIN_HOST, + `attributes ${SEMATTRS_HTTP_HOST} is wrong` + ); + + assert.ok( + attributes[SEMATTRS_HTTP_SCHEME] === 'http', + `attributes ${SEMATTRS_HTTP_SCHEME} is wrong` + ); + assert.notStrictEqual( + attributes[SEMATTRS_HTTP_USER_AGENT], + '', + `attributes ${SEMATTRS_HTTP_USER_AGENT} is not defined` + ); + assert.strictEqual( + attributes[SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED], + undefined, + `attributes ${SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED} is defined` + ); + assert.strictEqual( + attributes[SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH], + parseInt(response!.headers.get('content-length')!), + `attributes ${SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH} is incorrect` + ); + + assert.strictEqual(keys.length, 9, 'number of attributes is wrong'); + }); + + it('span should have correct events', () => { + const span: tracing.ReadableSpan = exportedSpans[0]; + const events = span.events; + 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, + PTN.RESPONSE_START, + PTN.RESPONSE_END, + ]); + }); }); - it('should NOT set trace headers', async () => { - assert.ok(lastResponse instanceof Response); + describe('trace propagation headers', () => { + describe('with global propagator', () => { + before(() => { + api.propagation.setGlobalPropagator( + new B3Propagator({ + injectEncoding: B3InjectEncoding.MULTI_HEADER, + }) + ); + }); + + after(() => { + api.propagation.disable(); + }); + + it('should set trace propagation headers', async () => { + const { response } = await tracedFetch({ + callback: () => fetch('/api/echo-headers.json'), + }); + + await assertPropagationHeaders(response); + }); - const { request } = await lastResponse.json(); + it('should set trace propagation headers with a request object', async () => { + const { response } = await tracedFetch({ + callback: () => fetch(new Request('/api/echo-headers.json')), + }); - assert.strictEqual( - request.headers[X_B3_TRACE_ID], - undefined, - `trace header '${X_B3_TRACE_ID}' should not be set` - ); - assert.strictEqual( - request.headers[X_B3_SPAN_ID], - undefined, - `trace header '${X_B3_SPAN_ID}' should not be set` - ); - assert.strictEqual( - request.headers[X_B3_SAMPLED], - undefined, - `trace header '${X_B3_SAMPLED}' should not be set` - ); + await assertPropagationHeaders(response); + }); + + it('should keep custom headers with a request object and a headers object', async () => { + const { response } = await tracedFetch({ + callback: () => + fetch( + new Request('/api/echo-headers.json', { + headers: new Headers({ foo: 'bar' }), + }) + ), + }); + + const headers = await assertPropagationHeaders(response); + + assert.strictEqual(headers['foo'], 'bar'); + }); + + it('should keep custom headers with url, untyped request object and typed (Headers) headers object', async () => { + const { response } = await tracedFetch({ + callback: () => + fetch('/api/echo-headers.json', { + headers: new Headers({ foo: 'bar' }), + }), + }); + + const headers = await assertPropagationHeaders(response); + + assert.strictEqual(headers['foo'], 'bar'); + }); + + it('should keep custom headers with url, untyped request object and untyped headers object', async () => { + const { response } = await tracedFetch({ + callback: () => + fetch('/api/echo-headers.json', { + headers: { foo: 'bar' }, + }), + }); + + const headers = await assertPropagationHeaders(response); + + assert.strictEqual(headers['foo'], 'bar'); + }); + + it('should keep custom headers with url, untyped request object and typed (Map) headers object', async () => { + const { response } = await tracedFetch({ + callback: () => + fetch('/api/echo-headers.json', { + // @ts-expect-error relies on implicit coercion + headers: new Map().set('foo', 'bar'), + }), + }); + + const headers = await assertPropagationHeaders(response); + + assert.strictEqual(headers['foo'], 'bar'); + }); + }); + + describe('without global propagator', () => { + it('should not set trace propagation headers', async () => { + const { response } = await tracedFetch({ + callback: () => fetch('/api/echo-headers.json'), + }); + + await assertNoPropagationHeaders(response); + }); + + it('should not set trace propagation headers with a request object', async () => { + const { response } = await tracedFetch({ + callback: () => fetch(new Request('/api/echo-headers.json')), + }); + + await assertNoPropagationHeaders(response); + }); + + it('should keep custom headers with a request object and a headers object', async () => { + const { response } = await tracedFetch({ + callback: () => + fetch( + new Request('/api/echo-headers.json', { + headers: new Headers({ foo: 'bar' }), + }) + ), + }); + + const headers = await assertNoPropagationHeaders(response); + + assert.strictEqual(headers['foo'], 'bar'); + }); + + it('should keep custom headers with url, untyped request object and typed (Headers) headers object', async () => { + const { response } = await tracedFetch({ + callback: () => + fetch('/api/echo-headers.json', { + headers: new Headers({ foo: 'bar' }), + }), + }); + + const headers = await assertNoPropagationHeaders(response); + + assert.strictEqual(headers['foo'], 'bar'); + }); + + it('should keep custom headers with url, untyped request object and untyped headers object', async () => { + const { response } = await tracedFetch({ + callback: () => + fetch('/api/echo-headers.json', { + headers: { foo: 'bar' }, + }), + }); + + const headers = await assertNoPropagationHeaders(response); + + assert.strictEqual(headers['foo'], 'bar'); + }); + + it('should keep custom headers with url, untyped request object and typed (Map) headers object', async () => { + const { response } = await tracedFetch({ + callback: () => + fetch('/api/echo-headers.json', { + // @ts-expect-error relies on implicit coercion + headers: new Map().set('foo', 'bar'), + }), + }); + + const headers = await assertNoPropagationHeaders(response); + + assert.strictEqual(headers['foo'], 'bar'); + }); + }); }); - it('should debug info that injecting headers was skipped', () => { - assert.strictEqual( - spyDebug.lastCall.args[1], - 'headers inject skipped due to CORS policy' - ); + + describe('clearTimingResources', () => { + let clearResourceTimingsStub: sinon.SinonStub | undefined; + + beforeEach(async () => { + clearResourceTimingsStub = sinon.stub( + performance, + 'clearResourceTimings' + ); + }); + + afterEach(() => { + clearResourceTimingsStub = undefined; + }); + + describe('when `clearResourceTimings` is not set', () => { + it('should not clear resource timing entries', async () => { + await tracedFetch(); + assert.strictEqual(clearResourceTimingsStub!.notCalled, true); + }); + }); + + describe('when `clearResourceTimings` is `false`', () => { + it('should not clear resource timing entries', async () => { + await tracedFetch({ config: { clearTimingResources: false } }); + assert.strictEqual(clearResourceTimingsStub!.notCalled, true); + }); + }); + + describe('when `clearResourceTimings` is `true`', () => { + it('should clear resource timing entries', async () => { + await tracedFetch({ config: { clearTimingResources: true } }); + assert.strictEqual(clearResourceTimingsStub!.calledOnce, true); + }); + }); }); }); - }); - describe('post data', () => { - describe('url and config object when request body measurement is disabled', () => { - beforeEach(async () => { - await prepareData( - url, - () => - fetch(url, { - method: 'POST', - headers: { - foo: 'bar', - Accept: 'application/json', - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ hello: 'world' }), - }), - {} - ); - }); + // ServiceWorker request interception occurs before CORS preflight requests + // are made. If a request is handled by the SW, it won't cause a preflight + // (at least not on the page – if the SW makes its own "real" request while + // responding to the fetch event, that request may very well require CORS & + // preflight, but that would be happening within the SW, not the page.) + // + // However, as far as the instrumentation behavior, there aren't much that + // we need to specifically unit test in relation to CORS and preflights, + // since preflight requests are completely transparent, the instrumentation + // code could not detect that it happened, let alone report on its timing: + // https://github.com/open-telemetry/opentelemetry-js/issues/5122 + // + // So the purpose of this test module is mostly just to test the configs + // related to CORS requests. + describe('cross origin requests', () => { + const tracedFetch = async ({ + handlers = [ + msw.http.get('http://example.com/api/status.json', () => { + return msw.HttpResponse.json({ ok: true }); + }), + msw.http.get( + 'http://example.com/api/echo-headers.json', + ({ request }) => { + return msw.HttpResponse.json({ + request: { + headers: Object.fromEntries(request.headers), + }, + }); + } + ), + ], + callback = () => + fetch('http://example.com/api/status.json', { + mode: 'cors', + headers: { 'x-custom': 'custom value' }, + }), + config = {}, + }: { + handlers?: msw.RequestHandler[]; + callback?: () => Promise<Response>; + config?: FetchInstrumentationConfig; + } = {}): Promise<{ rootSpan: api.Span; response: Response }> => { + let response: Response | undefined; + + await startWorker(...handlers); + + const rootSpan = await trace(async () => { + response = await callback(); + }, config); + + assert.ok(response instanceof Response); + assert.strictEqual(exportedSpans.length, 1); + + return { rootSpan, response }; + }; - afterEach(() => { - clearData(); + // Smoke test to ensure nothing breaks when the request is CORS + describe('simple request', () => { + let rootSpan: api.Span | undefined; + let response: Response | undefined; + + beforeEach(async () => { + const result = await tracedFetch(); + rootSpan = result.rootSpan; + response = result.response; + }); + + afterEach(() => { + rootSpan = undefined; + response = undefined; + }); + + it('should create a span with correct root span', () => { + assert.strictEqual( + exportedSpans.length, + 1, + 'creates a single span for the fetch() request' + ); + + const span: tracing.ReadableSpan = exportedSpans[0]; + + assert.strictEqual( + span.parentSpanId, + rootSpan!.spanContext().spanId, + 'parent span is not root span' + ); + }); + + it('span should have correct name', () => { + const span: tracing.ReadableSpan = exportedSpans[0]; + assert.strictEqual(span.name, 'HTTP GET', 'span has wrong name'); + }); + + it('span should have correct kind', () => { + const span: tracing.ReadableSpan = exportedSpans[0]; + assert.strictEqual( + span.kind, + api.SpanKind.CLIENT, + 'span has wrong kind' + ); + }); + + it('span should have correct attributes', () => { + const span: tracing.ReadableSpan = exportedSpans[0]; + const attributes = span.attributes; + const keys = Object.keys(attributes); + assert.notStrictEqual( + attributes[AttributeNames.COMPONENT], + '', + `attributes ${AttributeNames.COMPONENT} is not defined` + ); + + assert.strictEqual( + attributes[SEMATTRS_HTTP_METHOD], + 'GET', + `attributes ${SEMATTRS_HTTP_METHOD} is wrong` + ); + assert.strictEqual( + attributes[SEMATTRS_HTTP_URL], + 'http://example.com/api/status.json', + `attributes ${SEMATTRS_HTTP_URL} is wrong` + ); + assert.strictEqual( + attributes[SEMATTRS_HTTP_STATUS_CODE], + 200, + `attributes ${SEMATTRS_HTTP_STATUS_CODE} is wrong` + ); + assert.strictEqual( + attributes[AttributeNames.HTTP_STATUS_TEXT], + 'OK', + `attributes ${AttributeNames.HTTP_STATUS_TEXT} is wrong` + ); + assert.strictEqual( + attributes[SEMATTRS_HTTP_HOST], + 'example.com', + `attributes ${SEMATTRS_HTTP_HOST} is wrong` + ); + + assert.ok( + attributes[SEMATTRS_HTTP_SCHEME] === 'http', + `attributes ${SEMATTRS_HTTP_SCHEME} is wrong` + ); + assert.notStrictEqual( + attributes[SEMATTRS_HTTP_USER_AGENT], + '', + `attributes ${SEMATTRS_HTTP_USER_AGENT} is not defined` + ); + assert.strictEqual( + attributes[SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED], + undefined, + `attributes ${SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED} is defined` + ); + assert.strictEqual( + attributes[SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH], + parseInt(response!.headers.get('content-length')!), + `attributes ${SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH} is incorrect` + ); + + assert.strictEqual(keys.length, 9, 'number of attributes is wrong'); + }); + + it('span should have correct events', () => { + const span: tracing.ReadableSpan = exportedSpans[0]; + const events = span.events; + 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, + PTN.RESPONSE_START, + PTN.RESPONSE_END, + ]); + }); }); - it('should post data', async () => { - assert.strictEqual(requestBody, '{"hello":"world"}'); + describe('trace propagation headers', () => { + let spyDebug: sinon.SinonSpy | undefined; - const span: tracing.ReadableSpan = exportSpy.args[1][0][0]; - const attributes = span.attributes; + before(() => { + api.propagation.setGlobalPropagator( + new B3Propagator({ + injectEncoding: B3InjectEncoding.MULTI_HEADER, + }) + ); + }); - assert.strictEqual( - attributes[SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED], - undefined - ); + beforeEach(async () => { + const logger = new api.DiagConsoleLogger(); + spyDebug = sinon.stub(logger, 'debug'); + api.diag.setLogger(logger, api.DiagLogLevel.ALL); + }); + + afterEach(() => { + api.diag.disable(); + spyDebug = undefined; + }); + + after(() => { + api.propagation.disable(); + }); + + const assertNoDebugMessages = () => { + assert.ok(spyDebug); + sinon.assert.neverCalledWith( + spyDebug, + '@opentelemetry/instrumentation-fetch', + 'headers inject skipped due to CORS policy' + ); + }; + + const assertDebugMessage = () => { + assert.ok(spyDebug); + sinon.assert.calledWith( + spyDebug, + '@opentelemetry/instrumentation-fetch', + 'headers inject skipped due to CORS policy' + ); + }; + + it('should not set propagation headers with no `propagateTraceHeaderCorsUrls`', async () => { + const { response } = await tracedFetch({ + callback: () => + fetch('http://example.com/api/echo-headers.json', { + mode: 'cors', + headers: { 'x-custom': 'custom value' }, + }), + }); + + await assertNoPropagationHeaders(response); + + assertDebugMessage(); + }); + + it('should not set propagation headers when not matching `propagateTraceHeaderCorsUrls`', async () => { + const { response } = await tracedFetch({ + callback: () => + fetch('http://example.com/api/echo-headers.json', { + mode: 'cors', + headers: { 'x-custom': 'custom value' }, + }), + config: { + propagateTraceHeaderCorsUrls: ['nope'], + }, + }); + + await assertNoPropagationHeaders(response); + + assertDebugMessage(); + }); + + it('should set propagation headers when matching `propagateTraceHeaderCorsUrls`', async () => { + const { response } = await tracedFetch({ + callback: () => + fetch('http://example.com/api/echo-headers.json', { + mode: 'cors', + headers: { 'x-custom': 'custom value' }, + }), + config: { + propagateTraceHeaderCorsUrls: [/example\.com/], + }, + }); + + await assertPropagationHeaders(response); + + assertNoDebugMessages(); + }); }); }); - describe('url and config object', () => { - beforeEach(async () => { - await prepareData( - url, - () => - fetch(url, { - method: 'POST', - headers: { - foo: 'bar', - Accept: 'application/json', - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ hello: 'world' }), - }), - { - measureRequestSize: true, - } - ); - }); + describe('POST requests', () => { + const DEFAULT_BODY = Object.freeze({ hello: 'world' }); + + async function tracedFetch({ + handlers = [ + msw.http.post('/api/echo-body.json', async ({ request }) => { + if (request.headers.get('Content-Type') === 'application/json') { + return msw.HttpResponse.json({ + request: { + headers: Object.fromEntries(request.headers), + body: await request.json(), + }, + }); + } else { + return msw.HttpResponse.json({ + request: { + headers: Object.fromEntries(request.headers), + body: await request.text(), + }, + }); + } + }), + ], + body = DEFAULT_BODY, + callback = () => + fetch('/api/echo-body.json', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(body), + }), + config = {}, + }: { + handlers?: msw.RequestHandler[]; + body?: unknown; + callback?: () => Promise<Response>; + config?: FetchInstrumentationConfig; + } = {}): Promise<{ rootSpan: api.Span; response: Response }> { + let response: Response | undefined; + + await startWorker(...handlers); + + const rootSpan = await trace(async () => { + response = await callback(); + }, config); + + assert.ok(response instanceof Response); + assert.strictEqual(exportedSpans.length, 1); + + return { rootSpan, response }; + } - afterEach(() => { - clearData(); - }); + const assertJSONBody = async ( + response: Response, + body: unknown = DEFAULT_BODY + ) => { + const { request } = await response.json(); + assert.strictEqual(request.headers['content-type'], 'application/json'); + assert.deepStrictEqual(request.body, body); + }; - it('should post data', async () => { - assert.strictEqual(requestBody, '{"hello":"world"}'); + describe('measureRequestSize', () => { + const assertNoRequestContentLength = () => { + const span: tracing.ReadableSpan = exportedSpans[0]; + + assert.strictEqual( + span.attributes[SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED], + undefined + ); + }; + + const assertHasRequestContentLength = ( + body = JSON.stringify(DEFAULT_BODY) + ) => { + const span: tracing.ReadableSpan = exportedSpans[0]; + + assert.strictEqual( + span.attributes[SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED], + body.length + ); + }; + + describe('when `measureRequestSize` is not set', () => { + it('should not measure request body size', async () => { + const { response } = await tracedFetch(); + assertJSONBody(response); + assertNoRequestContentLength(); + }); + }); - const span: tracing.ReadableSpan = exportSpy.args[1][0][0]; - const attributes = span.attributes; + describe('when `measureRequestSize` is `false`', () => { + it('should not measure request body size', async () => { + const { response } = await tracedFetch({ + config: { measureRequestSize: false }, + }); + assertJSONBody(response); + assertNoRequestContentLength(); + }); + }); - assert.strictEqual( - attributes[SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED], - 17 - ); + describe('with `measureRequestSize: `true`', () => { + describe('with url and init object', () => { + it('should measure request body size', async () => { + const { response } = await tracedFetch({ + config: { measureRequestSize: true }, + }); + assertJSONBody(response); + assertHasRequestContentLength(); + }); + }); + + describe('with url and init object with a body stream', () => { + it('should measure request body size', async () => { + const body = JSON.stringify(DEFAULT_BODY); + const encoder = new TextEncoder(); + const stream = new ReadableStream({ + start: controller => { + controller.enqueue(encoder.encode(body)); + controller.close(); + }, + cancel: controller => { + controller.close(); + }, + }); + const { response } = await tracedFetch({ + callback: () => + fetch('/api/echo-body.json', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: stream, + // @ts-expect-error this is required IRL but missing on the current TS definition + // https://developer.chrome.com/docs/capabilities/web-apis/fetch-streaming-requests#half_duplex + duplex: 'half', + }), + config: { measureRequestSize: true }, + }); + assertJSONBody(response); + assertHasRequestContentLength(); + }); + }); + + describe('with a Request object', () => { + it('should measure request body size', async () => { + const { response } = await tracedFetch({ + callback: () => + fetch( + new Request('/api/echo-body.json', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(DEFAULT_BODY), + }) + ), + config: { measureRequestSize: true }, + }); + assertJSONBody(response); + assertHasRequestContentLength(); + }); + }); + + describe('with a Request object and a URLSearchParams body', () => { + it('should measure request body size', async () => { + const { response } = await tracedFetch({ + callback: () => + fetch( + new Request('/api/echo-body.json', { + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: new URLSearchParams(DEFAULT_BODY), + }) + ), + config: { measureRequestSize: true }, + }); + const { request } = await response.json(); + assert.strictEqual( + request.headers['content-type'], + 'application/x-www-form-urlencoded' + ); + assert.strictEqual(request.body, 'hello=world'); + assertHasRequestContentLength('hello=world'); + }); + }); + }); }); }); - describe('url and config object with stream', () => { - beforeEach(async () => { - await prepareData( - url, - () => - fetch(url, { - method: 'POST', - headers: { - foo: 'bar', - Accept: 'application/json', - 'Content-Type': 'application/json', - }, - body: textToReadableStream('{"hello":"world"}'), - }), - { - measureRequestSize: true, - } - ); - }); + describe('secure origin requests', () => { + const tracedFetch = async ({ + handlers = [ + msw.http.get('https://example.com/api/status.json', () => { + return msw.HttpResponse.json({ ok: true }); + }), + ], + callback = () => + fetch('https://example.com/api/status.json', { + mode: 'cors', + }), + config = {}, + }: { + handlers?: msw.RequestHandler[]; + callback?: () => Promise<Response>; + config?: FetchInstrumentationConfig; + } = {}): Promise<{ rootSpan: api.Span; response: Response }> => { + let response: Response | undefined; + + await startWorker(...handlers); + + const rootSpan = await trace(async () => { + response = await callback(); + }, config); + + assert.ok(response instanceof Response); + assert.strictEqual(exportedSpans.length, 1); + + return { rootSpan, response }; + }; - afterEach(() => { - clearData(); + it('span should have correct events (includes SECURE_CONNECTION_START)', async () => { + await tracedFetch(); + + const span: tracing.ReadableSpan = exportedSpans[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('should post data', async () => { - assert.strictEqual(requestBody, '{"hello":"world"}'); + describe('`applyCustomAttributesOnSpan` hook', () => { + const tracedFetch = async ({ + handlers = [ + msw.http.get('/api/project-headers.json', ({ request }) => { + const headers = new Headers(); + + for (const [key, value] of request.headers) { + headers.set(`x-request-${key}`, value); + } + + return msw.HttpResponse.json({ ok: true }, { headers }); + }), + msw.http.get('/api/fail.json', () => { + return msw.HttpResponse.json({ fail: true }, { status: 500 }); + }), + ], + callback = () => fetch('/api/project-headers.json'), + config, + }: { + handlers?: msw.RequestHandler[]; + callback?: () => Promise<Response>; + config: FetchInstrumentationConfig & + Required< + Pick<FetchInstrumentationConfig, 'applyCustomAttributesOnSpan'> + >; + }): Promise<{ rootSpan: api.Span; response: Response }> => { + let response: Response | undefined; + + await startWorker(...handlers); + + // The current implementation doesn't call this hook until the body has + // been fully read, this ensures that timing is met before returning to + // the test so we don't have to deal with it in every test. Plus it + // checks that the hook is definitely called which is important here. + const appliedCustomAttributes = new Promise<void>(resolve => { + const originalHook = config.applyCustomAttributesOnSpan; + + const applyCustomAttributesOnSpan = ( + ...args: Parameters<FetchCustomAttributeFunction> + ) => { + resolve(); + originalHook(...args); + }; + + config = { ...config, applyCustomAttributesOnSpan }; + }); - const span: tracing.ReadableSpan = exportSpy.args[1][0][0]; - const attributes = span.attributes; + const rootSpan = await trace(async () => { + response = await callback(); + }, config); - assert.strictEqual( - attributes[SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED], - 17 - ); - }); - }); + await appliedCustomAttributes; - describe('single request object', () => { - beforeEach(async () => { - await prepareData( - url, - () => { - const req = new Request(url, { - method: 'POST', - headers: { - foo: 'bar', - Accept: 'application/json', - 'Content-Type': 'application/json', - }, - body: '{"hello":"world"}', - }); - return fetch(req); + assert.ok(response instanceof Response); + assert.strictEqual(exportedSpans.length, 1); + + return { rootSpan, response }; + }; + + it('can apply arbitrary attributes to the span indiscriminantly', async () => { + await tracedFetch({ + config: { + applyCustomAttributesOnSpan: span => { + span.setAttribute('custom.foo', 'bar'); + }, }, - { - measureRequestSize: true, - } - ); - }); + }); - afterEach(() => { - clearData(); + const span: tracing.ReadableSpan = exportedSpans[0]; + assert.strictEqual(span.attributes['custom.foo'], 'bar'); }); - it('should post data', async () => { - assert.strictEqual(requestBody, '{"hello":"world"}'); + describe('successful request', () => { + it('has access to the request and response objects', async () => { + await tracedFetch({ + callback: () => + fetch( + new Request('/api/project-headers.json', { + headers: new Headers({ + foo: 'bar', + }), + }) + ), + config: { + applyCustomAttributesOnSpan: (span, request, response) => { + assert.ok(request.headers instanceof Headers); + assert.ok(response instanceof Response); + assert.ok(response.headers instanceof Headers); + + assert.strictEqual( + request.headers.get('foo'), + response.headers.get('x-request-foo') + ); + + span.setAttribute( + 'custom.foo', + response.headers.get('x-request-foo')! + ); + + /* + Note: this confirms that nothing *in the instrumentation code* + consumed the response body; it doesn't guarantee that the response + object passed to the `applyCustomAttributes` hook will always have + a consumable body – in fact, this is typically *not* the case: + + ```js + // user code: + let response = await fetch("foo"); + let json = await response.json(); // <- user code consumes the body on `response` + // ... + + { + // ...this is called sometime later... + applyCustomAttributes(span, request, response) { + // too late! + response.bodyUsed // => true + } + } + ``` + + See https://github.com/open-telemetry/opentelemetry-js/pull/5281 + */ + assert.strictEqual(response.bodyUsed, false); + }, + }, + }); + + const span: tracing.ReadableSpan = exportedSpans[0]; + assert.strictEqual(span.attributes['custom.foo'], 'bar'); + }); - const span: tracing.ReadableSpan = exportSpy.args[1][0][0]; - const attributes = span.attributes; + // https://github.com/open-telemetry/opentelemetry-js/pull/5281 + it('will not be able to access the response body if already consumed by the application', async () => { + await tracedFetch({ + callback: async () => { + const response = await fetch( + new Request('/api/project-headers.json') + ); - assert.strictEqual( - attributes[SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED], - 17 - ); + // body consumed here by the application + await response.json(); + + return response; + }, + config: { + applyCustomAttributesOnSpan: (span, _request, response) => { + assert.ok(response instanceof Response); + + span.setAttribute('custom.body-used', response.bodyUsed); + }, + }, + }); + + const span: tracing.ReadableSpan = exportedSpans[0]; + assert.strictEqual(span.attributes['custom.body-used'], true); + }); }); }); - describe('single request object with urlparams', () => { - beforeEach(async () => { - await prepareData( - url, - () => { - const body = new URLSearchParams(); - body.append('hello', 'world'); - const req = new Request(url, { - method: 'POST', - headers: { - foo: 'bar', - Accept: 'application/json', - 'Content-Type': 'application/json', - }, - body, - }); - return fetch(req); + describe('`ignoreUrls` config', () => { + const tracedFetch = async ({ + handlers = [ + msw.http.get('/api/ignored.json', () => { + return msw.HttpResponse.json({ ok: true }); + }), + msw.http.get('/api/not-ignored.json', () => { + return msw.HttpResponse.json({ ok: true }); + }), + ], + callback, + expectExport = true, + }: { + handlers?: msw.RequestHandler[]; + callback: () => Promise<Response>; + expectExport?: boolean; + }): Promise<{ rootSpan: api.Span; response: Response }> => { + let response: Response | undefined; + + await startWorker(...handlers); + + const rootSpan = await trace( + async () => { + response = await callback(); }, - { - measureRequestSize: true, - } + { ignoreUrls: [/\/ignored\.json/] }, + expectExport ); - }); - afterEach(() => { - clearData(); - }); + assert.ok(response instanceof Response); - it('should post data', async () => { - assert.strictEqual(requestBody, 'hello=world'); + return { rootSpan, response }; + }; - const span: tracing.ReadableSpan = exportSpy.args[1][0][0]; - const attributes = span.attributes; + let spyDebug: sinon.SinonSpy | undefined; - assert.strictEqual( - attributes[SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED], - 11 - ); + beforeEach(async () => { + const logger = new api.DiagConsoleLogger(); + spyDebug = sinon.stub(logger, 'debug'); + api.diag.setLogger(logger, api.DiagLogLevel.ALL); }); - }); - }); - describe('when request is secure and successful', () => { - beforeEach(async () => { - const propagateTraceHeaderCorsUrls = [secureUrl]; - await prepareData(secureUrl, () => getData(secureUrl), { - propagateTraceHeaderCorsUrls, + afterEach(() => { + api.diag.disable(); + spyDebug = undefined; }); - }); - 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, - ]); - }); + const assertNoDebugMessages = () => { + assert.ok(spyDebug); + sinon.assert.neverCalledWith( + spyDebug, + '@opentelemetry/instrumentation-fetch', + 'ignoring span as url matches ignored url' + ); + }; - 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, - ]); - }); - }); + const assertDebugMessage = () => { + assert.ok(spyDebug); + sinon.assert.calledWith( + spyDebug, + '@opentelemetry/instrumentation-fetch', + 'ignoring span as url matches ignored url' + ); + }; - describe('applyCustomAttributesOnSpan option', () => { - const prepare = async ( - url: string, - applyCustomAttributesOnSpan: FetchCustomAttributeFunction - ) => { - const propagateTraceHeaderCorsUrls = [url]; + it('should create spans for normal request', async () => { + await tracedFetch({ + callback: () => fetch('/api/not-ignored.json'), + }); - await prepareData(url, () => getData(url), { - propagateTraceHeaderCorsUrls, - applyCustomAttributesOnSpan, + assert.strictEqual(exportedSpans.length, 1); + assertNoDebugMessages(); }); - }; - afterEach(() => { - clearData(); - }); + it('should not create any spans for ignored request', async () => { + await tracedFetch({ + callback: () => fetch('/api/ignored.json'), + expectExport: false, + }); - it('applies attributes when the request is successful', async () => { - await prepare(url, span => { - span.setAttribute(CUSTOM_ATTRIBUTE_KEY, 'custom value'); + assertDebugMessage(); }); - const span: tracing.ReadableSpan = exportSpy.args[1][0][0]; - const attributes = span.attributes; - - assert.ok(attributes[CUSTOM_ATTRIBUTE_KEY] === 'custom value'); }); - it('applies custom attributes when the request fails', async () => { - await prepare(badUrl, span => { - span.setAttribute(CUSTOM_ATTRIBUTE_KEY, 'custom value'); + describe('unsuccessful request', () => { + describe('wrong URL (404)', () => { + const tracedFetch = async ({ + handlers = [ + msw.http.get('/not-found.json', () => { + return msw.HttpResponse.json({ ok: false }, { status: 404 }); + }), + ], + callback = () => fetch('/not-found.json'), + config = {}, + }: { + handlers?: msw.RequestHandler[]; + callback?: () => Promise<Response>; + config?: FetchInstrumentationConfig; + } = {}): Promise<{ rootSpan: api.Span; response: Response }> => { + let response: Response | undefined; + + await startWorker(...handlers); + + const rootSpan = await trace(async () => { + response = await callback(); + }, config); + + assert.ok(response instanceof Response); + assert.strictEqual(exportedSpans.length, 1); + + return { rootSpan, response }; + }; + + it('should create a span with correct root span', async () => { + const { rootSpan } = await tracedFetch(); + + assert.strictEqual( + exportedSpans.length, + 1, + 'creates a single span for the fetch() request' + ); + + const span: tracing.ReadableSpan = exportedSpans[0]; + + assert.strictEqual( + span.parentSpanId, + rootSpan!.spanContext().spanId, + 'parent span is not root span' + ); + }); }); - const span: tracing.ReadableSpan = exportSpy.args[1][0][0]; - const attributes = span.attributes; - assert.ok(attributes[CUSTOM_ATTRIBUTE_KEY] === 'custom value'); + describe('wrong HTTP method (405)', () => { + const tracedFetch = async ({ + handlers = [ + msw.http.get('/post-only.json', () => { + return msw.HttpResponse.json({ ok: false }, { status: 405 }); + }), + msw.http.post('/post-only.json', () => { + return msw.HttpResponse.json({ ok: true }); + }), + ], + callback = () => fetch('/post-only.json'), + config = {}, + }: { + handlers?: msw.RequestHandler[]; + callback?: () => Promise<Response>; + config?: FetchInstrumentationConfig; + } = {}): Promise<{ rootSpan: api.Span; response: Response }> => { + let response: Response | undefined; + + await startWorker(...handlers); + + const rootSpan = await trace(async () => { + response = await callback(); + }, config); + + assert.ok(response instanceof Response); + assert.strictEqual(exportedSpans.length, 1); + + return { rootSpan, response }; + }; + + it('should create a span with correct root span', async () => { + const { rootSpan } = await tracedFetch(); + + assert.strictEqual( + exportedSpans.length, + 1, + 'creates a single span for the fetch() request' + ); + + const span: tracing.ReadableSpan = exportedSpans[0]; + + assert.strictEqual( + span.parentSpanId, + rootSpan!.spanContext().spanId, + 'parent span is not root span' + ); + }); + }); }); - it('has request and response objects in callback arguments', async () => { - let request: any; - let response: any; - const applyCustomAttributes: FetchCustomAttributeFunction = ( - span, - req, - res - ) => { - request = req; - response = res; + describe('PerformanceObserver', () => { + const tracedFetch = async ({ + handlers = [ + msw.http.get('/api/status.json', () => { + return msw.HttpResponse.json({ ok: true }); + }), + ], + callback = () => fetch('/api/status.json'), + config = {}, + }: { + handlers?: msw.RequestHandler[]; + callback?: () => Promise<Response>; + config?: FetchInstrumentationConfig; + } = {}): Promise<{ rootSpan: api.Span; response: Response }> => { + let response: Response | undefined; + + await startWorker(...handlers); + + const rootSpan = await trace(async () => { + response = await callback(); + }, config); + + assert.ok(response instanceof Response); + assert.strictEqual(exportedSpans.length, 1); + + return { rootSpan, response }; }; - await prepare(url, applyCustomAttributes); - assert.strictEqual(request.method, 'GET'); - assert.ok(lastResponse !== undefined); - assert.strictEqual(response, lastResponse); - assert.strictEqual(response.status, 200); - - /* - Note: this confirms that nothing *in the instrumentation code* - consumed the response body; it doesn't guarantee that the response - object passed to the `applyCustomAttributes` hook will always have - a consumable body – in fact, this is typically *not* the case: - - ```js - // user code: - let response = await fetch("foo"); - let json = await response.json(); // <- user code consumes the body on `response` - // ... - - { - // ...this is called sometime later... - applyCustomAttributes(span, request, response) { - // too late! - response.bodyUsed // => true - } - } - ``` - */ - assert.strictEqual(response.bodyUsed, false); - }); - }); + // This is essentially the same as the basic tests from above, but + // asserting that the data indeed came from PerformanceObserver, as + // opposed to performance.getEntriesByType. + describe('when `PerformanceObserver` is available', () => { + if (!PerformanceObserver?.supportedEntryTypes?.includes('resource')) { + // eslint-disable-next-line no-console + console.warn( + 'Testing in an environment without `PerformanceObserver`!' + ); + + return; + } - describe('when url is ignored', () => { - beforeEach(async () => { - const propagateTraceHeaderCorsUrls = url; - await prepareData(url, () => getData(url), { - propagateTraceHeaderCorsUrls, - ignoreUrls: [propagateTraceHeaderCorsUrls], - }); - }); + let getEntriesByTypeStub: sinon.SinonStub | undefined; + let rootSpan: api.Span | undefined; - afterEach(() => { - clearData(); - }); + beforeEach(async () => { + getEntriesByTypeStub = sinon + .stub(performance, 'getEntriesByType') + .throws(); - it('should NOT create any span', () => { - assert.strictEqual(exportSpy.args.length, 0, "span shouldn't b exported"); - }); + const result = await tracedFetch(); + rootSpan = result.rootSpan; + }); - it('should accept Request objects as argument (#2411)', async () => { - const response = await window.fetch(new Request(url)); - assert.ok(response instanceof Response); + afterEach(() => { + assert.strictEqual( + getEntriesByTypeStub?.notCalled, + true, + 'should not call performance.getEntriesByType' + ); - const { isServerResponse } = await response.json(); - assert.strictEqual(isServerResponse, true); - }); - }); + getEntriesByTypeStub = undefined; + rootSpan = undefined; + }); - describe('when clearTimingResources is TRUE', () => { - beforeEach(async () => { - const propagateTraceHeaderCorsUrls = url; - await prepareData(url, () => getData(url), { - propagateTraceHeaderCorsUrls, - clearTimingResources: true, - }); - }); - afterEach(() => { - clearData(); - }); - it('should clear the resources', () => { - assert.strictEqual( - clearResourceTimingsSpy.args.length, - 1, - "resources haven't been cleared" - ); - }); - }); + it('should create a span with correct root span', () => { + assert.strictEqual( + exportedSpans.length, + 1, + 'creates a single span for the fetch() request' + ); - describe('when request is NOT successful (wrong url)', () => { - beforeEach(async () => { - const propagateTraceHeaderCorsUrls = badUrl; - await prepareData(badUrl, () => getData(badUrl), { - propagateTraceHeaderCorsUrls, - }); - }); - afterEach(() => { - clearData(); - }); - it('should create a span with correct root span', () => { - const span: tracing.ReadableSpan = exportSpy.args[1][0][0]; - assert.strictEqual( - span.parentSpanId, - rootSpan.spanContext().spanId, - 'parent span is not root span' - ); - }); - }); + const span: tracing.ReadableSpan = exportedSpans[0]; + + assert.strictEqual( + span.parentSpanId, + rootSpan!.spanContext().spanId, + 'parent span is not root span' + ); + }); + + it('span should have correct events', async () => { + const span: tracing.ReadableSpan = exportedSpans[0]; + const events = span.events; + 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, + PTN.RESPONSE_START, + PTN.RESPONSE_END, + ]); + }); - describe('when request is NOT successful (405)', () => { - beforeEach(async () => { - const propagateTraceHeaderCorsUrls = url; - await prepareData(url, () => getData(url, 'DELETE'), { - propagateTraceHeaderCorsUrls, + it('span should have correct (absolute) http.url attribute', () => { + const span: tracing.ReadableSpan = exportedSpans[0]; + assert.strictEqual( + span.attributes[SEMATTRS_HTTP_URL], + `${ORIGIN}/api/status.json`, + `attributes ${SEMATTRS_HTTP_URL} is wrong` + ); + }); }); - }); - afterEach(() => { - clearData(); - }); - it('should create a span with correct root span', () => { - const span: tracing.ReadableSpan = exportSpy.args[1][0][0]; - assert.strictEqual( - span.parentSpanId, - rootSpan.spanContext().spanId, - 'parent span is not root span' - ); - }); - }); + describe('when `PerformanceObserver` is NOT available', () => { + beforeEach(async () => { + sinon.stub(window, 'PerformanceObserver').value(undefined); + + // This seemingly random timeout is testing real behavior! + // + // Currently, the implementation works by waiting a hardcoded + // OBSERVER_WAIT_TIME_MS before trying to get the resource + // timing entries, and hoping that they are there by then. + // + // We will match that here plus an additional 50ms. If the + // tests still fail despite this timeout, then we may have + // found a bug that could occur in the real world, and it's + // probably time to revisit the naïve implementation. + // + // This should be updated as the implementation changes. + waitForPerformanceObservers = () => + waitFor(OBSERVER_WAIT_TIME_MS + 50); + }); - describe('when PerformanceObserver is used by default', () => { - beforeEach(async () => { - // All above tests test it already but just in case - // lets explicitly turn getEntriesByType off so we can be sure - // that the perf entries come from the observer. - await prepareData(url, () => getData(url), {}, false, true); - }); - afterEach(() => { - clearData(); - }); - it('should create both spans with network events', () => { - const span: tracing.ReadableSpan = exportSpy.args[0][0][0]; - const events = span.events; + // The assertions are essentially the same as the tests from above, but + // here we are asserting that when the data is still correct even when + // it comes from the fallback performance.getEntriesByType. + describe('when `getEntriesByType` is available', () => { + if (typeof performance.getEntriesByType !== 'function') { + // eslint-disable-next-line no-console + console.warn( + 'Testing in an environment without `performance.getEntriesByType`!' + ); + + return; + } - assert.strictEqual( - exportSpy.args.length, - 2, - `Wrong number of spans: ${exportSpy.args.length}` - ); + let getEntriesByTypeSpy: sinon.SinonSpy | undefined; + let rootSpan: api.Span | undefined; + + beforeEach(async () => { + // Free up the buffer to ensure our events can be collected + performance.clearResourceTimings(); + + getEntriesByTypeSpy = sinon.spy(performance, 'getEntriesByType'); + + const result = await tracedFetch(); + rootSpan = result.rootSpan; + }); + + afterEach(() => { + assert.strictEqual( + getEntriesByTypeSpy?.called, + true, + 'should call performance.getEntriesByType' + ); + + getEntriesByTypeSpy = undefined; + rootSpan = undefined; + }); + + it('should create a span with correct root span', () => { + assert.strictEqual( + exportedSpans.length, + 1, + 'creates a single span for the fetch() request' + ); + + const span: tracing.ReadableSpan = exportedSpans[0]; + + assert.strictEqual( + span.parentSpanId, + rootSpan!.spanContext().spanId, + 'parent span is not root span' + ); + }); + + it('span should have correct events', async () => { + const span: tracing.ReadableSpan = exportedSpans[0]; + const events = span.events; + 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, + PTN.RESPONSE_START, + PTN.RESPONSE_END, + ]); + }); + + it('span should have correct (absolute) http.url attribute', () => { + const span: tracing.ReadableSpan = exportedSpans[0]; + assert.strictEqual( + span.attributes[SEMATTRS_HTTP_URL], + `${ORIGIN}/api/status.json`, + `attributes ${SEMATTRS_HTTP_URL} is wrong` + ); + }); + }); - 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, - PTN.RESPONSE_START, - PTN.RESPONSE_END, - ]); + // This is the worst case scenario, all resource-timing dependent data + // will be missing + describe('when `getEntriesByType` is NOT available', () => { + let rootSpan: api.Span | undefined; + + beforeEach(async () => { + sinon.stub(performance, 'getEntriesByType').value(undefined); + + const result = await tracedFetch(); + rootSpan = result.rootSpan; + }); + + afterEach(() => { + rootSpan = undefined; + }); + + it('should create a span with correct root span', () => { + assert.strictEqual( + exportedSpans.length, + 1, + 'creates a single span for the fetch() request' + ); + + const span: tracing.ReadableSpan = exportedSpans[0]; + + assert.strictEqual( + span.parentSpanId, + rootSpan!.spanContext().spanId, + 'parent span is not root span' + ); + }); + + it('span should have no events', async () => { + const span: tracing.ReadableSpan = exportedSpans[0]; + assert.strictEqual( + span.events.length, + 0, + 'should not have any events' + ); + }); + + it('span should have correct basic attributes', () => { + const span: tracing.ReadableSpan = exportedSpans[0]; + + assert.strictEqual(span.name, 'HTTP GET', `wrong span name`); + + assert.strictEqual( + span.attributes[SEMATTRS_HTTP_STATUS_CODE], + 200, + `attributes ${SEMATTRS_HTTP_STATUS_CODE} is wrong` + ); + }); + + it('span should have correct (absolute) http.url attribute', () => { + const span: tracing.ReadableSpan = exportedSpans[0]; + assert.strictEqual( + span.attributes[SEMATTRS_HTTP_URL], + `${ORIGIN}/api/status.json`, + `attributes ${SEMATTRS_HTTP_URL} is wrong` + ); + }); + }); + }); }); - }); - describe('when fetching with relative url', () => { - beforeEach(async () => { - await prepareData('/get', () => getData('/get'), {}, false, true); - }); - afterEach(() => { - clearData(); - }); - it('should create spans with network info', () => { - // no prefetch span because mock observer uses location.origin as url when relative - // and prefetch span finding compares url origins - const span: tracing.ReadableSpan = exportSpy.args[0][0][0]; - const events = span.events; + describe('`ignoreNetworkEvents` config', () => { + const tracedFetch = async ({ + handlers = [ + msw.http.get('/api/status.json', () => { + return msw.HttpResponse.json({ ok: true }); + }), + ], + callback = () => fetch('/api/status.json'), + config = {}, + }: { + handlers?: msw.RequestHandler[]; + callback?: () => Promise<Response>; + config?: FetchInstrumentationConfig; + } = {}): Promise<{ rootSpan: api.Span; response: Response }> => { + let response: Response | undefined; + + await startWorker(...handlers); + + const rootSpan = await trace(async () => { + response = await callback(); + }, config); + + assert.ok(response instanceof Response); + assert.strictEqual(exportedSpans.length, 1); + + return { rootSpan, response }; + }; - assert.strictEqual( - exportSpy.args.length, - 1, - `Wrong number of spans: ${exportSpy.args.length}` - ); + describe('when `ignoreNetworkEvents` is not set', function () { + let response: Response | undefined; - 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, - PTN.RESPONSE_START, - PTN.RESPONSE_END, - ]); - }); + beforeEach(async () => { + const result = await tracedFetch(); + response = result.response; + }); - it('should have an absolute http.url attribute', () => { - const span: tracing.ReadableSpan = exportSpy.args[0][0][0]; - const attributes = span.attributes; + afterEach(() => { + response = undefined; + }); - assert.strictEqual( - attributes[SEMATTRS_HTTP_URL], - location.origin + '/get', - `attributes ${SEMATTRS_HTTP_URL} is wrong` - ); - }); - }); + it('span should have correct events', async () => { + const span: tracing.ReadableSpan = exportedSpans[0]; + const events = span.events; + 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, + PTN.RESPONSE_START, + PTN.RESPONSE_END, + ]); + }); - describe('when PerformanceObserver is undefined', () => { - beforeEach(async () => { - await prepareData(url, () => getData(url), {}, true, false); - }); + it('span should have http.response_content_length attribute', () => { + const span: tracing.ReadableSpan = exportedSpans[0]; + assert.strictEqual( + span.attributes[SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH], + parseInt(response!.headers.get('content-length')!), + `attributes ${SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH} is <= 0` + ); + }); + }); - afterEach(() => { - clearData(); - }); + describe('when `ignoreNetworkEvents` is `false`', function () { + let response: Response | undefined; - it('should fallback to getEntries', () => { - const span: tracing.ReadableSpan = exportSpy.args[0][0][0]; - const events = span.events; + beforeEach(async () => { + const result = await tracedFetch({ + config: { ignoreNetworkEvents: false }, + }); + response = result.response; + }); - assert.strictEqual( - exportSpy.args.length, - 2, - `Wrong number of spans: ${exportSpy.args.length}` - ); - 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, - PTN.RESPONSE_START, - PTN.RESPONSE_END, - ]); - }); - }); + afterEach(() => { + response = undefined; + }); - describe('when PerformanceObserver and performance.getEntriesByType are undefined', () => { - beforeEach(async () => { - await prepareData(url, () => getData(url), {}, true, true); - }); - afterEach(() => { - clearData(); - }); - it('should still capture fetch with basic attributes', () => { - const span: tracing.ReadableSpan = exportSpy.args[0][0][0]; - const events = span.events; - const attributes = span.attributes; - const keys = Object.keys(attributes); + it('span should have correct events', async () => { + const span: tracing.ReadableSpan = exportedSpans[0]; + const events = span.events; + 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, + PTN.RESPONSE_START, + PTN.RESPONSE_END, + ]); + }); - assert.strictEqual( - exportSpy.args.length, - 1, - `Wrong number of spans: ${exportSpy.args.length}` - ); - assert.strictEqual( - exportSpy.args[0][0][0].name, - 'HTTP GET', - 'wrong span captured' - ); + it('span should have http.response_content_length attribute', () => { + const span: tracing.ReadableSpan = exportedSpans[0]; + assert.strictEqual( + span.attributes[SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH], + parseInt(response!.headers.get('content-length')!), + `attributes ${SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH} is <= 0` + ); + }); + }); - assert.strictEqual(events.length, 0, 'Should not have any events'); + describe('when `ignoreNetworkEvents` is `true`', function () { + let response: Response | undefined; - // should still have basic attributes - assert.strictEqual( - attributes[keys[3]], - 200, - `Missing basic attribute ${SEMATTRS_HTTP_STATUS_CODE}` - ); - }); - }); + beforeEach(async () => { + const result = await tracedFetch({ + config: { ignoreNetworkEvents: true }, + }); + response = result.response; + }); - describe('when network events are ignored', () => { - beforeEach(async () => { - await prepareData(url, () => getData(url), { - ignoreNetworkEvents: true, - }); - }); - afterEach(() => { - clearData(); - }); - it('should NOT add network events', () => { - const span: tracing.ReadableSpan = exportSpy.args[1][0][0]; - const events = span.events; - assert.strictEqual(events.length, 0, 'number of events is wrong'); - }); + afterEach(() => { + response = undefined; + }); - it('should still add the CONTENT_LENGTH attribute', () => { - const span: tracing.ReadableSpan = exportSpy.args[1][0][0]; - const attributes = span.attributes; - const responseContentLength = attributes[ - SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH - ] as number; - assert.strictEqual( - responseContentLength, - 60, - `attributes ${SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH} is <= 0` - ); + it('span should have no events', async () => { + const span: tracing.ReadableSpan = exportedSpans[0]; + assert.strictEqual( + span.events.length, + 0, + 'should not have any events' + ); + }); + + it('span should have http.response_content_length attribute', () => { + const span: tracing.ReadableSpan = exportedSpans[0]; + assert.strictEqual( + span.attributes[SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH], + parseInt(response!.headers.get('content-length')!), + `attributes ${SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH} is <= 0` + ); + }); + }); }); }); }); diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/test/mockServiceWorker.js b/experimental/packages/opentelemetry-instrumentation-fetch/test/mockServiceWorker.js new file mode 100644 index 00000000000..ec47a9a50a2 --- /dev/null +++ b/experimental/packages/opentelemetry-instrumentation-fetch/test/mockServiceWorker.js @@ -0,0 +1,307 @@ +/* eslint-disable */ +/* tslint:disable */ + +/** + * Mock Service Worker. + * @see https://github.com/mswjs/msw + * - Please do NOT modify this file. + * - Please do NOT serve this file on production. + */ + +const PACKAGE_VERSION = '2.7.0' +const INTEGRITY_CHECKSUM = '00729d72e3b82faf54ca8b9621dbb96f' +const IS_MOCKED_RESPONSE = Symbol('isMockedResponse') +const activeClientIds = new Set() + +self.addEventListener('install', function () { + self.skipWaiting() +}) + +self.addEventListener('activate', function (event) { + event.waitUntil(self.clients.claim()) +}) + +self.addEventListener('message', async function (event) { + const clientId = event.source.id + + if (!clientId || !self.clients) { + return + } + + const client = await self.clients.get(clientId) + + if (!client) { + return + } + + const allClients = await self.clients.matchAll({ + type: 'window', + }) + + switch (event.data) { + case 'KEEPALIVE_REQUEST': { + sendToClient(client, { + type: 'KEEPALIVE_RESPONSE', + }) + break + } + + case 'INTEGRITY_CHECK_REQUEST': { + sendToClient(client, { + type: 'INTEGRITY_CHECK_RESPONSE', + payload: { + packageVersion: PACKAGE_VERSION, + checksum: INTEGRITY_CHECKSUM, + }, + }) + break + } + + case 'MOCK_ACTIVATE': { + activeClientIds.add(clientId) + + sendToClient(client, { + type: 'MOCKING_ENABLED', + payload: { + client: { + id: client.id, + frameType: client.frameType, + }, + }, + }) + break + } + + case 'MOCK_DEACTIVATE': { + activeClientIds.delete(clientId) + break + } + + case 'CLIENT_CLOSED': { + activeClientIds.delete(clientId) + + const remainingClients = allClients.filter((client) => { + return client.id !== clientId + }) + + // Unregister itself when there are no more clients + if (remainingClients.length === 0) { + self.registration.unregister() + } + + break + } + } +}) + +self.addEventListener('fetch', function (event) { + const { request } = event + + // Bypass navigation requests. + if (request.mode === 'navigate') { + return + } + + // Opening the DevTools triggers the "only-if-cached" request + // that cannot be handled by the worker. Bypass such requests. + if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') { + return + } + + // Bypass all requests when there are no active clients. + // Prevents the self-unregistered worked from handling requests + // after it's been deleted (still remains active until the next reload). + if (activeClientIds.size === 0) { + return + } + + // Generate unique request ID. + const requestId = crypto.randomUUID() + event.respondWith(handleRequest(event, requestId)) +}) + +async function handleRequest(event, requestId) { + const client = await resolveMainClient(event) + const response = await getResponse(event, client, requestId) + + // Send back the response clone for the "response:*" life-cycle events. + // Ensure MSW is active and ready to handle the message, otherwise + // this message will pend indefinitely. + if (client && activeClientIds.has(client.id)) { + ;(async function () { + const responseClone = response.clone() + + sendToClient( + client, + { + type: 'RESPONSE', + payload: { + requestId, + isMockedResponse: IS_MOCKED_RESPONSE in response, + type: responseClone.type, + status: responseClone.status, + statusText: responseClone.statusText, + body: responseClone.body, + headers: Object.fromEntries(responseClone.headers.entries()), + }, + }, + [responseClone.body], + ) + })() + } + + return response +} + +// Resolve the main client for the given event. +// Client that issues a request doesn't necessarily equal the client +// that registered the worker. It's with the latter the worker should +// communicate with during the response resolving phase. +async function resolveMainClient(event) { + const client = await self.clients.get(event.clientId) + + if (activeClientIds.has(event.clientId)) { + return client + } + + if (client?.frameType === 'top-level') { + return client + } + + const allClients = await self.clients.matchAll({ + type: 'window', + }) + + return allClients + .filter((client) => { + // Get only those clients that are currently visible. + return client.visibilityState === 'visible' + }) + .find((client) => { + // Find the client ID that's recorded in the + // set of clients that have registered the worker. + return activeClientIds.has(client.id) + }) +} + +async function getResponse(event, client, requestId) { + const { request } = event + + // Clone the request because it might've been already used + // (i.e. its body has been read and sent to the client). + const requestClone = request.clone() + + function passthrough() { + // Cast the request headers to a new Headers instance + // so the headers can be manipulated with. + const headers = new Headers(requestClone.headers) + + // Remove the "accept" header value that marked this request as passthrough. + // This prevents request alteration and also keeps it compliant with the + // user-defined CORS policies. + const acceptHeader = headers.get('accept') + if (acceptHeader) { + const values = acceptHeader.split(',').map((value) => value.trim()) + const filteredValues = values.filter( + (value) => value !== 'msw/passthrough', + ) + + if (filteredValues.length > 0) { + headers.set('accept', filteredValues.join(', ')) + } else { + headers.delete('accept') + } + } + + return fetch(requestClone, { headers }) + } + + // Bypass mocking when the client is not active. + if (!client) { + return passthrough() + } + + // Bypass initial page load requests (i.e. static assets). + // The absence of the immediate/parent client in the map of the active clients + // means that MSW hasn't dispatched the "MOCK_ACTIVATE" event yet + // and is not ready to handle requests. + if (!activeClientIds.has(client.id)) { + return passthrough() + } + + // Notify the client that a request has been intercepted. + const requestBuffer = await request.arrayBuffer() + const clientMessage = await sendToClient( + client, + { + type: 'REQUEST', + payload: { + id: requestId, + url: request.url, + mode: request.mode, + method: request.method, + headers: Object.fromEntries(request.headers.entries()), + cache: request.cache, + credentials: request.credentials, + destination: request.destination, + integrity: request.integrity, + redirect: request.redirect, + referrer: request.referrer, + referrerPolicy: request.referrerPolicy, + body: requestBuffer, + keepalive: request.keepalive, + }, + }, + [requestBuffer], + ) + + switch (clientMessage.type) { + case 'MOCK_RESPONSE': { + return respondWithMock(clientMessage.data) + } + + case 'PASSTHROUGH': { + return passthrough() + } + } + + return passthrough() +} + +function sendToClient(client, message, transferrables = []) { + return new Promise((resolve, reject) => { + const channel = new MessageChannel() + + channel.port1.onmessage = (event) => { + if (event.data && event.data.error) { + return reject(event.data.error) + } + + resolve(event.data) + } + + client.postMessage( + message, + [channel.port2].concat(transferrables.filter(Boolean)), + ) + }) +} + +async function respondWithMock(response) { + // Setting response status code to 0 is a no-op. + // However, when responding with a "Response.error()", the produced Response + // instance will have status code set to 0. Since it's not possible to create + // a Response instance with status code 0, handle that use-case separately. + if (response.status === 0) { + return Response.error() + } + + const mockedResponse = new Response(response.body, response) + + Reflect.defineProperty(mockedResponse, IS_MOCKED_RESPONSE, { + value: true, + enumerable: true, + }) + + return mockedResponse +} diff --git a/package-lock.json b/package-lock.json index 7a80b690141..d74b6410241 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2347,6 +2347,7 @@ "karma-webpack": "5.0.1", "lerna": "6.6.2", "mocha": "10.8.2", + "msw": "^2.7.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -5849,6 +5850,47 @@ "node": ">=12" } }, + "node_modules/@bundled-es-modules/cookie": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/cookie/-/cookie-2.0.1.tgz", + "integrity": "sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cookie": "^0.7.2" + } + }, + "node_modules/@bundled-es-modules/statuses": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/statuses/-/statuses-1.0.1.tgz", + "integrity": "sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==", + "dev": true, + "license": "ISC", + "dependencies": { + "statuses": "^2.0.1" + } + }, + "node_modules/@bundled-es-modules/statuses/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@bundled-es-modules/tough-cookie": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/tough-cookie/-/tough-cookie-0.1.6.tgz", + "integrity": "sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@types/tough-cookie": "^4.0.5", + "tough-cookie": "^4.1.4" + } + }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -6181,6 +6223,123 @@ "node": ">=6.9.0" } }, + "node_modules/@inquirer/confirm": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.4.tgz", + "integrity": "sha512-EsiT7K4beM5fN5Mz6j866EFA9+v9d5o9VUra3hrg8zY4GHmCS8b616FErbdo5eyKoVotBQkHzMIeeKYsKDStDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.1.5", + "@inquirer/type": "^3.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + } + }, + "node_modules/@inquirer/core": { + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.5.tgz", + "integrity": "sha512-/vyCWhET0ktav/mUeBqJRYTwmjFPIKPRYb3COAw7qORULgipGSUO2vL32lQKki3UxDKJ8BvuEbokaoyCA6YlWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/figures": "^1.0.10", + "@inquirer/type": "^3.0.3", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/core/node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "node_modules/@inquirer/core/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@inquirer/core/node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@inquirer/core/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/core/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/figures": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.10.tgz", + "integrity": "sha512-Ey6176gZmeqZuY/W/nZiUyvmb1/qInjcpiZjXWi6nON+nxJpD1bxtSoBxNliGISae32n6OwbY+TSXPZ1CfS4bw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/type": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.3.tgz", + "integrity": "sha512-I4VIHFxUuY1bshGbXZTxCmhwaaEst9s/lll3ekok+o1Z26/ZUKdx8y1b7lsoG6rtsBDwEGfiBJ2SfirjoISLpg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -7008,6 +7167,24 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/@mswjs/interceptors": { + "version": "0.37.5", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.37.5.tgz", + "integrity": "sha512-AAwRb5vXFcY4L+FvZ7LZusDuZ0vEe0Zm8ohn1FM6/X7A3bj4mqmkAcGRWuvC2JwSygNwHAAmMnAI73vPHeqsHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "strict-event-emitter": "^0.5.1" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -8087,6 +8264,31 @@ "@octokit/openapi-types": "^18.0.0" } }, + "node_modules/@open-draft/deferred-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@open-draft/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-node-process": "^1.2.0", + "outvariant": "^1.4.0" + } + }, + "node_modules/@open-draft/until": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", + "dev": true, + "license": "MIT" + }, "node_modules/@opencensus/core": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.1.0.tgz", @@ -9307,6 +9509,13 @@ "@types/node": "*" } }, + "node_modules/@types/statuses": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.5.tgz", + "integrity": "sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/superagent": { "version": "8.1.9", "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.9.tgz", @@ -16274,6 +16483,16 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "node_modules/graphql": { + "version": "16.10.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.10.0.tgz", + "integrity": "sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -16438,6 +16657,13 @@ "he": "bin/he" } }, + "node_modules/headers-polyfill": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-4.0.3.tgz", + "integrity": "sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==", + "dev": true, + "license": "MIT" + }, "node_modules/hexer": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/hexer/-/hexer-1.5.0.tgz", @@ -17309,6 +17535,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-node-process": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", + "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", + "dev": true, + "license": "MIT" + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -20887,6 +21120,155 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, + "node_modules/msw": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.7.0.tgz", + "integrity": "sha512-BIodwZ19RWfCbYTxWTUfTXc+sg4OwjCAgxU1ZsgmggX/7S3LdUifsbUPJs61j0rWb19CZRGY5if77duhc0uXzw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@bundled-es-modules/cookie": "^2.0.1", + "@bundled-es-modules/statuses": "^1.0.1", + "@bundled-es-modules/tough-cookie": "^0.1.6", + "@inquirer/confirm": "^5.0.0", + "@mswjs/interceptors": "^0.37.0", + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/until": "^2.1.0", + "@types/cookie": "^0.6.0", + "@types/statuses": "^2.0.4", + "graphql": "^16.8.1", + "headers-polyfill": "^4.0.2", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "path-to-regexp": "^6.3.0", + "picocolors": "^1.1.1", + "strict-event-emitter": "^0.5.1", + "type-fest": "^4.26.1", + "yargs": "^17.7.2" + }, + "bin": { + "msw": "cli/index.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mswjs" + }, + "peerDependencies": { + "typescript": ">= 4.8.x" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/msw/node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/msw/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/msw/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/msw/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/msw/node_modules/type-fest": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.33.0.tgz", + "integrity": "sha512-s6zVrxuyKbbAsSAD5ZPTB77q4YIdRctkTbJ2/Dqlinwz+8ooH2gd+YA7VA6Pa93KML9GockVvoxjZ2vHP+mu8g==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/msw/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/msw/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/msw/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/multicast-dns": { "version": "7.2.5", "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", @@ -22340,6 +22722,13 @@ "node": ">=0.10.0" } }, + "node_modules/outvariant": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", + "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", + "dev": true, + "license": "MIT" + }, "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -23505,6 +23894,29 @@ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", "dev": true }, + "node_modules/psl": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } + }, + "node_modules/psl/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/pump": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", @@ -23816,6 +24228,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true, + "license": "MIT" + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -25784,6 +26203,13 @@ "bare-events": "^2.2.0" } }, + "node_modules/strict-event-emitter": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", + "dev": true, + "license": "MIT" + }, "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -26650,6 +27076,42 @@ "node": ">=0.6" } }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -27355,6 +27817,17 @@ "node": ">=6" } }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "node_modules/urlgrey": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-1.0.0.tgz", @@ -28486,6 +28959,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", + "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/zod": { "version": "3.22.4", "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", @@ -31360,6 +31846,42 @@ "dev": true, "optional": true }, + "@bundled-es-modules/cookie": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/cookie/-/cookie-2.0.1.tgz", + "integrity": "sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw==", + "dev": true, + "requires": { + "cookie": "^0.7.2" + } + }, + "@bundled-es-modules/statuses": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/statuses/-/statuses-1.0.1.tgz", + "integrity": "sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==", + "dev": true, + "requires": { + "statuses": "^2.0.1" + }, + "dependencies": { + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "@bundled-es-modules/tough-cookie": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/tough-cookie/-/tough-cookie-0.1.6.tgz", + "integrity": "sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==", + "dev": true, + "requires": { + "@types/tough-cookie": "^4.0.5", + "tough-cookie": "^4.1.4" + } + }, "@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -31610,6 +32132,87 @@ "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", "dev": true }, + "@inquirer/confirm": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.4.tgz", + "integrity": "sha512-EsiT7K4beM5fN5Mz6j866EFA9+v9d5o9VUra3hrg8zY4GHmCS8b616FErbdo5eyKoVotBQkHzMIeeKYsKDStDw==", + "dev": true, + "requires": { + "@inquirer/core": "^10.1.5", + "@inquirer/type": "^3.0.3" + } + }, + "@inquirer/core": { + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.5.tgz", + "integrity": "sha512-/vyCWhET0ktav/mUeBqJRYTwmjFPIKPRYb3COAw7qORULgipGSUO2vL32lQKki3UxDKJ8BvuEbokaoyCA6YlWw==", + "dev": true, + "requires": { + "@inquirer/figures": "^1.0.10", + "@inquirer/type": "^3.0.3", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" + }, + "dependencies": { + "cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "@inquirer/figures": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.10.tgz", + "integrity": "sha512-Ey6176gZmeqZuY/W/nZiUyvmb1/qInjcpiZjXWi6nON+nxJpD1bxtSoBxNliGISae32n6OwbY+TSXPZ1CfS4bw==", + "dev": true + }, + "@inquirer/type": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.3.tgz", + "integrity": "sha512-I4VIHFxUuY1bshGbXZTxCmhwaaEst9s/lll3ekok+o1Z26/ZUKdx8y1b7lsoG6rtsBDwEGfiBJ2SfirjoISLpg==", + "dev": true, + "requires": {} + }, "@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -32261,6 +32864,20 @@ } } }, + "@mswjs/interceptors": { + "version": "0.37.5", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.37.5.tgz", + "integrity": "sha512-AAwRb5vXFcY4L+FvZ7LZusDuZ0vEe0Zm8ohn1FM6/X7A3bj4mqmkAcGRWuvC2JwSygNwHAAmMnAI73vPHeqsHA==", + "dev": true, + "requires": { + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "strict-event-emitter": "^0.5.1" + } + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -33046,6 +33663,28 @@ "@octokit/openapi-types": "^18.0.0" } }, + "@open-draft/deferred-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", + "dev": true + }, + "@open-draft/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "dev": true, + "requires": { + "is-node-process": "^1.2.0", + "outvariant": "^1.4.0" + } + }, + "@open-draft/until": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", + "dev": true + }, "@opencensus/core": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.1.0.tgz", @@ -34953,6 +35592,7 @@ "karma-webpack": "5.0.1", "lerna": "6.6.2", "mocha": "10.8.2", + "msw": "^2.7.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -38132,6 +38772,12 @@ "@types/node": "*" } }, + "@types/statuses": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.5.tgz", + "integrity": "sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==", + "dev": true + }, "@types/superagent": { "version": "8.1.9", "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.9.tgz", @@ -43665,6 +44311,12 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "graphql": { + "version": "16.10.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.10.0.tgz", + "integrity": "sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==", + "dev": true + }, "handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -43782,6 +44434,12 @@ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, + "headers-polyfill": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-4.0.3.tgz", + "integrity": "sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==", + "dev": true + }, "hexer": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/hexer/-/hexer-1.5.0.tgz", @@ -44442,6 +45100,12 @@ "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", "dev": true }, + "is-node-process": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", + "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", + "dev": true + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -47114,6 +47778,106 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, + "msw": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.7.0.tgz", + "integrity": "sha512-BIodwZ19RWfCbYTxWTUfTXc+sg4OwjCAgxU1ZsgmggX/7S3LdUifsbUPJs61j0rWb19CZRGY5if77duhc0uXzw==", + "dev": true, + "requires": { + "@bundled-es-modules/cookie": "^2.0.1", + "@bundled-es-modules/statuses": "^1.0.1", + "@bundled-es-modules/tough-cookie": "^0.1.6", + "@inquirer/confirm": "^5.0.0", + "@mswjs/interceptors": "^0.37.0", + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/until": "^2.1.0", + "@types/cookie": "^0.6.0", + "@types/statuses": "^2.0.4", + "graphql": "^16.8.1", + "headers-polyfill": "^4.0.2", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "path-to-regexp": "^6.3.0", + "picocolors": "^1.1.1", + "strict-event-emitter": "^0.5.1", + "type-fest": "^4.26.1", + "yargs": "^17.7.2" + }, + "dependencies": { + "@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "dev": true + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "type-fest": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.33.0.tgz", + "integrity": "sha512-s6zVrxuyKbbAsSAD5ZPTB77q4YIdRctkTbJ2/Dqlinwz+8ooH2gd+YA7VA6Pa93KML9GockVvoxjZ2vHP+mu8g==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } + } + }, "multicast-dns": { "version": "7.2.5", "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", @@ -48256,6 +49020,12 @@ "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true }, + "outvariant": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", + "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", + "dev": true + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -49145,6 +49915,23 @@ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", "dev": true }, + "psl": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "dev": true, + "requires": { + "punycode": "^2.3.1" + }, + "dependencies": { + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true + } + } + }, "pump": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", @@ -49385,6 +50172,12 @@ "side-channel": "^1.0.6" } }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -50900,6 +51693,12 @@ "text-decoder": "^1.1.0" } }, + "strict-event-emitter": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", + "dev": true + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -51554,6 +52353,32 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, + "tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "dependencies": { + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true + }, + "universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true + } + } + }, "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -52045,6 +52870,16 @@ } } }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "urlgrey": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-1.0.0.tgz", @@ -53018,6 +53853,12 @@ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true }, + "yoctocolors-cjs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", + "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", + "dev": true + }, "zod": { "version": "3.22.4", "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", From a04284ccdcbbdcb2f1fc84adfd70489c1eeca03a Mon Sep 17 00:00:00 2001 From: Godfrey Chan <godfreykfc@gmail.com> Date: Thu, 30 Jan 2025 04:32:18 -0800 Subject: [PATCH 11/16] refactor(exporter-*): remove `export * from ...` (#5399) --- experimental/packages/exporter-logs-otlp-grpc/src/index.ts | 2 +- experimental/packages/exporter-trace-otlp-grpc/src/index.ts | 5 +---- experimental/packages/exporter-trace-otlp-http/src/index.ts | 5 +---- .../exporter-trace-otlp-http/src/platform/browser/index.ts | 5 +---- .../packages/exporter-trace-otlp-http/src/platform/index.ts | 5 +---- .../exporter-trace-otlp-http/src/platform/node/index.ts | 5 +---- .../opentelemetry-exporter-metrics-otlp-grpc/src/index.ts | 5 +---- .../opentelemetry-exporter-metrics-otlp-proto/src/index.ts | 5 +---- 8 files changed, 8 insertions(+), 29 deletions(-) diff --git a/experimental/packages/exporter-logs-otlp-grpc/src/index.ts b/experimental/packages/exporter-logs-otlp-grpc/src/index.ts index 1c9dce18f30..ac578b8b6a6 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/src/index.ts +++ b/experimental/packages/exporter-logs-otlp-grpc/src/index.ts @@ -17,4 +17,4 @@ /* eslint no-restricted-syntax: ["warn", "ExportAllDeclaration"] -- * TODO: Replace wildcard export with named exports before next major version */ -export * from './OTLPLogExporter'; +export { OTLPLogExporter } from './OTLPLogExporter'; diff --git a/experimental/packages/exporter-trace-otlp-grpc/src/index.ts b/experimental/packages/exporter-trace-otlp-grpc/src/index.ts index 4680586a1d3..254ac931a50 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/src/index.ts +++ b/experimental/packages/exporter-trace-otlp-grpc/src/index.ts @@ -14,7 +14,4 @@ * limitations under the License. */ -/* eslint no-restricted-syntax: ["warn", "ExportAllDeclaration"] -- - * TODO: Replace wildcard export with named exports before next major version - */ -export * from './OTLPTraceExporter'; +export { OTLPTraceExporter } from './OTLPTraceExporter'; diff --git a/experimental/packages/exporter-trace-otlp-http/src/index.ts b/experimental/packages/exporter-trace-otlp-http/src/index.ts index 70c8d9108d9..d8d53de1cda 100644 --- a/experimental/packages/exporter-trace-otlp-http/src/index.ts +++ b/experimental/packages/exporter-trace-otlp-http/src/index.ts @@ -14,7 +14,4 @@ * limitations under the License. */ -/* eslint no-restricted-syntax: ["warn", "ExportAllDeclaration"] -- - * TODO: Replace wildcard export with named exports before next major version - */ -export * from './platform'; +export { OTLPTraceExporter } from './platform'; diff --git a/experimental/packages/exporter-trace-otlp-http/src/platform/browser/index.ts b/experimental/packages/exporter-trace-otlp-http/src/platform/browser/index.ts index 4680586a1d3..254ac931a50 100644 --- a/experimental/packages/exporter-trace-otlp-http/src/platform/browser/index.ts +++ b/experimental/packages/exporter-trace-otlp-http/src/platform/browser/index.ts @@ -14,7 +14,4 @@ * limitations under the License. */ -/* eslint no-restricted-syntax: ["warn", "ExportAllDeclaration"] -- - * TODO: Replace wildcard export with named exports before next major version - */ -export * from './OTLPTraceExporter'; +export { OTLPTraceExporter } from './OTLPTraceExporter'; diff --git a/experimental/packages/exporter-trace-otlp-http/src/platform/index.ts b/experimental/packages/exporter-trace-otlp-http/src/platform/index.ts index 5b5a74b7e4f..ada2dce58b8 100644 --- a/experimental/packages/exporter-trace-otlp-http/src/platform/index.ts +++ b/experimental/packages/exporter-trace-otlp-http/src/platform/index.ts @@ -14,7 +14,4 @@ * limitations under the License. */ -/* eslint no-restricted-syntax: ["warn", "ExportAllDeclaration"] -- - * TODO: Replace wildcard export with named exports before next major version - */ -export * from './node'; +export { OTLPTraceExporter } from './node'; diff --git a/experimental/packages/exporter-trace-otlp-http/src/platform/node/index.ts b/experimental/packages/exporter-trace-otlp-http/src/platform/node/index.ts index 4680586a1d3..254ac931a50 100644 --- a/experimental/packages/exporter-trace-otlp-http/src/platform/node/index.ts +++ b/experimental/packages/exporter-trace-otlp-http/src/platform/node/index.ts @@ -14,7 +14,4 @@ * limitations under the License. */ -/* eslint no-restricted-syntax: ["warn", "ExportAllDeclaration"] -- - * TODO: Replace wildcard export with named exports before next major version - */ -export * from './OTLPTraceExporter'; +export { OTLPTraceExporter } from './OTLPTraceExporter'; diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/src/index.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/src/index.ts index 59fbfabe094..be76cce78f5 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/src/index.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/src/index.ts @@ -14,7 +14,4 @@ * limitations under the License. */ -/* eslint no-restricted-syntax: ["warn", "ExportAllDeclaration"] -- - * TODO: Replace wildcard export with named exports before next major version - */ -export * from './OTLPMetricExporter'; +export { OTLPMetricExporter } from './OTLPMetricExporter'; diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/src/index.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/src/index.ts index 59fbfabe094..be76cce78f5 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/src/index.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/src/index.ts @@ -14,7 +14,4 @@ * limitations under the License. */ -/* eslint no-restricted-syntax: ["warn", "ExportAllDeclaration"] -- - * TODO: Replace wildcard export with named exports before next major version - */ -export * from './OTLPMetricExporter'; +export { OTLPMetricExporter } from './OTLPMetricExporter'; From e265e47e98fb69a0ae21363404d99ffcdd434882 Mon Sep 17 00:00:00 2001 From: Marc Pichler <marc.pichler@dynatrace.com> Date: Thu, 30 Jan 2025 13:33:13 +0100 Subject: [PATCH 12/16] feat(sdk-trace-base)!: drop ability to auto-instantiate propagators beyond defaults (#5355) Co-authored-by: Trent Mick <trentm@gmail.com> --- CHANGELOG.md | 13 ++ experimental/CHANGELOG.md | 1 + .../opentelemetry-sdk-node/package.json | 4 +- .../opentelemetry-sdk-node/src/sdk.ts | 5 +- .../opentelemetry-sdk-node/src/utils.ts | 74 +++++++++- .../opentelemetry-sdk-node/test/sdk.test.ts | 15 ++ .../opentelemetry-sdk-node/test/utils.test.ts | 102 ++++++++++++++ .../opentelemetry-sdk-node/tsconfig.json | 6 + package-lock.json | 8 +- .../src/BasicTracerProvider.ts | 77 ++--------- .../test/common/BasicTracerProvider.test.ts | 125 ++++------------- .../opentelemetry-sdk-trace-node/package.json | 2 - .../src/NodeTracerProvider.ts | 20 --- .../test/NodeTracerProvider.test.ts | 130 ------------------ .../tsconfig.json | 6 - 15 files changed, 259 insertions(+), 329 deletions(-) create mode 100644 experimental/packages/opentelemetry-sdk-node/test/utils.test.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index a0c9f2ea360..90fded658fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -52,6 +52,19 @@ For semantic convention package changes, see the [semconv CHANGELOG](packages/se * (user-facing): deprecated `AlwaysOffSampler` has moved to `@opentelemetry/sdk-trace-base` * (user-facing): deprecated `TraceIdRatioSampler` has moved to `@opentelemetry/sdk-trace-base` * (user-facing): deprecated `TraceIdRatioSampler` has moved to `@opentelemetry/sdk-trace-base` +* feat(sdk-trace-base)!: drop ability to instantiate propagators beyond defaults [#5355](https://github.com/open-telemetry/opentelemetry-js/pull/5355) @pichlermarc + * (user-facing): only a non-env-var based default is now used on `BasicTracerProvider#register()`. + * propagators can now not be configured via `OTEL_PROPAGATORS` or `window.OTEL_PROPAGATORS` anymore, please pass the propagator to `NodeTracerProvider#register()` instead. + * if not configured directly via code, `BasicTracerProvider#register()` will now fall back to defaults (`tracecontext` and `baggage`) +* feat(sdk-trace-node)!: drop ability to instantiate propagators beyond defaults [#5355](https://github.com/open-telemetry/opentelemetry-js/pull/5355) @pichlermarc + * (user-facing): only a non-env-var based default is now used on `NodeTracerProvider#register()`. + * propagators can now not be configured via `OTEL_PROPAGATORS` anymore, please pass the propagator to `NodeTracerProvider#register()` instead. + * if not configured via code, `NodeTracerProvider#register()` will now fall back to the defaults (`tracecontext` and `baggage`) + * if autoconfiguration based on enviornment variables is needed, please use `NodeSDK` from `@opentelemetry/sdk-node`. +* feat(sdk-trace-web)!: drop ability to instantiate propagators beyond defaults [#5355](https://github.com/open-telemetry/opentelemetry-js/pull/5355) @pichlermarc + * (user-facing): only a non-env-var based default is now used on `WebTracerProvider#register()`. + * propagators can now not be configured via `window.OTEL_PROPAGATORS` anymore, please pass the propagator to `WebTracerProvider#register()` instead. + * if not configured via code, `WebTracerProvider#register()` will now fall back to defaults (`tracecontext` and `baggage`) ### :rocket: (Enhancement) diff --git a/experimental/CHANGELOG.md b/experimental/CHANGELOG.md index d19f5000370..ff4ea166948 100644 --- a/experimental/CHANGELOG.md +++ b/experimental/CHANGELOG.md @@ -34,6 +34,7 @@ All notable changes to experimental packages in this project will be documented * chore(instrumentation-grpc): remove unused findIndex() function [#5372](https://github.com/open-telemetry/opentelemetry-js/pull/5372) @cjihrig * refactor(otlp-exporter-base): remove unnecessary isNaN() checks [#5374](https://github.com/open-telemetry/opentelemetry-js/pull/5374) @cjihrig * refactor(exporter-prometheus): remove unnecessary isNaN() check [#5377](https://github.com/open-telemetry/opentelemetry-js/pull/5377) @cjihrig +* refactor(sdk-node): move code to auto-instantiate propagators into utils [#5355](https://github.com/open-telemetry/opentelemetry-js/pull/5355) @pichlermarc ## 0.57.0 diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json index 4b952a8d3fa..3e1fb29b8d5 100644 --- a/experimental/packages/opentelemetry-sdk-node/package.json +++ b/experimental/packages/opentelemetry-sdk-node/package.json @@ -63,7 +63,9 @@ "@opentelemetry/sdk-metrics": "1.30.0", "@opentelemetry/sdk-trace-base": "1.30.0", "@opentelemetry/sdk-trace-node": "1.30.0", - "@opentelemetry/semantic-conventions": "1.28.0" + "@opentelemetry/semantic-conventions": "1.28.0", + "@opentelemetry/propagator-jaeger": "1.30.0", + "@opentelemetry/propagator-b3": "1.30.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" diff --git a/experimental/packages/opentelemetry-sdk-node/src/sdk.ts b/experimental/packages/opentelemetry-sdk-node/src/sdk.ts index 771de822939..b6796f6368c 100644 --- a/experimental/packages/opentelemetry-sdk-node/src/sdk.ts +++ b/experimental/packages/opentelemetry-sdk-node/src/sdk.ts @@ -74,6 +74,7 @@ import { getResourceDetectorsFromEnv, getSpanProcessorsFromEnv, filterBlanksAndNulls, + getPropagatorFromEnv, } from './utils'; /** This class represents everything needed to register a fully configured OpenTelemetry Node.js SDK */ @@ -376,7 +377,9 @@ export class NodeSDK { this._tracerProviderConfig?.contextManager ?? // _tracerProviderConfig may be undefined if trace-specific settings are not provided - fall back to raw config this._configuration?.contextManager, - propagator: this._tracerProviderConfig?.textMapPropagator, + propagator: + this._tracerProviderConfig?.textMapPropagator ?? + getPropagatorFromEnv(), }); } diff --git a/experimental/packages/opentelemetry-sdk-node/src/utils.ts b/experimental/packages/opentelemetry-sdk-node/src/utils.ts index 3c1011b0b34..a256b0023e3 100644 --- a/experimental/packages/opentelemetry-sdk-node/src/utils.ts +++ b/experimental/packages/opentelemetry-sdk-node/src/utils.ts @@ -14,8 +14,13 @@ * limitations under the License. */ -import { diag } from '@opentelemetry/api'; -import { getEnv, getEnvWithoutDefaults } from '@opentelemetry/core'; +import { diag, TextMapPropagator } from '@opentelemetry/api'; +import { + CompositePropagator, + getEnv, + getEnvWithoutDefaults, + W3CTraceContextPropagator, +} from '@opentelemetry/core'; import { OTLPTraceExporter as OTLPProtoTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto'; import { OTLPTraceExporter as OTLPHttpTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'; import { OTLPTraceExporter as OTLPGrpcTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc'; @@ -35,6 +40,8 @@ import { SpanExporter, SpanProcessor, } from '@opentelemetry/sdk-trace-base'; +import { B3InjectEncoding, B3Propagator } from '@opentelemetry/propagator-b3'; +import { JaegerPropagator } from '@opentelemetry/propagator-jaeger'; const RESOURCE_DETECTOR_ENVIRONMENT = 'env'; const RESOURCE_DETECTOR_HOST = 'host'; @@ -180,3 +187,66 @@ export function getSpanProcessorsFromEnv(): SpanProcessor[] { return processors; } + +/** + * Get a propagator as defined by environment variables + */ +export function getPropagatorFromEnv(): TextMapPropagator | null | undefined { + // Empty and undefined MUST be treated equal. + if ( + process.env.OTEL_PROPAGATORS === undefined || + process.env.OTEL_PROPAGATORS?.trim() === '' + ) { + // return undefined to fall back to default + return undefined; + } + + // Implementation note: this only contains specification required propagators that are actually hosted in this repo. + // Any other propagators (like aws, aws-lambda, should go into `@opentelemetry/auto-configuration-propagators` instead). + const propagatorsFactory = new Map<string, () => TextMapPropagator>([ + ['tracecontext', () => new W3CTraceContextPropagator()], + ['baggage', () => new W3CTraceContextPropagator()], + ['b3', () => new B3Propagator()], + [ + 'b3multi', + () => new B3Propagator({ injectEncoding: B3InjectEncoding.MULTI_HEADER }), + ], + ['jaeger', () => new JaegerPropagator()], + ]); + + // Values MUST be deduplicated in order to register a Propagator only once. + const uniquePropagatorNames = Array.from(new Set(getEnv().OTEL_PROPAGATORS)); + + const propagators = uniquePropagatorNames.map(name => { + const propagator = propagatorsFactory.get(name)?.(); + if (!propagator) { + diag.warn( + `Propagator "${name}" requested through environment variable is unavailable.` + ); + return undefined; + } + + return propagator; + }); + + const validPropagators = propagators.reduce<TextMapPropagator[]>( + (list, item) => { + if (item) { + list.push(item); + } + return list; + }, + [] + ); + + if (validPropagators.length === 0) { + // null to signal that the default should **not** be used in its place. + return null; + } else if (uniquePropagatorNames.length === 1) { + return validPropagators[0]; + } else { + return new CompositePropagator({ + propagators: validPropagators, + }); + } +} diff --git a/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts b/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts index 122f6fd415b..dc7ccbe6908 100644 --- a/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts +++ b/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts @@ -414,6 +414,21 @@ describe('Node SDK', () => { assert.equal(actualContextManager, expectedContextManager); await sdk.shutdown(); }); + + it('should register propagators as defined in OTEL_PROPAGATORS if trace SDK is configured', async () => { + process.env.OTEL_PROPAGATORS = 'b3'; + const sdk = new NodeSDK({ + traceExporter: new ConsoleSpanExporter(), + autoDetectResources: false, + }); + + sdk.start(); + + assert.deepStrictEqual(propagation.fields(), ['b3']); + + await sdk.shutdown(); + delete process.env.OTEL_PROPAGATORS; + }); }); async function waitForNumberOfMetrics( diff --git a/experimental/packages/opentelemetry-sdk-node/test/utils.test.ts b/experimental/packages/opentelemetry-sdk-node/test/utils.test.ts new file mode 100644 index 00000000000..0c7639b4d34 --- /dev/null +++ b/experimental/packages/opentelemetry-sdk-node/test/utils.test.ts @@ -0,0 +1,102 @@ +/* + * 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 { getPropagatorFromEnv } from '../src/utils'; +import * as assert from 'assert'; +import * as sinon from 'sinon'; +import { diag } from '@opentelemetry/api'; + +describe('getPropagatorFromEnv', function () { + afterEach(() => { + delete process.env.OTEL_PROPAGATORS; + sinon.restore(); + }); + + describe('should default to undefined', function () { + it('when not defined', function () { + delete process.env.OTEL_PROPAGATORS; + + const propagator = getPropagatorFromEnv(); + + assert.deepStrictEqual(propagator, undefined); + }); + + it('on empty string', function () { + (process.env as any).OTEL_PROPAGATORS = ''; + + const propagator = getPropagatorFromEnv(); + + assert.deepStrictEqual(propagator, undefined); + }); + + it('on space-only string', function () { + (process.env as any).OTEL_PROPAGATORS = ' '; + + const propagator = getPropagatorFromEnv(); + + assert.deepStrictEqual(propagator, undefined); + }); + }); + + it('should return the selected propagator when one is in the list', () => { + process.env.OTEL_PROPAGATORS = 'tracecontext'; + assert.deepStrictEqual(getPropagatorFromEnv()?.fields(), [ + 'traceparent', + 'tracestate', + ]); + }); + + it('should return the selected propagators when multiple are in the list', () => { + process.env.OTEL_PROPAGATORS = 'tracecontext,baggage,b3,b3multi,jaeger'; + assert.deepStrictEqual(getPropagatorFromEnv()?.fields(), [ + 'traceparent', + 'tracestate', + 'b3', + 'x-b3-traceid', + 'x-b3-spanid', + 'x-b3-flags', + 'x-b3-sampled', + 'x-b3-parentspanid', + 'uber-trace-id', + ]); + }); + + it('should return null and warn if propagators are unknown', () => { + const warnStub = sinon.stub(diag, 'warn'); + + process.env.OTEL_PROPAGATORS = 'my, unknown, propagators'; + assert.deepStrictEqual(getPropagatorFromEnv(), null); + sinon.assert.calledWithExactly( + warnStub, + 'Propagator "my" requested through environment variable is unavailable.' + ); + sinon.assert.calledWithExactly( + warnStub, + 'Propagator "unknown" requested through environment variable is unavailable.' + ); + sinon.assert.calledWithExactly( + warnStub, + 'Propagator "propagators" requested through environment variable is unavailable.' + ); + sinon.assert.calledThrice(warnStub); + }); + + it('should return null if only "none" is selected', () => { + process.env.OTEL_PROPAGATORS = 'none'; + + assert.deepStrictEqual(getPropagatorFromEnv(), null); + }); +}); diff --git a/experimental/packages/opentelemetry-sdk-node/tsconfig.json b/experimental/packages/opentelemetry-sdk-node/tsconfig.json index 7d18aac481d..e14ef0d799d 100644 --- a/experimental/packages/opentelemetry-sdk-node/tsconfig.json +++ b/experimental/packages/opentelemetry-sdk-node/tsconfig.json @@ -24,6 +24,12 @@ { "path": "../../../packages/opentelemetry-exporter-zipkin" }, + { + "path": "../../../packages/opentelemetry-propagator-b3" + }, + { + "path": "../../../packages/opentelemetry-propagator-jaeger" + }, { "path": "../../../packages/opentelemetry-resources" }, diff --git a/package-lock.json b/package-lock.json index d74b6410241..a131fa3b6c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2945,6 +2945,8 @@ "@opentelemetry/exporter-trace-otlp-proto": "0.57.0", "@opentelemetry/exporter-zipkin": "1.30.0", "@opentelemetry/instrumentation": "0.57.0", + "@opentelemetry/propagator-b3": "1.30.0", + "@opentelemetry/propagator-jaeger": "1.30.0", "@opentelemetry/resources": "1.30.0", "@opentelemetry/sdk-logs": "0.57.0", "@opentelemetry/sdk-metrics": "1.30.0", @@ -30196,8 +30198,6 @@ "dependencies": { "@opentelemetry/context-async-hooks": "1.30.0", "@opentelemetry/core": "1.30.0", - "@opentelemetry/propagator-b3": "1.30.0", - "@opentelemetry/propagator-jaeger": "1.30.0", "@opentelemetry/sdk-trace-base": "1.30.0" }, "devDependencies": { @@ -37187,6 +37187,8 @@ "@opentelemetry/exporter-trace-otlp-proto": "0.57.0", "@opentelemetry/exporter-zipkin": "1.30.0", "@opentelemetry/instrumentation": "0.57.0", + "@opentelemetry/propagator-b3": "1.30.0", + "@opentelemetry/propagator-jaeger": "1.30.0", "@opentelemetry/resources": "1.30.0", "@opentelemetry/sdk-logs": "0.57.0", "@opentelemetry/sdk-metrics": "1.30.0", @@ -37369,8 +37371,6 @@ "@opentelemetry/api": ">=1.0.0 <1.10.0", "@opentelemetry/context-async-hooks": "1.30.0", "@opentelemetry/core": "1.30.0", - "@opentelemetry/propagator-b3": "1.30.0", - "@opentelemetry/propagator-jaeger": "1.30.0", "@opentelemetry/resources": "1.30.0", "@opentelemetry/sdk-trace-base": "1.30.0", "@opentelemetry/semantic-conventions": "1.28.0", diff --git a/packages/opentelemetry-sdk-trace-base/src/BasicTracerProvider.ts b/packages/opentelemetry-sdk-trace-base/src/BasicTracerProvider.ts index 9bbf86bbb9c..dde3d10e060 100644 --- a/packages/opentelemetry-sdk-trace-base/src/BasicTracerProvider.ts +++ b/packages/opentelemetry-sdk-trace-base/src/BasicTracerProvider.ts @@ -16,7 +16,6 @@ import { context, - diag, propagation, TextMapPropagator, trace, @@ -26,7 +25,6 @@ import { CompositePropagator, W3CBaggagePropagator, W3CTraceContextPropagator, - getEnv, merge, } from '@opentelemetry/core'; import { IResource, Resource } from '@opentelemetry/resources'; @@ -48,18 +46,14 @@ export enum ForceFlushState { 'unresolved', } +function getDefaultPropagators(): TextMapPropagator[] { + return [new W3CTraceContextPropagator(), new W3CBaggagePropagator()]; +} + /** * This class represents a basic tracer provider which platform libraries can extend */ export class BasicTracerProvider implements TracerProvider { - protected static readonly _registeredPropagators = new Map< - string, - PROPAGATOR_FACTORY - >([ - ['tracecontext', () => new W3CTraceContextPropagator()], - ['baggage', () => new W3CBaggagePropagator()], - ]); - private readonly _config: TracerConfig; private readonly _tracers: Map<string, Tracer> = new Map(); private readonly _resource: IResource; @@ -117,16 +111,19 @@ export class BasicTracerProvider implements TracerProvider { */ register(config: SDKRegistrationConfig = {}): void { trace.setGlobalTracerProvider(this); - if (config.propagator === undefined) { - config.propagator = this._buildPropagatorFromEnv(); - } if (config.contextManager) { context.setGlobalContextManager(config.contextManager); } - if (config.propagator) { - propagation.setGlobalPropagator(config.propagator); + // undefined means "unset", null means don't register propagator + if (config.propagator !== null) { + propagation.setGlobalPropagator( + config.propagator ?? + new CompositePropagator({ + propagators: getDefaultPropagators(), + }) + ); } } @@ -182,54 +179,4 @@ export class BasicTracerProvider implements TracerProvider { shutdown(): Promise<void> { return this._activeSpanProcessor.shutdown(); } - - /** - * TS cannot yet infer the type of this.constructor: - * https://github.com/Microsoft/TypeScript/issues/3841#issuecomment-337560146 - * There is no need to override either of the getters in your child class. - * The type of the registered component maps should be the same across all - * classes in the inheritance tree. - */ - protected _getPropagator(name: string): TextMapPropagator | undefined { - return ( - this.constructor as typeof BasicTracerProvider - )._registeredPropagators.get(name)?.(); - } - - protected _buildPropagatorFromEnv(): TextMapPropagator | undefined { - // per spec, propagators from env must be deduplicated - const uniquePropagatorNames = Array.from( - new Set(getEnv().OTEL_PROPAGATORS) - ); - - const propagators = uniquePropagatorNames.map(name => { - const propagator = this._getPropagator(name); - if (!propagator) { - diag.warn( - `Propagator "${name}" requested through environment variable is unavailable.` - ); - } - - return propagator; - }); - const validPropagators = propagators.reduce<TextMapPropagator[]>( - (list, item) => { - if (item) { - list.push(item); - } - return list; - }, - [] - ); - - if (validPropagators.length === 0) { - return; - } else if (uniquePropagatorNames.length === 1) { - return validPropagators[0]; - } else { - return new CompositePropagator({ - propagators: validPropagators, - }); - } - } } diff --git a/packages/opentelemetry-sdk-trace-base/test/common/BasicTracerProvider.test.ts b/packages/opentelemetry-sdk-trace-base/test/common/BasicTracerProvider.test.ts index b6762b3c3cc..2decf4e3cd4 100644 --- a/packages/opentelemetry-sdk-trace-base/test/common/BasicTracerProvider.test.ts +++ b/packages/opentelemetry-sdk-trace-base/test/common/BasicTracerProvider.test.ts @@ -26,9 +26,10 @@ import { TextMapGetter, propagation, diag, + ContextManager, } from '@opentelemetry/api'; import { CompositePropagator } from '@opentelemetry/core'; -import { TraceState, W3CTraceContextPropagator } from '@opentelemetry/core'; +import { TraceState } from '@opentelemetry/core'; import { Resource } from '@opentelemetry/resources'; import * as assert from 'assert'; import * as sinon from 'sinon'; @@ -59,6 +60,7 @@ class DummyPropagator implements TextMapPropagator { describe('BasicTracerProvider', () => { let envSource: Record<string, any>; let setGlobalPropagatorStub: sinon.SinonSpy<[TextMapPropagator], boolean>; + let setGlobalContextManagerStub: sinon.SinonSpy<[ContextManager], boolean>; if (global.process?.versions?.node === undefined) { envSource = globalThis as unknown as Record<string, any>; @@ -70,6 +72,7 @@ describe('BasicTracerProvider', () => { // to avoid actually registering the TraceProvider and leaking env to other tests sinon.stub(trace, 'setGlobalTracerProvider'); setGlobalPropagatorStub = sinon.spy(propagation, 'setGlobalPropagator'); + setGlobalContextManagerStub = sinon.spy(context, 'setGlobalContextManager'); context.disable(); }); @@ -386,97 +389,8 @@ describe('BasicTracerProvider', () => { }); }); - describe('Custom TracerProvider through inheritance', () => { - beforeEach(() => { - envSource.OTEL_TRACES_EXPORTER = 'custom-exporter'; - envSource.OTEL_PROPAGATORS = 'custom-propagator'; - }); - - afterEach(() => { - delete envSource.OTEL_TRACES_EXPORTER; - delete envSource.OTEL_PROPAGATORS; - sinon.restore(); - }); - - it('can be extended by overriding registered components', () => { - class CustomTracerProvider extends BasicTracerProvider { - protected static override readonly _registeredPropagators = new Map< - string, - () => TextMapPropagator - >([ - ...BasicTracerProvider._registeredPropagators, - ['custom-propagator', () => new DummyPropagator()], - ]); - } - - const provider = new CustomTracerProvider({}); - assert.ok( - provider['_getPropagator']('tracecontext') instanceof - W3CTraceContextPropagator - ); - /* BasicTracerProvider has no exporters by default, so skipping testing the exporter getter */ - provider.register(); - assert.strictEqual( - provider['_activeSpanProcessor']['_spanProcessors'].length, - 0 - ); - - sinon.assert.calledOnceWithExactly( - setGlobalPropagatorStub, - sinon.match.instanceOf(DummyPropagator) - ); - }); - - it('the old way of extending still works', () => { - // this is an anti-pattern, but we test that for backwards compatibility - class CustomTracerProvider extends BasicTracerProvider { - protected static override readonly _registeredPropagators = new Map< - string, - () => TextMapPropagator - >([['custom-propagator', () => new DummyPropagator()]]); - - protected override _getPropagator( - name: string - ): TextMapPropagator | undefined { - return ( - super._getPropagator(name) || - CustomTracerProvider._registeredPropagators.get(name)?.() - ); - } - } - - const provider = new CustomTracerProvider({}); - provider.register(); - assert.strictEqual( - provider['_activeSpanProcessor']['_spanProcessors'].length, - 0 - ); - - sinon.assert.calledOnceWithExactly( - setGlobalPropagatorStub, - sinon.match.instanceOf(DummyPropagator) - ); - }); - }); - describe('.register()', () => { describe('propagator', () => { - let originalPropagators: string | number | undefined | string[]; - beforeEach(() => { - originalPropagators = envSource.OTEL_PROPAGATORS; - }); - - afterEach(() => { - sinon.restore(); - - // otherwise we may assign 'undefined' (a string) - if (originalPropagators !== undefined) { - envSource.OTEL_PROPAGATORS = originalPropagators; - } else { - delete envSource.OTEL_PROPAGATORS; - } - }); - it('should be set to a given value if it it provided', () => { const provider = new BasicTracerProvider(); provider.register({ @@ -489,7 +403,7 @@ describe('BasicTracerProvider', () => { ); }); - it('should be composite if 2 or more propagators provided in an environment variable', () => { + it('should use w3c trace context and baggage propagators by default', () => { const provider = new BasicTracerProvider(); provider.register(); @@ -503,17 +417,32 @@ describe('BasicTracerProvider', () => { 'baggage', ]); }); + }); + describe('contextManager', () => { + it('should not be set if not provided', () => { + const provider = new BasicTracerProvider(); + provider.register(); + + sinon.assert.notCalled(setGlobalContextManagerStub); + }); - it('warns if there is no propagator registered with a given name', () => { - const warnStub = sinon.spy(diag, 'warn'); + it('should be set if provided', () => { + const provider = new BasicTracerProvider(); + const mockContextManager: ContextManager = { + active: sinon.stub(), + bind: sinon.stub(), + disable: sinon.stub(), + enable: sinon.stub(), + with: sinon.stub(), + }; - envSource.OTEL_PROPAGATORS = 'missing-propagator'; - const provider = new BasicTracerProvider({}); - provider.register(); + provider.register({ + contextManager: mockContextManager, + }); sinon.assert.calledOnceWithExactly( - warnStub, - 'Propagator "missing-propagator" requested through environment variable is unavailable.' + setGlobalContextManagerStub, + mockContextManager ); }); }); diff --git a/packages/opentelemetry-sdk-trace-node/package.json b/packages/opentelemetry-sdk-trace-node/package.json index 22a6b056e23..a0c1afdf928 100644 --- a/packages/opentelemetry-sdk-trace-node/package.json +++ b/packages/opentelemetry-sdk-trace-node/package.json @@ -64,8 +64,6 @@ "dependencies": { "@opentelemetry/context-async-hooks": "1.30.0", "@opentelemetry/core": "1.30.0", - "@opentelemetry/propagator-b3": "1.30.0", - "@opentelemetry/propagator-jaeger": "1.30.0", "@opentelemetry/sdk-trace-base": "1.30.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node", diff --git a/packages/opentelemetry-sdk-trace-node/src/NodeTracerProvider.ts b/packages/opentelemetry-sdk-trace-node/src/NodeTracerProvider.ts index abb25f4db91..ee6c67dbbbc 100644 --- a/packages/opentelemetry-sdk-trace-node/src/NodeTracerProvider.ts +++ b/packages/opentelemetry-sdk-trace-node/src/NodeTracerProvider.ts @@ -14,14 +14,11 @@ * limitations under the License. */ import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks'; -import { B3Propagator, B3InjectEncoding } from '@opentelemetry/propagator-b3'; import { BasicTracerProvider, - PROPAGATOR_FACTORY, SDKRegistrationConfig, } from '@opentelemetry/sdk-trace-base'; import { NodeTracerConfig } from './config'; -import { JaegerPropagator } from '@opentelemetry/propagator-jaeger'; /** * Register this TracerProvider for use with the OpenTelemetry API. @@ -31,23 +28,6 @@ import { JaegerPropagator } from '@opentelemetry/propagator-jaeger'; * @param config Configuration object for SDK registration */ export class NodeTracerProvider extends BasicTracerProvider { - protected static override readonly _registeredPropagators = new Map< - string, - PROPAGATOR_FACTORY - >([ - ...BasicTracerProvider._registeredPropagators, - [ - 'b3', - () => - new B3Propagator({ injectEncoding: B3InjectEncoding.SINGLE_HEADER }), - ], - [ - 'b3multi', - () => new B3Propagator({ injectEncoding: B3InjectEncoding.MULTI_HEADER }), - ], - ['jaeger', () => new JaegerPropagator()], - ]); - constructor(config: NodeTracerConfig = {}) { super(config); } diff --git a/packages/opentelemetry-sdk-trace-node/test/NodeTracerProvider.test.ts b/packages/opentelemetry-sdk-trace-node/test/NodeTracerProvider.test.ts index e076ad0c71d..6acf1b16b45 100644 --- a/packages/opentelemetry-sdk-trace-node/test/NodeTracerProvider.test.ts +++ b/packages/opentelemetry-sdk-trace-node/test/NodeTracerProvider.test.ts @@ -14,18 +14,12 @@ * limitations under the License. */ -import * as sinon from 'sinon'; import * as assert from 'assert'; import { context, - Context, ContextManager, - propagation, ROOT_CONTEXT, - TextMapGetter, - TextMapPropagator, - TextMapSetter, trace, TraceFlags, } from '@opentelemetry/api'; @@ -211,128 +205,4 @@ describe('NodeTracerProvider', () => { return patchedFn(); }); }); - - describe('.register()', () => { - let originalPropagators: string | number | undefined | string[]; - beforeEach(() => { - originalPropagators = process.env.OTEL_PROPAGATORS; - }); - - afterEach(() => { - // otherwise we may assign 'undefined' (a string) - if (originalPropagators !== undefined) { - (process.env as any).OTEL_PROPAGATORS = originalPropagators; - } else { - delete (process.env as any).OTEL_PROPAGATORS; - } - }); - - it('should allow propagators as per the specification', () => { - (process.env as any).OTEL_PROPAGATORS = 'b3,b3multi,jaeger'; - - const provider = new NodeTracerProvider(); - provider.register(); - - assert.deepStrictEqual(propagation.fields(), [ - 'b3', - 'x-b3-traceid', - 'x-b3-spanid', - 'x-b3-flags', - 'x-b3-sampled', - 'x-b3-parentspanid', - 'uber-trace-id', - ]); - }); - }); - - describe('Custom TracerProvider through inheritance', () => { - class DummyPropagator implements TextMapPropagator { - inject(context: Context, carrier: any, setter: TextMapSetter<any>): void { - throw new Error('Method not implemented.'); - } - extract( - context: Context, - carrier: any, - getter: TextMapGetter<any> - ): Context { - throw new Error('Method not implemented.'); - } - fields(): string[] { - throw new Error('Method not implemented.'); - } - } - - beforeEach(() => { - process.env.OTEL_PROPAGATORS = 'custom-propagator'; - - propagation.disable(); - trace.disable(); - }); - - afterEach(() => { - delete process.env.OTEL_PROPAGATORS; - - propagation.disable(); - trace.disable(); - - sinon.restore(); - }); - - it('can be extended by overriding registered components', () => { - const propagator = new DummyPropagator(); - - class CustomTracerProvider extends NodeTracerProvider { - protected static override readonly _registeredPropagators = new Map< - string, - () => TextMapPropagator - >([['custom-propagator', () => propagator]]); - } - - const provider = new CustomTracerProvider({}); - provider.register(); - assert.ok( - provider['_activeSpanProcessor'].constructor.name === - 'MultiSpanProcessor' - ); - assert.strictEqual( - provider['_activeSpanProcessor']['_spanProcessors'].length, - 0 - ); - assert.strictEqual(propagation['_getGlobalPropagator'](), propagator); - }); - - it('the old way of extending still works', () => { - const propagator = new DummyPropagator(); - - // this is an anti-pattern, but we test that for backwards compatibility - class CustomTracerProvider extends NodeTracerProvider { - protected static override readonly _registeredPropagators = new Map< - string, - () => TextMapPropagator - >([['custom-propagator', () => propagator]]); - - protected override _getPropagator( - name: string - ): TextMapPropagator | undefined { - return ( - super._getPropagator(name) || - CustomTracerProvider._registeredPropagators.get(name)?.() - ); - } - } - - const provider = new CustomTracerProvider({}); - provider.register(); - assert.ok( - provider['_activeSpanProcessor'].constructor.name === - 'MultiSpanProcessor' - ); - assert.strictEqual( - provider['_activeSpanProcessor']['_spanProcessors'].length, - 0 - ); - - assert.strictEqual(propagation['_getGlobalPropagator'](), propagator); - }); - }); }); diff --git a/packages/opentelemetry-sdk-trace-node/tsconfig.json b/packages/opentelemetry-sdk-trace-node/tsconfig.json index 60f86e96760..a216dba8e4f 100644 --- a/packages/opentelemetry-sdk-trace-node/tsconfig.json +++ b/packages/opentelemetry-sdk-trace-node/tsconfig.json @@ -21,12 +21,6 @@ { "path": "../opentelemetry-core" }, - { - "path": "../opentelemetry-propagator-b3" - }, - { - "path": "../opentelemetry-propagator-jaeger" - }, { "path": "../opentelemetry-resources" }, From bb212334c7e2262ef27bfd0e648191d5bea1530d Mon Sep 17 00:00:00 2001 From: Godfrey Chan <godfreykfc@gmail.com> Date: Thu, 30 Jan 2025 04:38:07 -0800 Subject: [PATCH 13/16] refactor(exporter-metrics-otlp-http): fix eslint warning (#5396) --- .../src/OTLPMetricExporterBase.ts | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) 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 aacf2e9bcb5..bede7aaba5d 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/OTLPMetricExporterBase.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/OTLPMetricExporterBase.ts @@ -111,18 +111,14 @@ function chooseTemporalitySelector( return chooseTemporalitySelectorFromEnvironment(); } +const DEFAULT_AGGREGATION = Object.freeze({ + type: AggregationType.DEFAULT, +}); + function chooseAggregationSelector( config: OTLPMetricExporterOptions | undefined -) { - if (config?.aggregationPreference) { - return config.aggregationPreference; - } else { - return (_instrumentType: any) => { - return { - type: AggregationType.DEFAULT, - }; - }; - } +): AggregationSelector { + return config?.aggregationPreference ?? (() => DEFAULT_AGGREGATION); } export class OTLPMetricExporterBase From 5903906d108cab5a5ddce939b836f36874cc6d0e Mon Sep 17 00:00:00 2001 From: Mend Renovate <bot@renovateapp.com> Date: Thu, 30 Jan 2025 16:38:45 +0100 Subject: [PATCH 14/16] chore(deps): update dependency mocha to v11.1.0 (#5404) --- api/package.json | 2 +- experimental/packages/api-events/package.json | 2 +- experimental/packages/api-logs/package.json | 2 +- .../exporter-logs-otlp-grpc/package.json | 2 +- .../exporter-logs-otlp-http/package.json | 2 +- .../exporter-logs-otlp-proto/package.json | 2 +- .../exporter-trace-otlp-grpc/package.json | 2 +- .../exporter-trace-otlp-http/package.json | 2 +- .../exporter-trace-otlp-proto/package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../opentelemetry-sdk-node/package.json | 2 +- .../packages/otlp-exporter-base/package.json | 2 +- .../otlp-grpc-exporter-base/package.json | 2 +- .../packages/otlp-transformer/package.json | 2 +- .../sampler-jaeger-remote/package.json | 2 +- experimental/packages/sdk-events/package.json | 2 +- experimental/packages/sdk-logs/package.json | 2 +- .../packages/shim-opencensus/package.json | 2 +- experimental/packages/web-common/package.json | 2 +- integration-tests/api/package.json | 2 +- package-lock.json | 4910 ++--------------- .../package.json | 2 +- .../package.json | 2 +- packages/opentelemetry-core/package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../opentelemetry-propagator-b3/package.json | 2 +- .../package.json | 2 +- packages/opentelemetry-resources/package.json | 2 +- .../opentelemetry-sdk-trace-base/package.json | 2 +- .../opentelemetry-sdk-trace-node/package.json | 2 +- .../opentelemetry-sdk-trace-web/package.json | 2 +- .../package.json | 2 +- packages/sdk-metrics/package.json | 2 +- semantic-conventions/package.json | 2 +- 44 files changed, 497 insertions(+), 4499 deletions(-) diff --git a/api/package.json b/api/package.json index 697d5215995..818732c7aac 100644 --- a/api/package.json +++ b/api/package.json @@ -93,7 +93,7 @@ "karma-webpack": "5.0.1", "lerna": "6.6.2", "memfs": "3.5.3", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/experimental/packages/api-events/package.json b/experimental/packages/api-events/package.json index 21c308e0d1b..339dc1c371b 100644 --- a/experimental/packages/api-events/package.json +++ b/experimental/packages/api-events/package.json @@ -76,7 +76,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "ts-loader": "9.5.2", "typescript": "5.0.4", diff --git a/experimental/packages/api-logs/package.json b/experimental/packages/api-logs/package.json index e12f03a5001..fcedb44c8b3 100644 --- a/experimental/packages/api-logs/package.json +++ b/experimental/packages/api-logs/package.json @@ -75,7 +75,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "ts-loader": "9.5.2", "typescript": "5.0.4", diff --git a/experimental/packages/exporter-logs-otlp-grpc/package.json b/experimental/packages/exporter-logs-otlp-grpc/package.json index 79ad9d937c5..9a486e01431 100644 --- a/experimental/packages/exporter-logs-otlp-grpc/package.json +++ b/experimental/packages/exporter-logs-otlp-grpc/package.json @@ -58,7 +58,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/experimental/packages/exporter-logs-otlp-http/package.json b/experimental/packages/exporter-logs-otlp-http/package.json index b1819ff2fed..a7800bf57c2 100644 --- a/experimental/packages/exporter-logs-otlp-http/package.json +++ b/experimental/packages/exporter-logs-otlp-http/package.json @@ -88,7 +88,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/experimental/packages/exporter-logs-otlp-proto/package.json b/experimental/packages/exporter-logs-otlp-proto/package.json index 40eb4caac5b..01f95d58ef9 100644 --- a/experimental/packages/exporter-logs-otlp-proto/package.json +++ b/experimental/packages/exporter-logs-otlp-proto/package.json @@ -78,7 +78,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/experimental/packages/exporter-trace-otlp-grpc/package.json b/experimental/packages/exporter-trace-otlp-grpc/package.json index 3373678fe64..fc4094f3d55 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/package.json +++ b/experimental/packages/exporter-trace-otlp-grpc/package.json @@ -55,7 +55,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/experimental/packages/exporter-trace-otlp-http/package.json b/experimental/packages/exporter-trace-otlp-http/package.json index 3aeef888e35..581dc096d47 100644 --- a/experimental/packages/exporter-trace-otlp-http/package.json +++ b/experimental/packages/exporter-trace-otlp-http/package.json @@ -79,7 +79,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/experimental/packages/exporter-trace-otlp-proto/package.json b/experimental/packages/exporter-trace-otlp-proto/package.json index 4889dc49e27..f40f7ec3c8e 100644 --- a/experimental/packages/exporter-trace-otlp-proto/package.json +++ b/experimental/packages/exporter-trace-otlp-proto/package.json @@ -77,7 +77,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/experimental/packages/opentelemetry-browser-detector/package.json b/experimental/packages/opentelemetry-browser-detector/package.json index aeaf6b8b1a0..845bc43ae19 100644 --- a/experimental/packages/opentelemetry-browser-detector/package.json +++ b/experimental/packages/opentelemetry-browser-detector/package.json @@ -68,7 +68,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index 89c0131a543..c94c7dcc7e3 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -54,7 +54,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index 87427c5074a..cba3eff7483 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-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index 3920be12b17..6bec3537423 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -61,7 +61,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/experimental/packages/opentelemetry-exporter-prometheus/package.json b/experimental/packages/opentelemetry-exporter-prometheus/package.json index 7e553d3dcd1..06e70fc42d6 100644 --- a/experimental/packages/opentelemetry-exporter-prometheus/package.json +++ b/experimental/packages/opentelemetry-exporter-prometheus/package.json @@ -50,7 +50,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "typescript": "5.0.4" diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index ec5fa554fdf..f11037dc99b 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -74,7 +74,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "msw": "^2.7.0", "nyc": "17.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 089b1d9af14..b2864f8902f 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/package.json +++ b/experimental/packages/opentelemetry-instrumentation-grpc/package.json @@ -62,7 +62,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "typescript": "5.0.4" diff --git a/experimental/packages/opentelemetry-instrumentation-http/package.json b/experimental/packages/opentelemetry-instrumentation-http/package.json index 8ab97f19d3d..668961cb25c 100644 --- a/experimental/packages/opentelemetry-instrumentation-http/package.json +++ b/experimental/packages/opentelemetry-instrumentation-http/package.json @@ -61,7 +61,7 @@ "axios": "1.7.9", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nock": "13.5.6", "nyc": "17.1.0", "sinon": "15.1.2", diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json index ef896a5c557..497e9e6279a 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json @@ -74,7 +74,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index 42af4865966..65ecc225650 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -100,7 +100,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json index 3e1fb29b8d5..b5114e69ba1 100644 --- a/experimental/packages/opentelemetry-sdk-node/package.json +++ b/experimental/packages/opentelemetry-sdk-node/package.json @@ -79,7 +79,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/experimental/packages/otlp-exporter-base/package.json b/experimental/packages/otlp-exporter-base/package.json index e78231962f5..927a218cbc2 100644 --- a/experimental/packages/otlp-exporter-base/package.json +++ b/experimental/packages/otlp-exporter-base/package.json @@ -93,7 +93,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/experimental/packages/otlp-grpc-exporter-base/package.json b/experimental/packages/otlp-grpc-exporter-base/package.json index 36005c17372..858c2ba396b 100644 --- a/experimental/packages/otlp-grpc-exporter-base/package.json +++ b/experimental/packages/otlp-grpc-exporter-base/package.json @@ -54,7 +54,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/experimental/packages/otlp-transformer/package.json b/experimental/packages/otlp-transformer/package.json index 573c82ebd1e..f15588beeab 100644 --- a/experimental/packages/otlp-transformer/package.json +++ b/experimental/packages/otlp-transformer/package.json @@ -73,7 +73,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "protobufjs-cli": "1.1.3", "ts-loader": "9.5.2", diff --git a/experimental/packages/sampler-jaeger-remote/package.json b/experimental/packages/sampler-jaeger-remote/package.json index cf7699802bd..cda55a532be 100644 --- a/experimental/packages/sampler-jaeger-remote/package.json +++ b/experimental/packages/sampler-jaeger-remote/package.json @@ -56,7 +56,7 @@ "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^5.1.3", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/experimental/packages/sdk-events/package.json b/experimental/packages/sdk-events/package.json index 2767b326b83..2768a604d88 100644 --- a/experimental/packages/sdk-events/package.json +++ b/experimental/packages/sdk-events/package.json @@ -82,7 +82,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/experimental/packages/sdk-logs/package.json b/experimental/packages/sdk-logs/package.json index dc00cc41526..98fcc16e07e 100644 --- a/experimental/packages/sdk-logs/package.json +++ b/experimental/packages/sdk-logs/package.json @@ -87,7 +87,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/experimental/packages/shim-opencensus/package.json b/experimental/packages/shim-opencensus/package.json index 086f092c9aa..26d1d5060b8 100644 --- a/experimental/packages/shim-opencensus/package.json +++ b/experimental/packages/shim-opencensus/package.json @@ -57,7 +57,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "typescript": "5.0.4" diff --git a/experimental/packages/web-common/package.json b/experimental/packages/web-common/package.json index 4b2226066dd..897c590deaf 100644 --- a/experimental/packages/web-common/package.json +++ b/experimental/packages/web-common/package.json @@ -89,7 +89,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/integration-tests/api/package.json b/integration-tests/api/package.json index 917a0dd2f7c..9d697e60632 100644 --- a/integration-tests/api/package.json +++ b/integration-tests/api/package.json @@ -33,7 +33,7 @@ "@types/node": "18.6.5", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0" } } diff --git a/package-lock.json b/package-lock.json index a131fa3b6c2..3c4382977a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -77,7 +77,7 @@ "karma-webpack": "5.0.1", "lerna": "6.6.2", "memfs": "3.5.3", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -95,61 +95,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "api/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "api/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "api/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -645,7 +590,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "ts-loader": "9.5.2", "typescript": "5.0.4", @@ -661,61 +606,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "experimental/packages/api-events/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/api-events/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "experimental/packages/api-events/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -782,7 +672,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "ts-loader": "9.5.2", "typescript": "5.0.4", @@ -798,61 +688,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "experimental/packages/api-logs/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/api-logs/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "experimental/packages/api-logs/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -921,7 +756,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -940,63 +775,105 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "experimental/packages/exporter-logs-otlp-grpc/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, + "experimental/packages/exporter-logs-otlp-http": { + "name": "@opentelemetry/exporter-logs-otlp-http", + "version": "0.57.0", + "license": "Apache-2.0", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "@opentelemetry/api-logs": "0.57.0", + "@opentelemetry/core": "1.30.0", + "@opentelemetry/otlp-exporter-base": "0.57.0", + "@opentelemetry/otlp-transformer": "0.57.0", + "@opentelemetry/sdk-logs": "0.57.0" + }, + "devDependencies": { + "@babel/core": "7.26.7", + "@babel/preset-env": "7.26.7", + "@opentelemetry/api": "1.9.0", + "@opentelemetry/resources": "1.30.0", + "@types/mocha": "10.0.10", + "@types/node": "18.6.5", + "@types/sinon": "17.0.3", + "@types/webpack-env": "1.16.3", + "babel-loader": "9.2.1", + "babel-plugin-istanbul": "7.0.0", + "cross-var": "1.1.0", + "karma": "6.4.4", + "karma-chrome-launcher": "3.1.0", + "karma-coverage": "2.2.1", + "karma-mocha": "2.0.1", + "karma-spec-reporter": "0.0.36", + "karma-webpack": "5.0.1", + "lerna": "6.6.2", + "mocha": "11.1.0", + "nyc": "17.1.0", + "sinon": "15.1.2", + "ts-loader": "9.5.2", + "typescript": "5.0.4", + "webpack": "5.96.1", + "webpack-cli": "6.0.1" }, "engines": { - "node": ">=12" + "node": ">=18" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "experimental/packages/exporter-logs-otlp-grpc/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", + "experimental/packages/exporter-logs-otlp-http/node_modules/@types/node": { + "version": "18.6.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", + "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", + "dev": true + }, + "experimental/packages/exporter-logs-otlp-http/node_modules/webpack": { + "version": "5.96.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", + "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", "dev": true, "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" }, "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" + "webpack": "bin/webpack.js" }, "engines": { - "node": ">= 14.0.0" + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } } }, - "experimental/packages/exporter-logs-otlp-http": { - "name": "@opentelemetry/exporter-logs-otlp-http", + "experimental/packages/exporter-logs-otlp-proto": { + "name": "@opentelemetry/exporter-logs-otlp-proto", "version": "0.57.0", "license": "Apache-2.0", "dependencies": { @@ -1004,18 +881,17 @@ "@opentelemetry/core": "1.30.0", "@opentelemetry/otlp-exporter-base": "0.57.0", "@opentelemetry/otlp-transformer": "0.57.0", - "@opentelemetry/sdk-logs": "0.57.0" + "@opentelemetry/resources": "1.30.0", + "@opentelemetry/sdk-logs": "0.57.0", + "@opentelemetry/sdk-trace-base": "1.30.0" }, "devDependencies": { "@babel/core": "7.26.7", "@babel/preset-env": "7.26.7", "@opentelemetry/api": "1.9.0", - "@opentelemetry/resources": "1.30.0", "@types/mocha": "10.0.10", "@types/node": "18.6.5", "@types/sinon": "17.0.3", - "@types/webpack-env": "1.16.3", - "babel-loader": "9.2.1", "babel-plugin-istanbul": "7.0.0", "cross-var": "1.1.0", "karma": "6.4.4", @@ -1025,158 +901,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", - "nyc": "17.1.0", - "sinon": "15.1.2", - "ts-loader": "9.5.2", - "typescript": "5.0.4", - "webpack": "5.96.1", - "webpack-cli": "6.0.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "experimental/packages/exporter-logs-otlp-http/node_modules/@types/node": { - "version": "18.6.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", - "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", - "dev": true - }, - "experimental/packages/exporter-logs-otlp-http/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/exporter-logs-otlp-http/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "experimental/packages/exporter-logs-otlp-http/node_modules/webpack": { - "version": "5.96.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", - "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.6", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.14.0", - "browserslist": "^4.24.0", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "experimental/packages/exporter-logs-otlp-proto": { - "name": "@opentelemetry/exporter-logs-otlp-proto", - "version": "0.57.0", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.57.0", - "@opentelemetry/core": "1.30.0", - "@opentelemetry/otlp-exporter-base": "0.57.0", - "@opentelemetry/otlp-transformer": "0.57.0", - "@opentelemetry/resources": "1.30.0", - "@opentelemetry/sdk-logs": "0.57.0", - "@opentelemetry/sdk-trace-base": "1.30.0" - }, - "devDependencies": { - "@babel/core": "7.26.7", - "@babel/preset-env": "7.26.7", - "@opentelemetry/api": "1.9.0", - "@types/mocha": "10.0.10", - "@types/node": "18.6.5", - "@types/sinon": "17.0.3", - "babel-plugin-istanbul": "7.0.0", - "cross-var": "1.1.0", - "karma": "6.4.4", - "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.1", - "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.36", - "karma-webpack": "5.0.1", - "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -1197,61 +922,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "experimental/packages/exporter-logs-otlp-proto/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/exporter-logs-otlp-proto/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "experimental/packages/exporter-logs-otlp-proto/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -1319,7 +989,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -1338,61 +1008,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "experimental/packages/exporter-trace-otlp-grpc/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/exporter-trace-otlp-grpc/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "experimental/packages/exporter-trace-otlp-http": { "name": "@opentelemetry/exporter-trace-otlp-http", "version": "0.57.0", @@ -1422,7 +1037,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -1443,61 +1058,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "experimental/packages/exporter-trace-otlp-http/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/exporter-trace-otlp-http/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "experimental/packages/exporter-trace-otlp-http/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -1571,7 +1131,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -1592,61 +1152,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "experimental/packages/exporter-trace-otlp-proto/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/exporter-trace-otlp-proto/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "experimental/packages/exporter-trace-otlp-proto/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -1716,7 +1221,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -1737,61 +1242,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "experimental/packages/opentelemetry-browser-detector/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/opentelemetry-browser-detector/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "experimental/packages/opentelemetry-browser-detector/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -1860,7 +1310,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -1879,61 +1329,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "experimental/packages/opentelemetry-exporter-metrics-otlp-http": { "name": "@opentelemetry/exporter-metrics-otlp-http", "version": "0.57.0", @@ -1963,7 +1358,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -1984,61 +1379,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "experimental/packages/opentelemetry-exporter-metrics-otlp-http/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/opentelemetry-exporter-metrics-otlp-http/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "experimental/packages/opentelemetry-exporter-metrics-otlp-http/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -2104,7 +1444,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -2123,61 +1463,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "experimental/packages/opentelemetry-exporter-metrics-otlp-proto/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/opentelemetry-exporter-metrics-otlp-proto/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "experimental/packages/opentelemetry-exporter-prometheus": { "name": "@opentelemetry/exporter-prometheus", "version": "0.57.0", @@ -2195,7 +1480,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "typescript": "5.0.4" @@ -2213,61 +1498,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "experimental/packages/opentelemetry-exporter-prometheus/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/opentelemetry-exporter-prometheus/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "experimental/packages/opentelemetry-instrumentation": { "name": "@opentelemetry/instrumentation", "version": "0.57.0", @@ -2300,7 +1530,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -2346,7 +1576,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "msw": "^2.7.0", "nyc": "17.1.0", "sinon": "15.1.2", @@ -2362,67 +1592,12 @@ "@opentelemetry/api": "^1.3.0" } }, - "experimental/packages/opentelemetry-instrumentation-fetch/node_modules/@types/node": { - "version": "18.6.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", - "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", - "dev": true - }, - "experimental/packages/opentelemetry-instrumentation-fetch/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/opentelemetry-instrumentation-fetch/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, + "experimental/packages/opentelemetry-instrumentation-fetch/node_modules/@types/node": { + "version": "18.6.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", + "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", + "dev": true + }, "experimental/packages/opentelemetry-instrumentation-fetch/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -2494,7 +1669,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "typescript": "5.0.4" @@ -2512,61 +1687,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "experimental/packages/opentelemetry-instrumentation-grpc/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/opentelemetry-instrumentation-grpc/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "experimental/packages/opentelemetry-instrumentation-http": { "name": "@opentelemetry/instrumentation-http", "version": "0.57.0", @@ -2591,7 +1711,7 @@ "axios": "1.7.9", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nock": "13.5.6", "nyc": "17.1.0", "sinon": "15.1.2", @@ -2611,61 +1731,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "experimental/packages/opentelemetry-instrumentation-http/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/opentelemetry-instrumentation-http/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "experimental/packages/opentelemetry-instrumentation-xml-http-request": { "name": "@opentelemetry/instrumentation-xml-http-request", "version": "0.57.0", @@ -2697,7 +1762,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -2718,61 +1783,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "experimental/packages/opentelemetry-instrumentation-xml-http-request/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/opentelemetry-instrumentation-xml-http-request/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "experimental/packages/opentelemetry-instrumentation-xml-http-request/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -2825,61 +1835,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "experimental/packages/opentelemetry-instrumentation/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/opentelemetry-instrumentation/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "experimental/packages/opentelemetry-instrumentation/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -2963,7 +1918,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -2982,61 +1937,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "experimental/packages/opentelemetry-sdk-node/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/opentelemetry-sdk-node/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "experimental/packages/otlp-exporter-base": { "name": "@opentelemetry/otlp-exporter-base", "version": "0.57.0", @@ -3061,7 +1961,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -3082,61 +1982,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "experimental/packages/otlp-exporter-base/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/otlp-exporter-base/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "experimental/packages/otlp-exporter-base/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -3202,7 +2047,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -3221,61 +2066,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "experimental/packages/otlp-grpc-exporter-base/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/otlp-grpc-exporter-base/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "experimental/packages/otlp-transformer": { "name": "@opentelemetry/otlp-transformer", "version": "0.57.0", @@ -3302,7 +2092,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "protobufjs-cli": "1.1.3", "ts-loader": "9.5.2", @@ -3316,61 +2106,6 @@ "@opentelemetry/api": "^1.3.0" } }, - "experimental/packages/otlp-transformer/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/otlp-transformer/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "experimental/packages/otlp-transformer/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -3433,7 +2168,7 @@ "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^5.1.3", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -3482,61 +2217,6 @@ } } }, - "experimental/packages/sampler-jaeger-remote/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/sampler-jaeger-remote/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "experimental/packages/sdk-events": { "name": "@opentelemetry/sdk-events", "version": "0.57.0", @@ -3563,7 +2243,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -3593,61 +2273,6 @@ "@types/sinonjs__fake-timers": "*" } }, - "experimental/packages/sdk-events/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/sdk-events/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "experimental/packages/sdk-events/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -3720,7 +2345,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -3791,61 +2416,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "experimental/packages/sdk-logs/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/sdk-logs/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "experimental/packages/sdk-logs/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -3912,7 +2482,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "typescript": "5.0.4" @@ -3931,61 +2501,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "experimental/packages/shim-opencensus/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/shim-opencensus/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "experimental/packages/web-common": { "name": "@opentelemetry/web-common", "version": "0.57.0", @@ -4014,7 +2529,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -4044,61 +2559,6 @@ "@types/sinonjs__fake-timers": "*" } }, - "experimental/packages/web-common/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "experimental/packages/web-common/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "experimental/packages/web-common/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -4156,7 +2616,7 @@ "@types/node": "18.6.5", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0" }, "engines": { @@ -4169,61 +2629,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "integration-tests/api/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "integration-tests/api/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "integration-tests/propagation-validation-server": { "version": "1.31.0", "license": "Apache-2.0", @@ -20991,11 +19396,10 @@ } }, "node_modules/mocha": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.0.1.tgz", - "integrity": "sha512-+3GkODfsDG71KSCQhc4IekSW+ItCK/kiez1Z28ksWvYhKXV/syxMlerR/sC7whDp7IyreZ4YxceMLdTs5hQE8A==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.1.0.tgz", + "integrity": "sha512-8uJR5RTC2NgpY3GrYcgpZrsEd9zKbPDpob1RezyR2upGHRQtHWofmzTMzTMSV6dru3tj5Ukt0+Vnq1qhFEEwAg==", "dev": true, - "peer": true, "dependencies": { "ansi-colors": "^4.1.3", "browser-stdout": "^1.3.1", @@ -21014,8 +19418,8 @@ "strip-json-comments": "^3.1.1", "supports-color": "^8.1.1", "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1", "yargs-unparser": "^2.0.0" }, "bin": { @@ -21026,12 +19430,31 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/mocha/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/mocha/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "node_modules/mocha/node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, - "peer": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -21052,7 +19475,6 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "peer": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -21068,7 +19490,6 @@ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, - "peer": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -21083,15 +19504,13 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "peer": true + "dev": true }, "node_modules/mocha/node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, - "peer": true, "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -21103,6 +19522,64 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/mocha/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/mocha/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/mocha/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/modify-values": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", @@ -28998,7 +27475,7 @@ "@types/node": "18.6.5", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "typescript": "5.0.4" }, @@ -29009,67 +27486,12 @@ "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "packages/opentelemetry-context-async-hooks/node_modules/@types/node": { - "version": "18.6.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", - "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", - "dev": true - }, - "packages/opentelemetry-context-async-hooks/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/opentelemetry-context-async-hooks/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, + "packages/opentelemetry-context-async-hooks/node_modules/@types/node": { + "version": "18.6.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", + "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", + "dev": true + }, "packages/opentelemetry-context-zone": { "name": "@opentelemetry/context-zone", "version": "1.30.0", @@ -29110,7 +27532,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -29133,61 +27555,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "packages/opentelemetry-context-zone-peer-dep/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/opentelemetry-context-zone-peer-dep/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "packages/opentelemetry-context-zone-peer-dep/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -29256,7 +27623,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -29276,61 +27643,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "packages/opentelemetry-core/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/opentelemetry-core/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "packages/opentelemetry-core/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -29395,7 +27707,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nock": "13.5.6", "nyc": "17.1.0", "sinon": "15.1.2", @@ -29414,61 +27726,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "packages/opentelemetry-exporter-jaeger/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/opentelemetry-exporter-jaeger/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "packages/opentelemetry-exporter-zipkin": { "name": "@opentelemetry/exporter-zipkin", "version": "1.30.0", @@ -29497,7 +27754,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nock": "13.5.6", "nyc": "17.1.0", "sinon": "15.1.2", @@ -29519,61 +27776,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "packages/opentelemetry-exporter-zipkin/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/opentelemetry-exporter-zipkin/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "packages/opentelemetry-exporter-zipkin/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -29633,7 +27835,7 @@ "@types/node": "18.6.5", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "ts-loader": "9.5.2", "typescript": "5.0.4" @@ -29651,61 +27853,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "packages/opentelemetry-propagator-b3/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/opentelemetry-propagator-b3/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "packages/opentelemetry-propagator-jaeger": { "name": "@opentelemetry/propagator-jaeger", "version": "1.30.0", @@ -29728,7 +27875,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -29748,61 +27895,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "packages/opentelemetry-propagator-jaeger/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/opentelemetry-propagator-jaeger/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "packages/opentelemetry-propagator-jaeger/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -29873,7 +27965,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nock": "13.5.6", "nyc": "17.1.0", "sinon": "15.1.2", @@ -29944,61 +28036,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "packages/opentelemetry-resources/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/opentelemetry-resources/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "packages/opentelemetry-resources/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -30070,7 +28107,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -30090,61 +28127,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "packages/opentelemetry-sdk-trace-base/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/opentelemetry-sdk-trace-base/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "packages/opentelemetry-sdk-trace-base/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -30209,7 +28191,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "typescript": "5.0.4" @@ -30227,61 +28209,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "packages/opentelemetry-sdk-trace-node/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/opentelemetry-sdk-trace-node/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "packages/opentelemetry-sdk-trace-web": { "name": "@opentelemetry/sdk-trace-web", "version": "1.30.0", @@ -30314,7 +28241,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -30335,61 +28262,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "packages/opentelemetry-sdk-trace-web/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/opentelemetry-sdk-trace-web/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "packages/opentelemetry-sdk-trace-web/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -30454,7 +28326,7 @@ "@types/node": "18.6.5", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "typescript": "5.0.4" }, @@ -30471,61 +28343,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "packages/opentelemetry-shim-opentracing/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/opentelemetry-shim-opentracing/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "packages/sdk-metrics": { "name": "@opentelemetry/sdk-metrics", "version": "1.30.0", @@ -30550,7 +28367,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -30571,61 +28388,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "packages/sdk-metrics/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/sdk-metrics/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, "packages/sdk-metrics/node_modules/webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -30705,7 +28467,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nock": "13.5.6", "nyc": "17.1.0", "sinon": "15.1.2", @@ -30722,61 +28484,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true - }, - "semantic-conventions/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "semantic-conventions/node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } } }, "dependencies": { @@ -33749,7 +31456,7 @@ "karma-webpack": "5.0.1", "lerna": "6.6.2", "memfs": "3.5.3", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -33764,254 +31471,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, - "webpack": { - "version": "5.96.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", - "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.6", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.14.0", - "browserslist": "^4.24.0", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" - } - } - } - }, - "@opentelemetry/api-events": { - "version": "file:experimental/packages/api-events", - "requires": { - "@opentelemetry/api": "^1.3.0", - "@opentelemetry/api-logs": "0.57.0", - "@types/mocha": "10.0.10", - "@types/node": "18.6.5", - "@types/webpack-env": "1.16.3", - "babel-plugin-istanbul": "7.0.0", - "cross-var": "1.1.0", - "karma": "6.4.4", - "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.1", - "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.36", - "karma-webpack": "5.0.1", - "lerna": "6.6.2", - "mocha": "10.8.2", - "nyc": "17.1.0", - "ts-loader": "9.5.2", - "typescript": "5.0.4", - "webpack": "5.96.1" - }, - "dependencies": { - "@types/node": { - "version": "18.6.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", - "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", - "dev": true - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, - "webpack": { - "version": "5.96.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", - "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.6", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.14.0", - "browserslist": "^4.24.0", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" - } - } - } - }, - "@opentelemetry/api-logs": { - "version": "file:experimental/packages/api-logs", - "requires": { - "@opentelemetry/api": "^1.3.0", - "@types/mocha": "10.0.10", - "@types/node": "18.6.5", - "@types/webpack-env": "1.16.3", - "babel-plugin-istanbul": "7.0.0", - "cross-var": "1.1.0", - "karma": "6.4.4", - "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.2.1", - "karma-mocha": "2.0.1", - "karma-spec-reporter": "0.0.36", - "karma-webpack": "5.0.1", - "lerna": "6.6.2", - "mocha": "10.8.2", - "nyc": "17.1.0", - "ts-loader": "9.5.2", - "typescript": "5.0.4", - "webpack": "5.96.1" - }, - "dependencies": { - "@types/node": { - "version": "18.6.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", - "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", - "dev": true - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, "webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -34045,17 +31504,28 @@ } } }, - "@opentelemetry/context-async-hooks": { - "version": "file:packages/opentelemetry-context-async-hooks", + "@opentelemetry/api-events": { + "version": "file:experimental/packages/api-events", "requires": { - "@opentelemetry/api": ">=1.0.0 <1.10.0", + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/api-logs": "0.57.0", "@types/mocha": "10.0.10", "@types/node": "18.6.5", + "@types/webpack-env": "1.16.3", + "babel-plugin-istanbul": "7.0.0", "cross-var": "1.1.0", + "karma": "6.4.4", + "karma-chrome-launcher": "3.1.0", + "karma-coverage": "2.2.1", + "karma-mocha": "2.0.1", + "karma-spec-reporter": "0.0.36", + "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", - "typescript": "5.0.4" + "ts-loader": "9.5.2", + "typescript": "5.0.4", + "webpack": "5.96.1" }, "dependencies": { "@types/node": { @@ -34064,49 +31534,122 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "webpack": { + "version": "5.96.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", + "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" } + } + } + }, + "@opentelemetry/api-logs": { + "version": "file:experimental/packages/api-logs", + "requires": { + "@opentelemetry/api": "^1.3.0", + "@types/mocha": "10.0.10", + "@types/node": "18.6.5", + "@types/webpack-env": "1.16.3", + "babel-plugin-istanbul": "7.0.0", + "cross-var": "1.1.0", + "karma": "6.4.4", + "karma-chrome-launcher": "3.1.0", + "karma-coverage": "2.2.1", + "karma-mocha": "2.0.1", + "karma-spec-reporter": "0.0.36", + "karma-webpack": "5.0.1", + "lerna": "6.6.2", + "mocha": "11.1.0", + "nyc": "17.1.0", + "ts-loader": "9.5.2", + "typescript": "5.0.4", + "webpack": "5.96.1" + }, + "dependencies": { + "@types/node": { + "version": "18.6.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", + "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", + "dev": true }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", + "webpack": { + "version": "5.96.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", + "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", "dev": true, "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" } } } }, + "@opentelemetry/context-async-hooks": { + "version": "file:packages/opentelemetry-context-async-hooks", + "requires": { + "@opentelemetry/api": ">=1.0.0 <1.10.0", + "@types/mocha": "10.0.10", + "@types/node": "18.6.5", + "cross-var": "1.1.0", + "lerna": "6.6.2", + "mocha": "11.1.0", + "nyc": "17.1.0", + "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.6.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", + "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", + "dev": true + } + } + }, "@opentelemetry/context-zone": { "version": "file:packages/opentelemetry-context-zone", "requires": { @@ -34138,7 +31681,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -34154,47 +31697,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, "webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -34246,7 +31748,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -34260,47 +31762,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, "webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -34348,7 +31809,7 @@ "cross-var": "1.1.0", "jaeger-client": "^3.15.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nock": "13.5.6", "nyc": "17.1.0", "sinon": "15.1.2", @@ -34360,47 +31821,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } } } }, @@ -34422,7 +31842,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -34434,47 +31854,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } } } }, @@ -34504,7 +31883,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -34519,47 +31898,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, "webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -34618,7 +31956,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -34633,47 +31971,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, "webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -34725,7 +32022,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -34737,47 +32034,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } } } }, @@ -34806,7 +32062,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -34821,47 +32077,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, "webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -34910,7 +32125,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -34922,47 +32137,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } } } }, @@ -34979,7 +32153,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "typescript": "5.0.4" @@ -34990,47 +32164,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } } } }, @@ -35051,7 +32184,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -35063,47 +32196,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } } } }, @@ -35132,7 +32224,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -35147,47 +32239,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, "webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -35244,7 +32295,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -35259,47 +32310,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, "webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -35357,7 +32367,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nock": "13.5.6", "nyc": "17.1.0", "sinon": "15.1.2", @@ -35373,47 +32383,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, "webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -35473,7 +32442,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "require-in-the-middle": "^7.1.1", "shimmer": "^1.2.1", @@ -35490,47 +32459,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, "webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -35591,7 +32519,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "msw": "^2.7.0", "nyc": "17.1.0", "sinon": "15.1.2", @@ -35607,47 +32535,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, "webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -35702,7 +32589,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "typescript": "5.0.4" @@ -35713,47 +32600,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } } } }, @@ -35777,7 +32623,7 @@ "cross-var": "1.1.0", "forwarded-parse": "2.1.2", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nock": "13.5.6", "nyc": "17.1.0", "sinon": "15.1.2", @@ -35790,47 +32636,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } } } }, @@ -35861,7 +32666,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -35876,47 +32681,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, "webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -35959,7 +32723,7 @@ "@types/node": "18.6.5", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0" }, "dependencies": { @@ -35968,47 +32732,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } } } }, @@ -36031,7 +32754,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -36046,47 +32769,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, "webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -36140,7 +32822,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -36155,47 +32837,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, "webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -36244,7 +32885,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -36256,47 +32897,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } } } }, @@ -36321,7 +32921,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "protobufjs": "^7.3.0", "protobufjs-cli": "1.1.3", @@ -36330,47 +32930,6 @@ "webpack": "5.96.1" }, "dependencies": { - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, "webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -36413,7 +32972,7 @@ "@types/node": "18.6.5", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "ts-loader": "9.5.2", "typescript": "5.0.4" @@ -36424,47 +32983,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } } } }, @@ -36486,7 +33004,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -36500,47 +33018,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, "webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -36594,7 +33071,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nock": "13.5.6", "nyc": "17.1.0", "sinon": "15.1.2", @@ -36642,47 +33119,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, "webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -36728,7 +33164,7 @@ "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^5.1.3", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -36750,47 +33186,6 @@ "prettier-linter-helpers": "^1.0.0", "synckit": "^0.9.1" } - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } } } }, @@ -36816,7 +33211,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -36840,47 +33235,6 @@ "@types/sinonjs__fake-timers": "*" } }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, "webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -36936,7 +33290,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -36984,47 +33338,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, "webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -37078,7 +33391,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -37093,47 +33406,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, "webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -37200,7 +33472,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -37212,47 +33484,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } } } }, @@ -37277,7 +33508,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -37291,47 +33522,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, "webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -37379,7 +33569,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "typescript": "5.0.4" @@ -37390,47 +33580,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } } } }, @@ -37462,7 +33611,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -37477,47 +33626,6 @@ "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, "webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -37562,7 +33670,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nock": "13.5.6", "nyc": "17.1.0", "sinon": "15.1.2", @@ -37576,47 +33684,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } } } }, @@ -37635,7 +33702,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "require-in-the-middle": "^7.1.1", "sinon": "15.1.2", @@ -37647,47 +33714,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } } } }, @@ -37704,7 +33730,7 @@ "@types/node": "18.6.5", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "opentracing": "^0.14.4", "typescript": "5.0.4" @@ -37715,47 +33741,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.5.tgz", "integrity": "sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==", "dev": true - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } } } }, @@ -37800,7 +33785,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", @@ -37824,47 +33809,6 @@ "@types/sinonjs__fake-timers": "*" } }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - } - }, "webpack": { "version": "5.96.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", @@ -47676,11 +43620,10 @@ } }, "mocha": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.0.1.tgz", - "integrity": "sha512-+3GkODfsDG71KSCQhc4IekSW+ItCK/kiez1Z28ksWvYhKXV/syxMlerR/sC7whDp7IyreZ4YxceMLdTs5hQE8A==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.1.0.tgz", + "integrity": "sha512-8uJR5RTC2NgpY3GrYcgpZrsEd9zKbPDpob1RezyR2upGHRQtHWofmzTMzTMSV6dru3tj5Ukt0+Vnq1qhFEEwAg==", "dev": true, - "peer": true, "requires": { "ansi-colors": "^4.1.3", "browser-stdout": "^1.3.1", @@ -47699,17 +43642,33 @@ "strip-json-comments": "^3.1.1", "supports-color": "^8.1.1", "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1", "yargs-unparser": "^2.0.0" }, "dependencies": { + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, - "peer": true, "requires": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -47724,7 +43683,6 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "peer": true, "requires": { "brace-expansion": "^2.0.1" } @@ -47736,7 +43694,6 @@ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, - "peer": true, "requires": { "@isaacs/cliui": "^8.0.2", "@pkgjs/parseargs": "^0.11.0" @@ -47746,19 +43703,60 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "peer": true + "dev": true }, "path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, - "peer": true, "requires": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true } } }, diff --git a/packages/opentelemetry-context-async-hooks/package.json b/packages/opentelemetry-context-async-hooks/package.json index a14f964df1a..fb5441997cf 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", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "typescript": "5.0.4" }, diff --git a/packages/opentelemetry-context-zone-peer-dep/package.json b/packages/opentelemetry-context-zone-peer-dep/package.json index 782226c5b0e..441be796b39 100644 --- a/packages/opentelemetry-context-zone-peer-dep/package.json +++ b/packages/opentelemetry-context-zone-peer-dep/package.json @@ -71,7 +71,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/packages/opentelemetry-core/package.json b/packages/opentelemetry-core/package.json index bea41230698..b8c6905236a 100644 --- a/packages/opentelemetry-core/package.json +++ b/packages/opentelemetry-core/package.json @@ -77,7 +77,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/packages/opentelemetry-exporter-jaeger/package.json b/packages/opentelemetry-exporter-jaeger/package.json index 32ab4d0ee8b..2e09dde320c 100644 --- a/packages/opentelemetry-exporter-jaeger/package.json +++ b/packages/opentelemetry-exporter-jaeger/package.json @@ -51,7 +51,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nock": "13.5.6", "nyc": "17.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index 1ea8fb92e45..40fd336911a 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -76,7 +76,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nock": "13.5.6", "nyc": "17.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-propagator-b3/package.json b/packages/opentelemetry-propagator-b3/package.json index f8d7c9f69d7..e5020318c5d 100644 --- a/packages/opentelemetry-propagator-b3/package.json +++ b/packages/opentelemetry-propagator-b3/package.json @@ -62,7 +62,7 @@ "@types/node": "18.6.5", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "ts-loader": "9.5.2", "typescript": "5.0.4" diff --git a/packages/opentelemetry-propagator-jaeger/package.json b/packages/opentelemetry-propagator-jaeger/package.json index 9ba1271ad20..88c95edf975 100644 --- a/packages/opentelemetry-propagator-jaeger/package.json +++ b/packages/opentelemetry-propagator-jaeger/package.json @@ -68,7 +68,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/packages/opentelemetry-resources/package.json b/packages/opentelemetry-resources/package.json index cf531557dbd..d289c4abcd6 100644 --- a/packages/opentelemetry-resources/package.json +++ b/packages/opentelemetry-resources/package.json @@ -78,7 +78,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nock": "13.5.6", "nyc": "17.1.0", "sinon": "15.1.2", diff --git a/packages/opentelemetry-sdk-trace-base/package.json b/packages/opentelemetry-sdk-trace-base/package.json index 2d1a746e299..612f4f184f8 100644 --- a/packages/opentelemetry-sdk-trace-base/package.json +++ b/packages/opentelemetry-sdk-trace-base/package.json @@ -79,7 +79,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/packages/opentelemetry-sdk-trace-node/package.json b/packages/opentelemetry-sdk-trace-node/package.json index a0c1afdf928..c6c692e0b5f 100644 --- a/packages/opentelemetry-sdk-trace-node/package.json +++ b/packages/opentelemetry-sdk-trace-node/package.json @@ -53,7 +53,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "typescript": "5.0.4" diff --git a/packages/opentelemetry-sdk-trace-web/package.json b/packages/opentelemetry-sdk-trace-web/package.json index 2f4373b2204..ba17c283349 100644 --- a/packages/opentelemetry-sdk-trace-web/package.json +++ b/packages/opentelemetry-sdk-trace-web/package.json @@ -76,7 +76,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/packages/opentelemetry-shim-opentracing/package.json b/packages/opentelemetry-shim-opentracing/package.json index 06540cb794f..83a96bf9d6b 100644 --- a/packages/opentelemetry-shim-opentracing/package.json +++ b/packages/opentelemetry-shim-opentracing/package.json @@ -50,7 +50,7 @@ "@types/node": "18.6.5", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "typescript": "5.0.4" }, diff --git a/packages/sdk-metrics/package.json b/packages/sdk-metrics/package.json index 8111146f0e4..746e96f1801 100644 --- a/packages/sdk-metrics/package.json +++ b/packages/sdk-metrics/package.json @@ -69,7 +69,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nyc": "17.1.0", "sinon": "15.1.2", "ts-loader": "9.5.2", diff --git a/semantic-conventions/package.json b/semantic-conventions/package.json index 72da92e9037..88b3ccb0ebf 100644 --- a/semantic-conventions/package.json +++ b/semantic-conventions/package.json @@ -71,7 +71,7 @@ "@types/sinon": "17.0.3", "cross-var": "1.1.0", "lerna": "6.6.2", - "mocha": "10.8.2", + "mocha": "11.1.0", "nock": "13.5.6", "nyc": "17.1.0", "sinon": "15.1.2", From c51396506286d32ac77dbaae0beba10331d07b2b Mon Sep 17 00:00:00 2001 From: Mend Renovate <bot@renovateapp.com> Date: Thu, 30 Jan 2025 16:40:21 +0100 Subject: [PATCH 15/16] chore(deps): update dependency gh-pages to v6.3.0 (#5403) --- package-lock.json | 32 ++++++++++++++++---------------- package.json | 2 +- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3c4382977a6..9dbaf63c200 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,7 @@ "eslint-plugin-header": "3.1.1", "eslint-plugin-node": "11.1.0", "eslint-plugin-prettier": "5.0.1", - "gh-pages": "6.2.0", + "gh-pages": "6.3.0", "glob": "^11.0.0", "karma": "6.4.4", "karma-chrome-launcher": "3.1.0", @@ -14643,13 +14643,13 @@ } }, "node_modules/gh-pages": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-6.2.0.tgz", - "integrity": "sha512-HMXJ8th9u5wRXaZCnLcs/d3oVvCHiZkaP5KQExQljYGwJjQbSPyTdHe/Gc1IvYUR/rWiZLxNobIqfoMHKTKjHQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-6.3.0.tgz", + "integrity": "sha512-Ot5lU6jK0Eb+sszG8pciXdjMXdBJ5wODvgjR+imihTqsUWF2K6dJ9HST55lgqcs8wWcw6o6wAsUzfcYRhJPXbA==", "dev": true, "dependencies": { "async": "^3.2.4", - "commander": "^11.0.0", + "commander": "^13.0.0", "email-addresses": "^5.0.0", "filenamify": "^4.3.0", "find-cache-dir": "^3.3.1", @@ -14665,12 +14665,12 @@ } }, "node_modules/gh-pages/node_modules/commander": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", - "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", "dev": true, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/git-raw-commits": { @@ -40065,13 +40065,13 @@ } }, "gh-pages": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-6.2.0.tgz", - "integrity": "sha512-HMXJ8th9u5wRXaZCnLcs/d3oVvCHiZkaP5KQExQljYGwJjQbSPyTdHe/Gc1IvYUR/rWiZLxNobIqfoMHKTKjHQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-6.3.0.tgz", + "integrity": "sha512-Ot5lU6jK0Eb+sszG8pciXdjMXdBJ5wODvgjR+imihTqsUWF2K6dJ9HST55lgqcs8wWcw6o6wAsUzfcYRhJPXbA==", "dev": true, "requires": { "async": "^3.2.4", - "commander": "^11.0.0", + "commander": "^13.0.0", "email-addresses": "^5.0.0", "filenamify": "^4.3.0", "find-cache-dir": "^3.3.1", @@ -40080,9 +40080,9 @@ }, "dependencies": { "commander": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", - "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", "dev": true } } diff --git a/package.json b/package.json index 8efce3d2656..6e5c8b12dc7 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,7 @@ "eslint-plugin-header": "3.1.1", "eslint-plugin-node": "11.1.0", "eslint-plugin-prettier": "5.0.1", - "gh-pages": "6.2.0", + "gh-pages": "6.3.0", "glob": "^11.0.0", "karma": "6.4.4", "karma-chrome-launcher": "3.1.0", From 29d0da559b1c561c25317846e084754a2286f036 Mon Sep 17 00:00:00 2001 From: Godfrey Chan <godfreykfc@gmail.com> Date: Thu, 30 Jan 2025 08:40:10 -0800 Subject: [PATCH 16/16] refactor(instrumentation-fetch): fix eslint warnings (#5401) --- .../src/utils.ts | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/src/utils.ts b/experimental/packages/opentelemetry-instrumentation-fetch/src/utils.ts index da3d329dc21..92735ed8fab 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/src/utils.ts +++ b/experimental/packages/opentelemetry-instrumentation-fetch/src/utils.ts @@ -117,6 +117,10 @@ function _getBodyNonDestructively(body: ReadableStream) { }; } +function isDocument(value: unknown): value is Document { + return typeof Document !== 'undefined' && value instanceof Document; +} + /** * Helper function to determine payload content length for XHR requests * @param body @@ -125,17 +129,17 @@ function _getBodyNonDestructively(body: ReadableStream) { export function getXHRBodyLength( body: Document | XMLHttpRequestBodyInit ): number | undefined { - if (typeof Document !== 'undefined' && body instanceof Document) { + if (isDocument(body)) { return new XMLSerializer().serializeToString(document).length; } + // XMLHttpRequestBodyInit expands to the following: - if (body instanceof Blob) { - return body.size; + if (typeof body === 'string') { + return getByteLength(body); } - // ArrayBuffer | ArrayBufferView - if ((body as any).byteLength !== undefined) { - return (body as any).byteLength as number; + if (body instanceof Blob) { + return body.size; } if (body instanceof FormData) { @@ -146,8 +150,9 @@ export function getXHRBodyLength( return getByteLength(body.toString()); } - if (typeof body === 'string') { - return getByteLength(body); + // ArrayBuffer | ArrayBufferView + if (body.byteLength !== undefined) { + return body.byteLength; } DIAG_LOGGER.warn('unknown body type');