apitally
Version:
Simple API monitoring & analytics for REST APIs built with Express, Fastify, NestJS, AdonisJS, Hono, H3, Elysia, Hapi, and Koa.
46 lines (43 loc) • 1.3 kB
TypeScript
import { SpanProcessor, Span, ReadableSpan } from '@opentelemetry/sdk-trace-base';
type SpanData = {
spanId: string;
parentSpanId: string | null;
name: string;
kind: string;
startTime: string;
endTime: string;
status?: string;
attributes?: Record<string, unknown>;
};
type SpanHandle = {
traceId?: string;
setName: (name: string) => void;
runInContext: <T>(fn: () => T) => T;
enterContext: () => void;
end: () => SpanData[] | undefined;
};
declare class SpanCollector implements SpanProcessor {
enabled: boolean;
private includedSpanIds;
private collectedSpans;
private traceStartTimes;
private maintainIntervalId?;
private tracer?;
constructor(enabled: boolean);
startSpan(): SpanHandle;
private getAndClearSpans;
onStart(span: Span): void;
onEnd(span: ReadableSpan): void;
private serializeSpan;
private maintain;
shutdown(): Promise<void>;
forceFlush(): Promise<void>;
}
declare class ApitallySpanProcessor implements SpanProcessor {
private getCollector;
onStart(span: Span): void;
onEnd(span: ReadableSpan): void;
shutdown(): Promise<void>;
forceFlush(): Promise<void>;
}
export { ApitallySpanProcessor, type SpanData, type SpanHandle, SpanCollector as default };