diff --git a/bin/queuePopulator.js b/bin/queuePopulator.js index 8f25a361a..1add32f73 100644 --- a/bin/queuePopulator.js +++ b/bin/queuePopulator.js @@ -1,3 +1,5 @@ +require('../lib/otel'); + const async = require('async'); const schedule = require('node-schedule'); diff --git a/extensions/gc/service.js b/extensions/gc/service.js index 6c132a646..70177c3d2 100644 --- a/extensions/gc/service.js +++ b/extensions/gc/service.js @@ -1,4 +1,5 @@ 'use strict'; +require('../../lib/otel'); const { errors } = require('arsenal'); const werelogs = require('werelogs'); diff --git a/extensions/lifecycle/bucketProcessor/task.js b/extensions/lifecycle/bucketProcessor/task.js index d40a584d5..ac5b7b27a 100644 --- a/extensions/lifecycle/bucketProcessor/task.js +++ b/extensions/lifecycle/bucketProcessor/task.js @@ -1,4 +1,5 @@ 'use strict'; +require('../../../lib/otel'); const async = require('async'); const werelogs = require('werelogs'); diff --git a/extensions/lifecycle/conductor/LifecycleConductor.js b/extensions/lifecycle/conductor/LifecycleConductor.js index fbbee05ba..340b93b70 100644 --- a/extensions/lifecycle/conductor/LifecycleConductor.js +++ b/extensions/lifecycle/conductor/LifecycleConductor.js @@ -29,6 +29,10 @@ const { startCircuitBreakerMetricsExport, updateCircuitBreakerConfigForImplicitOutputQueue, } = require('../../../lib/CircuitBreaker'); +const { context: otelContext, trace, SpanKind, SpanStatusCode } = + require('@opentelemetry/api'); +const { traceHeadersFromCurrentContext } = + require('../../../lib/tracing/kafkaTraceContext'); const DEFAULT_CRON_RULE = '* * * * *'; const DEFAULT_CONCURRENCY = 10; @@ -309,7 +313,11 @@ class LifecycleConductor { } _taskToMessage(task, taskVersion, log) { - return { + // Attach traceparent so the bucket-processor consumer becomes a + // child of the conductor.scan root span. Returns undefined when + // OTEL is disabled (no active span). + const headers = traceHeadersFromCurrentContext(); + const kafkaEntry = { message: JSON.stringify({ action: 'processObjects', contextInfo: { @@ -324,6 +332,8 @@ class LifecycleConductor { details: {}, }), }; + if (headers) kafkaEntry.headers = headers; + return kafkaEntry; } _getAccountIds(unknownCanonicalIds, log, cb) { @@ -371,6 +381,27 @@ class LifecycleConductor { } processBuckets(cb) { + // Wrap every cron firing in its own root trace so bucket-listing + // and downstream bucket-task produces appear as children. The + // trace is INTERNAL because there's no upstream HTTP/Kafka parent. + const tracer = trace.getTracer('backbeat'); + const span = tracer.startSpan('lifecycle.conductor.scan', { + kind: SpanKind.INTERNAL, + }); + const ctx = trace.setSpan(otelContext.active(), span); + otelContext.with(ctx, () => { + this._processBucketsInternal((err, res) => { + if (err) { + span.recordException(err); + span.setStatus({ code: SpanStatusCode.ERROR }); + } + span.end(); + if (cb) cb(err, res); + }); + }); + } + + _processBucketsInternal(cb) { const log = this.logger.newRequestLogger(); const start = new Date(); let nBucketsQueued = 0; diff --git a/extensions/lifecycle/conductor/service.js b/extensions/lifecycle/conductor/service.js index ec499cdd1..84e7137c2 100644 --- a/extensions/lifecycle/conductor/service.js +++ b/extensions/lifecycle/conductor/service.js @@ -1,4 +1,5 @@ 'use strict'; +require('../../../lib/otel'); const async = require('async'); const werelogs = require('werelogs'); diff --git a/extensions/lifecycle/objectProcessor/task.js b/extensions/lifecycle/objectProcessor/task.js index 95cd10501..ddf4e5519 100644 --- a/extensions/lifecycle/objectProcessor/task.js +++ b/extensions/lifecycle/objectProcessor/task.js @@ -1,4 +1,5 @@ 'use strict'; +require('../../../lib/otel'); const async = require('async'); const werelogs = require('werelogs'); diff --git a/extensions/lifecycle/tasks/LifecycleTask.js b/extensions/lifecycle/tasks/LifecycleTask.js index 591ce63e8..424b4a8d6 100644 --- a/extensions/lifecycle/tasks/LifecycleTask.js +++ b/extensions/lifecycle/tasks/LifecycleTask.js @@ -24,6 +24,7 @@ const ReplicationAPI = require('../../replication/ReplicationAPI'); const { LifecycleMetrics, LIFECYCLE_MARKER_METRICS_LOCATION } = require('../LifecycleMetrics'); const locationsConfig = require('../../../conf/locationConfig.json') || {}; const { rulesSupportTransition } = require('../util/rules'); +const { traceHeadersFromCurrentContext } = require('../../../lib/tracing/kafkaTraceContext'); const { decode } = versioning.VersionID; const errorTransitionInProgress = errors.InternalError. @@ -121,7 +122,14 @@ class LifecycleTask extends BackbeatTask { * @return {undefined} */ _sendBucketEntry(entry, cb) { - const entries = [{ message: JSON.stringify(entry) }]; + // Bucket-task re-queue: keep normal parent-child semantics so the + // continuation stays in the same trace as the originating conductor + // scan. Re-queues happen rarely (only when a bucket is too big to + // finish in one batch) so the trace stays small. + const headers = traceHeadersFromCurrentContext(); + const kafkaEntry = { message: JSON.stringify(entry) }; + if (headers) kafkaEntry.headers = headers; + const entries = [kafkaEntry]; this.producer.sendToTopic(this.bucketTasksTopic, entries, err => { LifecycleMetrics.onKafkaPublish(null, 'BucketTopic', 'bucket', err, 1); return cb(err); @@ -183,7 +191,13 @@ class LifecycleTask extends BackbeatTask { location, Date.now() - entry.getAttribute('transitionTime')); - const entries = [{ message: entry.toKafkaMessage() }]; + // Attach traceparent so the downstream consumer can link back to + // this bucket-processor span. The consumer always creates a new + // root trace with a Link (never parent-child across Kafka). + const headers = traceHeadersFromCurrentContext(); + const kafkaEntry = { message: entry.toKafkaMessage() }; + if (headers) kafkaEntry.headers = headers; + const entries = [kafkaEntry]; this.producer.sendToTopic(this.objectTasksTopic, entries, err => { LifecycleMetrics.onKafkaPublish(null, 'ObjectTopic', 'bucket', err, 1); return cb(err); diff --git a/extensions/notification/NotificationQueuePopulator.js b/extensions/notification/NotificationQueuePopulator.js index d36e22c8a..efab8894b 100644 --- a/extensions/notification/NotificationQueuePopulator.js +++ b/extensions/notification/NotificationQueuePopulator.js @@ -10,6 +10,7 @@ const messageUtil = require('./utils/message'); const notifConstants = require('./constants'); const QueuePopulatorExtension = require('../../lib/queuePopulator/QueuePopulatorExtension'); +const { traceHeadersFromEntry } = require('../../lib/tracing/kafkaTraceContext'); class NotificationQueuePopulator extends QueuePopulatorExtension { /** @@ -290,13 +291,20 @@ class NotificationQueuePopulator extends QueuePopulatorExtension { eventTime: message.dateTime, matchingConfig, }); + // Propagate the oplog entry's trace context as + // Kafka headers so the notification-processor + // consumer becomes a child of the original S3 + // trace (same pattern as ReplicationQueuePopulator). + const traceHeaders = traceHeadersFromEntry(value); this.publish(topic, // keeping all messages for same object // in the same partition to keep the order. // here we use the object name and not the // "_id" which also includes the versionId `${bucket}/${message.key}`, - JSON.stringify(message)); + JSON.stringify(message), + undefined, + traceHeaders); // keep track of internal topics we have pushed to pushedToTopic[topic] = true; } diff --git a/extensions/notification/destination/KafkaNotificationDestination.js b/extensions/notification/destination/KafkaNotificationDestination.js index b7936f164..c6b37f0c9 100644 --- a/extensions/notification/destination/KafkaNotificationDestination.js +++ b/extensions/notification/destination/KafkaNotificationDestination.js @@ -100,7 +100,22 @@ class KafkaNotificationDestination extends NotificationDestination { */ send(messages, done) { const starTime = Date.now(); - this._notificationProducer.send(messages, error => { + // Trust boundary: strip any trace headers before producing to the + // external customer Kafka destination. There's no ingress-layer + // strip on the Kafka protocol (unlike HTTP via nginx), so the only + // place to drop headers is at the producer. Keeps everything else + // on the message intact. + const safeMessages = Array.isArray(messages) + ? messages.map(m => { + if (m && m.headers) { + // eslint-disable-next-line no-unused-vars + const { headers, ...rest } = m; + return rest; + } + return m; + }) + : messages; + this._notificationProducer.send(safeMessages, error => { if (error) { const { host, topic } = this._destinationConfig; this._log.error('error in message delivery to external Kafka destination', { diff --git a/extensions/notification/queueProcessor/task.js b/extensions/notification/queueProcessor/task.js index a6176ce31..a4534f9ad 100644 --- a/extensions/notification/queueProcessor/task.js +++ b/extensions/notification/queueProcessor/task.js @@ -1,4 +1,6 @@ 'use strict'; +require('../../../lib/otel'); + const assert = require('assert'); const { errors } = require('arsenal'); const async = require('async'); diff --git a/extensions/replication/ReplicationAPI.js b/extensions/replication/ReplicationAPI.js index 5be6d3ea1..f9c9a5c97 100644 --- a/extensions/replication/ReplicationAPI.js +++ b/extensions/replication/ReplicationAPI.js @@ -3,6 +3,7 @@ const locations = require('../../conf/locationConfig.json') || {}; const ActionQueueEntry = require('../../lib/models/ActionQueueEntry'); const ReplicationMetrics = require('./ReplicationMetrics'); +const { traceHeadersFromCurrentContext } = require('../../lib/tracing/kafkaTraceContext'); let { dataMoverTopic } = config.extensions.replication; const { coldStorageArchiveTopicPrefix } = config.extensions.lifecycle; @@ -78,6 +79,10 @@ class ReplicationAPI { key: `${bucket}/${key}`, message: action.toKafkaMessage(), }; + // Attach traceparent so the downstream consumer can link back. + // All Kafka consumers create linked spans (never parent-child). + const traceHeaders = traceHeadersFromCurrentContext(); + if (traceHeaders) kafkaEntry.headers = traceHeaders; let topic = dataMoverTopic; const toLocation = action.getAttribute('toLocation'); const locationConfig = locations[toLocation]; diff --git a/extensions/replication/ReplicationQueuePopulator.js b/extensions/replication/ReplicationQueuePopulator.js index 57d3eaaaf..dd4e454a6 100644 --- a/extensions/replication/ReplicationQueuePopulator.js +++ b/extensions/replication/ReplicationQueuePopulator.js @@ -5,6 +5,7 @@ const QueuePopulatorExtension = require('../../lib/queuePopulator/QueuePopulatorExtension'); const ObjectQueueEntry = require('../../lib/models/ObjectQueueEntry'); const locationsConfig = require('../../conf/locationConfig.json') || {}; +const { traceHeadersFromEntry } = require('../../lib/tracing/kafkaTraceContext'); class ReplicationQueuePopulator extends QueuePopulatorExtension { constructor(params) { @@ -95,11 +96,15 @@ class ReplicationQueuePopulator extends QueuePopulatorExtension { const publishedEntry = Object.assign({}, entry); delete publishedEntry.logReader; + const traceHeaders = traceHeadersFromEntry(value); + this.log.trace('publishing object replication entry', { entry: queueEntry.getLogInfo() }); this.publish(this.repConfig.topic, `${queueEntry.getBucket()}/${queueEntry.getObjectKey()}`, - JSON.stringify(publishedEntry)); + JSON.stringify(publishedEntry), + undefined, + traceHeaders); } /** diff --git a/extensions/replication/queueProcessor/task.js b/extensions/replication/queueProcessor/task.js index 23dabde7c..d07006568 100644 --- a/extensions/replication/queueProcessor/task.js +++ b/extensions/replication/queueProcessor/task.js @@ -1,4 +1,6 @@ 'use strict'; +require('../../../lib/otel'); + const async = require('async'); const assert = require('assert'); const werelogs = require('werelogs'); diff --git a/extensions/replication/replicationStatusProcessor/task.js b/extensions/replication/replicationStatusProcessor/task.js index 61948835c..01d68d112 100644 --- a/extensions/replication/replicationStatusProcessor/task.js +++ b/extensions/replication/replicationStatusProcessor/task.js @@ -1,4 +1,5 @@ 'use strict'; +require('../../../lib/otel'); const werelogs = require('werelogs'); diff --git a/lib/BackbeatConsumer.js b/lib/BackbeatConsumer.js index 63bf426fe..a697ab099 100644 --- a/lib/BackbeatConsumer.js +++ b/lib/BackbeatConsumer.js @@ -23,6 +23,9 @@ const { } } = require('./constants'); +const { context: otelContext, SpanStatusCode } = require('@opentelemetry/api'); +const { startLinkedSpanFromKafkaEntry } = require('./tracing/kafkaTraceContext'); + const CLIENT_ID = 'BackbeatConsumer'; const { withTopicPrefix } = require('./util/topic'); @@ -514,7 +517,20 @@ class BackbeatConsumer extends EventEmitter { const { topic, partition } = entry; KafkaBacklogMetrics.onTaskStarted(topic, partition, this._groupId); - this._queueProcessor(entry, (err, completionArgs) => done(err, completionArgs, finishProcessingTask)); + const { ctx, span } = startLinkedSpanFromKafkaEntry(entry, `${topic}.process`); + span.setAttribute('messaging.kafka.topic', topic); + span.setAttribute('messaging.kafka.partition', partition); + + otelContext.with(ctx, () => { + this._queueProcessor(entry, (err, completionArgs) => { + if (err) { + span.recordException(err); + span.setStatus({ code: SpanStatusCode.ERROR }); + } + span.end(); + done(err, completionArgs, finishProcessingTask); + }); + }); } /** diff --git a/lib/BackbeatProducer.js b/lib/BackbeatProducer.js index 6fe22b786..493924605 100644 --- a/lib/BackbeatProducer.js +++ b/lib/BackbeatProducer.js @@ -288,7 +288,8 @@ class BackbeatProducer extends EventEmitter { Buffer.from(item.message), // value item.key, // key (for keyed partitioning) Date.now(), // timestamp - sendCtx // opaque + sendCtx, // opaque + item.headers || undefined // Kafka message headers ); }); } catch (err) { diff --git a/lib/otel.js b/lib/otel.js new file mode 100644 index 000000000..626c6ca66 --- /dev/null +++ b/lib/otel.js @@ -0,0 +1,153 @@ +'use strict'; + +const enableOtel = process.env.ENABLE_OTEL === 'true'; + +let sdk = null; + +/** + * Build the set of trusted hostnames from Backbeat's Config. Outbound HTTP + * calls to hosts OUTSIDE this set have their `traceparent`/`tracestate` + * headers stripped (the client span is still recorded). + * + * Trusted: + * - `extensions.replication.source.s3.host` — our own cloudserver + * - Kafka brokers from `kafka.hosts` + * - MongoDB hosts from `queuePopulator.mongo` + * - `server.host` — self-calls on the backbeat admin API + * - `redis.host` and any sentinel hosts (direct ioredis client uses its + * own protocol, but we include them defensively in case any HTTP + * tooling points at them) + * + * Deliberately NOT trusted: + * - Anything in `extensions.replication.destination.bootstrapList` — + * even Scality-type replication destinations are separate clusters + * with separate tracing stacks; traces don't cross-reference. + * - Any AWS / Azure / GCP endpoint reached by the auto-instrumented + * AWS SDK (not explicit in Config, covered by refuse-by-default). + * + * Hostnames are lowercased and stripped of port. + * + * @param {Object} config - backbeat Config instance + * @returns {Set} trusted hostnames + */ +function buildTrustedHosts(config) { + const hosts = new Set(); + + const add = host => { + if (!host || typeof host !== 'string') return; + const h = host.toLowerCase().split(':')[0].trim(); + if (h) hosts.add(h); + }; + + const addHostPortList = str => { + if (!str || typeof str !== 'string') return; + // "host1:port1,host2:port2" → add each host + str.split(',').forEach(entry => add(entry.trim())); + }; + + // Replication source cloudserver + const repSource = config?.extensions?.replication?.source?.s3; + if (repSource) add(repSource.host); + + // Kafka brokers + addHostPortList(config?.kafka?.hosts); + + // MongoDB replicaset hosts + const mongo = config?.queuePopulator?.mongo; + if (mongo) { + add(mongo.host); + addHostPortList(mongo.replicaSetHosts); + } + + // Admin API self-calls + if (config?.server?.host) add(config.server.host); + + // Redis (defensive — ioredis doesn't go through HTTP instrumentation) + if (config?.redis?.host) add(config.redis.host); + if (Array.isArray(config?.redis?.sentinels)) { + config.redis.sentinels.forEach(s => add(s.host)); + } + + // Localhost is always trusted (health checks, self-calls) + add('localhost'); + add('127.0.0.1'); + + return hosts; +} + +if (enableOtel) { + const { NodeSDK } = require('@opentelemetry/sdk-node'); + const { Resource } = require('@opentelemetry/resources'); + const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-http'); + const { getNodeAutoInstrumentations } = require('@opentelemetry/auto-instrumentations-node'); + const { TraceIdRatioBasedSampler, ParentBasedSampler } = require('@opentelemetry/sdk-trace-base'); + const { version } = require('../package.json'); + const { isHealthPath } = require('./tracing/healthPaths'); + + // Config is loaded lazily — `require('./Config')` triggers JSON parsing, + // so only do it once inside the enableOtel branch. + const config = require('./Config'); + const TRUSTED_HOSTS = buildTrustedHosts(config); + + const exportUrl = process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT || + 'http://otel-collector.default.svc.cluster.local:4318/v1/traces'; + + const traceExporter = new OTLPTraceExporter({ + url: exportUrl, + }); + + const parsedRatio = parseFloat(process.env.OTEL_SAMPLING_RATIO); + const samplingRatio = Number.isFinite(parsedRatio) ? parsedRatio : 0.01; + + sdk = new NodeSDK({ + resource: new Resource({ + 'service.name': process.env.OTEL_SERVICE_NAME || 'backbeat', + 'service.version': process.env.OTEL_SERVICE_VERSION || version, + 'service.namespace': process.env.OTEL_SERVICE_NAMESPACE || 'scality', + }), + traceExporter, + sampler: new ParentBasedSampler({ + root: new TraceIdRatioBasedSampler(samplingRatio), + }), + instrumentations: [ + getNodeAutoInstrumentations({ + '@opentelemetry/instrumentation-fs': { enabled: false }, + '@opentelemetry/instrumentation-redis': { enabled: false }, + '@opentelemetry/instrumentation-redis-4': { enabled: false }, + '@opentelemetry/instrumentation-ioredis': { + enabled: true, + requireParentSpan: true, + }, + '@opentelemetry/instrumentation-http': { + enabled: true, + // Drop health/metrics noise entirely — no span, no log. + ignoreIncomingRequestHook: req => + isHealthPath(req.url) || req.method === 'OPTIONS', + // Strip traceparent on outbound calls to untrusted hosts. + // Keeps the client span (observability) but prevents the + // trace ID from leaking to AWS/Azure/GCP/remote Artesca. + requestHook: (span, request) => { + const rawHost = (request.getHeader?.('host') || '').toString(); + const host = rawHost.toLowerCase().split(':')[0]; + if (host && !TRUSTED_HOSTS.has(host)) { + request.removeHeader?.('traceparent'); + request.removeHeader?.('tracestate'); + span.setAttribute('scality.trace.suppressed', true); + } + }, + }, + '@opentelemetry/instrumentation-express': { enabled: false }, + '@opentelemetry/instrumentation-mongodb': { enabled: false }, + '@opentelemetry/instrumentation-aws-sdk': { enabled: true }, + }), + ], + }); + + sdk.start(); + + const shutdown = () => sdk.shutdown().catch(() => {}); + process.on('SIGTERM', shutdown); + process.on('SIGINT', shutdown); +} + +module.exports = { sdk, buildTrustedHosts }; diff --git a/lib/queuePopulator/QueuePopulatorExtension.js b/lib/queuePopulator/QueuePopulatorExtension.js index 0ef5a879f..96fe59f45 100644 --- a/lib/queuePopulator/QueuePopulatorExtension.js +++ b/lib/queuePopulator/QueuePopulatorExtension.js @@ -67,7 +67,7 @@ class QueuePopulatorExtension { * @param {Object} [optEntriesToPublish] - optional batch * @return {undefined} */ - publish(topic, key, message, optEntriesToPublish) { + publish(topic, key, message, optEntriesToPublish, headers) { let __batch; if (optEntriesToPublish) { __batch = optEntriesToPublish; @@ -81,6 +81,9 @@ class QueuePopulatorExtension { 'synchronously from the filter() method.'); const kafkaEntry = { key: encodeURIComponent(key), message }; + if (headers) { + kafkaEntry.headers = headers; + } this.log.trace('queueing kafka entry to topic', { key: kafkaEntry.key, topic }); if (__batch[topic] === undefined) { diff --git a/lib/tracing/healthPaths.js b/lib/tracing/healthPaths.js new file mode 100644 index 000000000..3a9d73d53 --- /dev/null +++ b/lib/tracing/healthPaths.js @@ -0,0 +1,49 @@ +'use strict'; + +/** + * Paths that should be ignored by HTTP server instrumentation — they're + * k8s liveness/readiness probes and Prometheus scrape endpoints that + * would otherwise flood Jaeger with noise. + * + * Covers: + * - `/_/live`, `/_/ready` — processor-pod probes + * - `/_/healthcheck` — backbeat API pod + * - `/_/metrics`, `/_/metrics/*` — backbeat API pod metrics sub-routes + * - `/metrics` — plain Prometheus scrape on processor pods (port 8901); + * no `/_/` prefix, scraped every 15s + * - `/_/monitoring/metrics` — legacy alias, kept for dashboards still + * pointing at it + */ +const HEALTH_PATHS = new Set([ + '/_/live', + '/_/ready', + '/_/healthcheck', + '/_/metrics', + '/metrics', + '/_/monitoring/metrics', +]); + +/** + * Return true if the URL (path or full URL) targets a liveness/readiness + * probe or a metrics scrape endpoint. + * + * Accepts query strings and sub-paths under `/_/metrics/*`. + * + * @param {string|undefined} url - req.url as seen by the HTTP instrumentation + * @returns {boolean} + */ +function isHealthPath(url) { + if (!url || typeof url !== 'string') return false; + // strip query string; HTTP instrumentation gives us the raw req.url + const qIdx = url.indexOf('?'); + const path = qIdx >= 0 ? url.slice(0, qIdx) : url; + if (HEALTH_PATHS.has(path)) return true; + // `/_/metrics/foo` is a valid metrics sub-route on the backbeat API + if (path.startsWith('/_/metrics/')) return true; + return false; +} + +module.exports = { + HEALTH_PATHS, + isHealthPath, +}; diff --git a/lib/tracing/kafkaTraceContext.js b/lib/tracing/kafkaTraceContext.js new file mode 100644 index 000000000..9adb74c72 --- /dev/null +++ b/lib/tracing/kafkaTraceContext.js @@ -0,0 +1,107 @@ +'use strict'; + +const { context, propagation, trace, SpanKind } = require('@opentelemetry/api'); + +/** + * Extract traceparent from a parsed oplog entry value and return + * Kafka headers suitable for BackbeatProducer. + * @param {Object} entryValue - parsed ObjectMD JSON + * @returns {Array|undefined} array of single-key header objects, or undefined + */ +function traceHeadersFromEntry(entryValue) { + const tc = entryValue && entryValue.traceContext; + if (!tc || !tc.traceparent) return undefined; + const headers = [{ traceparent: tc.traceparent }]; + if (tc.tracestate) headers.push({ tracestate: tc.tracestate }); + return headers; +} + +/** + * Extract trace context from Kafka message headers and return + * an OTEL context with the remote span as parent. + * @param {Array|undefined} kafkaHeaders - array of single-key objects from node-rdkafka + * @returns {Object} OTEL context + */ +function contextFromKafkaHeaders(kafkaHeaders) { + if (!kafkaHeaders) return context.active(); + const carrier = {}; + for (const h of kafkaHeaders) { + if (h.traceparent) carrier.traceparent = h.traceparent.toString(); + if (h.tracestate) carrier.tracestate = h.tracestate.toString(); + } + if (!carrier.traceparent) return context.active(); + return propagation.extract(context.active(), carrier); +} + +/** + * Start a NEW root span that LINKS to the span referenced by the Kafka + * entry's `traceparent` header — as opposed to being a child of it. + * + * Convention: every Kafka consumer read starts a new trace (new trace ID) + * and adds an OTEL Link to the upstream span. Async work (replication, + * lifecycle, GC, notifications) can fire minutes to hours after the + * original S3 request — links keep traces small and navigable via + * Jaeger's link UI. + * + * Returns { ctx, span } — caller must call span.end() when done. + * + * @param {Object} kafkaEntry - Kafka consumer entry with .headers + * @param {string} operationName - name for the span + * @returns {{ ctx: Object, span: Object }} + */ +function startLinkedSpanFromKafkaEntry(kafkaEntry, operationName) { + const tracer = trace.getTracer('backbeat'); + const links = []; + + const parentCtx = contextFromKafkaHeaders(kafkaEntry.headers); + const remoteSpan = trace.getSpan(parentCtx); + const remoteSpanCtx = remoteSpan && remoteSpan.spanContext(); + if (remoteSpanCtx && remoteSpanCtx.traceId) { + links.push({ context: remoteSpanCtx }); + } + + const span = tracer.startSpan(operationName, { + kind: SpanKind.CONSUMER, + links, + }, context.active()); + + return { ctx: trace.setSpan(context.active(), span), span }; +} + +// Alias kept for backward-compatibility with any call sites that still +// reference the old name. Behaviour is identical: always creates a linked +// root span, never a parent-child. +const startSpanFromKafkaEntry = startLinkedSpanFromKafkaEntry; + +/** + * Serialize the currently active OTEL context into standard + * `traceparent` / `tracestate` Kafka headers. The downstream consumer + * will create a LINK to this span (not a child — all Kafka hops use + * links). + * + * Returns an array of single-key header objects compatible with + * node-rdkafka's header format, or undefined if no active span. + * + * @returns {Array|undefined} + */ +function traceHeadersFromCurrentContext() { + const span = trace.getSpan(context.active()); + if (!span) return undefined; + const spanCtx = span.spanContext(); + if (!spanCtx || !spanCtx.traceId || !spanCtx.spanId) return undefined; + + const carrier = {}; + propagation.inject(context.active(), carrier); + const headers = []; + if (carrier.traceparent) headers.push({ traceparent: carrier.traceparent }); + if (carrier.tracestate) headers.push({ tracestate: carrier.tracestate }); + return headers.length > 0 ? headers : undefined; +} + +module.exports = { + traceHeadersFromEntry, + traceHeadersFromCurrentContext, + contextFromKafkaHeaders, + startSpanFromKafkaEntry, + startLinkedSpanFromKafkaEntry, +}; diff --git a/package.json b/package.json index e4f807494..23c452ac4 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,16 @@ }, "homepage": "https://github.com/scality/backbeat#readme", "dependencies": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/auto-instrumentations-node": "^0.50.2", + "@opentelemetry/context-async-hooks": "^1.28.0", + "@opentelemetry/exporter-trace-otlp-http": "^0.55.0", + "@opentelemetry/instrumentation-aws-sdk": "^0.44.0", + "@opentelemetry/instrumentation-http": "^0.55.0", + "@opentelemetry/resources": "^1.30.1", + "@opentelemetry/sdk-node": "^0.55.0", + "@opentelemetry/sdk-trace-base": "^1.28.0", + "@opentelemetry/semantic-conventions": "^1.36.0", "@aws-sdk/client-iam": "^3.921.0", "@aws-sdk/client-s3": "^3.921.0", "@aws-sdk/client-sts": "^3.921.0", @@ -78,7 +88,8 @@ "werelogs": "scality/werelogs#8.2.1" }, "resolutions": { - "node-rdkafka-prometheus/prom-client": "^15.1.3" + "node-rdkafka-prometheus/prom-client": "^15.1.3", + "@types/pg": "8.6.1" }, "devDependencies": { "@types/node": "^20.11.20", diff --git a/tests/unit/lib/otel.spec.js b/tests/unit/lib/otel.spec.js new file mode 100644 index 000000000..edbe3fa43 --- /dev/null +++ b/tests/unit/lib/otel.spec.js @@ -0,0 +1,109 @@ +'use strict'; + +const assert = require('assert'); +const { buildTrustedHosts } = require('../../../lib/otel'); + +describe('buildTrustedHosts', () => { + it('returns empty-ish set with localhost defaults for a null-ish config', () => { + const hosts = buildTrustedHosts(null); + assert(hosts.has('localhost')); + assert(hosts.has('127.0.0.1')); + }); + + it('adds the replication source cloudserver host', () => { + const hosts = buildTrustedHosts({ + extensions: { replication: { source: { s3: { host: 'cloudserver.backend', port: 8000 } } } }, + }); + assert(hosts.has('cloudserver.backend')); + }); + + it('adds every Kafka broker host', () => { + const hosts = buildTrustedHosts({ + kafka: { hosts: 'kafka-0:9092,kafka-1:9092,kafka-2:9092' }, + }); + assert(hosts.has('kafka-0')); + assert(hosts.has('kafka-1')); + assert(hosts.has('kafka-2')); + }); + + it('adds MongoDB host and replicaset hosts', () => { + const hosts = buildTrustedHosts({ + queuePopulator: { + mongo: { + host: 'mongo-primary', + replicaSetHosts: 'mongo-a:27017,mongo-b:27017', + }, + }, + }); + assert(hosts.has('mongo-primary')); + assert(hosts.has('mongo-a')); + assert(hosts.has('mongo-b')); + }); + + it('adds server.host for admin API self-calls', () => { + const hosts = buildTrustedHosts({ + server: { host: 'backbeat-api.svc' }, + }); + assert(hosts.has('backbeat-api.svc')); + }); + + it('adds redis host and sentinels', () => { + const hosts = buildTrustedHosts({ + redis: { + host: 'redis-primary', + sentinels: [ + { host: 'sentinel-0', port: 26379 }, + { host: 'sentinel-1', port: 26379 }, + ], + }, + }); + assert(hosts.has('redis-primary')); + assert(hosts.has('sentinel-0')); + assert(hosts.has('sentinel-1')); + }); + + it('does NOT add replication destination bootstrapList hosts', () => { + // Even Scality-type destinations are separate clusters with separate + // tracing stacks — they must be treated as untrusted for header strip. + const hosts = buildTrustedHosts({ + extensions: { + replication: { + source: { s3: { host: 'self', port: 8000 } }, + destination: { + bootstrapList: [ + { site: 'aws-s3', servers: ['s3.amazonaws.com:443'] }, + { site: 'remote-artesca', servers: ['artesca-remote.example.com:443'] }, + ], + }, + }, + }, + }); + assert.strictEqual(hosts.has('s3.amazonaws.com'), false); + assert.strictEqual(hosts.has('artesca-remote.example.com'), false); + }); + + it('lowercases hosts and strips port', () => { + const hosts = buildTrustedHosts({ + server: { host: 'Backbeat-API.SVC:8900' }, + }); + assert(hosts.has('backbeat-api.svc')); + assert.strictEqual(hosts.has('Backbeat-API.SVC:8900'), false); + }); + + it('every Config.js host key appears in TRUSTED_HOSTS', () => { + const cfg = { + extensions: { replication: { source: { s3: { host: 'rep-source' } } } }, + kafka: { hosts: 'k1:9092,k2:9092' }, + queuePopulator: { mongo: { host: 'mg-primary', replicaSetHosts: 'mg-a:27017,mg-b:27017' } }, + server: { host: 'admin-api' }, + redis: { host: 'rdis', sentinels: [{ host: 'snt', port: 1 }] }, + }; + const hosts = buildTrustedHosts(cfg); + + const expected = ['rep-source', 'k1', 'k2', 'mg-primary', 'mg-a', 'mg-b', + 'admin-api', 'rdis', 'snt']; + expected.forEach(h => { + assert(hosts.has(h), `expected TRUSTED_HOSTS to include ${h}`); + }); + }); +}); diff --git a/tests/unit/lib/tracing/healthPaths.spec.js b/tests/unit/lib/tracing/healthPaths.spec.js new file mode 100644 index 000000000..f6bf9db23 --- /dev/null +++ b/tests/unit/lib/tracing/healthPaths.spec.js @@ -0,0 +1,56 @@ +'use strict'; + +const assert = require('assert'); +const { isHealthPath, HEALTH_PATHS } = require('../../../../lib/tracing/healthPaths'); + +describe('healthPaths', () => { + describe('isHealthPath', () => { + it('returns false for undefined/null/non-string', () => { + assert.strictEqual(isHealthPath(undefined), false); + assert.strictEqual(isHealthPath(null), false); + assert.strictEqual(isHealthPath(123), false); + assert.strictEqual(isHealthPath(''), false); + }); + + it('returns true for /_/live and /_/ready', () => { + assert.strictEqual(isHealthPath('/_/live'), true); + assert.strictEqual(isHealthPath('/_/ready'), true); + }); + + it('returns true for /_/healthcheck and /_/metrics', () => { + assert.strictEqual(isHealthPath('/_/healthcheck'), true); + assert.strictEqual(isHealthPath('/_/metrics'), true); + }); + + it('returns true for plain /metrics (processor-pod Prom scrape)', () => { + assert.strictEqual(isHealthPath('/metrics'), true); + assert.strictEqual(isHealthPath('/metrics?name[]=up'), true); + }); + + it('returns true for /_/metrics sub-paths', () => { + assert.strictEqual(isHealthPath('/_/metrics/replication'), true); + assert.strictEqual(isHealthPath('/_/metrics/lifecycle/stats'), true); + }); + + it('returns true for the monitoring/metrics legacy alias', () => { + assert.strictEqual(isHealthPath('/_/monitoring/metrics'), true); + }); + + it('ignores query string', () => { + assert.strictEqual(isHealthPath('/_/live?check=deep'), true); + assert.strictEqual(isHealthPath('/_/metrics?format=prom'), true); + assert.strictEqual(isHealthPath('/metrics?format=prom'), true); + }); + + it('returns false for business endpoints', () => { + assert.strictEqual(isHealthPath('/bucket/key'), false); + assert.strictEqual(isHealthPath('/_/replication/resume'), false); + assert.strictEqual(isHealthPath('/'), false); + }); + + it('exposes HEALTH_PATHS as a Set', () => { + assert(HEALTH_PATHS instanceof Set); + assert(HEALTH_PATHS.has('/_/live')); + }); + }); +}); diff --git a/tests/unit/lib/tracing/kafkaTraceContext.spec.js b/tests/unit/lib/tracing/kafkaTraceContext.spec.js new file mode 100644 index 000000000..0b25df64c --- /dev/null +++ b/tests/unit/lib/tracing/kafkaTraceContext.spec.js @@ -0,0 +1,125 @@ +'use strict'; + +const assert = require('assert'); +const { context } = require('@opentelemetry/api'); + +const { + traceHeadersFromEntry, + traceHeadersFromCurrentContext, + contextFromKafkaHeaders, + startSpanFromKafkaEntry, + startLinkedSpanFromKafkaEntry, +} = require('../../../../lib/tracing/kafkaTraceContext'); + +describe('kafkaTraceContext', () => { + describe('traceHeadersFromEntry', () => { + it('should return undefined when entryValue is null', () => { + assert.strictEqual(traceHeadersFromEntry(null), undefined); + }); + + it('should return undefined when entryValue is undefined', () => { + assert.strictEqual(traceHeadersFromEntry(undefined), undefined); + }); + + it('should return undefined when traceContext is missing', () => { + assert.strictEqual(traceHeadersFromEntry({ foo: 'bar' }), undefined); + }); + + it('should return undefined when traceparent is missing', () => { + assert.strictEqual( + traceHeadersFromEntry({ traceContext: {} }), + undefined + ); + }); + + it('should return headers array with traceparent only', () => { + const tp = '00-abcdef1234567890abcdef1234567890-1234567890abcdef-01'; + const result = traceHeadersFromEntry({ + traceContext: { traceparent: tp }, + }); + assert.deepStrictEqual(result, [{ traceparent: tp }]); + }); + + it('should return headers array with traceparent and tracestate', () => { + const tp = '00-abcdef1234567890abcdef1234567890-1234567890abcdef-01'; + const ts = 'congo=t61rcWkgMzE'; + const result = traceHeadersFromEntry({ + traceContext: { traceparent: tp, tracestate: ts }, + }); + assert.deepStrictEqual(result, [ + { traceparent: tp }, + { tracestate: ts }, + ]); + }); + }); + + describe('contextFromKafkaHeaders', () => { + it('should return active context when headers are undefined', () => { + const result = contextFromKafkaHeaders(undefined); + assert.strictEqual(result, context.active()); + }); + + it('should return active context when headers are null', () => { + const result = contextFromKafkaHeaders(null); + assert.strictEqual(result, context.active()); + }); + + it('should return active context when no traceparent header', () => { + const headers = [ + { unrelated: Buffer.from('value') }, + ]; + const result = contextFromKafkaHeaders(headers); + assert.strictEqual(result, context.active()); + }); + + it('should call propagation.extract with correct carrier', () => { + const tp = '00-abcdef1234567890abcdef1234567890-1234567890abcdef-01'; + const headers = [ + { traceparent: Buffer.from(tp) }, + { tracestate: Buffer.from('congo=t61rcWkgMzE') }, + ]; + const result = contextFromKafkaHeaders(headers); + assert(result, 'should return a context object'); + }); + }); + + describe('startLinkedSpanFromKafkaEntry', () => { + it('returns a span with no headers (no link)', () => { + const entry = { topic: 'test-topic', partition: 0 }; + const { ctx, span } = startLinkedSpanFromKafkaEntry(entry, 'test-op'); + assert(ctx); + assert(span); + assert.strictEqual(typeof span.end, 'function'); + span.end(); + }); + + it('returns a span with traceparent header (creates link)', () => { + const tp = '00-abcdef1234567890abcdef1234567890-1234567890abcdef-01'; + const entry = { + topic: 'test-topic', + partition: 0, + headers: [ + { traceparent: Buffer.from(tp) }, + ], + }; + const { ctx, span } = startLinkedSpanFromKafkaEntry(entry, 'test-op'); + assert(ctx); + assert(span); + assert.strictEqual(typeof span.setAttribute, 'function'); + assert.strictEqual(typeof span.recordException, 'function'); + span.end(); + }); + }); + + describe('startSpanFromKafkaEntry (backward-compat alias)', () => { + it('is the same function as startLinkedSpanFromKafkaEntry', () => { + assert.strictEqual(startSpanFromKafkaEntry, startLinkedSpanFromKafkaEntry); + }); + }); + + describe('traceHeadersFromCurrentContext', () => { + it('returns undefined when no active span', () => { + assert.strictEqual(traceHeadersFromCurrentContext(), undefined); + }); + }); +}); diff --git a/tests/unit/notification/NotificationQueuePopulator.js b/tests/unit/notification/NotificationQueuePopulator.js index b38a16d67..188dd8583 100644 --- a/tests/unit/notification/NotificationQueuePopulator.js +++ b/tests/unit/notification/NotificationQueuePopulator.js @@ -639,6 +639,69 @@ describe('NotificationQueuePopulator ::', () => { }); }); }); + + describe('trace context propagation ::', () => { + const tp = '00-abcdef1234567890abcdef1234567890-1234567890abcdef-01'; + const ts = 'congo=t61rcWkgMzE'; + + it('should attach traceparent header when oplog value has traceContext', async () => { + sinon.stub(bnConfigManager, 'getConfig').returns(config); + const publishStub = sinon.stub(notificationQueuePopulator, 'publish'); + await notificationQueuePopulator._processObjectEntry( + 'example-bucket', + 'example-key', + { + 'originOp': 's3:ObjectCreated:Put', + 'dataStoreName': 'metastore', + 'content-length': '100', + 'last-modified': '0000', + 'md-model-version': '1', + 'traceContext': { traceparent: tp, tracestate: ts }, + }); + assert(publishStub.calledOnce); + // publish(topic, key, message, optEntriesToPublish, headers) + const headers = publishStub.getCall(0).args.at(4); + assert.deepStrictEqual(headers, [ + { traceparent: tp }, + { tracestate: ts }, + ]); + }); + + it('should attach traceparent-only header when tracestate is missing', async () => { + sinon.stub(bnConfigManager, 'getConfig').returns(config); + const publishStub = sinon.stub(notificationQueuePopulator, 'publish'); + await notificationQueuePopulator._processObjectEntry( + 'example-bucket', + 'example-key', + { + 'originOp': 's3:ObjectCreated:Put', + 'dataStoreName': 'metastore', + 'content-length': '100', + 'last-modified': '0000', + 'md-model-version': '1', + 'traceContext': { traceparent: tp }, + }); + const headers = publishStub.getCall(0).args.at(4); + assert.deepStrictEqual(headers, [{ traceparent: tp }]); + }); + + it('should pass undefined headers when oplog value has no traceContext', async () => { + sinon.stub(bnConfigManager, 'getConfig').returns(config); + const publishStub = sinon.stub(notificationQueuePopulator, 'publish'); + await notificationQueuePopulator._processObjectEntry( + 'example-bucket', + 'example-key', + { + 'originOp': 's3:ObjectCreated:Put', + 'dataStoreName': 'metastore', + 'content-length': '100', + 'last-modified': '0000', + 'md-model-version': '1', + }); + const headers = publishStub.getCall(0).args.at(4); + assert.strictEqual(headers, undefined); + }); + }); }); diff --git a/yarn.lock b/yarn.lock index a4e5d2d8f..53fb8b31f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1959,6 +1959,24 @@ resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== +"@grpc/grpc-js@^1.7.1": + version "1.14.3" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.14.3.tgz#4c9b817a900ae4020ddc28515ae4b52c78cfb8da" + integrity sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA== + dependencies: + "@grpc/proto-loader" "^0.8.0" + "@js-sdsl/ordered-map" "^4.4.2" + +"@grpc/proto-loader@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.8.0.tgz#b6c324dd909c458a0e4aa9bfd3d69cf78a4b9bd8" + integrity sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ== + dependencies: + lodash.camelcase "^4.3.0" + long "^5.0.0" + protobufjs "^7.5.3" + yargs "^17.7.2" + "@hapi/address@2.x.x": version "2.1.4" resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" @@ -2174,6 +2192,11 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@js-sdsl/ordered-map@^4.4.2": + version "4.4.2" + resolved "https://registry.yarnpkg.com/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz#9299f82874bab9e4c7f9c48d865becbfe8d6907c" + integrity sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw== + "@js-sdsl/ordered-set@^4.4.2": version "4.4.2" resolved "https://registry.yarnpkg.com/@js-sdsl/ordered-set/-/ordered-set-4.4.2.tgz#ab857eb63cf358b5a0f74fdd458b4601423779b7" @@ -2225,16 +2248,1042 @@ mkdirp "^1.0.4" rimraf "^3.0.2" +"@opentelemetry/api-logs@0.53.0", "@opentelemetry/api-logs@^0.53.0": + version "0.53.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz#c478cbd8120ec2547b64edfa03a552cfe42170be" + integrity sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw== + dependencies: + "@opentelemetry/api" "^1.0.0" + +"@opentelemetry/api-logs@0.55.0": + version "0.55.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.55.0.tgz#5cd7461820d864600250deb3803c32367a6bb2d2" + integrity sha512-3cpa+qI45VHYcA5c0bHM6VHo9gicv3p5mlLHNG3rLyjQU8b7e0st1rWtrUn3JbZ3DwwCfhKop4eQ9UuYlC6Pkg== + dependencies: + "@opentelemetry/api" "^1.3.0" + +"@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.3.0", "@opentelemetry/api@^1.9.0": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.1.tgz#c1b0346de336ba55af2d5a7970882037baedec05" + integrity sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q== + "@opentelemetry/api@^1.4.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== +"@opentelemetry/auto-instrumentations-node@^0.50.2": + version "0.50.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/auto-instrumentations-node/-/auto-instrumentations-node-0.50.2.tgz#fe94c131bee6de0b5c822d2bf1fff857b0f1b8c0" + integrity sha512-l1JWvNp5gt5Fze8X68+zjzBqiviB5B8zeepsbfpFgdDxoCVjmixg8gcMt/AmqI9Qntw2qaeXah84V14fCbVuMg== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/instrumentation-amqplib" "^0.42.0" + "@opentelemetry/instrumentation-aws-lambda" "^0.45.0" + "@opentelemetry/instrumentation-aws-sdk" "^0.44.0" + "@opentelemetry/instrumentation-bunyan" "^0.41.0" + "@opentelemetry/instrumentation-cassandra-driver" "^0.41.0" + "@opentelemetry/instrumentation-connect" "^0.39.0" + "@opentelemetry/instrumentation-cucumber" "^0.9.0" + "@opentelemetry/instrumentation-dataloader" "^0.12.0" + "@opentelemetry/instrumentation-dns" "^0.39.0" + "@opentelemetry/instrumentation-express" "^0.43.0" + "@opentelemetry/instrumentation-fastify" "^0.40.0" + "@opentelemetry/instrumentation-fs" "^0.15.0" + "@opentelemetry/instrumentation-generic-pool" "^0.39.0" + "@opentelemetry/instrumentation-graphql" "^0.43.0" + "@opentelemetry/instrumentation-grpc" "^0.53.0" + "@opentelemetry/instrumentation-hapi" "^0.41.0" + "@opentelemetry/instrumentation-http" "^0.53.0" + "@opentelemetry/instrumentation-ioredis" "^0.43.0" + "@opentelemetry/instrumentation-kafkajs" "^0.3.0" + "@opentelemetry/instrumentation-knex" "^0.40.0" + "@opentelemetry/instrumentation-koa" "^0.43.0" + "@opentelemetry/instrumentation-lru-memoizer" "^0.40.0" + "@opentelemetry/instrumentation-memcached" "^0.39.0" + "@opentelemetry/instrumentation-mongodb" "^0.47.0" + "@opentelemetry/instrumentation-mongoose" "^0.42.0" + "@opentelemetry/instrumentation-mysql" "^0.41.0" + "@opentelemetry/instrumentation-mysql2" "^0.41.0" + "@opentelemetry/instrumentation-nestjs-core" "^0.40.0" + "@opentelemetry/instrumentation-net" "^0.39.0" + "@opentelemetry/instrumentation-pg" "^0.45.1" + "@opentelemetry/instrumentation-pino" "^0.42.0" + "@opentelemetry/instrumentation-redis" "^0.42.0" + "@opentelemetry/instrumentation-redis-4" "^0.42.1" + "@opentelemetry/instrumentation-restify" "^0.41.0" + "@opentelemetry/instrumentation-router" "^0.40.0" + "@opentelemetry/instrumentation-socket.io" "^0.42.0" + "@opentelemetry/instrumentation-tedious" "^0.14.0" + "@opentelemetry/instrumentation-undici" "^0.6.0" + "@opentelemetry/instrumentation-winston" "^0.40.0" + "@opentelemetry/resource-detector-alibaba-cloud" "^0.29.3" + "@opentelemetry/resource-detector-aws" "^1.6.2" + "@opentelemetry/resource-detector-azure" "^0.2.11" + "@opentelemetry/resource-detector-container" "^0.4.3" + "@opentelemetry/resource-detector-gcp" "^0.29.12" + "@opentelemetry/resources" "^1.24.0" + "@opentelemetry/sdk-node" "^0.53.0" + +"@opentelemetry/context-async-hooks@1.26.0": + version "1.26.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-1.26.0.tgz#fa92f722cf685685334bba95f258d3ef9fce60f6" + integrity sha512-HedpXXYzzbaoutw6DFLWLDket2FwLkLpil4hGCZ1xYEIMTcivdfwEOISgdbLEWyG3HW52gTq2V9mOVJrONgiwg== + +"@opentelemetry/context-async-hooks@1.28.0": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-1.28.0.tgz#287afda2b75cb226f70d433244c3ef6f6dd8abdd" + integrity sha512-igcl4Ve+F1N2063PJUkesk/GkYyuGIWinYkSyAFTnIj3gzrOgvOA4k747XNdL47HRRL1w/qh7UW8NDuxOLvKFA== + +"@opentelemetry/context-async-hooks@^1.28.0": + version "1.30.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.1.tgz#4f76280691a742597fd0bf682982126857622948" + integrity sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA== + +"@opentelemetry/core@1.26.0": + version "1.26.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.26.0.tgz#7d84265aaa850ed0ca5813f97d831155be42b328" + integrity sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ== + dependencies: + "@opentelemetry/semantic-conventions" "1.27.0" + +"@opentelemetry/core@1.28.0": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.28.0.tgz#e97290a3e36c59480ffb2287fe2713c66749274c" + integrity sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw== + dependencies: + "@opentelemetry/semantic-conventions" "1.27.0" + +"@opentelemetry/core@1.30.1", "@opentelemetry/core@^1.0.0", "@opentelemetry/core@^1.1.0", "@opentelemetry/core@^1.25.0", "@opentelemetry/core@^1.25.1", "@opentelemetry/core@^1.26.0", "@opentelemetry/core@^1.8.0": + version "1.30.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.30.1.tgz#a0b468bb396358df801881709ea38299fc30ab27" + integrity sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ== + dependencies: + "@opentelemetry/semantic-conventions" "1.28.0" + +"@opentelemetry/exporter-logs-otlp-grpc@0.53.0": + version "0.53.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-logs-otlp-grpc/-/exporter-logs-otlp-grpc-0.53.0.tgz#cc2514acbff2a41fa428c8b8e81ca386027890e2" + integrity sha512-x5ygAQgWAQOI+UOhyV3z9eW7QU2dCfnfOuIBiyYmC2AWr74f6x/3JBnP27IAcEx6aihpqBYWKnpoUTztkVPAZw== + dependencies: + "@grpc/grpc-js" "^1.7.1" + "@opentelemetry/core" "1.26.0" + "@opentelemetry/otlp-grpc-exporter-base" "0.53.0" + "@opentelemetry/otlp-transformer" "0.53.0" + "@opentelemetry/sdk-logs" "0.53.0" + +"@opentelemetry/exporter-logs-otlp-grpc@0.55.0": + version "0.55.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-logs-otlp-grpc/-/exporter-logs-otlp-grpc-0.55.0.tgz#192b41e6f1fd3db9ef834ddb9fa41993865467fe" + integrity sha512-ykqawCL0ILJWyCJlxCPSAlqQXZ6x2bQsxAVUu8S3z22XNqY5SMx0rl2d93XnvnrOwtcfm+sM9ZhbGh/i5AZ9xw== + dependencies: + "@grpc/grpc-js" "^1.7.1" + "@opentelemetry/core" "1.28.0" + "@opentelemetry/otlp-grpc-exporter-base" "0.55.0" + "@opentelemetry/otlp-transformer" "0.55.0" + "@opentelemetry/sdk-logs" "0.55.0" + +"@opentelemetry/exporter-logs-otlp-http@0.53.0": + version "0.53.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.53.0.tgz#1b4a152ea427ec4581532880fd0d620cc559cb11" + integrity sha512-cSRKgD/n8rb+Yd+Cif6EnHEL/VZg1o8lEcEwFji1lwene6BdH51Zh3feAD9p2TyVoBKrl6Q9Zm2WltSp2k9gWQ== + dependencies: + "@opentelemetry/api-logs" "0.53.0" + "@opentelemetry/core" "1.26.0" + "@opentelemetry/otlp-exporter-base" "0.53.0" + "@opentelemetry/otlp-transformer" "0.53.0" + "@opentelemetry/sdk-logs" "0.53.0" + +"@opentelemetry/exporter-logs-otlp-http@0.55.0": + version "0.55.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.55.0.tgz#d9879d36cdf5a114fae662a7f83ef832bdee4cf0" + integrity sha512-fpFObWWq+DoLVrBU2dyMEaVkibByEkmKQZIUIjW/4j7lwIsTgW7aJCoD9RYFVB/tButcqov5Es2C0J2wTjM2tg== + dependencies: + "@opentelemetry/api-logs" "0.55.0" + "@opentelemetry/core" "1.28.0" + "@opentelemetry/otlp-exporter-base" "0.55.0" + "@opentelemetry/otlp-transformer" "0.55.0" + "@opentelemetry/sdk-logs" "0.55.0" + +"@opentelemetry/exporter-logs-otlp-proto@0.53.0": + version "0.53.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-logs-otlp-proto/-/exporter-logs-otlp-proto-0.53.0.tgz#5227efbd9ced9f8f5878dc3e60fc86707f42f5f5" + integrity sha512-jhEcVL1deeWNmTUP05UZMriZPSWUBcfg94ng7JuBb1q2NExgnADQFl1VQQ+xo62/JepK+MxQe4xAwlsDQFbISA== + dependencies: + "@opentelemetry/api-logs" "0.53.0" + "@opentelemetry/core" "1.26.0" + "@opentelemetry/otlp-exporter-base" "0.53.0" + "@opentelemetry/otlp-transformer" "0.53.0" + "@opentelemetry/resources" "1.26.0" + "@opentelemetry/sdk-logs" "0.53.0" + "@opentelemetry/sdk-trace-base" "1.26.0" + +"@opentelemetry/exporter-logs-otlp-proto@0.55.0": + version "0.55.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-logs-otlp-proto/-/exporter-logs-otlp-proto-0.55.0.tgz#d49202382b8bff7d4ae7f471c75ab30a751ca38a" + integrity sha512-vjE+DxUr+cUpxikdKCPiLZM5Wx7g1bywjCG76TQocvsA7Tmbb9p0t1+8gPlu9AGH7VEzPwDxxpN4p1ajpOurzQ== + dependencies: + "@opentelemetry/api-logs" "0.55.0" + "@opentelemetry/core" "1.28.0" + "@opentelemetry/otlp-exporter-base" "0.55.0" + "@opentelemetry/otlp-transformer" "0.55.0" + "@opentelemetry/resources" "1.28.0" + "@opentelemetry/sdk-logs" "0.55.0" + "@opentelemetry/sdk-trace-base" "1.28.0" + +"@opentelemetry/exporter-trace-otlp-grpc@0.53.0": + version "0.53.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.53.0.tgz#716429f58e71e101fc1fa79b3634083faf7f76da" + integrity sha512-m6KSh6OBDwfDjpzPVbuJbMgMbkoZfpxYH2r262KckgX9cMYvooWXEKzlJYsNDC6ADr28A1rtRoUVRwNfIN4tUg== + dependencies: + "@grpc/grpc-js" "^1.7.1" + "@opentelemetry/core" "1.26.0" + "@opentelemetry/otlp-grpc-exporter-base" "0.53.0" + "@opentelemetry/otlp-transformer" "0.53.0" + "@opentelemetry/resources" "1.26.0" + "@opentelemetry/sdk-trace-base" "1.26.0" + +"@opentelemetry/exporter-trace-otlp-grpc@0.55.0": + version "0.55.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.55.0.tgz#c1b142bae7144eb2be45332de60a2f48a782ed06" + integrity sha512-ohIkCLn2Wc3vhhFuf1bH8kOXHMEdcWiD847x7f3Qfygc+CGiatGLzQYscTcEYsWGMV22gVwB/kVcNcx5a3o8gA== + dependencies: + "@grpc/grpc-js" "^1.7.1" + "@opentelemetry/core" "1.28.0" + "@opentelemetry/otlp-grpc-exporter-base" "0.55.0" + "@opentelemetry/otlp-transformer" "0.55.0" + "@opentelemetry/resources" "1.28.0" + "@opentelemetry/sdk-trace-base" "1.28.0" + +"@opentelemetry/exporter-trace-otlp-http@0.53.0": + version "0.53.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.53.0.tgz#48e46c4573a35d31c14e6bc44635923e32970b9a" + integrity sha512-m7F5ZTq+V9mKGWYpX8EnZ7NjoqAU7VemQ1E2HAG+W/u0wpY1x0OmbxAXfGKFHCspdJk8UKlwPGrpcB8nay3P8A== + dependencies: + "@opentelemetry/core" "1.26.0" + "@opentelemetry/otlp-exporter-base" "0.53.0" + "@opentelemetry/otlp-transformer" "0.53.0" + "@opentelemetry/resources" "1.26.0" + "@opentelemetry/sdk-trace-base" "1.26.0" + +"@opentelemetry/exporter-trace-otlp-http@0.55.0", "@opentelemetry/exporter-trace-otlp-http@^0.55.0": + version "0.55.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.55.0.tgz#275e458aa3bd33c52d77f4357706bcfa53d27f28" + integrity sha512-lMiNic63EVHpW+eChmLD2CieDmwQBFi72+LFbh8+5hY0ShrDGrsGP/zuT5MRh7M/vM/UZYO/2A/FYd7CMQGR7A== + dependencies: + "@opentelemetry/core" "1.28.0" + "@opentelemetry/otlp-exporter-base" "0.55.0" + "@opentelemetry/otlp-transformer" "0.55.0" + "@opentelemetry/resources" "1.28.0" + "@opentelemetry/sdk-trace-base" "1.28.0" + +"@opentelemetry/exporter-trace-otlp-proto@0.53.0": + version "0.53.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.53.0.tgz#a5cf9ddd02f71c1cff7f425f2c138f056cfb3683" + integrity sha512-T/bdXslwRKj23S96qbvGtaYOdfyew3TjPEKOk5mHjkCmkVl1O9C/YMdejwSsdLdOq2YW30KjR9kVi0YMxZushQ== + dependencies: + "@opentelemetry/core" "1.26.0" + "@opentelemetry/otlp-exporter-base" "0.53.0" + "@opentelemetry/otlp-transformer" "0.53.0" + "@opentelemetry/resources" "1.26.0" + "@opentelemetry/sdk-trace-base" "1.26.0" + +"@opentelemetry/exporter-trace-otlp-proto@0.55.0": + version "0.55.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.55.0.tgz#8ef67c30258faa91cdcc4f5289970eb55d6481bb" + integrity sha512-qxiJFP+bBZW3+goHCGkE1ZdW9gJU0fR7eQ6OP+Rz5oGtEBbq4nkGodhb7C9FJlEFlE2siPtCxoeupV0gtYynag== + dependencies: + "@opentelemetry/core" "1.28.0" + "@opentelemetry/otlp-exporter-base" "0.55.0" + "@opentelemetry/otlp-transformer" "0.55.0" + "@opentelemetry/resources" "1.28.0" + "@opentelemetry/sdk-trace-base" "1.28.0" + +"@opentelemetry/exporter-zipkin@1.26.0": + version "1.26.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.26.0.tgz#7f7aa5f72f2048ff1316e006b14cce4182b408c3" + integrity sha512-PW5R34n3SJHO4t0UetyHKiXL6LixIqWN6lWncg3eRXhKuT30x+b7m5sDJS0kEWRfHeS+kG7uCw2vBzmB2lk3Dw== + dependencies: + "@opentelemetry/core" "1.26.0" + "@opentelemetry/resources" "1.26.0" + "@opentelemetry/sdk-trace-base" "1.26.0" + "@opentelemetry/semantic-conventions" "1.27.0" + +"@opentelemetry/exporter-zipkin@1.28.0": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.28.0.tgz#6e5ca7f43f79d0e3240ca7029f8dbc43af64c1b7" + integrity sha512-AMwr3eGXaPEH7gk8yhcUcen31VXy1yU5VJETu0pCfGpggGCYmhm0FKgYBpL5/vlIgQJWU/sW2vIjCL7aSilpKg== + dependencies: + "@opentelemetry/core" "1.28.0" + "@opentelemetry/resources" "1.28.0" + "@opentelemetry/sdk-trace-base" "1.28.0" + "@opentelemetry/semantic-conventions" "1.27.0" + +"@opentelemetry/instrumentation-amqplib@^0.42.0": + version "0.42.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.42.0.tgz#b3cab5a7207736a30d769962eed3af3838f986c4" + integrity sha512-fiuU6OKsqHJiydHWgTRQ7MnIrJ2lEqsdgFtNIH4LbAUJl/5XmrIeoDzDnox+hfkgWK65jsleFuQDtYb5hW1koQ== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-aws-lambda@^0.45.0": + version "0.45.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-aws-lambda/-/instrumentation-aws-lambda-0.45.0.tgz#26d8c014c6fba662b748eb7c7443386f07db6f1f" + integrity sha512-22ZnmYftKjFoiqC1k3tu2AVKiXSZv+ohuHWk4V4MdJpPuNkadY624aDkv5BmwDeavDxVFgqE9nGgDM9s3Q94mg== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/propagator-aws-xray" "^1.3.1" + "@opentelemetry/resources" "^1.8.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + "@types/aws-lambda" "8.10.143" + +"@opentelemetry/instrumentation-aws-sdk@^0.44.0": + version "0.44.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-aws-sdk/-/instrumentation-aws-sdk-0.44.0.tgz#f1a2d8c186d37fae42954921bbdcc3555aac331c" + integrity sha512-HIWFg4TDQsayceiikOnruMmyQ0SZYW6WiR+wknWwWVLHC3lHTCpAnqzp5V42ckArOdlwHZu2Jvq2GMSM4Myx3w== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/propagation-utils" "^0.30.11" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-bunyan@^0.41.0": + version "0.41.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-bunyan/-/instrumentation-bunyan-0.41.0.tgz#102d0e93610f9174105a9a59fc8d47d86b684b8d" + integrity sha512-NoQS+gcwQ7pzb2PZFyra6bAxDAVXBMmpKxBblEuXJWirGrAksQllg9XTdmqhrwT/KxUYrbVca/lMams7e51ysg== + dependencies: + "@opentelemetry/api-logs" "^0.53.0" + "@opentelemetry/instrumentation" "^0.53.0" + "@types/bunyan" "1.8.9" + +"@opentelemetry/instrumentation-cassandra-driver@^0.41.0": + version "0.41.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-cassandra-driver/-/instrumentation-cassandra-driver-0.41.0.tgz#4776c54b68ffbe8f86f9348fbe4953e04c87820a" + integrity sha512-hvTNcC8qjCQEHZTLAlTmDptjsEGqCKpN+90hHH8Nn/GwilGr5TMSwGrlfstdJuZWyw8HAnRUed6bcjvmHHk2Xw== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-connect@^0.39.0": + version "0.39.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.39.0.tgz#32bdbaac464cba061c95df6c850ee81efdd86f8b" + integrity sha512-pGBiKevLq7NNglMgqzmeKczF4XQMTOUOTkK8afRHMZMnrK3fcETyTH7lVaSozwiOM3Ws+SuEmXZT7DYrrhxGlg== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + "@types/connect" "3.4.36" + +"@opentelemetry/instrumentation-cucumber@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-cucumber/-/instrumentation-cucumber-0.9.0.tgz#4ff2415c63eab8bd053424ab9b782ced86bc8a7d" + integrity sha512-4PQNFnIqnA2WM3ZHpr0xhZpHSqJ5xJ6ppTIzZC7wPqe+ZBpj41vG8B6ieqiPfq+im4QdqbYnzLb3rj48GDEN9g== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-dataloader@^0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.12.0.tgz#de03a3948dec4f15fed80aa424d6bd5d6a8d10c7" + integrity sha512-pnPxatoFE0OXIZDQhL2okF//dmbiWFzcSc8pUg9TqofCLYZySSxDCgQc69CJBo5JnI3Gz1KP+mOjS4WAeRIH4g== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + +"@opentelemetry/instrumentation-dns@^0.39.0": + version "0.39.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-dns/-/instrumentation-dns-0.39.0.tgz#4c572041a6a0877aacbb743131158899a3d636e0" + integrity sha512-+iPzvXqVdJa67QBuz2tuP0UI3LS1/cMMo6dS7360DDtOQX+sQzkiN+mo3Omn4T6ZRhkTDw6c7uwsHBcmL31+1g== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + semver "^7.5.4" + +"@opentelemetry/instrumentation-express@^0.43.0": + version "0.43.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-express/-/instrumentation-express-0.43.0.tgz#35ff5bcf40b816d9a9159d5f7814ed7e5d83f69b" + integrity sha512-bxTIlzn9qPXJgrhz8/Do5Q3jIlqfpoJrSUtVGqH+90eM1v2PkPHc+SdE+zSqe4q9Y1UQJosmZ4N4bm7Zj/++MA== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-fastify@^0.40.0": + version "0.40.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.40.0.tgz#0c57608ac202337d56b53338f1fc9369d224306b" + integrity sha512-74qj4nG3zPtU7g2x4sm2T4R3/pBMyrYstTsqSZwdlhQk1SD4l8OSY9sPRX1qkhfxOuW3U4KZQAV/Cymb3fB6hg== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-fs@^0.15.0": + version "0.15.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.15.0.tgz#41658507860f39fee5209bca961cea8d24ca2a83" + integrity sha512-JWVKdNLpu1skqZQA//jKOcKdJC66TWKqa2FUFq70rKohvaSq47pmXlnabNO+B/BvLfmidfiaN35XakT5RyMl2Q== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.53.0" + +"@opentelemetry/instrumentation-generic-pool@^0.39.0": + version "0.39.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.39.0.tgz#2b9af16ad82d5cbe67125c0125753cecd162a728" + integrity sha512-y4v8Y+tSfRB3NNBvHjbjrn7rX/7sdARG7FuK6zR8PGb28CTa0kHpEGCJqvL9L8xkTNvTXo+lM36ajFGUaK1aNw== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + +"@opentelemetry/instrumentation-graphql@^0.43.0": + version "0.43.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.43.0.tgz#71bb94ea775c70dbd388c739b397ec1418f3f170" + integrity sha512-aI3YMmC2McGd8KW5du1a2gBA0iOMOGLqg4s9YjzwbjFwjlmMNFSK1P3AIg374GWg823RPUGfVTIgZ/juk9CVOA== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + +"@opentelemetry/instrumentation-grpc@^0.53.0": + version "0.53.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.53.0.tgz#1b493bee7ca8d3d9b8b1a870eb391eeb9bb74900" + integrity sha512-Ss338T92yE1UCgr9zXSY3cPuaAy27uQw+wAC5IwsQKCXL5wwkiOgkd+2Ngksa9EGsgUEMwGeHi76bDdHFJ5Rrw== + dependencies: + "@opentelemetry/instrumentation" "0.53.0" + "@opentelemetry/semantic-conventions" "1.27.0" + +"@opentelemetry/instrumentation-hapi@^0.41.0": + version "0.41.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.41.0.tgz#de8711907256d8fae1b5faf71fc825cef4a7ddbb" + integrity sha512-jKDrxPNXDByPlYcMdZjNPYCvw0SQJjN+B1A+QH+sx+sAHsKSAf9hwFiJSrI6C4XdOls43V/f/fkp9ITkHhKFbQ== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-http@^0.53.0": + version "0.53.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-http/-/instrumentation-http-0.53.0.tgz#0d806adf1b3aba036bc46e16162e3c0dbb8a6b60" + integrity sha512-H74ErMeDuZfj7KgYCTOFGWF5W9AfaPnqLQQxeFq85+D29wwV2yqHbz2IKLYpkOh7EI6QwDEl7rZCIxjJLyc/CQ== + dependencies: + "@opentelemetry/core" "1.26.0" + "@opentelemetry/instrumentation" "0.53.0" + "@opentelemetry/semantic-conventions" "1.27.0" + semver "^7.5.2" + +"@opentelemetry/instrumentation-http@^0.55.0": + version "0.55.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-http/-/instrumentation-http-0.55.0.tgz#954a1f52ae5fcf8f2ad355c2dfc2d7c7b68478d7" + integrity sha512-AO27XSjkgNicfy/YBthskFAwx9VfaO7tChrLaTONTfOWv14GlB3Rs2eTYpywZIHWsW2cR5hvVkcDte4GV0stoA== + dependencies: + "@opentelemetry/core" "1.28.0" + "@opentelemetry/instrumentation" "0.55.0" + "@opentelemetry/semantic-conventions" "1.27.0" + forwarded-parse "2.1.2" + semver "^7.5.2" + +"@opentelemetry/instrumentation-ioredis@^0.43.0": + version "0.43.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.43.0.tgz#dbadabaeefc4cb47c406f878444f1bcac774fa89" + integrity sha512-i3Dke/LdhZbiUAEImmRG3i7Dimm/BD7t8pDDzwepSvIQ6s2X6FPia7561gw+64w+nx0+G9X14D7rEfaMEmmjig== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/redis-common" "^0.36.2" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-kafkajs@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.3.0.tgz#6687bce4dac8b90ef8ccbf1b662d5d1e95a34414" + integrity sha512-UnkZueYK1ise8FXQeKlpBd7YYUtC7mM8J0wzUSccEfc/G8UqHQqAzIyYCUOUPUKp8GsjLnWOOK/3hJc4owb7Jg== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-knex@^0.40.0": + version "0.40.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-knex/-/instrumentation-knex-0.40.0.tgz#6c667eb5e18cda68f348ab6b8f88f0f8843fcf98" + integrity sha512-6jka2jfX8+fqjEbCn6hKWHVWe++mHrIkLQtaJqUkBt3ZBs2xn1+y0khxiDS0v/mNb0bIKDJWwtpKFfsQDM1Geg== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-koa@^0.43.0": + version "0.43.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.43.0.tgz#963fd192a1b5f6cbae5dabf4ec82e3105cbb23b1" + integrity sha512-lDAhSnmoTIN6ELKmLJBplXzT/Jqs5jGZehuG22EdSMaTwgjMpxMDI1YtlKEhiWPWkrz5LUsd0aOO0ZRc9vn3AQ== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-lru-memoizer@^0.40.0": + version "0.40.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.40.0.tgz#dc60d7fdfd2a0c681cb23e7ed4f314d1506ccdc0" + integrity sha512-21xRwZsEdMPnROu/QsaOIODmzw59IYpGFmuC4aFWvMj6stA8+Ei1tX67nkarJttlNjoM94um0N4X26AD7ff54A== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + +"@opentelemetry/instrumentation-memcached@^0.39.0": + version "0.39.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-memcached/-/instrumentation-memcached-0.39.0.tgz#645b61af927097a7195f48da8e5bcc63bd8f1520" + integrity sha512-WfwvKAZ9I1qILRP5EUd88HQjwAAL+trXpCpozjBi4U6a0A07gB3fZ5PFAxbXemSjF5tHk9KVoROnqHvQ+zzFSQ== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + "@types/memcached" "^2.2.6" + +"@opentelemetry/instrumentation-mongodb@^0.47.0": + version "0.47.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.47.0.tgz#f8107d878281433905e717f223fb4c0f10356a7b" + integrity sha512-yqyXRx2SulEURjgOQyJzhCECSh5i1uM49NUaq9TqLd6fA7g26OahyJfsr9NE38HFqGRHpi4loyrnfYGdrsoVjQ== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/sdk-metrics" "^1.9.1" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-mongoose@^0.42.0": + version "0.42.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.42.0.tgz#375afd21adfcd897a8f521c1ffd2d91e6a428705" + integrity sha512-AnWv+RaR86uG3qNEMwt3plKX1ueRM7AspfszJYVkvkehiicC3bHQA6vWdb6Zvy5HAE14RyFbu9+2hUUjR2NSyg== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-mysql2@^0.41.0": + version "0.41.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.41.0.tgz#6377b6e2d2487fd88e1d79aa03658db6c8d51651" + integrity sha512-REQB0x+IzVTpoNgVmy5b+UnH1/mDByrneimP6sbDHkp1j8QOl1HyWOrBH/6YWR0nrbU3l825Em5PlybjT3232g== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + "@opentelemetry/sql-common" "^0.40.1" + +"@opentelemetry/instrumentation-mysql@^0.41.0": + version "0.41.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.41.0.tgz#2d50691ead5219774bd36d66c35d5b4681485dd7" + integrity sha512-jnvrV6BsQWyHS2qb2fkfbfSb1R/lmYwqEZITwufuRl37apTopswu9izc0b1CYRp/34tUG/4k/V39PND6eyiNvw== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + "@types/mysql" "2.15.26" + +"@opentelemetry/instrumentation-nestjs-core@^0.40.0": + version "0.40.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.40.0.tgz#2c0e6405b56caaec32747d55c57ff9a034668ea8" + integrity sha512-WF1hCUed07vKmf5BzEkL0wSPinqJgH7kGzOjjMAiTGacofNXjb/y4KQ8loj2sNsh5C/NN7s1zxQuCgbWbVTGKg== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-net@^0.39.0": + version "0.39.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-net/-/instrumentation-net-0.39.0.tgz#74db7e3de602a2ce09e989bf9602da974fdd60f2" + integrity sha512-rixHoODfI/Cx1B0mH1BpxCT0bRSxktuBDrt9IvpT2KSEutK5hR0RsRdgdz/GKk+BQ4u+IG6godgMSGwNQCueEA== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-pg@^0.45.1": + version "0.45.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.45.1.tgz#fb705e9f489c8d46036085618faf4c2887611ab9" + integrity sha512-GHUvPv7CQEK3RKHH3YAj6mjgJ3nZb6wRQS+t0yaRgKZzX2ggGsLN6OhRT04+IjqmMg9aIRUy1CzqwzgqAxjYbw== + dependencies: + "@opentelemetry/core" "^1.26.0" + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "1.27.0" + "@opentelemetry/sql-common" "^0.40.1" + "@types/pg" "8.6.1" + "@types/pg-pool" "2.0.6" + +"@opentelemetry/instrumentation-pino@^0.42.0": + version "0.42.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-pino/-/instrumentation-pino-0.42.0.tgz#1d91ad9ef48787380f778306bc54f6ab1811f474" + integrity sha512-SoX6FzucBfTuFNMZjdurJhcYWq2ve8/LkhmyVLUW31HpIB45RF1JNum0u4MkGisosDmXlK4njomcgUovShI+WA== + dependencies: + "@opentelemetry/api-logs" "^0.53.0" + "@opentelemetry/core" "^1.25.0" + "@opentelemetry/instrumentation" "^0.53.0" + +"@opentelemetry/instrumentation-redis-4@^0.42.1": + version "0.42.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.42.1.tgz#3adf3bee5b4da0837eb31c0f032105dcd2b055d1" + integrity sha512-xm17LJhDfQzQo4wkM/zFwh6wk3SNN/FBFGkscI9Kj4efrb/o5p8Z3yE6ldBPNdIZ6RAwg2p3DL7fvE3DuUDJWA== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/redis-common" "^0.36.2" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-redis@^0.42.0": + version "0.42.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-redis/-/instrumentation-redis-0.42.0.tgz#407ab207c5a555b47f46689b345edcabfee89675" + integrity sha512-jZBoqve0rEC51q0HuhjtZVq1DtUvJHzEJ3YKGvzGar2MU1J4Yt5+pQAQYh1W4jSoDyKeaI4hyeUdWM5N0c2lqA== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/redis-common" "^0.36.2" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-restify@^0.41.0": + version "0.41.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-restify/-/instrumentation-restify-0.41.0.tgz#071d3a21814e3ce1c311d074ea7c76bbe93bc869" + integrity sha512-gKEo+X/wVKUBuD2WDDlF7SlDNBHMWjSQoLxFCsGqeKgHR0MGtwMel8uaDGg9LJ83nKqYy+7Vl/cDFxjba6H+/w== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-router@^0.40.0": + version "0.40.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-router/-/instrumentation-router-0.40.0.tgz#9c60b02bbfa63298dc73d5c2fcf305b95660e4cb" + integrity sha512-bRo4RaclGFiKtmv/N1D0MuzO7DuxbeqMkMCbPPng6mDwzpHAMpHz/K/IxJmF+H1Hi/NYXVjCKvHGClageLe9eA== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-socket.io@^0.42.0": + version "0.42.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-socket.io/-/instrumentation-socket.io-0.42.0.tgz#eb2d0eed17c05259d9bded09f02ce9f05846d64c" + integrity sha512-xB5tdsBzuZyicQTO3hDzJIpHQ7V1BYJ6vWPWgl19gWZDBdjEGc3HOupjkd3BUJyDoDhbMEHGk2nNlkUU99EfkA== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/instrumentation-tedious@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.14.0.tgz#15cd9268125cfc0fd2d939602c098dbf3bb4cc2f" + integrity sha512-ofq7pPhSqvRDvD2FVx3RIWPj76wj4QubfrbqJtEx0A+fWoaYxJOCIQ92tYJh28elAmjMmgF/XaYuJuBhBv5J3A== + dependencies: + "@opentelemetry/instrumentation" "^0.53.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + "@types/tedious" "^4.0.14" + +"@opentelemetry/instrumentation-undici@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.6.0.tgz#9436ee155c8dcb0b760b66947c0e0f347688a5ef" + integrity sha512-ABJBhm5OdhGmbh0S/fOTE4N69IZ00CsHC5ijMYfzbw3E5NwLgpQk5xsljaECrJ8wz1SfXbO03FiSuu5AyRAkvQ== + dependencies: + "@opentelemetry/core" "^1.8.0" + "@opentelemetry/instrumentation" "^0.53.0" + +"@opentelemetry/instrumentation-winston@^0.40.0": + version "0.40.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-winston/-/instrumentation-winston-0.40.0.tgz#021194913c8dd337c097d204cee3fffb55dd0f5b" + integrity sha512-eMk2tKl86YJ8/yHvtDbyhrE35/R0InhO9zuHTflPx8T0+IvKVUhPV71MsJr32sImftqeOww92QHt4Jd+a5db4g== + dependencies: + "@opentelemetry/api-logs" "^0.53.0" + "@opentelemetry/instrumentation" "^0.53.0" + +"@opentelemetry/instrumentation@0.53.0", "@opentelemetry/instrumentation@^0.53.0": + version "0.53.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz#e6369e4015eb5112468a4d45d38dcada7dad892d" + integrity sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A== + dependencies: + "@opentelemetry/api-logs" "0.53.0" + "@types/shimmer" "^1.2.0" + import-in-the-middle "^1.8.1" + require-in-the-middle "^7.1.1" + semver "^7.5.2" + shimmer "^1.2.1" + +"@opentelemetry/instrumentation@0.55.0": + version "0.55.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.55.0.tgz#ecac8afd8706f6e99b3bb6951b9e07c4c81533f0" + integrity sha512-YDCMlaQRZkziLL3t6TONRgmmGxDx6MyQDXRD0dknkkgUZtOK5+8MWft1OXzmNu6XfBOdT12MKN5rz+jHUkafKQ== + dependencies: + "@opentelemetry/api-logs" "0.55.0" + "@types/shimmer" "^1.2.0" + import-in-the-middle "^1.8.1" + require-in-the-middle "^7.1.1" + semver "^7.5.2" + shimmer "^1.2.1" + +"@opentelemetry/otlp-exporter-base@0.53.0": + version "0.53.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.53.0.tgz#dfe51874b869c687c3cb463b70cddda7de282762" + integrity sha512-UCWPreGQEhD6FjBaeDuXhiMf6kkBODF0ZQzrk/tuQcaVDJ+dDQ/xhJp192H9yWnKxVpEjFrSSLnpqmX4VwX+eA== + dependencies: + "@opentelemetry/core" "1.26.0" + "@opentelemetry/otlp-transformer" "0.53.0" + +"@opentelemetry/otlp-exporter-base@0.55.0": + version "0.55.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.55.0.tgz#db17332497e4a97e4ca85d394fb91cbbcfd76d84" + integrity sha512-iHQI0Zzq3h1T6xUJTVFwmFl5Dt5y1es+fl4kM+k5T/3YvmVyeYkSiF+wHCg6oKrlUAJfk+t55kaAu3sYmt7ZYA== + dependencies: + "@opentelemetry/core" "1.28.0" + "@opentelemetry/otlp-transformer" "0.55.0" + +"@opentelemetry/otlp-grpc-exporter-base@0.53.0": + version "0.53.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.53.0.tgz#6c5ba207352e23d45dc75473e157ef27a1a7f4c8" + integrity sha512-F7RCN8VN+lzSa4fGjewit8Z5fEUpY/lmMVy5EWn2ZpbAabg3EE3sCLuTNfOiooNGnmvzimUPruoeqeko/5/TzQ== + dependencies: + "@grpc/grpc-js" "^1.7.1" + "@opentelemetry/core" "1.26.0" + "@opentelemetry/otlp-exporter-base" "0.53.0" + "@opentelemetry/otlp-transformer" "0.53.0" + +"@opentelemetry/otlp-grpc-exporter-base@0.55.0": + version "0.55.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.55.0.tgz#33644b96eeaa6a53431f45cd4b8180c887a6a8d7" + integrity sha512-gebbjl9FiSp52igWXuGjcWQKfB6IBwFGt5z1VFwTcVZVeEZevB6bJIqoFrhH4A02m7OUlpJ7l4EfRi3UtkNANQ== + dependencies: + "@grpc/grpc-js" "^1.7.1" + "@opentelemetry/core" "1.28.0" + "@opentelemetry/otlp-exporter-base" "0.55.0" + "@opentelemetry/otlp-transformer" "0.55.0" + +"@opentelemetry/otlp-transformer@0.53.0": + version "0.53.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-transformer/-/otlp-transformer-0.53.0.tgz#55d435db5ed5cf56b99c010827294dd4921c45c2" + integrity sha512-rM0sDA9HD8dluwuBxLetUmoqGJKSAbWenwD65KY9iZhUxdBHRLrIdrABfNDP7aiTjcgK8XFyTn5fhDz7N+W6DA== + dependencies: + "@opentelemetry/api-logs" "0.53.0" + "@opentelemetry/core" "1.26.0" + "@opentelemetry/resources" "1.26.0" + "@opentelemetry/sdk-logs" "0.53.0" + "@opentelemetry/sdk-metrics" "1.26.0" + "@opentelemetry/sdk-trace-base" "1.26.0" + protobufjs "^7.3.0" + +"@opentelemetry/otlp-transformer@0.55.0": + version "0.55.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-transformer/-/otlp-transformer-0.55.0.tgz#316b9325983e660cb4f18cb76fa84ce1c0cdad42" + integrity sha512-kVqEfxtp6mSN2Dhpy0REo1ghP4PYhC1kMHQJ2qVlO99Pc+aigELjZDfg7/YKmL71gR6wVGIeJfiql/eXL7sQPA== + dependencies: + "@opentelemetry/api-logs" "0.55.0" + "@opentelemetry/core" "1.28.0" + "@opentelemetry/resources" "1.28.0" + "@opentelemetry/sdk-logs" "0.55.0" + "@opentelemetry/sdk-metrics" "1.28.0" + "@opentelemetry/sdk-trace-base" "1.28.0" + protobufjs "^7.3.0" + +"@opentelemetry/propagation-utils@^0.30.11": + version "0.30.16" + resolved "https://registry.yarnpkg.com/@opentelemetry/propagation-utils/-/propagation-utils-0.30.16.tgz#6715d0225b618ea66cf34cc3800fa3452a8475fa" + integrity sha512-ZVQ3Z/PQ+2GQlrBfbMMMT0U7MzvYZLCPP800+ooyaBqm4hMvuQHfP028gB9/db0mwkmyEAMad9houukUVxhwcw== + +"@opentelemetry/propagator-aws-xray@^1.3.1": + version "1.26.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-aws-xray/-/propagator-aws-xray-1.26.2.tgz#39e0ded430e23e99c68c380a77f5052444f13f88" + integrity sha512-k43wxTjKYvwfce9L4eT8fFYy/ATmCfPHZPZsyT/6ABimf2KE1HafoOsIcxLOtmNSZt6dCvBIYCrXaOWta20xJg== + +"@opentelemetry/propagator-b3@1.26.0": + version "1.26.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-b3/-/propagator-b3-1.26.0.tgz#3ebbeff26a3fb81e8be011666ea6d07ff3e4fba7" + integrity sha512-vvVkQLQ/lGGyEy9GT8uFnI047pajSOVnZI2poJqVGD3nJ+B9sFGdlHNnQKophE3lHfnIH0pw2ubrCTjZCgIj+Q== + dependencies: + "@opentelemetry/core" "1.26.0" + +"@opentelemetry/propagator-b3@1.28.0": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-b3/-/propagator-b3-1.28.0.tgz#5e4c87c2097a18f88a5a4d19a57350f55517bb8a" + integrity sha512-Q7HVDIMwhN5RxL4bECMT4BdbyYSAKkC6U/RGn4NpO/cbqP6ZRg+BS7fPo/pGZi2w8AHfpIGQFXQmE8d2PC5xxQ== + dependencies: + "@opentelemetry/core" "1.28.0" + +"@opentelemetry/propagator-jaeger@1.26.0": + version "1.26.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.26.0.tgz#096ac03d754204921cd5a886c77b5c9bd4677cd7" + integrity sha512-DelFGkCdaxA1C/QA0Xilszfr0t4YbGd3DjxiCDPh34lfnFr+VkkrjV9S8ZTJvAzfdKERXhfOxIKBoGPJwoSz7Q== + dependencies: + "@opentelemetry/core" "1.26.0" + +"@opentelemetry/propagator-jaeger@1.28.0": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.28.0.tgz#427158c3d0f8ea77c205c7b9cde09091c7f25ae3" + integrity sha512-wKJ94+s8467CnIRgoSRh0yXm/te0QMOwTq9J01PfG/RzYZvlvN8aRisN2oZ9SznB45dDGnMj3BhUlchSA9cEKA== + dependencies: + "@opentelemetry/core" "1.28.0" + +"@opentelemetry/redis-common@^0.36.2": + version "0.36.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz#906ac8e4d804d4109f3ebd5c224ac988276fdc47" + integrity sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g== + +"@opentelemetry/resource-detector-alibaba-cloud@^0.29.3": + version "0.29.7" + resolved "https://registry.yarnpkg.com/@opentelemetry/resource-detector-alibaba-cloud/-/resource-detector-alibaba-cloud-0.29.7.tgz#ebeb5e3594495f9ed3e8e99e2a4b7a647efb03b0" + integrity sha512-PExUl/R+reSQI6Y/eNtgAsk6RHk1ElYSzOa8/FHfdc/nLmx9sqMasBEpLMkETkzDP7t27ORuXe4F9vwkV2uwwg== + dependencies: + "@opentelemetry/core" "^1.26.0" + "@opentelemetry/resources" "^1.10.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/resource-detector-aws@^1.6.2": + version "1.12.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/resource-detector-aws/-/resource-detector-aws-1.12.0.tgz#740edea01ce395a67885c02bbffcad74d3bad4e0" + integrity sha512-Cvi7ckOqiiuWlHBdA1IjS0ufr3sltex2Uws2RK6loVp4gzIJyOijsddAI6IZ5kiO8h/LgCWe8gxPmwkTKImd+Q== + dependencies: + "@opentelemetry/core" "^1.0.0" + "@opentelemetry/resources" "^1.10.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/resource-detector-azure@^0.2.11": + version "0.2.12" + resolved "https://registry.yarnpkg.com/@opentelemetry/resource-detector-azure/-/resource-detector-azure-0.2.12.tgz#090eaf81408af88d26354631c41df921deca3d7d" + integrity sha512-iIarQu6MiCjEEp8dOzmBvCSlRITPFTinFB2oNKAjU6xhx8d7eUcjNOKhBGQTvuCriZrxrEvDaEEY9NfrPQ6uYQ== + dependencies: + "@opentelemetry/core" "^1.25.1" + "@opentelemetry/resources" "^1.10.1" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/resource-detector-container@^0.4.3": + version "0.4.4" + resolved "https://registry.yarnpkg.com/@opentelemetry/resource-detector-container/-/resource-detector-container-0.4.4.tgz#56f13ae43b5e84c6edb9f5ce91291944e778913b" + integrity sha512-ZEN2mq7lIjQWJ8NTt1umtr6oT/Kb89856BOmESLSvgSHbIwOFYs7cSfSRH5bfiVw6dXTQAVbZA/wLgCHKrebJA== + dependencies: + "@opentelemetry/core" "^1.26.0" + "@opentelemetry/resources" "^1.10.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + +"@opentelemetry/resource-detector-gcp@^0.29.12": + version "0.29.13" + resolved "https://registry.yarnpkg.com/@opentelemetry/resource-detector-gcp/-/resource-detector-gcp-0.29.13.tgz#d506f2f05d7c790c59203afdfda40a90c22264b0" + integrity sha512-vdotx+l3Q+89PeyXMgKEGnZ/CwzwMtuMi/ddgD9/5tKZ08DfDGB2Npz9m2oXPHRCjc4Ro6ifMqFlRyzIvgOjhg== + dependencies: + "@opentelemetry/core" "^1.0.0" + "@opentelemetry/resources" "^1.10.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + gcp-metadata "^6.0.0" + +"@opentelemetry/resources@1.26.0": + version "1.26.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.26.0.tgz#da4c7366018bd8add1f3aa9c91c6ac59fd503cef" + integrity sha512-CPNYchBE7MBecCSVy0HKpUISEeJOniWqcHaAHpmasZ3j9o6V3AyBzhRc90jdmemq0HOxDr6ylhUbDhBqqPpeNw== + dependencies: + "@opentelemetry/core" "1.26.0" + "@opentelemetry/semantic-conventions" "1.27.0" + +"@opentelemetry/resources@1.28.0": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.28.0.tgz#c8c27ae7559c817f9d117f1bf96d76f893fb29f5" + integrity sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw== + dependencies: + "@opentelemetry/core" "1.28.0" + "@opentelemetry/semantic-conventions" "1.27.0" + +"@opentelemetry/resources@1.30.1", "@opentelemetry/resources@^1.10.0", "@opentelemetry/resources@^1.10.1", "@opentelemetry/resources@^1.24.0", "@opentelemetry/resources@^1.30.1", "@opentelemetry/resources@^1.8.0": + version "1.30.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.30.1.tgz#a4eae17ebd96947fdc7a64f931ca4b71e18ce964" + integrity sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA== + dependencies: + "@opentelemetry/core" "1.30.1" + "@opentelemetry/semantic-conventions" "1.28.0" + +"@opentelemetry/sdk-logs@0.53.0": + version "0.53.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-logs/-/sdk-logs-0.53.0.tgz#ec8b69278c4e683c13c58ed4285a47c27f5799c6" + integrity sha512-dhSisnEgIj/vJZXZV6f6KcTnyLDx/VuQ6l3ejuZpMpPlh9S1qMHiZU9NMmOkVkwwHkMy3G6mEBwdP23vUZVr4g== + dependencies: + "@opentelemetry/api-logs" "0.53.0" + "@opentelemetry/core" "1.26.0" + "@opentelemetry/resources" "1.26.0" + +"@opentelemetry/sdk-logs@0.55.0": + version "0.55.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-logs/-/sdk-logs-0.55.0.tgz#78844e502167723a258c75a6b4f3de3900c13ea3" + integrity sha512-TSx+Yg/d48uWW6HtjS1AD5x6WPfLhDWLl/WxC7I2fMevaiBuKCuraxTB8MDXieCNnBI24bw9ytyXrDCswFfWgA== + dependencies: + "@opentelemetry/api-logs" "0.55.0" + "@opentelemetry/core" "1.28.0" + "@opentelemetry/resources" "1.28.0" + +"@opentelemetry/sdk-metrics@1.26.0": + version "1.26.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.26.0.tgz#37bb0afb1d4447f50aab9cdd05db6f2d8b86103e" + integrity sha512-0SvDXmou/JjzSDOjUmetAAvcKQW6ZrvosU0rkbDGpXvvZN+pQF6JbK/Kd4hNdK4q/22yeruqvukXEJyySTzyTQ== + dependencies: + "@opentelemetry/core" "1.26.0" + "@opentelemetry/resources" "1.26.0" + +"@opentelemetry/sdk-metrics@1.28.0": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.28.0.tgz#257b5295bbe9de1ad31c5e8cb43a660c25911d20" + integrity sha512-43tqMK/0BcKTyOvm15/WQ3HLr0Vu/ucAl/D84NO7iSlv6O4eOprxSHa3sUtmYkaZWHqdDJV0AHVz/R6u4JALVQ== + dependencies: + "@opentelemetry/core" "1.28.0" + "@opentelemetry/resources" "1.28.0" + +"@opentelemetry/sdk-metrics@^1.9.1": + version "1.30.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.1.tgz#70e2bcd275b9df6e7e925e3fe53cfe71329b5fc8" + integrity sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog== + dependencies: + "@opentelemetry/core" "1.30.1" + "@opentelemetry/resources" "1.30.1" + +"@opentelemetry/sdk-node@^0.53.0": + version "0.53.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-node/-/sdk-node-0.53.0.tgz#0d25a142009792f9a4d7d69ab243a225c229643b" + integrity sha512-0hsxfq3BKy05xGktwG8YdGdxV978++x40EAKyKr1CaHZRh8uqVlXnclnl7OMi9xLMJEcXUw7lGhiRlArFcovyg== + dependencies: + "@opentelemetry/api-logs" "0.53.0" + "@opentelemetry/core" "1.26.0" + "@opentelemetry/exporter-logs-otlp-grpc" "0.53.0" + "@opentelemetry/exporter-logs-otlp-http" "0.53.0" + "@opentelemetry/exporter-logs-otlp-proto" "0.53.0" + "@opentelemetry/exporter-trace-otlp-grpc" "0.53.0" + "@opentelemetry/exporter-trace-otlp-http" "0.53.0" + "@opentelemetry/exporter-trace-otlp-proto" "0.53.0" + "@opentelemetry/exporter-zipkin" "1.26.0" + "@opentelemetry/instrumentation" "0.53.0" + "@opentelemetry/resources" "1.26.0" + "@opentelemetry/sdk-logs" "0.53.0" + "@opentelemetry/sdk-metrics" "1.26.0" + "@opentelemetry/sdk-trace-base" "1.26.0" + "@opentelemetry/sdk-trace-node" "1.26.0" + "@opentelemetry/semantic-conventions" "1.27.0" + +"@opentelemetry/sdk-node@^0.55.0": + version "0.55.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-node/-/sdk-node-0.55.0.tgz#a026846d3a0372211129397e073a4820191ddd8e" + integrity sha512-gSXQWV23+9vhbjsvAIeM0LxY3W8DTKI3MZlzFp61noIb1jSr46ET+qoUjHlfZ1Yymebv9KXWeZsqhft81HBXuQ== + dependencies: + "@opentelemetry/api-logs" "0.55.0" + "@opentelemetry/core" "1.28.0" + "@opentelemetry/exporter-logs-otlp-grpc" "0.55.0" + "@opentelemetry/exporter-logs-otlp-http" "0.55.0" + "@opentelemetry/exporter-logs-otlp-proto" "0.55.0" + "@opentelemetry/exporter-trace-otlp-grpc" "0.55.0" + "@opentelemetry/exporter-trace-otlp-http" "0.55.0" + "@opentelemetry/exporter-trace-otlp-proto" "0.55.0" + "@opentelemetry/exporter-zipkin" "1.28.0" + "@opentelemetry/instrumentation" "0.55.0" + "@opentelemetry/resources" "1.28.0" + "@opentelemetry/sdk-logs" "0.55.0" + "@opentelemetry/sdk-metrics" "1.28.0" + "@opentelemetry/sdk-trace-base" "1.28.0" + "@opentelemetry/sdk-trace-node" "1.28.0" + "@opentelemetry/semantic-conventions" "1.27.0" + +"@opentelemetry/sdk-trace-base@1.26.0": + version "1.26.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.26.0.tgz#0c913bc6d2cfafd901de330e4540952269ae579c" + integrity sha512-olWQldtvbK4v22ymrKLbIcBi9L2SpMO84sCPY54IVsJhP9fRsxJT194C/AVaAuJzLE30EdhhM1VmvVYR7az+cw== + dependencies: + "@opentelemetry/core" "1.26.0" + "@opentelemetry/resources" "1.26.0" + "@opentelemetry/semantic-conventions" "1.27.0" + +"@opentelemetry/sdk-trace-base@1.28.0": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.28.0.tgz#6195dc8cd78bd74394cf54c67c5cbd8d1528516c" + integrity sha512-ceUVWuCpIao7Y5xE02Xs3nQi0tOGmMea17ecBdwtCvdo9ekmO+ijc9RFDgfifMl7XCBf41zne/1POM3LqSTZDA== + dependencies: + "@opentelemetry/core" "1.28.0" + "@opentelemetry/resources" "1.28.0" + "@opentelemetry/semantic-conventions" "1.27.0" + +"@opentelemetry/sdk-trace-base@^1.28.0": + version "1.30.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz#41a42234096dc98e8f454d24551fc80b816feb34" + integrity sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg== + dependencies: + "@opentelemetry/core" "1.30.1" + "@opentelemetry/resources" "1.30.1" + "@opentelemetry/semantic-conventions" "1.28.0" + +"@opentelemetry/sdk-trace-node@1.26.0": + version "1.26.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.26.0.tgz#169ef4fc058e82a12460da18cedaf6e4615fc617" + integrity sha512-Fj5IVKrj0yeUwlewCRwzOVcr5avTuNnMHWf7GPc1t6WaT78J6CJyF3saZ/0RkZfdeNO8IcBl/bNcWMVZBMRW8Q== + dependencies: + "@opentelemetry/context-async-hooks" "1.26.0" + "@opentelemetry/core" "1.26.0" + "@opentelemetry/propagator-b3" "1.26.0" + "@opentelemetry/propagator-jaeger" "1.26.0" + "@opentelemetry/sdk-trace-base" "1.26.0" + semver "^7.5.2" + +"@opentelemetry/sdk-trace-node@1.28.0": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.28.0.tgz#e3384802e12c689bb7a84809a732d091a2fbda09" + integrity sha512-N0sYfYXvHpP0FNIyc+UfhLnLSTOuZLytV0qQVrDWIlABeD/DWJIGttS7nYeR14gQLXch0M1DW8zm3VeN6Opwtg== + dependencies: + "@opentelemetry/context-async-hooks" "1.28.0" + "@opentelemetry/core" "1.28.0" + "@opentelemetry/propagator-b3" "1.28.0" + "@opentelemetry/propagator-jaeger" "1.28.0" + "@opentelemetry/sdk-trace-base" "1.28.0" + semver "^7.5.2" + +"@opentelemetry/semantic-conventions@1.27.0": + version "1.27.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz#1a857dcc95a5ab30122e04417148211e6f945e6c" + integrity sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg== + +"@opentelemetry/semantic-conventions@1.28.0": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz#337fb2bca0453d0726696e745f50064411f646d6" + integrity sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA== + +"@opentelemetry/semantic-conventions@^1.27.0", "@opentelemetry/semantic-conventions@^1.36.0": + version "1.40.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.40.0.tgz#10b2944ca559386590683392022a897eefd011d3" + integrity sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw== + +"@opentelemetry/sql-common@^0.40.1": + version "0.40.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/sql-common/-/sql-common-0.40.1.tgz#93fbc48d8017449f5b3c3274f2268a08af2b83b6" + integrity sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg== + dependencies: + "@opentelemetry/core" "^1.1.0" + "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + "@rtsao/scc@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" @@ -3466,6 +4515,25 @@ resolved "https://registry.yarnpkg.com/@types/async/-/async-3.2.25.tgz#8439f7cde2627e34a15897eb80878835dbea2421" integrity sha512-O6Th/DI18XjrL9TX8LO9F/g26qAz5vynmQqlXt/qLGrskvzCKXKc5/tATz3G2N6lM8eOf3M8/StB14FncAmocg== +"@types/aws-lambda@8.10.143": + version "8.10.143" + resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.143.tgz#383693fbaadc6994a71d64a7c09e8c244fad8dff" + integrity sha512-u5vzlcR14ge/4pMTTMDQr3MF0wEe38B2F9o84uC4F43vN5DGTy63npRrB6jQhyt+C0lGv4ZfiRcRkqJoZuPnmg== + +"@types/bunyan@1.8.9": + version "1.8.9" + resolved "https://registry.yarnpkg.com/@types/bunyan/-/bunyan-1.8.9.tgz#22d4517f3217b7c8f5a69bbc8c9f6df79779dcb5" + integrity sha512-ZqS9JGpBxVOvsawzmVt30sP++gSQMTejCkIAQ3VdadOcRE8izTyW66hufvwLeH+YEGP6Js2AW7Gz+RMyvrEbmw== + dependencies: + "@types/node" "*" + +"@types/connect@3.4.36": + version "3.4.36" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.36.tgz#e511558c15a39cb29bd5357eebb57bd1459cd1ab" + integrity sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w== + dependencies: + "@types/node" "*" + "@types/cors@^2.8.12": version "2.8.19" resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.19.tgz#d93ea2673fd8c9f697367f5eeefc2bbfa94f0342" @@ -3505,6 +4573,20 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== +"@types/memcached@^2.2.6": + version "2.2.10" + resolved "https://registry.yarnpkg.com/@types/memcached/-/memcached-2.2.10.tgz#113f9e3a451d6b5e0a3822e06d9feb52e63e954a" + integrity sha512-AM9smvZN55Gzs2wRrqeMHVP7KE8KWgCJO/XL5yCly2xF6EKa4YlbpK+cLSAH4NG/Ah64HrlegmGqW8kYws7Vxg== + dependencies: + "@types/node" "*" + +"@types/mysql@2.15.26": + version "2.15.26" + resolved "https://registry.yarnpkg.com/@types/mysql/-/mysql-2.15.26.tgz#f0de1484b9e2354d587e7d2bd17a873cc8300836" + integrity sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ== + dependencies: + "@types/node" "*" + "@types/node@*", "@types/node@>=10.0.0": version "24.10.1" resolved "https://registry.yarnpkg.com/@types/node/-/node-24.10.1.tgz#91e92182c93db8bd6224fca031e2370cef9a8f01" @@ -3512,6 +4594,13 @@ dependencies: undici-types "~7.16.0" +"@types/node@>=13.7.0": + version "25.6.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-25.6.0.tgz#4e09bad9b469871f2d0f68140198cbd714f4edca" + integrity sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ== + dependencies: + undici-types "~7.19.0" + "@types/node@^18.11.11": version "18.19.130" resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.130.tgz#da4c6324793a79defb7a62cba3947ec5add00d59" @@ -3526,6 +4615,34 @@ dependencies: undici-types "~6.21.0" +"@types/pg-pool@2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/pg-pool/-/pg-pool-2.0.6.tgz#1376d9dc5aec4bb2ec67ce28d7e9858227403c77" + integrity sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ== + dependencies: + "@types/pg" "*" + +"@types/pg@*", "@types/pg@8.6.1": + version "8.6.1" + resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.6.1.tgz#099450b8dc977e8197a44f5229cedef95c8747f9" + integrity sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w== + dependencies: + "@types/node" "*" + pg-protocol "*" + pg-types "^2.2.0" + +"@types/shimmer@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@types/shimmer/-/shimmer-1.2.0.tgz#9b706af96fa06416828842397a70dfbbf1c14ded" + integrity sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg== + +"@types/tedious@^4.0.14": + version "4.0.14" + resolved "https://registry.yarnpkg.com/@types/tedious/-/tedious-4.0.14.tgz#868118e7a67808258c05158e9cad89ca58a2aec1" + integrity sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw== + dependencies: + "@types/node" "*" + "@types/triple-beam@^1.3.2": version "1.3.5" resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c" @@ -3676,11 +4793,21 @@ accesscontrol@^2.2.1: dependencies: notation "^1.3.6" +acorn-import-attributes@^1.9.5: + version "1.9.5" + resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" + integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== + acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== +acorn@^8.14.0: + version "8.16.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.16.0.tgz#4ce79c89be40afe7afe8f3adb902a1f1ce9ac08a" + integrity sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw== + acorn@^8.15.0: version "8.15.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" @@ -4178,6 +5305,11 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +bignumber.js@^9.0.0: + version "9.3.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.3.1.tgz#759c5aaddf2ffdc4f154f7b493e1c8770f88c4d7" + integrity sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ== + bindings@^1.1.1, bindings@^1.3.1, bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" @@ -4511,6 +5643,11 @@ chownr@^3.0.0: resolved "https://registry.yarnpkg.com/chownr/-/chownr-3.0.0.tgz#9855e64ecd240a9cc4267ce8a4aa5d24a1da15e4" integrity sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g== +cjs-module-lexer@^1.2.2: + version "1.4.3" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz#0f79731eb8cfe1ec72acd4066efac9d61991b00d" + integrity sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q== + clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -5737,6 +6874,11 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" +forwarded-parse@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/forwarded-parse/-/forwarded-parse-2.1.2.tgz#08511eddaaa2ddfd56ba11138eee7df117a09325" + integrity sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw== + forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -5827,6 +6969,17 @@ gaxios@^1.0.4: https-proxy-agent "^2.2.1" node-fetch "^2.3.0" +gaxios@^6.1.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-6.7.1.tgz#ebd9f7093ede3ba502685e73390248bb5b7f71fb" + integrity sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ== + dependencies: + extend "^3.0.2" + https-proxy-agent "^7.0.1" + is-stream "^2.0.0" + node-fetch "^2.6.9" + uuid "^9.0.1" + gcp-metadata@^0.6.1, gcp-metadata@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-0.6.3.tgz#4550c08859c528b370459bd77a7187ea0bdbc4ab" @@ -5836,6 +6989,15 @@ gcp-metadata@^0.6.1, gcp-metadata@^0.6.3: extend "^3.0.1" retry-axios "0.3.2" +gcp-metadata@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-6.1.1.tgz#f65aa69f546bc56e116061d137d3f5f90bdec494" + integrity sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A== + dependencies: + gaxios "^6.1.1" + google-logging-utils "^0.0.2" + json-bigint "^1.0.0" + generator-function@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/generator-function/-/generator-function-2.0.1.tgz#0e75dd410d1243687a0ba2e951b94eedb8f737a2" @@ -5978,6 +7140,11 @@ google-auto-auth@^0.10.1: google-auth-library "^1.3.1" request "^2.79.0" +google-logging-utils@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/google-logging-utils/-/google-logging-utils-0.0.2.tgz#5fd837e06fa334da450433b9e3e1870c1594466a" + integrity sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ== + google-p12-pem@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-1.0.5.tgz#0b4721cdfc818759d884f0c62803518decdaf0d0" @@ -6255,6 +7422,16 @@ import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" +import-in-the-middle@^1.8.1: + version "1.15.0" + resolved "https://registry.yarnpkg.com/import-in-the-middle/-/import-in-the-middle-1.15.0.tgz#9e20827a322bbadaeb5e3bac49ea8f6d4685fdd8" + integrity sha512-bpQy+CrsRmYmoPMAE/0G33iwRqwW4ouqdRg8jgbH3aKuCtOc8lxgmYXg2dMM92CRiGP660EtBcymH/eVUpCSaA== + dependencies: + acorn "^8.14.0" + acorn-import-attributes "^1.9.5" + cjs-module-lexer "^1.2.2" + module-details-from-path "^1.0.3" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -6798,6 +7975,13 @@ jsesc@^3.0.2: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== +json-bigint@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1" + integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ== + dependencies: + bignumber.js "^9.0.0" + json-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" @@ -7105,6 +8289,11 @@ lodash-compat@^3.10.2: resolved "https://registry.yarnpkg.com/lodash-compat/-/lodash-compat-3.10.2.tgz#c6940128a9d30f8e902cd2cf99fd0cba4ecfc183" integrity sha512-k8SE/OwvWfYZqx3MA/Ry1SHBDWre8Z8tCs0Ba0bF5OqVNvymxgFZ/4VDtbTxzTvcoG11JpTMFsaeZp/yGYvFnA== +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + lodash.defaults@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" @@ -7222,6 +8411,11 @@ long-timeout@0.1.1: resolved "https://registry.yarnpkg.com/long-timeout/-/long-timeout-0.1.1.tgz#9721d788b47e0bcb5a24c2e2bee1a0da55dab514" integrity sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w== +long@^5.0.0: + version "5.3.2" + resolved "https://registry.yarnpkg.com/long/-/long-5.3.2.tgz#1d84463095999262d7d7b7f8bfd4a8cc55167f83" + integrity sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA== + looper@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/looper/-/looper-2.0.0.tgz#66cd0c774af3d4fedac53794f742db56da8f09ec" @@ -7581,6 +8775,11 @@ mocha@^11.0.1: yargs-parser "^21.1.1" yargs-unparser "^2.0.0" +module-details-from-path@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/module-details-from-path/-/module-details-from-path-1.0.4.tgz#b662fdcd93f6c83d3f25289da0ce81c8d9685b94" + integrity sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w== + moment@^2.30.1: version "2.30.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" @@ -7677,7 +8876,7 @@ node-addon-api@^8.3.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-8.5.0.tgz#c91b2d7682fa457d2e1c388150f0dff9aafb8f3f" integrity sha512-/bRZty2mXUIFY/xU5HLvveNHlswNJej+RnxBjOMkidWfwZzgTbPG1E3K5TOxRLOR+5hX7bSofy8yf1hZevMS8A== -node-fetch@^2.3.0, node-fetch@^2.6.0: +node-fetch@^2.3.0, node-fetch@^2.6.0, node-fetch@^2.6.9: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -8165,6 +9364,27 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== +pg-int8@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" + integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== + +pg-protocol@*: + version "1.13.0" + resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.13.0.tgz#fdaf6d020bca590d58bb991b4b16fc448efe0511" + integrity sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w== + +pg-types@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" + integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== + dependencies: + pg-int8 "1.0.1" + postgres-array "~2.0.0" + postgres-bytea "~1.0.0" + postgres-date "~1.0.4" + postgres-interval "^1.1.0" + picocolors@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" @@ -8202,6 +9422,28 @@ possible-typed-array-names@^1.0.0: resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae" integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== +postgres-array@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" + integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== + +postgres-bytea@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.1.tgz#c40b3da0222c500ff1e51c5d7014b60b79697c7a" + integrity sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ== + +postgres-date@~1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" + integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== + +postgres-interval@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695" + integrity sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ== + dependencies: + xtend "^4.0.0" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -8247,6 +9489,24 @@ promise-retry@^2.0.1: err-code "^2.0.2" retry "^0.12.0" +protobufjs@^7.3.0, protobufjs@^7.5.3: + version "7.5.4" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.5.4.tgz#885d31fe9c4b37f25d1bb600da30b1c5b37d286a" + integrity sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -8493,6 +9753,15 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== +require-in-the-middle@^7.1.1: + version "7.5.2" + resolved "https://registry.yarnpkg.com/require-in-the-middle/-/require-in-the-middle-7.5.2.tgz#dc25b148affad42e570cf0e41ba30dc00f1703ec" + integrity sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ== + dependencies: + debug "^4.3.5" + module-details-from-path "^1.0.3" + resolve "^1.22.8" + require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -8517,6 +9786,16 @@ resolve@^1.10.0, resolve@^1.22.4: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.22.8: + version "1.22.12" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.12.tgz#f5b2a680897c69c238a13cd16b15671f8b73549f" + integrity sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA== + dependencies: + es-errors "^1.3.0" + is-core-module "^2.16.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + retry-axios@0.3.2, retry-axios@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/retry-axios/-/retry-axios-0.3.2.tgz#5757c80f585b4cc4c4986aa2ffd47a60c6d35e13" @@ -8620,6 +9899,11 @@ semver@^7.3.5, semver@^7.5.3, semver@^7.5.4, semver@^7.6.3: resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946" integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== +semver@^7.5.2: + version "7.7.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" + integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA== + semver@~5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.1.1.tgz#a3292a373e6f3e0798da0b20641b9a9c5bc47e19" @@ -8750,6 +10034,11 @@ shell-quote@^1.6.1: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.3.tgz#55e40ef33cf5c689902353a3d8cd1a6725f08b4b" integrity sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw== +shimmer@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" + integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== + side-channel-list@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" @@ -9509,6 +10798,11 @@ undici-types@~7.16.0: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.16.0.tgz#ffccdff36aea4884cbfce9a750a0580224f58a46" integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw== +undici-types@~7.19.0: + version "7.19.2" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.19.2.tgz#1b67fc26d0f157a0cba3a58a5b5c1e2276b8ba2a" + integrity sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg== + unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" @@ -9653,6 +10947,11 @@ uuid@^8.3.0, uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uuid@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + v8-to-istanbul@^9.0.0: version "9.3.0" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz#b9572abfa62bd556c16d75fdebc1a411d5ff3175" @@ -9984,7 +11283,7 @@ xmlhttprequest-ssl@~2.1.1: resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz#e9e8023b3f29ef34b97a859f584c5e6c61418e23" integrity sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ== -xtend@^4.0.2, xtend@~4.0.0: +xtend@^4.0.0, xtend@^4.0.2, xtend@~4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==