UNPKG

elastic-apm-node

Version:

The official Elastic APM agent for Node.js

310 lines (263 loc) 9.68 kB
/// <reference types="node" /> import { IncomingMessage, ServerResponse } from 'http'; export = agent; declare const agent: Agent; declare class Agent implements Taggable, StartSpanFn { // Configuration start (options?: AgentConfigOptions): Agent; isStarted (): boolean; setFramework (options: { name?: string; version?: string; overwrite?: boolean; }): void; addPatch (name: string, handler: string | PatchHandler): void; removePatch (name: string, handler: string | PatchHandler): void; clearPatches (name: string): void; // Data collection hooks middleware: { connect (): Connect.ErrorHandleFunction }; lambda (handler: AwsLambda.Handler): AwsLambda.Handler; lambda (type: string, handler: AwsLambda.Handler): AwsLambda.Handler; handleUncaughtExceptions ( fn?: (err: Error) => void ): void; // Errors captureError ( err: Error | string | ParameterizedMessageObject, callback?: CaptureErrorCallback ): void; captureError ( err: Error | string | ParameterizedMessageObject, options?: CaptureErrorOptions, callback?: CaptureErrorCallback ): void; // Distributed Tracing currentTraceparent: string | null; // Transactions startTransaction ( name?: string, type?: string, options?: TransactionOptions ): Transaction | null; setTransactionName (name: string): void; endTransaction (result?: string | number, endTime?: number): void; currentTransaction: Transaction | null; // Spans startSpan (name?: string, type?: string, options?: SpanOptions): Span | null; currentSpan: Span | null; // Context setLabel (name: string, value: LabelValue): boolean; setTag (name: string, value: LabelValue): boolean; // Deprecated addLabels (labels: Labels): boolean; addTags (labels: Labels): boolean; // Deprecated setUserContext (user: UserObject): void; setCustomContext (custom: object): void; // Transport addFilter (fn: FilterFn): void; addErrorFilter (fn: FilterFn): void; addSpanFilter (fn: FilterFn): void; addTransactionFilter (fn: FilterFn): void; flush (callback?: Function): void; destroy (): void; // Utils logger: Logger; } declare class GenericSpan implements Taggable { // The following properties and methods are currently not documented as their API isn't considered official: // timestamp, ended, id, traceId, parentId, sampled, duration() type: string; traceparent: string; setLabel (name: string, value: LabelValue): boolean; setTag (name: string, value: LabelValue): boolean; // Deprecated addLabels (labels: Labels): boolean; addTags (labels: Labels): boolean; // Deprecated } declare class Transaction extends GenericSpan implements StartSpanFn { // The following properties and methods are currently not documented as their API isn't considered official: // setUserContext(), setCustomContext(), toJSON(), setDefaultName(), setDefaultNameFromRequest() name: string; result: string | number; startSpan (name?: string, type?: string, options?: SpanOptions): Span | null; ensureParentId (): string; end (result?: string | number | null, endTime?: number): void; } declare class Span extends GenericSpan { // The following properties and methods are currently not documented as their API isn't considered official: // customStackTrace(), setDbContext() transaction: Transaction; name: string; end (endTime?: number): void; } interface AgentConfigOptions { abortedErrorThreshold?: string; // Also support `number`, but as we're removing this functionality soon, there's no need to advertise it active?: boolean; addPatch?: KeyValueConfig; apiRequestSize?: string; // Also support `number`, but as we're removing this functionality soon, there's no need to advertise it apiRequestTime?: string; // Also support `number`, but as we're removing this functionality soon, there's no need to advertise it asyncHooks?: boolean; captureBody?: CaptureBody; captureErrorLogStackTraces?: CaptureErrorLogStackTraces; captureExceptions?: boolean; captureHeaders?: boolean; captureSpanStackTraces?: boolean; containerId?: string; disableInstrumentations?: string | string[]; environment?: string; errorMessageMaxLength?: string; // Also support `number`, but as we're removing this functionality soon, there's no need to advertise it errorOnAbortedRequests?: boolean; filterHttpHeaders?: boolean; frameworkName?: string; frameworkVersion?: string; globalLabels?: KeyValueConfig; hostname?: string; ignoreUrls?: Array<string | RegExp>; ignoreUserAgents?: Array<string | RegExp>; instrument?: boolean; kubernetesNamespace?: string; kubernetesNodeName?: string; kubernetesPodName?: string; kubernetesPodUID?: string; logLevel?: LogLevel; logger?: Logger; metricsInterval?: string; // Also support `number`, but as we're removing this functionality soon, there's no need to advertise it payloadLogFile?: string; secretToken?: string; serverTimeout?: string; // Also support `number`, but as we're removing this functionality soon, there's no need to advertise it serverUrl?: string; serviceName?: string; serviceVersion?: string; sourceLinesErrorAppFrames?: number; sourceLinesErrorLibraryFrames?: number; sourceLinesSpanAppFrames?: number; sourceLinesSpanLibraryFrames?: number; stackTraceLimit?: number; transactionMaxSpans?: number; transactionSampleRate?: number; usePathAsTransactionName?: boolean; verifyServerCert?: boolean; } interface CaptureErrorOptions { request?: IncomingMessage; response?: ServerResponse; timestamp?: number; handled?: boolean; user?: UserObject; labels?: Labels; tags?: Labels; custom?: object; message?: string; } interface Labels { [key: string]: LabelValue; } interface UserObject { id?: string | number; username?: string; email?: string; } interface ParameterizedMessageObject { message: string; params: Array<any>; } interface Logger { fatal (msg: string, ...args: any[]): void; fatal (obj: {}, msg?: string, ...args: any[]): void; error (msg: string, ...args: any[]): void; error (obj: {}, msg?: string, ...args: any[]): void; warn (msg: string, ...args: any[]): void; warn (obj: {}, msg?: string, ...args: any[]): void; info (msg: string, ...args: any[]): void; info (obj: {}, msg?: string, ...args: any[]): void; debug (msg: string, ...args: any[]): void; debug (obj: {}, msg?: string, ...args: any[]): void; trace (msg: string, ...args: any[]): void; trace (obj: {}, msg?: string, ...args: any[]): void; [propName: string]: any; } interface TransactionOptions { startTime?: number; childOf?: Transaction | Span | string; } interface SpanOptions { childOf?: Transaction | Span | string; } type CaptureBody = 'off' | 'errors' | 'transactions' | 'all'; type CaptureErrorLogStackTraces = 'never' | 'messages' | 'always'; type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal'; type CaptureErrorCallback = (err: Error | null, id: string) => void; type FilterFn = (payload: Payload) => Payload | boolean | void; type LabelValue = string | number | boolean | null | undefined; type KeyValueConfig = string | Labels | Array<Array<LabelValue>> type Payload = { [propName: string]: any } type PatchHandler = (exports: any, agent: Agent, options: PatchOptions) => any; interface PatchOptions { version: string | undefined, enabled: boolean } interface Taggable { setLabel (name: string, value: LabelValue): boolean; setTag (name: string, value: LabelValue): boolean; // Deprecated addLabels (labels: Labels): boolean; addTags (labels: Labels): boolean; // Deprecated } interface StartSpanFn { startSpan (name?: string, type?: string, options?: SpanOptions): Span | null; } // Inlined from @types/aws-lambda - start declare namespace AwsLambda { interface CognitoIdentity { cognitoIdentityId: string; cognitoIdentityPoolId: string; } interface ClientContext { client: ClientContextClient; custom?: any; env: ClientContextEnv; } interface ClientContextClient { installationId: string; appTitle: string; appVersionName: string; appVersionCode: string; appPackageName: string; } interface ClientContextEnv { platformVersion: string; platform: string; make: string; model: string; locale: string; } type Callback<TResult = any> = (error?: Error | null | string, result?: TResult) => void; interface Context { // Properties callbackWaitsForEmptyEventLoop: boolean; functionName: string; functionVersion: string; invokedFunctionArn: string; memoryLimitInMB: number; awsRequestId: string; logGroupName: string; logStreamName: string; identity?: CognitoIdentity; clientContext?: ClientContext; // Functions getRemainingTimeInMillis(): number; // Functions for compatibility with earlier Node.js Runtime v0.10.42 // For more details see http://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-using-old-runtime.html#nodejs-prog-model-oldruntime-context-methods done(error?: Error, result?: any): void; fail(error: Error | string): void; succeed(messageOrObject: any): void; succeed(message: string, object: any): void; } type Handler<TEvent = any, TResult = any> = ( event: TEvent, context: Context, callback: Callback<TResult>, ) => void | Promise<TResult>; } // Inlined from @types/connect - start declare namespace Connect { type NextFunction = (err?: any) => void; type ErrorHandleFunction = (err: any, req: IncomingMessage, res: ServerResponse, next: NextFunction) => void; }