mirror of
https://github.com/stackblitz-labs/bolt.diy
synced 2025-06-26 18:26:38 +00:00
Fix otel errors (#31)
Running the prior code in wrangler (but _not_ `npm run dev`) was generating errors during otel initialization. I was ultimately unable to figure out why, or how to fix them: ``` (warn) Initializing OpenTelemetry (error) Error initializing OpenTelemetry TypeError: Class constructor OTLPExporterBase2 cannot be invoked without 'new' ``` In the end, it was easier to just boil the ocean a little: With claude's help, write a custom otlp exporter and use that. Also use BasicTracerProvider instead of WebTracerProvider. This version is enough to generate spans from within local wrangler.
This commit is contained in:
parent
78a56faa55
commit
c52ae1f9da
@ -1,13 +1,189 @@
|
||||
import { Resource } from '@opentelemetry/resources';
|
||||
import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';
|
||||
import { WebTracerProvider } from '@opentelemetry/sdk-trace-web';
|
||||
import { ConsoleSpanExporter, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base';
|
||||
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
|
||||
import { ZoneContextManager } from '@opentelemetry/context-zone';
|
||||
import { SpanStatusCode, type Attributes, context, trace } from '@opentelemetry/api';
|
||||
import type { Tracer } from '@opentelemetry/api';
|
||||
import { SpanStatusCode, type Attributes, context, trace } from '@opentelemetry/api';
|
||||
import { ZoneContextManager } from '@opentelemetry/context-zone';
|
||||
import type { ExportResult } from '@opentelemetry/core';
|
||||
import { ExportResultCode } from '@opentelemetry/core';
|
||||
import type { ExportServiceError, OTLPExporterConfigBase } from '@opentelemetry/otlp-exporter-base';
|
||||
import { OTLPExporterError } from '@opentelemetry/otlp-exporter-base';
|
||||
import { createExportTraceServiceRequest } from '@opentelemetry/otlp-transformer';
|
||||
import { Resource } from '@opentelemetry/resources';
|
||||
import type { SpanExporter, ReadableSpan } from '@opentelemetry/sdk-trace-base';
|
||||
import { ConsoleSpanExporter, SimpleSpanProcessor, BasicTracerProvider } from '@opentelemetry/sdk-trace-base';
|
||||
import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';
|
||||
|
||||
import type { AppLoadContext } from '@remix-run/cloudflare';
|
||||
|
||||
// used to implement concurrencyLimit in the otlp exporter
|
||||
class Semaphore {
|
||||
private _permits: number;
|
||||
private _tasks: (() => void)[] = [];
|
||||
|
||||
constructor(permits: number) {
|
||||
this._permits = permits;
|
||||
}
|
||||
|
||||
async acquire(): Promise<void> {
|
||||
if (this._permits > 0) {
|
||||
this._permits -= 1;
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
return new Promise<void>((resolve) => {
|
||||
this._tasks.push(resolve);
|
||||
});
|
||||
}
|
||||
|
||||
release(): void {
|
||||
this._permits += 1;
|
||||
|
||||
const nextTask = this._tasks.shift();
|
||||
|
||||
if (nextTask) {
|
||||
this._permits -= 1;
|
||||
nextTask();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
interface OTLPExporterConfig extends OTLPExporterConfigBase {
|
||||
retryCount?: number;
|
||||
retryIntervalMillis?: number;
|
||||
}
|
||||
|
||||
const defaultOptions = {
|
||||
url: 'https://api.honeycomb.io/v1/traces',
|
||||
concurrencyLimit: 5,
|
||||
timeoutMillis: 5000,
|
||||
headers: {},
|
||||
retryCount: 3,
|
||||
retryIntervalMillis: 100,
|
||||
} as const;
|
||||
|
||||
export class OTLPExporter implements SpanExporter {
|
||||
private readonly _config: OTLPExporterConfig;
|
||||
private _shutdownOnce: boolean;
|
||||
private _activeExports: Promise<void>[];
|
||||
private _semaphore: Semaphore;
|
||||
|
||||
constructor(config: OTLPExporterConfig) {
|
||||
this._config = {
|
||||
...config,
|
||||
headers: { ...config.headers },
|
||||
};
|
||||
this._shutdownOnce = false;
|
||||
this._activeExports = [];
|
||||
this._semaphore = new Semaphore(this._config.concurrencyLimit || defaultOptions.concurrencyLimit);
|
||||
}
|
||||
|
||||
export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void {
|
||||
if (this._shutdownOnce) {
|
||||
console.warn('Exporter has been shutdown, skipping export.');
|
||||
resultCallback({ code: ExportResultCode.FAILED });
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
const exportPromise = this._export(spans);
|
||||
this._activeExports.push(exportPromise);
|
||||
|
||||
// Clean up completed exports
|
||||
exportPromise
|
||||
.then(() => {
|
||||
resultCallback({ code: ExportResultCode.SUCCESS });
|
||||
})
|
||||
.catch((error) => {
|
||||
console.warn('CustomOTLPSpanExporter export failed:', error);
|
||||
resultCallback({ code: ExportResultCode.FAILED, error });
|
||||
})
|
||||
.finally(() => {
|
||||
const index = this._activeExports.indexOf(exportPromise);
|
||||
|
||||
if (index !== -1) {
|
||||
this._activeExports.splice(index, 1);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private async _export(spans: ReadableSpan[]): Promise<void> {
|
||||
if (spans.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
let currentRetry = 0;
|
||||
|
||||
// types involving config objects with optional fields are such a pain, hence the defaults here.
|
||||
const { retryCount = defaultOptions.retryCount, retryIntervalMillis = defaultOptions.retryIntervalMillis } =
|
||||
this._config;
|
||||
|
||||
while (currentRetry < retryCount!) {
|
||||
try {
|
||||
await this._semaphore.acquire();
|
||||
|
||||
try {
|
||||
await this._sendSpans(spans);
|
||||
return;
|
||||
} finally {
|
||||
this._semaphore.release();
|
||||
}
|
||||
} catch (error) {
|
||||
currentRetry++;
|
||||
|
||||
if (currentRetry === retryCount) {
|
||||
throw new OTLPExporterError(
|
||||
`Failed to export spans after ${retryCount} retries. most recent error is ${error instanceof Error ? error.toString() : error}`,
|
||||
);
|
||||
}
|
||||
|
||||
// Wait before retrying
|
||||
await new Promise((resolve) => setTimeout(resolve, retryIntervalMillis * currentRetry));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async _sendSpans(spans: ReadableSpan[]): Promise<void> {
|
||||
const {url = defaultOptions.url, timeoutMillis = defaultOptions.timeoutMillis, headers = defaultOptions.headers } = this._config;
|
||||
const controller = new AbortController();
|
||||
const timeoutId = setTimeout(() => controller.abort(), timeoutMillis);
|
||||
|
||||
const exportMessage = createExportTraceServiceRequest(spans, {
|
||||
useHex: true,
|
||||
useLongBits: false,
|
||||
});
|
||||
|
||||
try {
|
||||
const response = await fetch(url, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
...headers,
|
||||
},
|
||||
body: JSON.stringify(exportMessage),
|
||||
signal: controller.signal,
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(`HTTP error! status: ${response.status}`);
|
||||
}
|
||||
} finally {
|
||||
clearTimeout(timeoutId);
|
||||
}
|
||||
}
|
||||
|
||||
async shutdown(): Promise<void> {
|
||||
if (this._shutdownOnce) {
|
||||
console.warn('Exporter has already been shutdown.');
|
||||
return;
|
||||
}
|
||||
|
||||
this._shutdownOnce = true;
|
||||
await this.forceFlush();
|
||||
}
|
||||
|
||||
async forceFlush(): Promise<void> {
|
||||
await Promise.all(this._activeExports);
|
||||
}
|
||||
}
|
||||
|
||||
export function createTracer(context: AppLoadContext) {
|
||||
const honeycombApiKey = (context.cloudflare.env as any).HONEYCOMB_API_KEY;
|
||||
const honeycombDataset = (context.cloudflare.env as any).HONEYCOMB_DATASET;
|
||||
@ -17,10 +193,10 @@ export function createTracer(context: AppLoadContext) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
console.warn('Initializing OpenTelemetry');
|
||||
console.info('Initializing OpenTelemetry');
|
||||
|
||||
try {
|
||||
const exporter = new OTLPTraceExporter({
|
||||
const exporter = new OTLPExporter({
|
||||
url: 'https://api.honeycomb.io/v1/traces',
|
||||
headers: {
|
||||
'x-honeycomb-team': honeycombApiKey,
|
||||
@ -33,7 +209,7 @@ export function createTracer(context: AppLoadContext) {
|
||||
[ATTR_SERVICE_VERSION]: `${__APP_VERSION}; ${__COMMIT_HASH}`,
|
||||
});
|
||||
|
||||
const provider = new WebTracerProvider({
|
||||
const provider = new BasicTracerProvider({
|
||||
resource,
|
||||
spanProcessors: [new SimpleSpanProcessor(exporter), new SimpleSpanProcessor(new ConsoleSpanExporter())],
|
||||
});
|
||||
@ -63,6 +239,7 @@ export function ensureTracer() {
|
||||
if (!tracer) {
|
||||
tracer = trace.getTracerProvider().getTracer('nut-server');
|
||||
}
|
||||
|
||||
return tracer;
|
||||
}
|
||||
|
||||
|
@ -30,13 +30,13 @@
|
||||
"node": ">=18.18.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ai-sdk/amazon-bedrock": "1.0.6",
|
||||
"@ai-sdk/anthropic": "^0.0.39",
|
||||
"@ai-sdk/cohere": "^1.0.3",
|
||||
"@ai-sdk/google": "^0.0.52",
|
||||
"@ai-sdk/mistral": "^0.0.43",
|
||||
"@ai-sdk/openai": "^0.0.66",
|
||||
"@anthropic-ai/sdk": "^0.33.1",
|
||||
"@ai-sdk/amazon-bedrock": "1.0.6",
|
||||
"@codemirror/autocomplete": "^6.18.3",
|
||||
"@codemirror/commands": "^6.7.1",
|
||||
"@codemirror/lang-cpp": "^6.0.2",
|
||||
@ -56,16 +56,18 @@
|
||||
"@iconify-json/ph": "^1.2.1",
|
||||
"@iconify-json/svg-spinners": "^1.2.1",
|
||||
"@lezer/highlight": "^1.2.1",
|
||||
"@microlabs/otel-cf-workers": "1.0.0-rc.49",
|
||||
"@nanostores/react": "^0.7.3",
|
||||
"@octokit/rest": "^21.0.2",
|
||||
"@octokit/types": "^13.6.2",
|
||||
"@openrouter/ai-sdk-provider": "^0.0.5",
|
||||
"@opentelemetry/api": "^1.9.0",
|
||||
"@opentelemetry/context-zone": "^1.30.1",
|
||||
"@opentelemetry/exporter-trace-otlp-http": "^0.57.1",
|
||||
"@opentelemetry/core": "^1.26.0",
|
||||
"@opentelemetry/otlp-exporter-base": "^0.53.0",
|
||||
"@opentelemetry/otlp-transformer": "^0.53.0",
|
||||
"@opentelemetry/resources": "^1.30.1",
|
||||
"@opentelemetry/sdk-trace-base": "^1.30.1",
|
||||
"@opentelemetry/sdk-trace-web": "^1.30.1",
|
||||
"@opentelemetry/semantic-conventions": "^1.30.0",
|
||||
"@radix-ui/react-context-menu": "^2.2.2",
|
||||
"@radix-ui/react-dialog": "^1.1.2",
|
||||
|
165
pnpm-lock.yaml
165
pnpm-lock.yaml
@ -89,6 +89,9 @@ importers:
|
||||
'@lezer/highlight':
|
||||
specifier: ^1.2.1
|
||||
version: 1.2.1
|
||||
'@microlabs/otel-cf-workers':
|
||||
specifier: 1.0.0-rc.49
|
||||
version: 1.0.0-rc.49(@opentelemetry/api@1.9.0)
|
||||
'@nanostores/react':
|
||||
specifier: ^0.7.3
|
||||
version: 0.7.3(nanostores@0.10.3)(react@18.3.1)
|
||||
@ -107,18 +110,21 @@ importers:
|
||||
'@opentelemetry/context-zone':
|
||||
specifier: ^1.30.1
|
||||
version: 1.30.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/exporter-trace-otlp-http':
|
||||
specifier: ^0.57.1
|
||||
version: 0.57.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/core':
|
||||
specifier: ^1.26.0
|
||||
version: 1.30.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/otlp-exporter-base':
|
||||
specifier: ^0.53.0
|
||||
version: 0.53.0(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/otlp-transformer':
|
||||
specifier: ^0.53.0
|
||||
version: 0.53.0(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/resources':
|
||||
specifier: ^1.30.1
|
||||
version: 1.30.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/sdk-trace-base':
|
||||
specifier: ^1.30.1
|
||||
version: 1.30.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/sdk-trace-web':
|
||||
specifier: ^1.30.1
|
||||
version: 1.30.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/semantic-conventions':
|
||||
specifier: ^1.30.0
|
||||
version: 1.30.0
|
||||
@ -1569,6 +1575,11 @@ packages:
|
||||
'@mdx-js/mdx@2.3.0':
|
||||
resolution: {integrity: sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==}
|
||||
|
||||
'@microlabs/otel-cf-workers@1.0.0-rc.49':
|
||||
resolution: {integrity: sha512-wPfaHxFAOOHlLxvWVGhdsMf+lcSsjtysfHOwk7hnTdUdim1f3trTVxaa0fl7xF/AdZ1LgGbLI9xbCEz14qSzNw==}
|
||||
peerDependencies:
|
||||
'@opentelemetry/api': ~1.9.0
|
||||
|
||||
'@nanostores/react@0.7.3':
|
||||
resolution: {integrity: sha512-/XuLAMENRu/Q71biW4AZ4qmU070vkZgiQ28gaTSNRPm2SZF5zGAR81zPE1MaMB4SeOp6ZTst92NBaG75XSspNg==}
|
||||
engines: {node: ^18.0.0 || >=20.0.0}
|
||||
@ -1662,8 +1673,8 @@ packages:
|
||||
peerDependencies:
|
||||
zod: ^3.0.0
|
||||
|
||||
'@opentelemetry/api-logs@0.57.1':
|
||||
resolution: {integrity: sha512-I4PHczeujhQAQv6ZBzqHYEUiggZL4IdSMixtVD3EYqbdrjujE7kRfI5QohjlPoJm8BvenoW5YaTMWRrbpot6tg==}
|
||||
'@opentelemetry/api-logs@0.53.0':
|
||||
resolution: {integrity: sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==}
|
||||
engines: {node: '>=14'}
|
||||
|
||||
'@opentelemetry/api@1.9.0':
|
||||
@ -1681,29 +1692,41 @@ packages:
|
||||
resolution: {integrity: sha512-N6CACt5sxXD6XzS2jJPqstNJZ/QFqeW56IiKfHb6hYOelCXVvYfxheF7byAeRXa7+N8rmXUP7aRdupALXP5hdQ==}
|
||||
engines: {node: '>=14'}
|
||||
|
||||
'@opentelemetry/core@1.26.0':
|
||||
resolution: {integrity: sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ==}
|
||||
engines: {node: '>=14'}
|
||||
peerDependencies:
|
||||
'@opentelemetry/api': '>=1.0.0 <1.10.0'
|
||||
|
||||
'@opentelemetry/core@1.30.1':
|
||||
resolution: {integrity: sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==}
|
||||
engines: {node: '>=14'}
|
||||
peerDependencies:
|
||||
'@opentelemetry/api': '>=1.0.0 <1.10.0'
|
||||
|
||||
'@opentelemetry/exporter-trace-otlp-http@0.57.1':
|
||||
resolution: {integrity: sha512-43dLEjlf6JGxpVt9RaRlJAvjHG1wGsbAuNd67RIDy/95zfKk2aNovtiGUgFdS/kcvgvS90upIUbgn0xUd9JjMg==}
|
||||
'@opentelemetry/exporter-trace-otlp-http@0.53.0':
|
||||
resolution: {integrity: sha512-m7F5ZTq+V9mKGWYpX8EnZ7NjoqAU7VemQ1E2HAG+W/u0wpY1x0OmbxAXfGKFHCspdJk8UKlwPGrpcB8nay3P8A==}
|
||||
engines: {node: '>=14'}
|
||||
peerDependencies:
|
||||
'@opentelemetry/api': ^1.0.0
|
||||
|
||||
'@opentelemetry/otlp-exporter-base@0.53.0':
|
||||
resolution: {integrity: sha512-UCWPreGQEhD6FjBaeDuXhiMf6kkBODF0ZQzrk/tuQcaVDJ+dDQ/xhJp192H9yWnKxVpEjFrSSLnpqmX4VwX+eA==}
|
||||
engines: {node: '>=14'}
|
||||
peerDependencies:
|
||||
'@opentelemetry/api': ^1.0.0
|
||||
|
||||
'@opentelemetry/otlp-transformer@0.53.0':
|
||||
resolution: {integrity: sha512-rM0sDA9HD8dluwuBxLetUmoqGJKSAbWenwD65KY9iZhUxdBHRLrIdrABfNDP7aiTjcgK8XFyTn5fhDz7N+W6DA==}
|
||||
engines: {node: '>=14'}
|
||||
peerDependencies:
|
||||
'@opentelemetry/api': ^1.3.0
|
||||
|
||||
'@opentelemetry/otlp-exporter-base@0.57.1':
|
||||
resolution: {integrity: sha512-GNBJAEYfeiYJQ3O2dvXgiNZ/qjWrBxSb1L1s7iV/jKBRGMN3Nv+miTk2SLeEobF5E5ZK4rVcHKlBZ71bPVIv/g==}
|
||||
'@opentelemetry/resources@1.26.0':
|
||||
resolution: {integrity: sha512-CPNYchBE7MBecCSVy0HKpUISEeJOniWqcHaAHpmasZ3j9o6V3AyBzhRc90jdmemq0HOxDr6ylhUbDhBqqPpeNw==}
|
||||
engines: {node: '>=14'}
|
||||
peerDependencies:
|
||||
'@opentelemetry/api': ^1.3.0
|
||||
|
||||
'@opentelemetry/otlp-transformer@0.57.1':
|
||||
resolution: {integrity: sha512-EX67y+ukNNfFrOLyjYGw8AMy0JPIlEX1dW60SGUNZWW2hSQyyolX7EqFuHP5LtXLjJHNfzx5SMBVQ3owaQCNDw==}
|
||||
engines: {node: '>=14'}
|
||||
peerDependencies:
|
||||
'@opentelemetry/api': ^1.3.0
|
||||
'@opentelemetry/api': '>=1.0.0 <1.10.0'
|
||||
|
||||
'@opentelemetry/resources@1.30.1':
|
||||
resolution: {integrity: sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==}
|
||||
@ -1711,29 +1734,33 @@ packages:
|
||||
peerDependencies:
|
||||
'@opentelemetry/api': '>=1.0.0 <1.10.0'
|
||||
|
||||
'@opentelemetry/sdk-logs@0.57.1':
|
||||
resolution: {integrity: sha512-jGdObb/BGWu6Peo3cL3skx/Rl1Ak/wDDO3vpPrrThGbqE7isvkCsX6uE+OAt8Ayjm9YC8UGkohWbLR09JmM0FA==}
|
||||
'@opentelemetry/sdk-logs@0.53.0':
|
||||
resolution: {integrity: sha512-dhSisnEgIj/vJZXZV6f6KcTnyLDx/VuQ6l3ejuZpMpPlh9S1qMHiZU9NMmOkVkwwHkMy3G6mEBwdP23vUZVr4g==}
|
||||
engines: {node: '>=14'}
|
||||
peerDependencies:
|
||||
'@opentelemetry/api': '>=1.4.0 <1.10.0'
|
||||
|
||||
'@opentelemetry/sdk-metrics@1.30.1':
|
||||
resolution: {integrity: sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog==}
|
||||
'@opentelemetry/sdk-metrics@1.26.0':
|
||||
resolution: {integrity: sha512-0SvDXmou/JjzSDOjUmetAAvcKQW6ZrvosU0rkbDGpXvvZN+pQF6JbK/Kd4hNdK4q/22yeruqvukXEJyySTzyTQ==}
|
||||
engines: {node: '>=14'}
|
||||
peerDependencies:
|
||||
'@opentelemetry/api': '>=1.3.0 <1.10.0'
|
||||
|
||||
'@opentelemetry/sdk-trace-base@1.26.0':
|
||||
resolution: {integrity: sha512-olWQldtvbK4v22ymrKLbIcBi9L2SpMO84sCPY54IVsJhP9fRsxJT194C/AVaAuJzLE30EdhhM1VmvVYR7az+cw==}
|
||||
engines: {node: '>=14'}
|
||||
peerDependencies:
|
||||
'@opentelemetry/api': '>=1.0.0 <1.10.0'
|
||||
|
||||
'@opentelemetry/sdk-trace-base@1.30.1':
|
||||
resolution: {integrity: sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==}
|
||||
engines: {node: '>=14'}
|
||||
peerDependencies:
|
||||
'@opentelemetry/api': '>=1.0.0 <1.10.0'
|
||||
|
||||
'@opentelemetry/sdk-trace-web@1.30.1':
|
||||
resolution: {integrity: sha512-AUo2e+1uyTGMB36VlbvBqnCogVzQhpC7dRcVVdCrt+cFHLpFRRJcd45J2obGTgs0XiAwNLyq5bhkW3JF2NZA+A==}
|
||||
'@opentelemetry/semantic-conventions@1.27.0':
|
||||
resolution: {integrity: sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==}
|
||||
engines: {node: '>=14'}
|
||||
peerDependencies:
|
||||
'@opentelemetry/api': '>=1.0.0 <1.10.0'
|
||||
|
||||
'@opentelemetry/semantic-conventions@1.28.0':
|
||||
resolution: {integrity: sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==}
|
||||
@ -7771,6 +7798,17 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@microlabs/otel-cf-workers@1.0.0-rc.49(@opentelemetry/api@1.9.0)':
|
||||
dependencies:
|
||||
'@opentelemetry/api': 1.9.0
|
||||
'@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/exporter-trace-otlp-http': 0.53.0(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/otlp-exporter-base': 0.53.0(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/otlp-transformer': 0.53.0(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/semantic-conventions': 1.30.0
|
||||
|
||||
'@nanostores/react@0.7.3(nanostores@0.10.3)(react@18.3.1)':
|
||||
dependencies:
|
||||
nanostores: 0.10.3
|
||||
@ -7888,7 +7926,7 @@ snapshots:
|
||||
'@ai-sdk/provider-utils': 1.0.2(zod@3.23.8)
|
||||
zod: 3.23.8
|
||||
|
||||
'@opentelemetry/api-logs@0.57.1':
|
||||
'@opentelemetry/api-logs@0.53.0':
|
||||
dependencies:
|
||||
'@opentelemetry/api': 1.9.0
|
||||
|
||||
@ -7906,55 +7944,73 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- '@opentelemetry/api'
|
||||
|
||||
'@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0)':
|
||||
dependencies:
|
||||
'@opentelemetry/api': 1.9.0
|
||||
'@opentelemetry/semantic-conventions': 1.27.0
|
||||
|
||||
'@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0)':
|
||||
dependencies:
|
||||
'@opentelemetry/api': 1.9.0
|
||||
'@opentelemetry/semantic-conventions': 1.28.0
|
||||
|
||||
'@opentelemetry/exporter-trace-otlp-http@0.57.1(@opentelemetry/api@1.9.0)':
|
||||
'@opentelemetry/exporter-trace-otlp-http@0.53.0(@opentelemetry/api@1.9.0)':
|
||||
dependencies:
|
||||
'@opentelemetry/api': 1.9.0
|
||||
'@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/otlp-exporter-base': 0.57.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/otlp-transformer': 0.57.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/otlp-exporter-base': 0.53.0(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/otlp-transformer': 0.53.0(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/resources': 1.26.0(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/sdk-trace-base': 1.26.0(@opentelemetry/api@1.9.0)
|
||||
|
||||
'@opentelemetry/otlp-exporter-base@0.57.1(@opentelemetry/api@1.9.0)':
|
||||
'@opentelemetry/otlp-exporter-base@0.53.0(@opentelemetry/api@1.9.0)':
|
||||
dependencies:
|
||||
'@opentelemetry/api': 1.9.0
|
||||
'@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/otlp-transformer': 0.57.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/otlp-transformer': 0.53.0(@opentelemetry/api@1.9.0)
|
||||
|
||||
'@opentelemetry/otlp-transformer@0.57.1(@opentelemetry/api@1.9.0)':
|
||||
'@opentelemetry/otlp-transformer@0.53.0(@opentelemetry/api@1.9.0)':
|
||||
dependencies:
|
||||
'@opentelemetry/api': 1.9.0
|
||||
'@opentelemetry/api-logs': 0.57.1
|
||||
'@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/sdk-logs': 0.57.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/sdk-metrics': 1.30.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/api-logs': 0.53.0
|
||||
'@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/resources': 1.26.0(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/sdk-logs': 0.53.0(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/sdk-metrics': 1.26.0(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/sdk-trace-base': 1.26.0(@opentelemetry/api@1.9.0)
|
||||
protobufjs: 7.4.0
|
||||
|
||||
'@opentelemetry/resources@1.26.0(@opentelemetry/api@1.9.0)':
|
||||
dependencies:
|
||||
'@opentelemetry/api': 1.9.0
|
||||
'@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/semantic-conventions': 1.27.0
|
||||
|
||||
'@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0)':
|
||||
dependencies:
|
||||
'@opentelemetry/api': 1.9.0
|
||||
'@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/semantic-conventions': 1.28.0
|
||||
|
||||
'@opentelemetry/sdk-logs@0.57.1(@opentelemetry/api@1.9.0)':
|
||||
'@opentelemetry/sdk-logs@0.53.0(@opentelemetry/api@1.9.0)':
|
||||
dependencies:
|
||||
'@opentelemetry/api': 1.9.0
|
||||
'@opentelemetry/api-logs': 0.57.1
|
||||
'@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/api-logs': 0.53.0
|
||||
'@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/resources': 1.26.0(@opentelemetry/api@1.9.0)
|
||||
|
||||
'@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0)':
|
||||
'@opentelemetry/sdk-metrics@1.26.0(@opentelemetry/api@1.9.0)':
|
||||
dependencies:
|
||||
'@opentelemetry/api': 1.9.0
|
||||
'@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/resources': 1.26.0(@opentelemetry/api@1.9.0)
|
||||
|
||||
'@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0)':
|
||||
dependencies:
|
||||
'@opentelemetry/api': 1.9.0
|
||||
'@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/resources': 1.26.0(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/semantic-conventions': 1.27.0
|
||||
|
||||
'@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)':
|
||||
dependencies:
|
||||
@ -7963,12 +8019,7 @@ snapshots:
|
||||
'@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/semantic-conventions': 1.28.0
|
||||
|
||||
'@opentelemetry/sdk-trace-web@1.30.1(@opentelemetry/api@1.9.0)':
|
||||
dependencies:
|
||||
'@opentelemetry/api': 1.9.0
|
||||
'@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0)
|
||||
'@opentelemetry/semantic-conventions': 1.28.0
|
||||
'@opentelemetry/semantic-conventions@1.27.0': {}
|
||||
|
||||
'@opentelemetry/semantic-conventions@1.28.0': {}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user