Skip to content

Commit d329be1

Browse files
committed
chore: types from otel packages
1 parent b28da27 commit d329be1

4 files changed

Lines changed: 222 additions & 8 deletions

File tree

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@
9393
"@hiogawa/vite-plugin-fullstack": "^0.0.11",
9494
"@netlify/edge-functions": "^3.0.8",
9595
"@netlify/functions": "^5.3.0",
96+
"@opentelemetry/api": "^1.9.0",
97+
"@opentelemetry/otlp-transformer": "^0.208.0",
9698
"@rollup/plugin-alias": "^6.0.0",
9799
"@rollup/plugin-commonjs": "^29.0.3",
98100
"@rollup/plugin-inject": "^5.0.5",

pnpm-lock.yaml

Lines changed: 195 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pnpm-workspace.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ allowBuilds:
3535
sharp: false
3636
vue-demi: false
3737
workerd: false
38+
protobufjs: false
3839

3940
peerDependencyRules:
4041
allowedVersions:

src/presets/vercel/runtime/telemetry.ts

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
import { definePlugin } from "nitro";
2+
import type { SpanContext } from "@opentelemetry/api";
3+
import type {
4+
IExportTraceServiceRequest,
5+
ISpan,
6+
} from "@opentelemetry/otlp-transformer/build/src/trace/internal-types.js";
27

38
/**
49
* Exports Nitro tracing-channel events to the Vercel runtime as OpenTelemetry
@@ -15,8 +20,24 @@ const SPAN_KIND_INTERNAL = 1;
1520
const STATUS_CODE_ERROR = 2;
1621
const SCOPE_NAME = "@nitro/vercel-tracing";
1722

18-
function getTelemetry(): any {
19-
return (globalThis as any)[REQUEST_CONTEXT_SYMBOL]?.get?.()?.telemetry;
23+
/**
24+
* The Vercel runtime telemetry sink, exposed per-request via the global
25+
* `@vercel/request-context` reader. `reportSpans` is fire-and-forget; the
26+
* runtime correlates spans to the request by `rootSpanContext.traceId`.
27+
*/
28+
interface VercelTelemetry {
29+
reportSpans(data: IExportTraceServiceRequest): void;
30+
rootSpanContext?: SpanContext;
31+
}
32+
33+
interface RequestContextReader {
34+
get?(): { telemetry?: VercelTelemetry } | undefined;
35+
}
36+
37+
function getTelemetry(): VercelTelemetry | undefined {
38+
return (globalThis as Record<symbol, RequestContextReader | undefined>)[
39+
REQUEST_CONTEXT_SYMBOL
40+
]?.get?.()?.telemetry;
2041
}
2142

2243
/**
@@ -26,7 +47,7 @@ function getTelemetry(): any {
2647
* OTLP field is present even when empty (omitting e.g. `events` or `attributes`
2748
* makes the runtime drop the whole batch).
2849
*/
29-
class Span {
50+
class Span implements ISpan {
3051
traceId: string;
3152
spanId: string;
3253
// Parent on the platform root so spans appear as flat siblings.

0 commit comments

Comments
 (0)