diff --git a/index.d.ts b/index.d.ts index 3d567238fd3..65f5433f903 100644 --- a/index.d.ts +++ b/index.d.ts @@ -23,7 +23,7 @@ interface Tracer extends opentracing.Tracer { * @param {tracer.SpanOptions} [options] Options for the newly created span. * @returns {Span} A new Span object. */ - startSpan (name: string, options?: tracer.SpanOptions): tracer.Span; + startSpan(name: string, options?: tracer.SpanOptions): tracer.Span; /** * Injects the given SpanContext instance for cross-process propagation @@ -35,7 +35,7 @@ interface Tracer extends opentracing.Tracer { * @param {string} format The format of the carrier. * @param {any} carrier The carrier object. */ - inject (spanContext: tracer.SpanContext | tracer.Span, format: string, carrier: any): void; + inject(spanContext: tracer.SpanContext | tracer.Span, format: string, carrier: any): void; /** * Returns a SpanContext instance extracted from `carrier` in the given @@ -46,31 +46,31 @@ interface Tracer extends opentracing.Tracer { * The extracted SpanContext, or null if no such SpanContext could * be found in `carrier` */ - extract (format: string, carrier: any): tracer.SpanContext | null; + extract(format: string, carrier: any): tracer.SpanContext | null; /** * Initializes the tracer. This should be called before importing other libraries. */ - init (options?: tracer.TracerOptions): this; + init(options?: tracer.TracerOptions): this; /** * Sets the URL for the trace agent. This should only be called _after_ * init() is called, only in cases where the URL needs to be set after * initialization. */ - setUrl (url: string): this; + setUrl(url: string): this; /** * Enable and optionally configure a plugin. * @param plugin The name of a built-in plugin. * @param config Configuration options. Can also be `false` to disable the plugin. */ - use

(plugin: P, config?: Plugins[P] | boolean): this; + use

(plugin: P, config?: Plugins[P] | boolean): this; /** * Returns a reference to the current scope. */ - scope (): tracer.Scope; + scope(): tracer.Scope; /** * Instruments a function by automatically creating a span activated on its @@ -86,9 +86,9 @@ interface Tracer extends opentracing.Tracer { * * The function doesn't accept a callback and doesn't return a promise, in * which case the span will finish at the end of the function execution. */ - trace (name: string, fn: (span: tracer.Span) => T): T; - trace (name: string, fn: (span: tracer.Span, done: (error?: Error) => void) => T): T; - trace (name: string, options: tracer.TraceOptions & tracer.SpanOptions, fn: (span?: tracer.Span, done?: (error?: Error) => void) => T): T; + trace(name: string, fn: (span: tracer.Span) => T): T; + trace(name: string, fn: (span: tracer.Span, done: (error?: Error) => void) => T): T; + trace(name: string, options: tracer.TraceOptions & tracer.SpanOptions, fn: (span?: tracer.Span, done?: (error?: Error) => void) => T): T; /** * Wrap a function to automatically create a span activated on its @@ -104,9 +104,9 @@ interface Tracer extends opentracing.Tracer { * * The function doesn't accept a callback and doesn't return a promise, in * which case the span will finish at the end of the function execution. */ - wrap any> (name: string, fn: T): T; - wrap any> (name: string, options: tracer.TraceOptions & tracer.SpanOptions, fn: T): T; - wrap any> (name: string, options: (...args: any[]) => tracer.TraceOptions & tracer.SpanOptions, fn: T): T; + wrap any>(name: string, fn: T): T; + wrap any>(name: string, options: tracer.TraceOptions & tracer.SpanOptions, fn: T): T; + wrap any>(name: string, options: (...args: any[]) => tracer.TraceOptions & tracer.SpanOptions, fn: T): T; /** * Returns an HTML string containing tags that should be included in @@ -119,14 +119,14 @@ interface Tracer extends opentracing.Tracer { * Note that this feature is currently not supported by the backend and * using it will have no effect. */ - getRumData (): string; + getRumData(): string; /** * Links an authenticated user to the current trace. * @param {User} user Properties of the authenticated user. Accepts custom fields. * @returns {Tracer} The Tracer instance for chaining. */ - setUser (user: tracer.User): Tracer; + setUser(user: tracer.User): Tracer; appsec: tracer.Appsec; @@ -177,7 +177,7 @@ interface Tracer extends opentracing.Tracer { * * Work with storage('baggage'), therefore do not follow the same continuity as other APIs. */ - setBaggageItem (key: string, value: string, metadata?: object): Record; + setBaggageItem(key: string, value: string, metadata?: object): Record; /** * @experimental * @@ -185,7 +185,7 @@ interface Tracer extends opentracing.Tracer { * * @see https://opentelemetry.io/docs/specs/otel/baggage/api/#get-value */ - getBaggageItem (key: string): string | undefined; + getBaggageItem(key: string): string | undefined; /** * @experimental * @@ -193,7 +193,7 @@ interface Tracer extends opentracing.Tracer { * * @see https://opentelemetry.io/docs/specs/otel/baggage/api/#get-all-values */ - getAllBaggageItems (): Record; + getAllBaggageItems(): Record; /** * @experimental * @@ -201,7 +201,7 @@ interface Tracer extends opentracing.Tracer { * * @see https://opentelemetry.io/docs/specs/otel/baggage/api/#remove-value */ - removeBaggageItem (key: string): Record; + removeBaggageItem(key: string): Record; /** * @experimental @@ -210,7 +210,7 @@ interface Tracer extends opentracing.Tracer { * * @see https://opentelemetry.io/docs/specs/otel/baggage/api/#remove-all-values */ - removeAllBaggageItems (): Record; + removeAllBaggageItems(): Record; } // left out of the namespace, so it @@ -225,6 +225,7 @@ interface Plugins { "apollo": tracer.plugins.apollo; "avsc": tracer.plugins.avsc; "aws-sdk": tracer.plugins.aws_sdk; + "azure-cosmos": tracer.plugins.azure_cosmos; "azure-event-hubs": tracer.plugins.azure_event_hubs; "azure-functions": tracer.plugins.azure_functions; "azure-service-bus": tracer.plugins.azure_service_bus; @@ -299,11 +300,11 @@ interface Plugins { declare namespace tracer { export type SpanOptions = Omit & { - /** - * Set childOf to 'null' to create a root span without a parent, even when a parent span - * exists in the current async context. If 'undefined' the parent will be inferred from the - * existing async context. - */ + /** + * Set childOf to 'null' to create a root span without a parent, even when a parent span + * exists in the current async context. If 'undefined' the parent will be inferred from the + * existing async context. + */ childOf?: opentracing.Span | opentracing.SpanContext | null; /** * Optional name of the integration that crated this span. @@ -344,7 +345,7 @@ declare namespace tracer { * have children. */ export interface Span extends opentracing.Span { - context (): SpanContext; + context(): SpanContext; /** * Causally links another span to the current span @@ -355,7 +356,7 @@ declare namespace tracer { * @param {Object} attributes An optional key value pair of arbitrary values. * @returns {void} */ - addLink (context: SpanContext, attributes?: Object): void; + addLink(context: SpanContext, attributes?: Object): void; /** * Adds a single link to the span. @@ -365,7 +366,7 @@ declare namespace tracer { * * @param link the link to add. */ - addLink (link: { context: SpanContext, attributes?: Object }): void; + addLink(link: { context: SpanContext, attributes?: Object }): void; /** * Adds multiple links to the span. @@ -375,7 +376,7 @@ declare namespace tracer { * * @param links the links to add. */ - addLinks (links: { context: SpanContext, attributes?: Object }[]): void; + addLinks(links: { context: SpanContext, attributes?: Object }[]): void; } /** @@ -392,17 +393,17 @@ declare namespace tracer { /** * Returns the string representation of the internal trace ID. */ - toTraceId (): string; + toTraceId(): string; /** * Returns the string representation of the internal span ID. */ - toSpanId (): string; + toSpanId(): string; /** * Returns the string representation used for DBM integration. */ - toTraceparent (): string; + toTraceparent(): string; } /** @@ -644,22 +645,22 @@ declare namespace tracer { */ runtimeMetrics?: boolean | { - /** - * @env DD_RUNTIME_METRICS_ENABLED - * Programmatic configuration takes precedence over the environment variables listed above. - */ + /** + * @env DD_RUNTIME_METRICS_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. + */ enabled?: boolean, - /** - * @env DD_RUNTIME_METRICS_GC_ENABLED - * Programmatic configuration takes precedence over the environment variables listed above. - */ + /** + * @env DD_RUNTIME_METRICS_GC_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. + */ gc?: boolean, - /** - * @env DD_RUNTIME_METRICS_EVENT_LOOP_ENABLED - * Programmatic configuration takes precedence over the environment variables listed above. - */ + /** + * @env DD_RUNTIME_METRICS_EVENT_LOOP_ENABLED + * Programmatic configuration takes precedence over the environment variables listed above. + */ eventLoop?: boolean } @@ -1017,9 +1018,9 @@ declare namespace tracer { * Programmatic configuration takes precedence over the environment variables listed above. */ mode?: - 'anonymous' | 'anon' | 'safe' | - 'identification' | 'ident' | 'extended' | - 'disabled' + 'anonymous' | 'anon' | 'safe' | + 'identification' | 'ident' | 'extended' | + 'disabled' }, /** * Configuration for Api Security @@ -1463,7 +1464,7 @@ declare namespace tracer { * @param value The amount to increment the stat by. * @param tags Tags to pass along, such as `{ foo: 'bar' }`. Values are combined with config.tags. */ - increment(stat: string, value?: number, tags?: Record | string[]): void + increment(stat: string, value?: number, tags?: Record | string[]): void /** * Decrements a metric by the specified value, optionally specifying tags. @@ -1471,7 +1472,7 @@ declare namespace tracer { * @param value The amount to decrement the stat by. * @param tags Tags to pass along, such as `{ foo: 'bar' }`. Values are combined with config.tags. */ - decrement(stat: string, value?: number, tags?: Record | string[]): void + decrement(stat: string, value?: number, tags?: Record | string[]): void /** * Sets a distribution value, optionally specifying tags. @@ -1479,7 +1480,7 @@ declare namespace tracer { * @param value The amount to increment the stat by. * @param tags Tags to pass along, such as `{ foo: 'bar' }`. Values are combined with config.tags. */ - distribution(stat: string, value?: number, tags?: Record | string[]): void + distribution(stat: string, value?: number, tags?: Record | string[]): void /** * Sets a gauge value, optionally specifying tags. @@ -1487,7 +1488,7 @@ declare namespace tracer { * @param value The amount to increment the stat by. * @param tags Tags to pass along, such as `{ foo: 'bar' }`. Values are combined with config.tags. */ - gauge(stat: string, value?: number, tags?: Record | string[]): void + gauge(stat: string, value?: number, tags?: Record | string[]): void /** * Sets a histogram value, optionally specifying tags. @@ -1495,7 +1496,7 @@ declare namespace tracer { * @param value The amount to increment the stat by. * @param tags Tags to pass along, such as `{ foo: 'bar' }`. Values are combined with config.tags. */ - histogram(stat: string, value?: number, tags?: Record | string[]): void + histogram(stat: string, value?: number, tags?: Record | string[]): void /** * Forces any unsent metrics to be sent @@ -1515,7 +1516,7 @@ declare namespace tracer { * @param target The target of data (topic, exchange, stream name). * @param carrier The carrier object to inject DSM context into. */ - setProduceCheckpoint (type: string, target: string, carrier: any): void; + setProduceCheckpoint(type: string, target: string, carrier: any): void; /** * Sets a consume checkpoint and extracts DSM context from the provided carrier. @@ -1525,7 +1526,7 @@ declare namespace tracer { * @param manualCheckpoint Whether this checkpoint was manually set. Defaults to true. * @returns The DSM context associated with the current pathway. */ - setConsumeCheckpoint (type: string, source: string, carrier: any, manualCheckpoint?: boolean): any; + setConsumeCheckpoint(type: string, source: string, carrier: any, manualCheckpoint?: boolean): any; /** * Records a transaction ID at a named checkpoint without pathway propagation. @@ -1647,7 +1648,7 @@ declare namespace tracer { /** * Metadata about this provider. */ - metadata: { name: string; [key: string]: any }; + metadata: { name: string;[key: string]: any }; /** * Resolves a boolean flag value. @@ -1658,7 +1659,7 @@ declare namespace tracer { * @param logger Optional logger instance * @returns Promise resolving to evaluation result with value and reason */ - resolveBooleanEvaluation(flagKey: string, defaultValue: boolean, context: object, logger: object): Promise<{ value: boolean; reason?: string; [key: string]: any }>; + resolveBooleanEvaluation(flagKey: string, defaultValue: boolean, context: object, logger: object): Promise<{ value: boolean; reason?: string;[key: string]: any }>; /** * Resolves a string flag value. @@ -1669,7 +1670,7 @@ declare namespace tracer { * @param logger Optional logger instance * @returns Promise resolving to evaluation result with value and reason */ - resolveStringEvaluation(flagKey: string, defaultValue: string, context: object, logger: object): Promise<{ value: string; reason?: string; [key: string]: any }>; + resolveStringEvaluation(flagKey: string, defaultValue: string, context: object, logger: object): Promise<{ value: string; reason?: string;[key: string]: any }>; /** * Resolves a number flag value. @@ -1680,7 +1681,7 @@ declare namespace tracer { * @param logger Optional logger instance * @returns Promise resolving to evaluation result with value and reason */ - resolveNumberEvaluation(flagKey: string, defaultValue: number, context: object, logger: object): Promise<{ value: number; reason?: string; [key: string]: any }>; + resolveNumberEvaluation(flagKey: string, defaultValue: number, context: object, logger: object): Promise<{ value: number; reason?: string;[key: string]: any }>; /** * Resolves an object flag value. @@ -1691,7 +1692,7 @@ declare namespace tracer { * @param logger Optional logger instance * @returns Promise resolving to evaluation result with value and reason */ - resolveObjectEvaluation(flagKey: string, defaultValue: T, context: object, logger: object): Promise<{ value: T; reason?: string; [key: string]: any }>; + resolveObjectEvaluation(flagKey: string, defaultValue: T, context: object, logger: object): Promise<{ value: T; reason?: string;[key: string]: any }>; } export namespace aiguard { @@ -1870,7 +1871,7 @@ declare namespace tracer { * The promise rejects with AIGuardAbortError when `opts.block` is true and the evaluation result would block the request. * The promise rejects with AIGuardClientError when communication with the AI Guard service fails. */ - evaluate (messages: Message[], opts?: { block?: boolean }): Promise; + evaluate(messages: Message[], opts?: { block?: boolean }): Promise; } } @@ -1897,7 +1898,7 @@ declare namespace tracer { * * @returns {Span} The active span. */ - active (): Span | null; + active(): Span | null; /** * Activate a span in the scope of a function. @@ -1906,7 +1907,7 @@ declare namespace tracer { * @param {Function} fn Function that will have the span activated on its scope. * @returns The return value of the provided function. */ - activate (span: Span, fn: ((...args: any[]) => T)): T; + activate(span: Span, fn: ((...args: any[]) => T)): T; /** * Binds a target to the provided span, or the active span if omitted. @@ -1915,9 +1916,9 @@ declare namespace tracer { * @param {Span} [span=scope.active()] The span to activate. * @returns The bound target. */ - bind void> (fn: T, span?: Span | null): T; - bind V> (fn: T, span?: Span | null): T; - bind (fn: Promise, span?: Span | null): Promise; + bind void>(fn: T, span?: Span | null): T; + bind V>(fn: T, span?: Span | null): T; + bind(fn: Promise, span?: Span | null): Promise; } /** @hidden */ @@ -1944,7 +1945,7 @@ declare namespace tracer { } /** @hidden */ - interface Instrumentation extends Integration, Analyzable {} + interface Instrumentation extends Integration, Analyzable { } /** @hidden */ interface Http extends Instrumentation { @@ -2166,43 +2167,43 @@ declare namespace tracer { } /** @hidden */ - interface Prisma extends Instrumentation {} + interface Prisma extends Instrumentation { } /** @hidden */ - interface PrismaClient extends Prisma {} + interface PrismaClient extends Prisma { } /** @hidden */ - interface PrismaEngine extends Prisma {} + interface PrismaEngine extends Prisma { } /** * This plugin automatically instruments the * [aerospike](https://github.com/aerospike/aerospike-client-nodejs) for module versions >= v3.16.2. */ - interface aerospike extends Instrumentation {} + interface aerospike extends Instrumentation { } /** * This plugin automatically instruments the * [Vercel AI SDK](https://ai-sdk.dev/docs/introduction) module. */ - interface ai extends Instrumentation {} + interface ai extends Instrumentation { } /** * This plugin automatically instruments the * [amqp10](https://github.com/noodlefrenzy/node-amqp10) module. */ - interface amqp10 extends Instrumentation {} + interface amqp10 extends Instrumentation { } /** * This plugin automatically instruments the * [amqplib](https://github.com/squaremo/amqp.node) module. */ - interface amqplib extends Instrumentation {} + interface amqplib extends Instrumentation { } /** * This plugin automatically instruments the * [anthropic](https://www.npmjs.com/package/@anthropic-ai/sdk) module. */ - interface anthropic extends Instrumentation {} + interface anthropic extends Instrumentation { } /** * Currently this plugin automatically instruments @@ -2251,7 +2252,7 @@ declare namespace tracer { * This plugin automatically patches the [avsc](https://github.com/mtth/avsc) module * to collect avro message schemas when Datastreams Monitoring is enabled. */ - interface avsc extends Integration {} + interface avsc extends Integration { } /** * This plugin automatically instruments the @@ -2285,11 +2286,17 @@ declare namespace tracer { [key: string]: boolean | Object | undefined; } + /** + * This plugin automatically instruments the + * @azure/cosmos module + */ + interface azure_cosmos extends Integration { } + /** * This plugin automatically instruments the * @azure/event-hubs module */ - interface azure_event_hubs extends Integration {} + interface azure_event_hubs extends Integration { } /** * This plugin automatically instruments the @@ -2306,13 +2313,13 @@ declare namespace tracer { * This plugin automatically instruments the * @azure/service-bus module */ - interface azure_service_bus extends Integration {} + interface azure_service_bus extends Integration { } /** * This plugin automatically instruments the * durable-functions module */ - interface azure_durable_functions extends Integration {} + interface azure_durable_functions extends Integration { } /** * This plugin patches the [bunyan](https://github.com/trentm/node-bunyan) @@ -2324,57 +2331,57 @@ declare namespace tracer { * This plugin automatically instruments the * [bullmq](https://github.com/npmjs/package/bullmq) message queue library. */ - interface bullmq extends Instrumentation {} + interface bullmq extends Instrumentation { } - interface bunyan extends Integration {} + interface bunyan extends Integration { } /** * This plugin automatically instruments the * [cassandra-driver](https://github.com/datastax/nodejs-driver) module. */ - interface cassandra_driver extends Instrumentation {} + interface cassandra_driver extends Instrumentation { } /** * This plugin automatically instruments the * [child_process](https://nodejs.org/api/child_process.html) module. */ - interface child_process extends Instrumentation {} + interface child_process extends Instrumentation { } /** * This plugin automatically instruments the * [confluentinc-kafka-javascript](https://github.com/confluentinc/confluent-kafka-js) module. */ - interface confluentinc_kafka_javascript extends Instrumentation {} + interface confluentinc_kafka_javascript extends Instrumentation { } /** * This plugin automatically instruments the * [connect](https://github.com/senchalabs/connect) module. */ - interface connect extends HttpServer {} + interface connect extends HttpServer { } /** * This plugin automatically instruments the * [couchbase](https://www.npmjs.com/package/couchbase) module. */ - interface couchbase extends Instrumentation {} + interface couchbase extends Instrumentation { } /** * This plugin automatically instruments the * [cucumber](https://www.npmjs.com/package/@cucumber/cucumber) module. */ - interface cucumber extends Integration {} + interface cucumber extends Integration { } /** * This plugin automatically instruments the * [cypress](https://github.com/cypress-io/cypress) module. */ - interface cypress extends Integration {} + interface cypress extends Integration { } /** * This plugin automatically instruments the * [dns](https://nodejs.org/api/dns.html) module. */ - interface dns extends Instrumentation {} + interface dns extends Instrumentation { } /** * This plugin automatically instruments the @@ -2396,64 +2403,64 @@ declare namespace tracer { * This plugin automatically instruments the * [express](http://expressjs.com/) module. */ - interface express extends HttpServer {} + interface express extends HttpServer { } /** * This plugin automatically instruments the * [fastify](https://www.fastify.io/) module. */ - interface fastify extends HttpServer {} + interface fastify extends HttpServer { } /** * This plugin automatically instruments the * [fetch](https://nodejs.org/api/globals.html#fetch) global. */ - interface fetch extends HttpClient {} + interface fetch extends HttpClient { } /** * This plugin patches the [find-my-way](https://github.com/delvedor/find-my-way) router. */ - interface find_my_way extends Integration {} + interface find_my_way extends Integration { } /** * This plugin automatically instruments Node.js core fs operations. */ - interface fs extends Instrumentation {} + interface fs extends Instrumentation { } /** * This plugin patches the [generic-pool](https://github.com/coopernurse/node-pool) * module to bind the callbacks the the caller context. */ - interface generic_pool extends Integration {} + interface generic_pool extends Integration { } /** * This plugin automatically instruments the * [@google-cloud/pubsub](https://github.com/googleapis/nodejs-pubsub) module. */ - interface google_cloud_pubsub extends Integration {} + interface google_cloud_pubsub extends Integration { } /** * This plugin automatically instruments the * [@google-cloud/vertexai](https://github.com/googleapis/nodejs-vertexai) module. */ - interface google_cloud_vertexai extends Integration {} + interface google_cloud_vertexai extends Integration { } - /** - * This plugin automatically instruments the - * [@google-genai](https://github.com/googleapis/js-genai) module. - */ - interface google_genai extends Integration {} + /** + * This plugin automatically instruments the + * [@google-genai](https://github.com/googleapis/js-genai) module. + */ + interface google_genai extends Integration { } - /** @hidden */ - interface ExecutionArgs { - schema: any, - document: any, - rootValue?: any, - contextValue?: any, - variableValues?: any, - operationName?: string, - fieldResolver?: any, - typeResolver?: any, + /** @hidden */ + interface ExecutionArgs { + schema: any, + document: any, + rootValue?: any, + contextValue?: any, + variableValues?: any, + operationName?: string, + fieldResolver?: any, + typeResolver?: any, } /** @@ -2557,13 +2564,13 @@ declare namespace tracer { * This plugin automatically instruments the * [hapi](https://hapijs.com/) module. */ - interface hapi extends HttpServer {} + interface hapi extends HttpServer { } /** * This plugin automatically instruments the * [hono](https://hono.dev/) module. */ - interface hono extends HttpServer {} + interface hono extends HttpServer { } /** * This plugin automatically instruments the @@ -2737,67 +2744,67 @@ declare namespace tracer { * This plugin automatically instruments the * [jest](https://github.com/jestjs/jest) module. */ - interface jest extends Integration {} + interface jest extends Integration { } /** * This plugin patches the [knex](https://knexjs.org/) * module to bind the promise callback the the caller context. */ - interface knex extends Integration {} + interface knex extends Integration { } /** * This plugin automatically instruments the * [koa](https://koajs.com/) module. */ - interface koa extends HttpServer {} + interface koa extends HttpServer { } /** * This plugin automatically instruments the * [kafkajs](https://kafka.js.org/) module. */ - interface kafkajs extends Instrumentation {} + interface kafkajs extends Instrumentation { } /** * This plugin automatically instruments the * [langchain](https://js.langchain.com/) module */ - interface langchain extends Instrumentation {} + interface langchain extends Instrumentation { } /** * This plugin automatically instruments the * [langgraph](https://github.com/npmjs/package/langgraph) library. */ - interface langgraph extends Instrumentation {} + interface langgraph extends Instrumentation { } - /** - * This plugin automatically instruments the - * [ldapjs](https://github.com/ldapjs/node-ldapjs/) module. - */ - interface ldapjs extends Instrumentation {} + /** + * This plugin automatically instruments the + * [ldapjs](https://github.com/ldapjs/node-ldapjs/) module. + */ + interface ldapjs extends Instrumentation { } /** * This plugin automatically instruments the * [mariadb](https://github.com/mariadb-corporation/mariadb-connector-nodejs) module. */ - interface mariadb extends mysql {} + interface mariadb extends mysql { } /** * This plugin automatically instruments the * [memcached](https://github.com/3rd-Eden/memcached) module. */ - interface memcached extends Instrumentation {} + interface memcached extends Instrumentation { } /** * This plugin automatically instruments the * [microgateway-core](https://github.com/apigee/microgateway-core) module. */ - interface microgateway_core extends HttpServer {} + interface microgateway_core extends HttpServer { } /** * This plugin automatically instruments the * [mocha](https://mochajs.org/) module. */ - interface mocha extends Integration {} + interface mocha extends Integration { } /** * This plugin automatically instruments the @@ -2839,7 +2846,7 @@ declare namespace tracer { * This plugin automatically instruments the * [mongoose](https://mongoosejs.com/) module. */ - interface mongoose extends Instrumentation {} + interface mongoose extends Instrumentation { } /** * This plugin automatically instruments the @@ -2853,13 +2860,13 @@ declare namespace tracer { * This plugin automatically instruments the * [mysql2](https://github.com/sidorares/node-mysql2) module. */ - interface mysql2 extends mysql {} + interface mysql2 extends mysql { } /** * This plugin automatically instruments the * [net](https://nodejs.org/api/net.html) module. */ - interface net extends Instrumentation {} + interface net extends Instrumentation { } /** * This plugin automatically instruments the @@ -2880,7 +2887,7 @@ declare namespace tracer { /** * This plugin integrates with [nyc](https://github.com/istanbuljs/nyc) for CI visibility. */ - interface nyc extends Integration {} + interface nyc extends Integration { } /** * This plugin automatically instruments the @@ -2895,13 +2902,13 @@ declare namespace tracer { * [DogStatsD](https://docs.datadoghq.com/developers/dogstatsd/?tab=hostagent#setup) * in the agent. */ - interface openai extends Instrumentation {} + interface openai extends Instrumentation { } /** * This plugin automatically instruments the * [opensearch](https://github.com/opensearch-project/opensearch-js) module. */ - interface opensearch extends elasticsearch {} + interface opensearch extends elasticsearch { } /** * This plugin automatically instruments the @@ -2918,7 +2925,7 @@ declare namespace tracer { * This plugin automatically instruments the * [playwright](https://github.com/microsoft/playwright) module. */ - interface playwright extends Integration {} + interface playwright extends Integration { } /** * This plugin automatically instruments the @@ -2945,7 +2952,7 @@ declare namespace tracer { * [logInjection](interfaces/traceroptions.html#logInjection) option is enabled * on the tracer. */ - interface pino extends Integration {} + interface pino extends Integration { } /** * This plugin automatically instruments the @@ -2967,7 +2974,7 @@ declare namespace tracer { * This plugin automatically patches the [protobufjs](https://protobufjs.github.io/protobuf.js/) * to collect protobuf message schemas when Datastreams Monitoring is enabled. */ - interface protobufjs extends Integration {} + interface protobufjs extends Integration { } /** * This plugin automatically instruments the @@ -3020,25 +3027,25 @@ declare namespace tracer { * This plugin automatically instruments the * [restify](http://restify.com/) module. */ - interface restify extends HttpServer {} + interface restify extends HttpServer { } /** * This plugin automatically instruments the * [rhea](https://github.com/amqp/rhea) module. */ - interface rhea extends Instrumentation {} + interface rhea extends Instrumentation { } /** * This plugin automatically instruments the * [router](https://github.com/pillarjs/router) module. */ - interface router extends Integration {} + interface router extends Integration { } /** * This plugin automatically instruments the * [selenium-webdriver](https://www.npmjs.com/package/selenium-webdriver) module. */ - interface selenium extends Integration {} + interface selenium extends Integration { } /** * This plugin automatically instruments the @@ -3065,24 +3072,24 @@ declare namespace tracer { * This plugin automatically instruments the * [tedious](https://github.com/tediousjs/tedious/) module. */ - interface tedious extends Instrumentation {} + interface tedious extends Instrumentation { } /** * This plugin automatically instruments the * [undici](https://github.com/nodejs/undici) module. */ - interface undici extends HttpClient {} + interface undici extends HttpClient { } /** * This plugin automatically instruments the * [vitest](https://github.com/vitest-dev/vitest) module. */ - interface vitest extends Integration {} + interface vitest extends Integration { } /** * This plugin implements shared web request instrumentation helpers. */ - interface web extends HttpServer {} + interface web extends HttpServer { } /** * This plugin patches the [winston](https://github.com/winstonjs/winston) @@ -3090,7 +3097,7 @@ declare namespace tracer { * [logInjection](interfaces/traceroptions.html#logInjection) option is enabled * on the tracer. */ - interface winston extends Integration {} + interface winston extends Integration { } /** * This plugin automatically instruments the @@ -3519,12 +3526,12 @@ declare namespace tracer { /** * Enable LLM Observability tracing. */ - enable (options: LLMObsEnableOptions): void, + enable(options: LLMObsEnableOptions): void, /** * Disable LLM Observability tracing. */ - disable (): void, + disable(): void, /** * Instruments a function by automatically creating a span activated on its @@ -3543,7 +3550,7 @@ declare namespace tracer { * @param options Optional LLM Observability span options. * @returns The return value of the function. */ - trace (options: LLMObsNamedSpanOptions, fn: (span: tracer.Span, done: (error?: Error) => void) => T): T + trace(options: LLMObsNamedSpanOptions, fn: (span: tracer.Span, done: (error?: Error) => void) => T): T /** * Wrap a function to automatically create a span activated on its @@ -3562,7 +3569,7 @@ declare namespace tracer { * @param options Optional LLM Observability span options. * @returns A new function that wraps the provided function with span creation. */ - wrap any> (options: LLMObsNamelessSpanOptions, fn: T): T + wrap any>(options: LLMObsNamelessSpanOptions, fn: T): T /** * Decorate a function in a javascript runtime that supports function decorators. @@ -3573,7 +3580,7 @@ declare namespace tracer { * * @param options Optional LLM Observability span options. */ - decorate (options: llmobs.LLMObsNamelessSpanOptions): any + decorate(options: llmobs.LLMObsNamelessSpanOptions): any /** * Returns a representation of a span to export its span and trace IDs. @@ -3581,7 +3588,7 @@ declare namespace tracer { * @param span Optional span to export. * @returns An object containing the span and trace IDs. */ - exportSpan (span?: tracer.Span): llmobs.ExportedLLMObsSpan + exportSpan(span?: tracer.Span): llmobs.ExportedLLMObsSpan /** @@ -3604,8 +3611,8 @@ declare namespace tracer { * @param span The span to annotate (defaults to the current LLM Observability span if not provided) * @param options An object containing the inputs, outputs, tags, metadata, and metrics to set on the span. */ - annotate (options: llmobs.AnnotationOptions): void - annotate (span: tracer.Span | undefined, options: llmobs.AnnotationOptions): void + annotate(options: llmobs.AnnotationOptions): void + annotate(span: tracer.Span | undefined, options: llmobs.AnnotationOptions): void /** * Register a processor to be called on each LLMObs span. @@ -3619,19 +3626,19 @@ declare namespace tracer { * @param processor A function that will be called for each span. * @throws {Error} If a processor is already registered. */ - registerProcessor (processor: ((span: LLMObservabilitySpan) => LLMObservabilitySpan | null)): void + registerProcessor(processor: ((span: LLMObservabilitySpan) => LLMObservabilitySpan | null)): void /** * Deregister a processor. */ - deregisterProcessor (): void + deregisterProcessor(): void /** * Submits a custom evaluation metric for a given span ID and trace ID. * @param spanContext The span context of the span to submit the evaluation metric for. * @param options An object containing the label, metric type, value, and tags of the evaluation metric. */ - submitEvaluation (spanContext: llmobs.ExportedLLMObsSpan, options: llmobs.EvaluationOptions): void + submitEvaluation(spanContext: llmobs.ExportedLLMObsSpan, options: llmobs.EvaluationOptions): void /** @@ -3640,7 +3647,7 @@ declare namespace tracer { * @param fn The callback over which to apply the annotation context options. * @returns The result of the function. */ - annotationContext (options: llmobs.AnnotationContextOptions, fn: () => T): T + annotationContext(options: llmobs.AnnotationContextOptions, fn: () => T): T /** * Execute a function within a routing context, directing all LLMObs spans to a specific Datadog organization. @@ -3648,12 +3655,12 @@ declare namespace tracer { * @param fn The callback over which to apply the routing context. * @returns The result of the function. */ - routingContext (options: llmobs.RoutingContextOptions, fn: () => T): T + routingContext(options: llmobs.RoutingContextOptions, fn: () => T): T /** * Flushes any remaining spans and evaluation metrics to LLM Observability. */ - flush (): void + flush(): void } interface LLMObservabilitySpan { @@ -3672,7 +3679,7 @@ declare namespace tracer { * @param key The key of the tag to get. * @returns The value of the tag, or `undefined` if the tag does not exist. */ - getTag (key: string): string | undefined + getTag(key: string): string | undefined } interface EvaluationOptions { diff --git a/packages/datadog-instrumentations/src/azure-cosmos.js b/packages/datadog-instrumentations/src/azure-cosmos.js new file mode 100644 index 00000000000..291b97e1176 --- /dev/null +++ b/packages/datadog-instrumentations/src/azure-cosmos.js @@ -0,0 +1,7 @@ +'use strict' + +const { addHook, getHooks } = require('./helpers/instrument') + +for (const hook of getHooks('@azure/cosmos')) { + addHook(hook, exports => exports) +} diff --git a/packages/datadog-instrumentations/src/helpers/hooks.js b/packages/datadog-instrumentations/src/helpers/hooks.js index 3d83b13e406..ad1ea702103 100644 --- a/packages/datadog-instrumentations/src/helpers/hooks.js +++ b/packages/datadog-instrumentations/src/helpers/hooks.js @@ -7,6 +7,7 @@ module.exports = { '@langchain/langgraph': { esmFirst: true, fn: () => require('../langgraph') }, 'apollo-server-core': () => require('../apollo-server-core'), '@aws-sdk/smithy-client': () => require('../aws-sdk'), + '@azure/cosmos': () => require('../azure-cosmos'), '@azure/event-hubs': () => require('../azure-event-hubs'), '@azure/functions': () => require('../azure-functions'), 'durable-functions': () => require('../azure-durable-functions'), diff --git a/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/azure-cosmos.js b/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/azure-cosmos.js new file mode 100644 index 00000000000..aba16947d9c --- /dev/null +++ b/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/azure-cosmos.js @@ -0,0 +1,48 @@ +module.exports = [{ + module: { + name: '@azure/cosmos', + versionRange: '>=4.4.0', + filePath: 'dist/browser/plugins/Plugin.js' // file containing the target method + }, + functionQuery: { + functionName: 'executePlugins', + kind: 'Async' // Async | Callback | Sync + }, + channelName: 'executePlugins' +}, +{ + module: { + name: '@azure/cosmos', + versionRange: '>=4.4.0', + filePath: 'dist/commonjs/plugins/Plugin.js' // file containing the target method + }, + functionQuery: { + functionName: 'executePlugins', + kind: 'Async' // Async | Callback | Sync + }, + channelName: 'executePlugins' +}, +{ + module: { + name: '@azure/cosmos', + versionRange: '>=4.4.0', + filePath: 'dist/esm/plugins/Plugin.js' // file containing the target method + }, + functionQuery: { + functionName: 'executePlugins', + kind: 'Async' // Async | Callback | Sync + }, + channelName: 'executePlugins' +}, +{ + module: { + name: '@azure/cosmos', + versionRange: '>=4.4.0', + filePath: 'dist/react-native/plugins/Plugin.js' // file containing the target method + }, + functionQuery: { + functionName: 'executePlugins', + kind: 'Async' // Async | Callback | Sync + }, + channelName: 'executePlugins' +}] diff --git a/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/index.js b/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/index.js index 28b13f15191..f52be1e442c 100644 --- a/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/index.js +++ b/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/index.js @@ -2,6 +2,7 @@ module.exports = [ ...require('./ai'), + ...require('./azure-cosmos'), ...require('./bullmq'), ...require('./langchain'), ...require('./langgraph'), diff --git a/packages/datadog-plugin-azure-cosmos/src/index.js b/packages/datadog-plugin-azure-cosmos/src/index.js new file mode 100644 index 00000000000..1063ce8aca7 --- /dev/null +++ b/packages/datadog-plugin-azure-cosmos/src/index.js @@ -0,0 +1,158 @@ +'use strict' + +const { storage } = require('../../datadog-core') +const log = require('../../dd-trace/src/log') + +const DatabasePlugin = require('../../dd-trace/src/plugins/database') + +class AzureCosmosPlugin extends DatabasePlugin { + static id = 'azure-cosmos' + // Channel prefix determines how the plugin subscribes to instrumentation events. + // Three patterns exist — set `static prefix` explicitly based on instrumentation type: + // + // Orchestrion: static prefix = 'tracing:orchestrion::' + // Shimmer + tracingChannel: static prefix = 'tracing:apm::' + // Shimmer + manual channels: omit prefix — defaults to `apm:${id}:${operation}` + static prefix = 'tracing:orchestrion:@azure/cosmos:executePlugins' + static peerServicePrecursors = ['db.name'] + + operationName() { + return 'cosmosdb.query' + } + + asyncEnd(ctx) { + var span = ctx.currentStore?.span; + if (span != null) { + const result = ctx.result; + if (result != null) { + if (result.code != null) { + span.setTag("http.status_code", result.code); + } + if (result.substatus != undefined) { + span.setTag("http.status_subcode", result.substatus); + } + } + span.finish(); + } + } + + error(ctx) { + var span = ctx.currentStore?.span; + this.addError(ctx.error, span); + if (span != null) { + const error = ctx.error; + if (error != null) { + if (error.code != null) { + span.setTag("http.status_code", error.code); + } + if (error.substatus != undefined) { + span.setTag("http.status_subcode", error.substatus); + } + } + } + } + + bindStart(ctx) { + // executePlugins(diagnosticNode, requestContext, next, on) — `on` is PluginOn.request | PluginOn.operation + const pluginOn = ctx.arguments?.[3]; + + + const requestContext = ctx.arguments?.[1]; + const resource = this.getResource(requestContext); + const { dbName, containerName } = this.getDbInfo(requestContext); + const connectionMode = this.getConnectionMode(requestContext); + const { outHost, userAgent } = this.getHttpInfo(requestContext); + // getting really specific here but otherwise we get doubled up read spans + if (pluginOn === "request" && ((!resource.includes("read") && !resource.includes("query")) || (resource.includes("read") && requestContext.resourceType != "docs"))) { + ctx.currentStore = { ...(storage('legacy').getStore() || {}) }; + return ctx.currentStore; + } + + this.startSpan(this.operationName(), { + resource: resource, + type: 'cosmosdb', + kind: 'client', + meta: { + component: 'azure_cosmos', + 'db.system': 'cosmosdb', + 'db.name': dbName, + 'cosmosdb.container': containerName, + 'cosmosdb.connection.mode': connectionMode, + 'http.useragent': userAgent, + 'out.host': outHost, + } + }, ctx); + + return ctx.currentStore; + } + + getResource(requestContext) { + if (requestContext != null) { + const operationType = requestContext.operationType; + const resourceLink = requestContext.path; + return operationType + " " + resourceLink; + } + return null; + } + + + getDbInfo(requestContext) { + var dbName = null; + var containerName = null; + if (requestContext != null) { + if (requestContext.operationType === "create" && requestContext.resourceType === "dbs" && requestContext.body != null) { + if (requestContext.body.id != null) { + dbName = requestContext.body.id; + } + } + + var resourceLink = requestContext.path; + if (resourceLink != null) { + if (resourceLink.startsWith("/") && resourceLink.length > 1) { + resourceLink = resourceLink.slice(1); + } + const parts = resourceLink.split("/"); + if (parts.length > 0 && parts[0].toLowerCase() === "dbs" && parts.length >= 2) { + dbName = parts[1]; + if (parts.length >= 4) { + if (parts[2].toLowerCase() === "colls" && parts[3].toLowerCase() !== "") { + containerName = parts[3]; + } + } + } + } + } + + return { dbName, containerName }; + } + + getConnectionMode(requestContext) { + if (requestContext != null) { + const mode = requestContext.client?.connectionPolicy?.connectionMode; + if (mode == 0) { + return "gateway"; + } else if (mode == 1) { + return "direct"; + } else { + return "other"; + } + } + return null; + } + + getHttpInfo(requestContext) { + var outHost = null; + var userAgent = null; + if (requestContext != null) { + outHost = requestContext.client?.cosmosClientOptions?.endpoint; + const headers = requestContext.headers; + if (headers != null) { + userAgent = headers['User-Agent']; + } + } + return { outHost, userAgent }; + } + +} + +module.exports = AzureCosmosPlugin diff --git a/packages/datadog-plugin-http/src/index.js b/packages/datadog-plugin-http/src/index.js index dcf0abed05e..8520b7c6ff7 100644 --- a/packages/datadog-plugin-http/src/index.js +++ b/packages/datadog-plugin-http/src/index.js @@ -14,7 +14,7 @@ const HttpServerPlugin = require('./server') */ class HttpPlugin extends CompositePlugin { static id = 'http' - static get plugins () { + static get plugins() { const plugins = {} // Load push subscription plugin first (if enabled) for GCP Cloud Run diff --git a/packages/dd-trace/src/config/supported-configurations.json b/packages/dd-trace/src/config/supported-configurations.json index d99dc7bd585..a9a64a0abdd 100644 --- a/packages/dd-trace/src/config/supported-configurations.json +++ b/packages/dd-trace/src/config/supported-configurations.json @@ -2206,6 +2206,13 @@ "default": "true" } ], + "DD_TRACE_AZURE_COSMOS_ENABLED": [ + { + "implementation": "A", + "type": "boolean", + "default": "true" + } + ], "DD_TRACE_AZURE_DURABLE_FUNCTIONS_ENABLED": [ { "implementation": "B", diff --git a/packages/dd-trace/src/plugins/index.js b/packages/dd-trace/src/plugins/index.js index 44d84e67324..68558c54983 100644 --- a/packages/dd-trace/src/plugins/index.js +++ b/packages/dd-trace/src/plugins/index.js @@ -1,118 +1,119 @@ 'use strict' const plugins = { - get '@anthropic-ai/sdk' () { return require('../../../datadog-plugin-anthropic/src') }, - get '@apollo/gateway' () { return require('../../../datadog-plugin-apollo/src') }, - get '@aws-sdk/smithy-client' () { return require('../../../datadog-plugin-aws-sdk/src') }, - get '@azure/event-hubs' () { return require('../../../datadog-plugin-azure-event-hubs/src') }, - get '@azure/functions' () { return require('../../../datadog-plugin-azure-functions/src') }, - get 'durable-functions' () { return require('../../../datadog-plugin-azure-durable-functions/src') }, - get '@azure/service-bus' () { return require('../../../datadog-plugin-azure-service-bus/src') }, - get '@cucumber/cucumber' () { return require('../../../datadog-plugin-cucumber/src') }, - get '@playwright/test' () { return require('../../../datadog-plugin-playwright/src') }, - get '@elastic/elasticsearch' () { return require('../../../datadog-plugin-elasticsearch/src') }, - get '@elastic/transport' () { return require('../../../datadog-plugin-elasticsearch/src') }, - get '@google-cloud/pubsub' () { return require('../../../datadog-plugin-google-cloud-pubsub/src') }, - get '@google-cloud/vertexai' () { return require('../../../datadog-plugin-google-cloud-vertexai/src') }, - get '@google/genai' () { return require('../../../datadog-plugin-google-genai/src') }, - get '@grpc/grpc-js' () { return require('../../../datadog-plugin-grpc/src') }, - get '@hapi/hapi' () { return require('../../../datadog-plugin-hapi/src') }, - get '@happy-dom/jest-environment' () { return require('../../../datadog-plugin-jest/src') }, - get '@jest/core' () { return require('../../../datadog-plugin-jest/src') }, - get '@jest/test-sequencer' () { return require('../../../datadog-plugin-jest/src') }, - get '@jest/transform' () { return require('../../../datadog-plugin-jest/src') }, - get '@koa/router' () { return require('../../../datadog-plugin-koa/src') }, - get '@langchain/core' () { return require('../../../datadog-plugin-langchain/src') }, - get '@langchain/openai' () { return require('../../../datadog-plugin-langchain/src') }, - get '@node-redis/client' () { return require('../../../datadog-plugin-redis/src') }, - get '@opensearch-project/opensearch' () { return require('../../../datadog-plugin-opensearch/src') }, - get '@prisma/client' () { return require('../../../datadog-plugin-prisma/src') }, - get './runtime/library.js' () { return require('../../../datadog-plugin-prisma/src') }, - get '@redis/client' () { return require('../../../datadog-plugin-redis/src') }, - get '@smithy/smithy-client' () { return require('../../../datadog-plugin-aws-sdk/src') }, - get '@vitest/runner' () { return require('../../../datadog-plugin-vitest/src') }, - get '@langchain/langgraph' () { return require('../../../datadog-plugin-langgraph/src') }, - get aerospike () { return require('../../../datadog-plugin-aerospike/src') }, - get ai () { return require('../../../datadog-plugin-ai/src') }, - get amqp10 () { return require('../../../datadog-plugin-amqp10/src') }, - get amqplib () { return require('../../../datadog-plugin-amqplib/src') }, - get avsc () { return require('../../../datadog-plugin-avsc/src') }, - get 'aws-sdk' () { return require('../../../datadog-plugin-aws-sdk/src') }, - get bullmq () { return require('../../../datadog-plugin-bullmq/src') }, - get bunyan () { return require('../../../datadog-plugin-bunyan/src') }, - get 'cassandra-driver' () { return require('../../../datadog-plugin-cassandra-driver/src') }, - get child_process () { return require('../../../datadog-plugin-child_process/src') }, - get connect () { return require('../../../datadog-plugin-connect/src') }, - get couchbase () { return require('../../../datadog-plugin-couchbase/src') }, - get cypress () { return require('../../../datadog-plugin-cypress/src') }, - get dns () { return require('../../../datadog-plugin-dns/src') }, - get 'dd-trace-api' () { return require('../../../datadog-plugin-dd-trace-api/src') }, - get elasticsearch () { return require('../../../datadog-plugin-elasticsearch/src') }, - get express () { return require('../../../datadog-plugin-express/src') }, - get fastify () { return require('../../../datadog-plugin-fastify/src') }, - get 'find-my-way' () { return require('../../../datadog-plugin-find-my-way/src') }, - get 'global:fetch' () { return require('../../../datadog-plugin-fetch/src') }, - get graphql () { return require('../../../datadog-plugin-graphql/src') }, - get grpc () { return require('../../../datadog-plugin-grpc/src') }, - get hapi () { return require('../../../datadog-plugin-hapi/src') }, - get hono () { return require('../../../datadog-plugin-hono/src') }, - get http () { return require('../../../datadog-plugin-http/src') }, - get http2 () { return require('../../../datadog-plugin-http2/src') }, - get https () { return require('../../../datadog-plugin-http/src') }, - get ioredis () { return require('../../../datadog-plugin-ioredis/src') }, - get iovalkey () { return require('../../../datadog-plugin-iovalkey/src') }, - get 'jest-circus' () { return require('../../../datadog-plugin-jest/src') }, - get 'jest-config' () { return require('../../../datadog-plugin-jest/src') }, - get 'jest-environment-node' () { return require('../../../datadog-plugin-jest/src') }, - get 'jest-environment-jsdom' () { return require('../../../datadog-plugin-jest/src') }, - get 'jest-runtime' () { return require('../../../datadog-plugin-jest/src') }, - get 'jest-worker' () { return require('../../../datadog-plugin-jest/src') }, - get koa () { return require('../../../datadog-plugin-koa/src') }, - get 'koa-router' () { return require('../../../datadog-plugin-koa/src') }, - get kafkajs () { return require('../../../datadog-plugin-kafkajs/src') }, - get '@confluentinc/kafka-javascript' () { + get '@anthropic-ai/sdk'() { return require('../../../datadog-plugin-anthropic/src') }, + get '@apollo/gateway'() { return require('../../../datadog-plugin-apollo/src') }, + get '@aws-sdk/smithy-client'() { return require('../../../datadog-plugin-aws-sdk/src') }, + get '@azure/cosmos'() { return require('../../../datadog-plugin-azure-cosmos/src') }, + get '@azure/event-hubs'() { return require('../../../datadog-plugin-azure-event-hubs/src') }, + get '@azure/functions'() { return require('../../../datadog-plugin-azure-functions/src') }, + get 'durable-functions'() { return require('../../../datadog-plugin-azure-durable-functions/src') }, + get '@azure/service-bus'() { return require('../../../datadog-plugin-azure-service-bus/src') }, + get '@cucumber/cucumber'() { return require('../../../datadog-plugin-cucumber/src') }, + get '@playwright/test'() { return require('../../../datadog-plugin-playwright/src') }, + get '@elastic/elasticsearch'() { return require('../../../datadog-plugin-elasticsearch/src') }, + get '@elastic/transport'() { return require('../../../datadog-plugin-elasticsearch/src') }, + get '@google-cloud/pubsub'() { return require('../../../datadog-plugin-google-cloud-pubsub/src') }, + get '@google-cloud/vertexai'() { return require('../../../datadog-plugin-google-cloud-vertexai/src') }, + get '@google/genai'() { return require('../../../datadog-plugin-google-genai/src') }, + get '@grpc/grpc-js'() { return require('../../../datadog-plugin-grpc/src') }, + get '@hapi/hapi'() { return require('../../../datadog-plugin-hapi/src') }, + get '@happy-dom/jest-environment'() { return require('../../../datadog-plugin-jest/src') }, + get '@jest/core'() { return require('../../../datadog-plugin-jest/src') }, + get '@jest/test-sequencer'() { return require('../../../datadog-plugin-jest/src') }, + get '@jest/transform'() { return require('../../../datadog-plugin-jest/src') }, + get '@koa/router'() { return require('../../../datadog-plugin-koa/src') }, + get '@langchain/core'() { return require('../../../datadog-plugin-langchain/src') }, + get '@langchain/openai'() { return require('../../../datadog-plugin-langchain/src') }, + get '@node-redis/client'() { return require('../../../datadog-plugin-redis/src') }, + get '@opensearch-project/opensearch'() { return require('../../../datadog-plugin-opensearch/src') }, + get '@prisma/client'() { return require('../../../datadog-plugin-prisma/src') }, + get './runtime/library.js'() { return require('../../../datadog-plugin-prisma/src') }, + get '@redis/client'() { return require('../../../datadog-plugin-redis/src') }, + get '@smithy/smithy-client'() { return require('../../../datadog-plugin-aws-sdk/src') }, + get '@vitest/runner'() { return require('../../../datadog-plugin-vitest/src') }, + get '@langchain/langgraph'() { return require('../../../datadog-plugin-langgraph/src') }, + get aerospike() { return require('../../../datadog-plugin-aerospike/src') }, + get ai() { return require('../../../datadog-plugin-ai/src') }, + get amqp10() { return require('../../../datadog-plugin-amqp10/src') }, + get amqplib() { return require('../../../datadog-plugin-amqplib/src') }, + get avsc() { return require('../../../datadog-plugin-avsc/src') }, + get 'aws-sdk'() { return require('../../../datadog-plugin-aws-sdk/src') }, + get bullmq() { return require('../../../datadog-plugin-bullmq/src') }, + get bunyan() { return require('../../../datadog-plugin-bunyan/src') }, + get 'cassandra-driver'() { return require('../../../datadog-plugin-cassandra-driver/src') }, + get child_process() { return require('../../../datadog-plugin-child_process/src') }, + get connect() { return require('../../../datadog-plugin-connect/src') }, + get couchbase() { return require('../../../datadog-plugin-couchbase/src') }, + get cypress() { return require('../../../datadog-plugin-cypress/src') }, + get dns() { return require('../../../datadog-plugin-dns/src') }, + get 'dd-trace-api'() { return require('../../../datadog-plugin-dd-trace-api/src') }, + get elasticsearch() { return require('../../../datadog-plugin-elasticsearch/src') }, + get express() { return require('../../../datadog-plugin-express/src') }, + get fastify() { return require('../../../datadog-plugin-fastify/src') }, + get 'find-my-way'() { return require('../../../datadog-plugin-find-my-way/src') }, + get 'global:fetch'() { return require('../../../datadog-plugin-fetch/src') }, + get graphql() { return require('../../../datadog-plugin-graphql/src') }, + get grpc() { return require('../../../datadog-plugin-grpc/src') }, + get hapi() { return require('../../../datadog-plugin-hapi/src') }, + get hono() { return require('../../../datadog-plugin-hono/src') }, + get http() { return require('../../../datadog-plugin-http/src') }, + get http2() { return require('../../../datadog-plugin-http2/src') }, + get https() { return require('../../../datadog-plugin-http/src') }, + get ioredis() { return require('../../../datadog-plugin-ioredis/src') }, + get iovalkey() { return require('../../../datadog-plugin-iovalkey/src') }, + get 'jest-circus'() { return require('../../../datadog-plugin-jest/src') }, + get 'jest-config'() { return require('../../../datadog-plugin-jest/src') }, + get 'jest-environment-node'() { return require('../../../datadog-plugin-jest/src') }, + get 'jest-environment-jsdom'() { return require('../../../datadog-plugin-jest/src') }, + get 'jest-runtime'() { return require('../../../datadog-plugin-jest/src') }, + get 'jest-worker'() { return require('../../../datadog-plugin-jest/src') }, + get koa() { return require('../../../datadog-plugin-koa/src') }, + get 'koa-router'() { return require('../../../datadog-plugin-koa/src') }, + get kafkajs() { return require('../../../datadog-plugin-kafkajs/src') }, + get '@confluentinc/kafka-javascript'() { return require('../../../datadog-plugin-confluentinc-kafka-javascript/src') }, - get langchain () { return require('../../../datadog-plugin-langchain/src') }, - get mariadb () { return require('../../../datadog-plugin-mariadb/src') }, - get memcached () { return require('../../../datadog-plugin-memcached/src') }, - get 'microgateway-core' () { return require('../../../datadog-plugin-microgateway-core/src') }, - get mocha () { return require('../../../datadog-plugin-mocha/src') }, - get 'mocha-each' () { return require('../../../datadog-plugin-mocha/src') }, - get vitest () { return require('../../../datadog-plugin-vitest/src') }, - get workerpool () { return require('../../../datadog-plugin-mocha/src') }, - get tinypool () { return require('../../../datadog-plugin-vitest/src') }, - get moleculer () { return require('../../../datadog-plugin-moleculer/src') }, - get mongodb () { return require('../../../datadog-plugin-mongodb-core/src') }, - get 'mongodb-core' () { return require('../../../datadog-plugin-mongodb-core/src') }, - get mongoose () { return require('../../../datadog-plugin-mongoose/src') }, - get mysql () { return require('../../../datadog-plugin-mysql/src') }, - get mysql2 () { return require('../../../datadog-plugin-mysql2/src') }, - get net () { return require('../../../datadog-plugin-net/src') }, - get next () { return require('../../../datadog-plugin-next/src') }, - get 'node:dns' () { return require('../../../datadog-plugin-dns/src') }, - get 'node:http' () { return require('../../../datadog-plugin-http/src') }, - get 'node:http2' () { return require('../../../datadog-plugin-http2/src') }, - get 'node:https' () { return require('../../../datadog-plugin-http/src') }, - get 'node:net' () { return require('../../../datadog-plugin-net/src') }, - get nyc () { return require('../../../datadog-plugin-nyc/src') }, - get oracledb () { return require('../../../datadog-plugin-oracledb/src') }, - get openai () { return require('../../../datadog-plugin-openai/src') }, - get pg () { return require('../../../datadog-plugin-pg/src') }, - get pino () { return require('../../../datadog-plugin-pino/src') }, - get 'pino-pretty' () { return require('../../../datadog-plugin-pino/src') }, - get playwright () { return require('../../../datadog-plugin-playwright/src') }, - get protobufjs () { return require('../../../datadog-plugin-protobufjs/src') }, - get redis () { return require('../../../datadog-plugin-redis/src') }, - get restify () { return require('../../../datadog-plugin-restify/src') }, - get rhea () { return require('../../../datadog-plugin-rhea/src') }, - get router () { return require('../../../datadog-plugin-router/src') }, - get 'selenium-webdriver' () { return require('../../../datadog-plugin-selenium/src') }, - get sharedb () { return require('../../../datadog-plugin-sharedb/src') }, - get tedious () { return require('../../../datadog-plugin-tedious/src') }, - get undici () { return require('../../../datadog-plugin-undici/src') }, - get winston () { return require('../../../datadog-plugin-winston/src') }, - get ws () { return require('../../../datadog-plugin-ws/src') }, + get langchain() { return require('../../../datadog-plugin-langchain/src') }, + get mariadb() { return require('../../../datadog-plugin-mariadb/src') }, + get memcached() { return require('../../../datadog-plugin-memcached/src') }, + get 'microgateway-core'() { return require('../../../datadog-plugin-microgateway-core/src') }, + get mocha() { return require('../../../datadog-plugin-mocha/src') }, + get 'mocha-each'() { return require('../../../datadog-plugin-mocha/src') }, + get vitest() { return require('../../../datadog-plugin-vitest/src') }, + get workerpool() { return require('../../../datadog-plugin-mocha/src') }, + get tinypool() { return require('../../../datadog-plugin-vitest/src') }, + get moleculer() { return require('../../../datadog-plugin-moleculer/src') }, + get mongodb() { return require('../../../datadog-plugin-mongodb-core/src') }, + get 'mongodb-core'() { return require('../../../datadog-plugin-mongodb-core/src') }, + get mongoose() { return require('../../../datadog-plugin-mongoose/src') }, + get mysql() { return require('../../../datadog-plugin-mysql/src') }, + get mysql2() { return require('../../../datadog-plugin-mysql2/src') }, + get net() { return require('../../../datadog-plugin-net/src') }, + get next() { return require('../../../datadog-plugin-next/src') }, + get 'node:dns'() { return require('../../../datadog-plugin-dns/src') }, + get 'node:http'() { return require('../../../datadog-plugin-http/src') }, + get 'node:http2'() { return require('../../../datadog-plugin-http2/src') }, + get 'node:https'() { return require('../../../datadog-plugin-http/src') }, + get 'node:net'() { return require('../../../datadog-plugin-net/src') }, + get nyc() { return require('../../../datadog-plugin-nyc/src') }, + get oracledb() { return require('../../../datadog-plugin-oracledb/src') }, + get openai() { return require('../../../datadog-plugin-openai/src') }, + get pg() { return require('../../../datadog-plugin-pg/src') }, + get pino() { return require('../../../datadog-plugin-pino/src') }, + get 'pino-pretty'() { return require('../../../datadog-plugin-pino/src') }, + get playwright() { return require('../../../datadog-plugin-playwright/src') }, + get protobufjs() { return require('../../../datadog-plugin-protobufjs/src') }, + get redis() { return require('../../../datadog-plugin-redis/src') }, + get restify() { return require('../../../datadog-plugin-restify/src') }, + get rhea() { return require('../../../datadog-plugin-rhea/src') }, + get router() { return require('../../../datadog-plugin-router/src') }, + get 'selenium-webdriver'() { return require('../../../datadog-plugin-selenium/src') }, + get sharedb() { return require('../../../datadog-plugin-sharedb/src') }, + get tedious() { return require('../../../datadog-plugin-tedious/src') }, + get undici() { return require('../../../datadog-plugin-undici/src') }, + get winston() { return require('../../../datadog-plugin-winston/src') }, + get ws() { return require('../../../datadog-plugin-ws/src') }, } module.exports = plugins