moleculer
Version:
Fast & powerful microservices framework for Node.JS
79 lines (64 loc) • 1.56 kB
TypeScript
import Tracer = require("./tracer");
import type { Logger } from "../logger-factory";
declare namespace Span {
export interface SpanOptions {
type?: string;
id?: string;
traceID?: string;
parentID?: string | null;
service?:
| string
| {
name?: string;
version?: string | number;
fullName?: string;
};
priority?: number;
sampled?: boolean;
tags?: Record<string, any>;
defaultTags?: Record<string, any>;
parentSpan?: Span;
}
export interface SpanLogEntry {
name: string;
fields: Record<string, any>;
time: number;
elapsed: number;
}
export interface SpanServiceInfo {
name: string;
version?: string | number;
fullName?: string;
}
}
declare class Span {
constructor(tracer: Tracer, name: string, opts: Span.SpanOptions);
tracer: Tracer;
logger: Logger;
opts: Span.SpanOptions;
meta: Record<string, any>;
name: string;
type: string;
id: string;
traceID: string;
parentID: string | null;
service: Span.SpanServiceInfo;
priority: number;
sampled: boolean;
startTime: number | null;
startTicks: number | null;
finishTime: number | null;
duration: number | null;
error: Error | boolean | null;
logs: Span.SpanLogEntry[];
tags: Record<string, any>;
start(time?: number): Span;
getTime(): number;
addTags(obj: Record<string, any>): Span;
log(name: string, fields?: Record<string, any>, time?: number): Span;
setError(err: Error): Span;
finish(time?: number | null): Span;
isActive(): boolean;
startSpan(name: string, opts?: Span.SpanOptions): Span;
}
export = Span;