solarwinds-apm
Version:
OpenTelemetry-based SolarWinds APM library
54 lines • 2.37 kB
TypeScript
import { type Context, type SpanContext, type TextMapGetter, type TextMapPropagator, type TextMapSetter } from "@opentelemetry/api";
import type * as sampling from "@solarwinds-apm/sampling";
/** SolarWinds headers */
export interface Headers {
/** Headers to be extracted from incoming requests */
request: sampling.RequestHeaders;
/** Headers to be injected into outgoing responses */
response: sampling.ResponseHeaders;
}
export type RequestHeader = keyof Headers["request"];
export type ResponseHeader = keyof Headers["response"] | typeof X_TRACE | typeof ACCESS_CONTROL_EXPOSE_HEADERS;
export type Header = RequestHeader | ResponseHeader;
/** Storage for headers inside the OTel Context */
export declare const HEADERS_STORAGE: import("../storage.js").ContextStorage<Headers>;
export declare function traceParent(spanContext: SpanContext): string;
declare const X_TRACE = "X-Trace";
declare const ACCESS_CONTROL_EXPOSE_HEADERS = "Access-Control-Expose-Headers";
/**
* Propagator that extracts SolarWinds request headers
*/
export declare class RequestHeadersPropagator implements TextMapPropagator<unknown> {
#private;
extract(context: Context, carrier: unknown, getter: TextMapGetter<unknown>): Context;
inject(): void;
fields(): RequestHeader[];
}
/**
* Propagator that injects SolarWinds response headers
*
* This propagator SHOULD NOT be registered with the tracer provider
* since it is meant for response and not request.
* Currently it is registered in the HTTP instrumentation response hook
* until an official response propagation API is added.
*/
export declare class ResponseHeadersPropagator implements TextMapPropagator<unknown> {
#private;
inject(context: Context, carrier: unknown, setter: TextMapSetter<unknown>): void;
fields(): ResponseHeader[];
extract(context: Context): Context;
}
/**
* Returns the first element if the value is an array
* or the value as-is otherwise
*/
export declare function firstIfArray<T>(value: T | T[] | undefined): T | undefined;
/**
* Returns the result of {@link Array.join} if the value is an array
* or the value as-is otherwise
*
* @param separator - Separator used between elements
*/
export declare function joinIfArray(value: string | string[] | undefined, separator: string): string | undefined;
export {};
//# sourceMappingURL=headers.d.ts.map