@azure/opentelemetry-instrumentation-azure-sdk 1.0.0-beta.4 → 1.0.0-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -57,7 +57,10 @@ registerInstrumentations({
57
57
 
58
58
  // Continue to import any Azure SDK client libraries after registering the instrumentation.
59
59
 
60
- const { keyClient } = require("@azure/keyvault-keys");
60
+ const { KeyClient } = require("@azure/keyvault-keys");
61
+ const { DefaultAzureCredential } = require("@azure/identity");
62
+
63
+ const keyClient = new KeyClient(url, new DefaultAzureCredential());
61
64
 
62
65
  async function main() {
63
66
  // Tracing is now enabled using automatic span propagation with an active context.
@@ -93,6 +96,10 @@ setLogLevel("info");
93
96
 
94
97
  For more detailed instructions on how to enable logs, you can look at the [@azure/logger package docs](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/core/logger).
95
98
 
99
+ ### Instrumentation for ES Modules
100
+
101
+ This package utilizes [@opentelemetry/instrumentation](https://www.npmjs.com/package/@opentelemetry/instrumentation) to setup the necessary hooks and loaders. Please refer to [@opentelemetry/instrumentation's README](https://github.com/open-telemetry/opentelemetry-js/blob/main/experimental/packages/opentelemetry-instrumentation/README.md#instrumentation-for-es-modules-in-nodejs-experimental) for instructions on configuring tracing for ESM packages.
102
+
96
103
  ## Contributing
97
104
 
98
105
  If you'd like to contribute to this library, please read the [contributing guide](https://github.com/Azure/azure-sdk-for-js/blob/main/CONTRIBUTING.md) to learn more about how to build and test the code.
@@ -103,7 +110,6 @@ If you'd like to contribute to this library, please read the [contributing guide
103
110
 
104
111
  ![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Ftemplate%2Ftemplate%2FREADME.png)
105
112
 
106
- [azure_cli]: https://docs.microsoft.com/cli/azure
107
113
  [azure_sub]: https://azure.microsoft.com/free/
108
114
  [otel_instrumentation]: https://www.npmjs.com/package/@opentelemetry/instrumentation
109
- [otel_documentation]: https://opentelemetry.io/docs/js/
115
+ [otel_documentation]: https://opentelemetry.io/docs/languages/js/
package/dist/index.js CHANGED
@@ -8,12 +8,14 @@ var api = require('@opentelemetry/api');
8
8
  var core = require('@opentelemetry/core');
9
9
 
10
10
  // Copyright (c) Microsoft Corporation.
11
+ // Licensed under the MIT license.
11
12
  /**
12
13
  * The \@azure/logger configuration for this package.
13
14
  */
14
15
  const logger = logger$1.createClientLogger("opentelemetry-instrumentation-azure-sdk");
15
16
 
16
17
  // Copyright (c) Microsoft Corporation.
18
+ // Licensed under the MIT license.
17
19
  class OpenTelemetrySpanWrapper {
18
20
  constructor(span) {
19
21
  this._span = span;
@@ -59,7 +61,7 @@ class OpenTelemetrySpanWrapper {
59
61
 
60
62
  // Copyright (c) Microsoft Corporation.
61
63
  // Licensed under the MIT license.
62
- const SDK_VERSION = "1.0.0-beta.4";
64
+ const SDK_VERSION = "1.0.0-beta.6";
63
65
  /**
64
66
  * @internal
65
67
  *
@@ -89,6 +91,7 @@ function loadEnvironmentVariable(key) {
89
91
  }
90
92
 
91
93
  // Copyright (c) Microsoft Corporation.
94
+ // Licensed under the MIT license.
92
95
  /**
93
96
  * Converts our TracingSpanKind to the corresponding OpenTelemetry SpanKind.
94
97
  *
@@ -153,6 +156,7 @@ function toSpanOptions(spanOptions) {
153
156
  }
154
157
 
155
158
  // Copyright (c) Microsoft Corporation.
159
+ // Licensed under the MIT license.
156
160
  // While default propagation is user-configurable, Azure services always use the W3C implementation.
157
161
  const propagator = new core.W3CTraceContextPropagator();
158
162
  class OpenTelemetryInstrumenter {
@@ -194,6 +198,7 @@ class OpenTelemetryInstrumenter {
194
198
  }
195
199
 
196
200
  // Copyright (c) Microsoft Corporation.
201
+ // Licensed under the MIT license.
197
202
  /**
198
203
  * The instrumentation module for the Azure SDK. Implements OpenTelemetry's {@link Instrumentation}.
199
204
  */
@@ -241,6 +246,7 @@ function createAzureSdkInstrumentation(options = {}) {
241
246
  return new AzureSdkInstrumentation(options);
242
247
  }
243
248
 
249
+ exports.AzureSdkInstrumentation = AzureSdkInstrumentation;
244
250
  exports.createAzureSdkInstrumentation = createAzureSdkInstrumentation;
245
251
  exports.logger = logger;
246
252
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/logger.ts","../src/spanWrapper.ts","../src/configuration.ts","../src/transformations.ts","../src/instrumenter.ts","../src/instrumentation.ts"],"sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { createClientLogger } from \"@azure/logger\";\n\n/**\n * The \\@azure/logger configuration for this package.\n */\nexport const logger = createClientLogger(\"opentelemetry-instrumentation-azure-sdk\");\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { Span, SpanAttributeValue, SpanStatusCode } from \"@opentelemetry/api\";\nimport { SpanStatus, TracingSpan } from \"@azure/core-tracing\";\n\nexport class OpenTelemetrySpanWrapper implements TracingSpan {\n private _span: Span;\n\n constructor(span: Span) {\n this._span = span;\n }\n\n setStatus(status: SpanStatus): void {\n if (status.status === \"error\") {\n if (status.error) {\n this._span.setStatus({ code: SpanStatusCode.ERROR, message: status.error.toString() });\n this.recordException(status.error);\n } else {\n this._span.setStatus({ code: SpanStatusCode.ERROR });\n }\n } else if (status.status === \"success\") {\n this._span.setStatus({ code: SpanStatusCode.OK });\n }\n }\n\n setAttribute(name: string, value: unknown): void {\n if (value !== null && value !== undefined) {\n this._span.setAttribute(name, value as SpanAttributeValue);\n }\n }\n\n end(): void {\n this._span.end();\n }\n\n recordException(exception: string | Error): void {\n this._span.recordException(exception);\n }\n\n isRecording(): boolean {\n return this._span.isRecording();\n }\n\n /**\n * Allows getting the wrapped span as needed.\n * @internal\n *\n * @returns The underlying span\n */\n unwrap(): Span {\n return this._span;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport const SDK_VERSION: string = \"1.0.0-beta.4\";\n\n/**\n * @internal\n *\n * Keys of known environment variables we look up.\n */\nexport type KnownEnvironmentKey = \"AZURE_HTTP_TRACING_CHILDREN_DISABLED\" | \"AZURE_TRACING_DISABLED\";\n\n/**\n * @internal\n *\n * Cached values of environment variables that were fetched.\n */\nexport const environmentCache = new Map<KnownEnvironmentKey, string | undefined>();\n\n/**\n * Converts an environment variable to Boolean.\n * the strings \"false\" and \"0\" are treated as falsy values.\n *\n * @internal\n */\nexport function envVarToBoolean(key: KnownEnvironmentKey): boolean {\n if (!environmentCache.has(key)) {\n loadEnvironmentVariable(key);\n }\n const value = (environmentCache.get(key) ?? \"\").toLowerCase();\n return value !== \"false\" && value !== \"0\" && Boolean(value);\n}\n\nfunction loadEnvironmentVariable(key: KnownEnvironmentKey): void {\n if (typeof process !== \"undefined\" && process.env) {\n const rawValue = process.env[key] ?? process.env[key.toLowerCase()];\n environmentCache.set(key, rawValue);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { InstrumenterSpanOptions, TracingSpanKind, TracingSpanLink } from \"@azure/core-tracing\";\nimport {\n Link,\n SpanAttributeValue,\n SpanAttributes,\n SpanKind,\n SpanOptions,\n trace,\n} from \"@opentelemetry/api\";\n\n/**\n * Converts our TracingSpanKind to the corresponding OpenTelemetry SpanKind.\n *\n * By default it will return {@link SpanKind.INTERNAL}\n * @param tracingSpanKind - The core tracing {@link TracingSpanKind}\n * @returns - The OpenTelemetry {@link SpanKind}\n */\nexport function toOpenTelemetrySpanKind<K extends TracingSpanKind>(\n tracingSpanKind?: K\n): SpanKindMapping[K] {\n const key = (tracingSpanKind || \"internal\").toUpperCase() as keyof typeof SpanKind;\n return SpanKind[key] as SpanKindMapping[K];\n}\n\n/**\n * A mapping between our {@link TracingSpanKind} union type and OpenTelemetry's {@link SpanKind}.\n */\ntype SpanKindMapping = {\n client: SpanKind.CLIENT;\n server: SpanKind.SERVER;\n producer: SpanKind.PRODUCER;\n consumer: SpanKind.CONSUMER;\n internal: SpanKind.INTERNAL;\n};\n\n/**\n * Converts core-tracing's TracingSpanLink to OpenTelemetry's Link\n *\n * @param spanLinks - The core tracing {@link TracingSpanLink} to convert\n * @returns A set of {@link Link}s\n */\nfunction toOpenTelemetryLinks(spanLinks: TracingSpanLink[] = []): Link[] {\n return spanLinks.reduce((acc, tracingSpanLink) => {\n const spanContext = trace.getSpanContext(tracingSpanLink.tracingContext);\n if (spanContext) {\n acc.push({\n context: spanContext,\n attributes: toOpenTelemetrySpanAttributes(tracingSpanLink.attributes),\n });\n }\n return acc;\n }, [] as Link[]);\n}\n\n/**\n * Converts core-tracing's span attributes to OpenTelemetry attributes.\n *\n * @param spanAttributes - The set of attributes to convert.\n * @returns An {@link SpanAttributes} to set on a span.\n */\nfunction toOpenTelemetrySpanAttributes(\n spanAttributes: { [key: string]: unknown } | undefined\n): SpanAttributes {\n const attributes: ReturnType<typeof toOpenTelemetrySpanAttributes> = {};\n for (const key in spanAttributes) {\n // Any non-nullish value is allowed.\n if (spanAttributes[key] !== null && spanAttributes[key] !== undefined) {\n attributes[key] = spanAttributes[key] as SpanAttributeValue;\n }\n }\n return attributes;\n}\n\n/**\n * Converts core-tracing span options to OpenTelemetry options.\n *\n * @param spanOptions - The {@link InstrumenterSpanOptions} to convert.\n * @returns An OpenTelemetry {@link SpanOptions} that can be used when creating a span.\n */\nexport function toSpanOptions(spanOptions?: InstrumenterSpanOptions): SpanOptions {\n const { spanAttributes, spanLinks, spanKind } = spanOptions || {};\n\n const attributes: SpanAttributes = toOpenTelemetrySpanAttributes(spanAttributes);\n const kind = toOpenTelemetrySpanKind(spanKind);\n const links = toOpenTelemetryLinks(spanLinks);\n\n return {\n attributes,\n kind,\n links,\n };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n INVALID_SPAN_CONTEXT,\n Span,\n context,\n defaultTextMapGetter,\n defaultTextMapSetter,\n trace,\n} from \"@opentelemetry/api\";\nimport {\n Instrumenter,\n InstrumenterSpanOptions,\n TracingContext,\n TracingSpan,\n} from \"@azure/core-tracing\";\nimport { W3CTraceContextPropagator, suppressTracing } from \"@opentelemetry/core\";\n\nimport { OpenTelemetrySpanWrapper } from \"./spanWrapper\";\nimport { envVarToBoolean } from \"./configuration\";\nimport { toSpanOptions } from \"./transformations\";\n\n// While default propagation is user-configurable, Azure services always use the W3C implementation.\nexport const propagator = new W3CTraceContextPropagator();\n\nexport class OpenTelemetryInstrumenter implements Instrumenter {\n startSpan(\n name: string,\n spanOptions: InstrumenterSpanOptions\n ): { span: TracingSpan; tracingContext: TracingContext } {\n let ctx = spanOptions?.tracingContext || context.active();\n let span: Span;\n\n if (envVarToBoolean(\"AZURE_TRACING_DISABLED\")) {\n // disable only our spans but not any downstream spans\n span = trace.wrapSpanContext(INVALID_SPAN_CONTEXT);\n } else {\n // Create our span\n span = trace\n .getTracer(spanOptions.packageName, spanOptions.packageVersion)\n .startSpan(name, toSpanOptions(spanOptions), ctx);\n\n if (\n envVarToBoolean(\"AZURE_HTTP_TRACING_CHILDREN_DISABLED\") &&\n name.toUpperCase().startsWith(\"HTTP\")\n ) {\n // disable downstream spans\n ctx = suppressTracing(ctx);\n }\n }\n\n return {\n span: new OpenTelemetrySpanWrapper(span),\n tracingContext: trace.setSpan(ctx, span),\n };\n }\n withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType<Callback>\n >(\n tracingContext: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType<Callback> {\n return context.with(\n tracingContext,\n callback,\n /** Assume caller will bind `this` or use arrow functions */ undefined,\n ...callbackArgs\n );\n }\n\n parseTraceparentHeader(traceparentHeader: string): TracingContext {\n return propagator.extract(\n context.active(),\n { traceparent: traceparentHeader },\n defaultTextMapGetter\n );\n }\n\n createRequestHeaders(tracingContext?: TracingContext): Record<string, string> {\n const headers: Record<string, string> = {};\n propagator.inject(tracingContext || context.active(), headers, defaultTextMapSetter);\n return headers;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport type * as coreTracing from \"@azure/core-tracing\";\nimport {\n Instrumentation,\n InstrumentationBase,\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n InstrumentationNodeModuleDefinition,\n} from \"@opentelemetry/instrumentation\";\nimport { OpenTelemetryInstrumenter } from \"./instrumenter\";\nimport { SDK_VERSION } from \"./configuration\";\n\n/**\n * Configuration options that can be passed to {@link createAzureSdkInstrumentation} function.\n */\nexport interface AzureSdkInstrumentationOptions extends InstrumentationConfig {}\n\n/**\n * The instrumentation module for the Azure SDK. Implements OpenTelemetry's {@link Instrumentation}.\n */\nclass AzureSdkInstrumentation extends InstrumentationBase {\n constructor(options: AzureSdkInstrumentationOptions = {}) {\n super(\n \"@azure/opentelemetry-instrumentation-azure-sdk\",\n SDK_VERSION,\n Object.assign({}, options)\n );\n }\n /**\n * Entrypoint for the module registration.\n *\n * @returns The patched \\@azure/core-tracing module after setting its instrumenter.\n */\n protected init():\n | void\n | InstrumentationModuleDefinition<typeof coreTracing>\n | InstrumentationModuleDefinition<typeof coreTracing>[] {\n const result: InstrumentationModuleDefinition<typeof coreTracing> =\n new InstrumentationNodeModuleDefinition(\n \"@azure/core-tracing\",\n [\"^1.0.0-preview.14\", \"^1.0.0\"],\n (moduleExports) => {\n if (typeof moduleExports.useInstrumenter === \"function\") {\n moduleExports.useInstrumenter(new OpenTelemetryInstrumenter());\n }\n\n return moduleExports;\n }\n );\n // Needed to support 1.0.0-preview.14\n result.includePrerelease = true;\n return result;\n }\n}\n\n/**\n * Enables Azure SDK Instrumentation using OpenTelemetry for Azure SDK client libraries.\n *\n * When registered, any Azure data plane package will begin emitting tracing spans for internal calls\n * as well as network calls\n *\n * Example usage:\n * ```ts\n * const openTelemetryInstrumentation = require(\"@opentelemetry/instrumentation\");\n * openTelemetryInstrumentation.registerInstrumentations({\n * instrumentations: [createAzureSdkInstrumentation()],\n * })\n * ```\n *\n * @remarks\n *\n * As OpenTelemetry instrumentations rely on patching required modules, you should register\n * this instrumentation as early as possible and before loading any Azure Client Libraries.\n */\nexport function createAzureSdkInstrumentation(\n options: AzureSdkInstrumentationOptions = {}\n): Instrumentation {\n return new AzureSdkInstrumentation(options);\n}\n"],"names":["createClientLogger","SpanStatusCode","SpanKind","trace","W3CTraceContextPropagator","context","INVALID_SPAN_CONTEXT","suppressTracing","defaultTextMapGetter","defaultTextMapSetter","InstrumentationBase","InstrumentationNodeModuleDefinition"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/logger.ts","../src/spanWrapper.ts","../src/configuration.ts","../src/transformations.ts","../src/instrumenter.ts","../src/instrumentation.ts"],"sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { createClientLogger } from \"@azure/logger\";\n\n/**\n * The \\@azure/logger configuration for this package.\n */\nexport const logger = createClientLogger(\"opentelemetry-instrumentation-azure-sdk\");\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { Span, AttributeValue, SpanStatusCode } from \"@opentelemetry/api\";\nimport { SpanStatus, TracingSpan } from \"@azure/core-tracing\";\n\nexport class OpenTelemetrySpanWrapper implements TracingSpan {\n private _span: Span;\n\n constructor(span: Span) {\n this._span = span;\n }\n\n setStatus(status: SpanStatus): void {\n if (status.status === \"error\") {\n if (status.error) {\n this._span.setStatus({ code: SpanStatusCode.ERROR, message: status.error.toString() });\n this.recordException(status.error);\n } else {\n this._span.setStatus({ code: SpanStatusCode.ERROR });\n }\n } else if (status.status === \"success\") {\n this._span.setStatus({ code: SpanStatusCode.OK });\n }\n }\n\n setAttribute(name: string, value: unknown): void {\n if (value !== null && value !== undefined) {\n this._span.setAttribute(name, value as AttributeValue);\n }\n }\n\n end(): void {\n this._span.end();\n }\n\n recordException(exception: string | Error): void {\n this._span.recordException(exception);\n }\n\n isRecording(): boolean {\n return this._span.isRecording();\n }\n\n /**\n * Allows getting the wrapped span as needed.\n * @internal\n *\n * @returns The underlying span\n */\n unwrap(): Span {\n return this._span;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport const SDK_VERSION: string = \"1.0.0-beta.6\";\n\n/**\n * @internal\n *\n * Keys of known environment variables we look up.\n */\nexport type KnownEnvironmentKey = \"AZURE_HTTP_TRACING_CHILDREN_DISABLED\" | \"AZURE_TRACING_DISABLED\";\n\n/**\n * @internal\n *\n * Cached values of environment variables that were fetched.\n */\nexport const environmentCache = new Map<KnownEnvironmentKey, string | undefined>();\n\n/**\n * Converts an environment variable to Boolean.\n * the strings \"false\" and \"0\" are treated as falsy values.\n *\n * @internal\n */\nexport function envVarToBoolean(key: KnownEnvironmentKey): boolean {\n if (!environmentCache.has(key)) {\n loadEnvironmentVariable(key);\n }\n const value = (environmentCache.get(key) ?? \"\").toLowerCase();\n return value !== \"false\" && value !== \"0\" && Boolean(value);\n}\n\nfunction loadEnvironmentVariable(key: KnownEnvironmentKey): void {\n if (typeof process !== \"undefined\" && process.env) {\n const rawValue = process.env[key] ?? process.env[key.toLowerCase()];\n environmentCache.set(key, rawValue);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { InstrumenterSpanOptions, TracingSpanKind, TracingSpanLink } from \"@azure/core-tracing\";\nimport { Attributes, AttributeValue, Link, SpanKind, SpanOptions, trace } from \"@opentelemetry/api\";\n\n/**\n * Converts our TracingSpanKind to the corresponding OpenTelemetry SpanKind.\n *\n * By default it will return {@link SpanKind.INTERNAL}\n * @param tracingSpanKind - The core tracing {@link TracingSpanKind}\n * @returns - The OpenTelemetry {@link SpanKind}\n */\nexport function toOpenTelemetrySpanKind<K extends TracingSpanKind>(\n tracingSpanKind?: K,\n): SpanKindMapping[K] {\n const key = (tracingSpanKind || \"internal\").toUpperCase() as keyof typeof SpanKind;\n return SpanKind[key] as SpanKindMapping[K];\n}\n\n/**\n * A mapping between our {@link TracingSpanKind} union type and OpenTelemetry's {@link SpanKind}.\n */\ntype SpanKindMapping = {\n client: SpanKind.CLIENT;\n server: SpanKind.SERVER;\n producer: SpanKind.PRODUCER;\n consumer: SpanKind.CONSUMER;\n internal: SpanKind.INTERNAL;\n};\n\n/**\n * Converts core-tracing's TracingSpanLink to OpenTelemetry's Link\n *\n * @param spanLinks - The core tracing {@link TracingSpanLink} to convert\n * @returns A set of {@link Link}s\n */\nfunction toOpenTelemetryLinks(spanLinks: TracingSpanLink[] = []): Link[] {\n return spanLinks.reduce((acc, tracingSpanLink) => {\n const spanContext = trace.getSpanContext(tracingSpanLink.tracingContext);\n if (spanContext) {\n acc.push({\n context: spanContext,\n attributes: toOpenTelemetrySpanAttributes(tracingSpanLink.attributes),\n });\n }\n return acc;\n }, [] as Link[]);\n}\n\n/**\n * Converts core-tracing's span attributes to OpenTelemetry attributes.\n *\n * @param spanAttributes - The set of attributes to convert.\n * @returns An {@link SpanAttributes} to set on a span.\n */\nfunction toOpenTelemetrySpanAttributes(\n spanAttributes: { [key: string]: unknown } | undefined,\n): Attributes {\n const attributes: ReturnType<typeof toOpenTelemetrySpanAttributes> = {};\n for (const key in spanAttributes) {\n // Any non-nullish value is allowed.\n if (spanAttributes[key] !== null && spanAttributes[key] !== undefined) {\n attributes[key] = spanAttributes[key] as AttributeValue;\n }\n }\n return attributes;\n}\n\n/**\n * Converts core-tracing span options to OpenTelemetry options.\n *\n * @param spanOptions - The {@link InstrumenterSpanOptions} to convert.\n * @returns An OpenTelemetry {@link SpanOptions} that can be used when creating a span.\n */\nexport function toSpanOptions(spanOptions?: InstrumenterSpanOptions): SpanOptions {\n const { spanAttributes, spanLinks, spanKind } = spanOptions || {};\n\n const attributes: Attributes = toOpenTelemetrySpanAttributes(spanAttributes);\n const kind = toOpenTelemetrySpanKind(spanKind);\n const links = toOpenTelemetryLinks(spanLinks);\n\n return {\n attributes,\n kind,\n links,\n };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n INVALID_SPAN_CONTEXT,\n Span,\n context,\n defaultTextMapGetter,\n defaultTextMapSetter,\n trace,\n} from \"@opentelemetry/api\";\nimport {\n Instrumenter,\n InstrumenterSpanOptions,\n TracingContext,\n TracingSpan,\n} from \"@azure/core-tracing\";\nimport { W3CTraceContextPropagator, suppressTracing } from \"@opentelemetry/core\";\n\nimport { OpenTelemetrySpanWrapper } from \"./spanWrapper\";\nimport { envVarToBoolean } from \"./configuration\";\nimport { toSpanOptions } from \"./transformations\";\n\n// While default propagation is user-configurable, Azure services always use the W3C implementation.\nexport const propagator = new W3CTraceContextPropagator();\n\nexport class OpenTelemetryInstrumenter implements Instrumenter {\n startSpan(\n name: string,\n spanOptions: InstrumenterSpanOptions,\n ): { span: TracingSpan; tracingContext: TracingContext } {\n let ctx = spanOptions?.tracingContext || context.active();\n let span: Span;\n\n if (envVarToBoolean(\"AZURE_TRACING_DISABLED\")) {\n // disable only our spans but not any downstream spans\n span = trace.wrapSpanContext(INVALID_SPAN_CONTEXT);\n } else {\n // Create our span\n span = trace\n .getTracer(spanOptions.packageName, spanOptions.packageVersion)\n .startSpan(name, toSpanOptions(spanOptions), ctx);\n\n if (\n envVarToBoolean(\"AZURE_HTTP_TRACING_CHILDREN_DISABLED\") &&\n name.toUpperCase().startsWith(\"HTTP\")\n ) {\n // disable downstream spans\n ctx = suppressTracing(ctx);\n }\n }\n\n return {\n span: new OpenTelemetrySpanWrapper(span),\n tracingContext: trace.setSpan(ctx, span),\n };\n }\n withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType<Callback>,\n >(\n tracingContext: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType<Callback> {\n return context.with(\n tracingContext,\n callback,\n /** Assume caller will bind `this` or use arrow functions */ undefined,\n ...callbackArgs,\n );\n }\n\n parseTraceparentHeader(traceparentHeader: string): TracingContext {\n return propagator.extract(\n context.active(),\n { traceparent: traceparentHeader },\n defaultTextMapGetter,\n );\n }\n\n createRequestHeaders(tracingContext?: TracingContext): Record<string, string> {\n const headers: Record<string, string> = {};\n propagator.inject(tracingContext || context.active(), headers, defaultTextMapSetter);\n return headers;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n Instrumentation,\n InstrumentationBase,\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n InstrumentationNodeModuleDefinition,\n} from \"@opentelemetry/instrumentation\";\n\nimport { OpenTelemetryInstrumenter } from \"./instrumenter\";\nimport { SDK_VERSION } from \"./configuration\";\n\n/**\n * Configuration options that can be passed to {@link createAzureSdkInstrumentation} function.\n */\nexport interface AzureSdkInstrumentationOptions extends InstrumentationConfig {}\n\n/**\n * The instrumentation module for the Azure SDK. Implements OpenTelemetry's {@link Instrumentation}.\n */\nexport class AzureSdkInstrumentation extends InstrumentationBase {\n constructor(options: AzureSdkInstrumentationOptions = {}) {\n super(\n \"@azure/opentelemetry-instrumentation-azure-sdk\",\n SDK_VERSION,\n Object.assign({}, options),\n );\n }\n /**\n * Entrypoint for the module registration.\n *\n * @returns The patched \\@azure/core-tracing module after setting its instrumenter.\n */\n protected init(): void | InstrumentationModuleDefinition | InstrumentationModuleDefinition[] {\n const result: InstrumentationModuleDefinition = new InstrumentationNodeModuleDefinition(\n \"@azure/core-tracing\",\n [\"^1.0.0-preview.14\", \"^1.0.0\"],\n (moduleExports) => {\n if (typeof moduleExports.useInstrumenter === \"function\") {\n moduleExports.useInstrumenter(new OpenTelemetryInstrumenter());\n }\n\n return moduleExports;\n },\n );\n // Needed to support 1.0.0-preview.14\n result.includePrerelease = true;\n return result;\n }\n}\n\n/**\n * Enables Azure SDK Instrumentation using OpenTelemetry for Azure SDK client libraries.\n *\n * When registered, any Azure data plane package will begin emitting tracing spans for internal calls\n * as well as network calls\n *\n * Example usage:\n * ```ts\n * const openTelemetryInstrumentation = require(\"@opentelemetry/instrumentation\");\n * openTelemetryInstrumentation.registerInstrumentations({\n * instrumentations: [createAzureSdkInstrumentation()],\n * })\n * ```\n *\n * @remarks\n *\n * As OpenTelemetry instrumentations rely on patching required modules, you should register\n * this instrumentation as early as possible and before loading any Azure Client Libraries.\n */\nexport function createAzureSdkInstrumentation(\n options: AzureSdkInstrumentationOptions = {},\n): Instrumentation {\n return new AzureSdkInstrumentation(options);\n}\n"],"names":["createClientLogger","SpanStatusCode","SpanKind","trace","W3CTraceContextPropagator","context","INVALID_SPAN_CONTEXT","suppressTracing","defaultTextMapGetter","defaultTextMapSetter","InstrumentationBase","InstrumentationNodeModuleDefinition"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
- export const SDK_VERSION = "1.0.0-beta.4";
3
+ export const SDK_VERSION = "1.0.0-beta.6";
4
4
  /**
5
5
  * @internal
6
6
  *
@@ -1 +1 @@
1
- {"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../src/configuration.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,CAAC,MAAM,WAAW,GAAW,cAAc,CAAC;AASlD;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA2C,CAAC;AAEnF;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,GAAwB;;IACtD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QAC9B,uBAAuB,CAAC,GAAG,CAAC,CAAC;KAC9B;IACD,MAAM,KAAK,GAAG,CAAC,MAAA,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9D,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAwB;;IACvD,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE;QACjD,MAAM,QAAQ,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACpE,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;KACrC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport const SDK_VERSION: string = \"1.0.0-beta.4\";\n\n/**\n * @internal\n *\n * Keys of known environment variables we look up.\n */\nexport type KnownEnvironmentKey = \"AZURE_HTTP_TRACING_CHILDREN_DISABLED\" | \"AZURE_TRACING_DISABLED\";\n\n/**\n * @internal\n *\n * Cached values of environment variables that were fetched.\n */\nexport const environmentCache = new Map<KnownEnvironmentKey, string | undefined>();\n\n/**\n * Converts an environment variable to Boolean.\n * the strings \"false\" and \"0\" are treated as falsy values.\n *\n * @internal\n */\nexport function envVarToBoolean(key: KnownEnvironmentKey): boolean {\n if (!environmentCache.has(key)) {\n loadEnvironmentVariable(key);\n }\n const value = (environmentCache.get(key) ?? \"\").toLowerCase();\n return value !== \"false\" && value !== \"0\" && Boolean(value);\n}\n\nfunction loadEnvironmentVariable(key: KnownEnvironmentKey): void {\n if (typeof process !== \"undefined\" && process.env) {\n const rawValue = process.env[key] ?? process.env[key.toLowerCase()];\n environmentCache.set(key, rawValue);\n }\n}\n"]}
1
+ {"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../src/configuration.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,CAAC,MAAM,WAAW,GAAW,cAAc,CAAC;AASlD;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA2C,CAAC;AAEnF;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,GAAwB;;IACtD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,MAAA,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9D,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAwB;;IACvD,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACpE,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport const SDK_VERSION: string = \"1.0.0-beta.6\";\n\n/**\n * @internal\n *\n * Keys of known environment variables we look up.\n */\nexport type KnownEnvironmentKey = \"AZURE_HTTP_TRACING_CHILDREN_DISABLED\" | \"AZURE_TRACING_DISABLED\";\n\n/**\n * @internal\n *\n * Cached values of environment variables that were fetched.\n */\nexport const environmentCache = new Map<KnownEnvironmentKey, string | undefined>();\n\n/**\n * Converts an environment variable to Boolean.\n * the strings \"false\" and \"0\" are treated as falsy values.\n *\n * @internal\n */\nexport function envVarToBoolean(key: KnownEnvironmentKey): boolean {\n if (!environmentCache.has(key)) {\n loadEnvironmentVariable(key);\n }\n const value = (environmentCache.get(key) ?? \"\").toLowerCase();\n return value !== \"false\" && value !== \"0\" && Boolean(value);\n}\n\nfunction loadEnvironmentVariable(key: KnownEnvironmentKey): void {\n if (typeof process !== \"undefined\" && process.env) {\n const rawValue = process.env[key] ?? process.env[key.toLowerCase()];\n environmentCache.set(key, rawValue);\n }\n}\n"]}
@@ -7,7 +7,7 @@ import { useInstrumenter } from "@azure/core-tracing";
7
7
  /**
8
8
  * The instrumentation module for the Azure SDK. Implements OpenTelemetry's {@link Instrumentation}.
9
9
  */
10
- class AzureSdkInstrumentation extends InstrumentationBase {
10
+ export class AzureSdkInstrumentation extends InstrumentationBase {
11
11
  constructor(options = {}) {
12
12
  super("@azure/opentelemetry-instrumentation-azure-sdk", SDK_VERSION, Object.assign({}, options));
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.browser.js","sourceRoot":"","sources":["../../src/instrumentation.browser.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAEL,mBAAmB,GAEpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAOtD;;GAEG;AACH,MAAM,uBAAwB,SAAQ,mBAAmB;IACvD,YAAY,UAA0C,EAAE;QACtD,KAAK,CACH,gDAAgD,EAChD,WAAW,EACX,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAC3B,CAAC;IACJ,CAAC;IACD,2GAA2G;IACjG,IAAI;QACZ,QAAQ;IACV,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,eAAe,CAAC,IAAI,yBAAyB,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,OAAO;QACL,QAAQ;IACV,CAAC;CACF;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,6BAA6B,CAC3C,UAA0C,EAAE;IAE5C,OAAO,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n Instrumentation,\n InstrumentationBase,\n InstrumentationConfig,\n} from \"@opentelemetry/instrumentation\";\nimport { OpenTelemetryInstrumenter } from \"./instrumenter\";\nimport { SDK_VERSION } from \"./configuration\";\nimport { useInstrumenter } from \"@azure/core-tracing\";\n\n/**\n * Configuration options that can be passed to {@link createAzureSdkInstrumentation} function.\n */\nexport interface AzureSdkInstrumentationOptions extends InstrumentationConfig {}\n\n/**\n * The instrumentation module for the Azure SDK. Implements OpenTelemetry's {@link Instrumentation}.\n */\nclass AzureSdkInstrumentation extends InstrumentationBase {\n constructor(options: AzureSdkInstrumentationOptions = {}) {\n super(\n \"@azure/opentelemetry-instrumentation-azure-sdk\",\n SDK_VERSION,\n Object.assign({}, options)\n );\n }\n /** In the browser we rely on overriding the `enable` function instead as there are no modules to patch. */\n protected init(): void {\n // no-op\n }\n\n /**\n * Entrypoint for the module registration. Ensures the global instrumenter is set to use OpenTelemetry.\n */\n enable(): void {\n useInstrumenter(new OpenTelemetryInstrumenter());\n }\n\n disable(): void {\n // no-op\n }\n}\n\n/**\n * Enables Azure SDK Instrumentation using OpenTelemetry for Azure SDK client libraries.\n *\n * When registered, any Azure data plane package will begin emitting tracing spans for internal calls\n * as well as network calls\n *\n * Example usage:\n * ```ts\n * const openTelemetryInstrumentation = require(\"@opentelemetry/instrumentation\");\n * openTelemetryInstrumentation.registerInstrumentations({\n * instrumentations: [createAzureSdkInstrumentation()],\n * })\n * ```\n */\nexport function createAzureSdkInstrumentation(\n options: AzureSdkInstrumentationOptions = {}\n): Instrumentation {\n return new AzureSdkInstrumentation(options);\n}\n"]}
1
+ {"version":3,"file":"instrumentation.browser.js","sourceRoot":"","sources":["../../src/instrumentation.browser.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAEL,mBAAmB,GAEpB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAOtD;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,mBAAmB;IAC9D,YAAY,UAA0C,EAAE;QACtD,KAAK,CACH,gDAAgD,EAChD,WAAW,EACX,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAC3B,CAAC;IACJ,CAAC;IACD,2GAA2G;IACjG,IAAI;QACZ,QAAQ;IACV,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,eAAe,CAAC,IAAI,yBAAyB,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,OAAO;QACL,QAAQ;IACV,CAAC;CACF;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,6BAA6B,CAC3C,UAA0C,EAAE;IAE5C,OAAO,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n Instrumentation,\n InstrumentationBase,\n InstrumentationConfig,\n} from \"@opentelemetry/instrumentation\";\n\nimport { OpenTelemetryInstrumenter } from \"./instrumenter\";\nimport { SDK_VERSION } from \"./configuration\";\nimport { useInstrumenter } from \"@azure/core-tracing\";\n\n/**\n * Configuration options that can be passed to {@link createAzureSdkInstrumentation} function.\n */\nexport interface AzureSdkInstrumentationOptions extends InstrumentationConfig {}\n\n/**\n * The instrumentation module for the Azure SDK. Implements OpenTelemetry's {@link Instrumentation}.\n */\nexport class AzureSdkInstrumentation extends InstrumentationBase {\n constructor(options: AzureSdkInstrumentationOptions = {}) {\n super(\n \"@azure/opentelemetry-instrumentation-azure-sdk\",\n SDK_VERSION,\n Object.assign({}, options),\n );\n }\n /** In the browser we rely on overriding the `enable` function instead as there are no modules to patch. */\n protected init(): void {\n // no-op\n }\n\n /**\n * Entrypoint for the module registration. Ensures the global instrumenter is set to use OpenTelemetry.\n */\n enable(): void {\n useInstrumenter(new OpenTelemetryInstrumenter());\n }\n\n disable(): void {\n // no-op\n }\n}\n\n/**\n * Enables Azure SDK Instrumentation using OpenTelemetry for Azure SDK client libraries.\n *\n * When registered, any Azure data plane package will begin emitting tracing spans for internal calls\n * as well as network calls\n *\n * Example usage:\n * ```ts\n * const openTelemetryInstrumentation = require(\"@opentelemetry/instrumentation\");\n * openTelemetryInstrumentation.registerInstrumentations({\n * instrumentations: [createAzureSdkInstrumentation()],\n * })\n * ```\n */\nexport function createAzureSdkInstrumentation(\n options: AzureSdkInstrumentationOptions = {},\n): Instrumentation {\n return new AzureSdkInstrumentation(options);\n}\n"]}
@@ -6,7 +6,7 @@ import { SDK_VERSION } from "./configuration";
6
6
  /**
7
7
  * The instrumentation module for the Azure SDK. Implements OpenTelemetry's {@link Instrumentation}.
8
8
  */
9
- class AzureSdkInstrumentation extends InstrumentationBase {
9
+ export class AzureSdkInstrumentation extends InstrumentationBase {
10
10
  constructor(options = {}) {
11
11
  super("@azure/opentelemetry-instrumentation-azure-sdk", SDK_VERSION, Object.assign({}, options));
12
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAEL,mBAAmB,EAGnB,mCAAmC,GACpC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAO9C;;GAEG;AACH,MAAM,uBAAwB,SAAQ,mBAAmB;IACvD,YAAY,UAA0C,EAAE;QACtD,KAAK,CACH,gDAAgD,EAChD,WAAW,EACX,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAC3B,CAAC;IACJ,CAAC;IACD;;;;OAIG;IACO,IAAI;QAIZ,MAAM,MAAM,GACV,IAAI,mCAAmC,CACrC,qBAAqB,EACrB,CAAC,mBAAmB,EAAE,QAAQ,CAAC,EAC/B,CAAC,aAAa,EAAE,EAAE;YAChB,IAAI,OAAO,aAAa,CAAC,eAAe,KAAK,UAAU,EAAE;gBACvD,aAAa,CAAC,eAAe,CAAC,IAAI,yBAAyB,EAAE,CAAC,CAAC;aAChE;YAED,OAAO,aAAa,CAAC;QACvB,CAAC,CACF,CAAC;QACJ,qCAAqC;QACrC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAChC,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,6BAA6B,CAC3C,UAA0C,EAAE;IAE5C,OAAO,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport type * as coreTracing from \"@azure/core-tracing\";\nimport {\n Instrumentation,\n InstrumentationBase,\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n InstrumentationNodeModuleDefinition,\n} from \"@opentelemetry/instrumentation\";\nimport { OpenTelemetryInstrumenter } from \"./instrumenter\";\nimport { SDK_VERSION } from \"./configuration\";\n\n/**\n * Configuration options that can be passed to {@link createAzureSdkInstrumentation} function.\n */\nexport interface AzureSdkInstrumentationOptions extends InstrumentationConfig {}\n\n/**\n * The instrumentation module for the Azure SDK. Implements OpenTelemetry's {@link Instrumentation}.\n */\nclass AzureSdkInstrumentation extends InstrumentationBase {\n constructor(options: AzureSdkInstrumentationOptions = {}) {\n super(\n \"@azure/opentelemetry-instrumentation-azure-sdk\",\n SDK_VERSION,\n Object.assign({}, options)\n );\n }\n /**\n * Entrypoint for the module registration.\n *\n * @returns The patched \\@azure/core-tracing module after setting its instrumenter.\n */\n protected init():\n | void\n | InstrumentationModuleDefinition<typeof coreTracing>\n | InstrumentationModuleDefinition<typeof coreTracing>[] {\n const result: InstrumentationModuleDefinition<typeof coreTracing> =\n new InstrumentationNodeModuleDefinition(\n \"@azure/core-tracing\",\n [\"^1.0.0-preview.14\", \"^1.0.0\"],\n (moduleExports) => {\n if (typeof moduleExports.useInstrumenter === \"function\") {\n moduleExports.useInstrumenter(new OpenTelemetryInstrumenter());\n }\n\n return moduleExports;\n }\n );\n // Needed to support 1.0.0-preview.14\n result.includePrerelease = true;\n return result;\n }\n}\n\n/**\n * Enables Azure SDK Instrumentation using OpenTelemetry for Azure SDK client libraries.\n *\n * When registered, any Azure data plane package will begin emitting tracing spans for internal calls\n * as well as network calls\n *\n * Example usage:\n * ```ts\n * const openTelemetryInstrumentation = require(\"@opentelemetry/instrumentation\");\n * openTelemetryInstrumentation.registerInstrumentations({\n * instrumentations: [createAzureSdkInstrumentation()],\n * })\n * ```\n *\n * @remarks\n *\n * As OpenTelemetry instrumentations rely on patching required modules, you should register\n * this instrumentation as early as possible and before loading any Azure Client Libraries.\n */\nexport function createAzureSdkInstrumentation(\n options: AzureSdkInstrumentationOptions = {}\n): Instrumentation {\n return new AzureSdkInstrumentation(options);\n}\n"]}
1
+ {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAEL,mBAAmB,EAGnB,mCAAmC,GACpC,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAO9C;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,mBAAmB;IAC9D,YAAY,UAA0C,EAAE;QACtD,KAAK,CACH,gDAAgD,EAChD,WAAW,EACX,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAC3B,CAAC;IACJ,CAAC;IACD;;;;OAIG;IACO,IAAI;QACZ,MAAM,MAAM,GAAoC,IAAI,mCAAmC,CACrF,qBAAqB,EACrB,CAAC,mBAAmB,EAAE,QAAQ,CAAC,EAC/B,CAAC,aAAa,EAAE,EAAE;YAChB,IAAI,OAAO,aAAa,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;gBACxD,aAAa,CAAC,eAAe,CAAC,IAAI,yBAAyB,EAAE,CAAC,CAAC;YACjE,CAAC;YAED,OAAO,aAAa,CAAC;QACvB,CAAC,CACF,CAAC;QACF,qCAAqC;QACrC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAChC,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,6BAA6B,CAC3C,UAA0C,EAAE;IAE5C,OAAO,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n Instrumentation,\n InstrumentationBase,\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n InstrumentationNodeModuleDefinition,\n} from \"@opentelemetry/instrumentation\";\n\nimport { OpenTelemetryInstrumenter } from \"./instrumenter\";\nimport { SDK_VERSION } from \"./configuration\";\n\n/**\n * Configuration options that can be passed to {@link createAzureSdkInstrumentation} function.\n */\nexport interface AzureSdkInstrumentationOptions extends InstrumentationConfig {}\n\n/**\n * The instrumentation module for the Azure SDK. Implements OpenTelemetry's {@link Instrumentation}.\n */\nexport class AzureSdkInstrumentation extends InstrumentationBase {\n constructor(options: AzureSdkInstrumentationOptions = {}) {\n super(\n \"@azure/opentelemetry-instrumentation-azure-sdk\",\n SDK_VERSION,\n Object.assign({}, options),\n );\n }\n /**\n * Entrypoint for the module registration.\n *\n * @returns The patched \\@azure/core-tracing module after setting its instrumenter.\n */\n protected init(): void | InstrumentationModuleDefinition | InstrumentationModuleDefinition[] {\n const result: InstrumentationModuleDefinition = new InstrumentationNodeModuleDefinition(\n \"@azure/core-tracing\",\n [\"^1.0.0-preview.14\", \"^1.0.0\"],\n (moduleExports) => {\n if (typeof moduleExports.useInstrumenter === \"function\") {\n moduleExports.useInstrumenter(new OpenTelemetryInstrumenter());\n }\n\n return moduleExports;\n },\n );\n // Needed to support 1.0.0-preview.14\n result.includePrerelease = true;\n return result;\n }\n}\n\n/**\n * Enables Azure SDK Instrumentation using OpenTelemetry for Azure SDK client libraries.\n *\n * When registered, any Azure data plane package will begin emitting tracing spans for internal calls\n * as well as network calls\n *\n * Example usage:\n * ```ts\n * const openTelemetryInstrumentation = require(\"@opentelemetry/instrumentation\");\n * openTelemetryInstrumentation.registerInstrumentations({\n * instrumentations: [createAzureSdkInstrumentation()],\n * })\n * ```\n *\n * @remarks\n *\n * As OpenTelemetry instrumentations rely on patching required modules, you should register\n * this instrumentation as early as possible and before loading any Azure Client Libraries.\n */\nexport function createAzureSdkInstrumentation(\n options: AzureSdkInstrumentationOptions = {},\n): Instrumentation {\n return new AzureSdkInstrumentation(options);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"instrumenter.js","sourceRoot":"","sources":["../../src/instrumenter.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EACL,oBAAoB,EAEpB,OAAO,EACP,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,GACN,MAAM,oBAAoB,CAAC;AAO5B,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,oGAAoG;AACpG,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,yBAAyB,EAAE,CAAC;AAE1D,MAAM,OAAO,yBAAyB;IACpC,SAAS,CACP,IAAY,EACZ,WAAoC;QAEpC,IAAI,GAAG,GAAG,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,cAAc,KAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1D,IAAI,IAAU,CAAC;QAEf,IAAI,eAAe,CAAC,wBAAwB,CAAC,EAAE;YAC7C,sDAAsD;YACtD,IAAI,GAAG,KAAK,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;SACpD;aAAM;YACL,kBAAkB;YAClB,IAAI,GAAG,KAAK;iBACT,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,cAAc,CAAC;iBAC9D,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;YAEpD,IACE,eAAe,CAAC,sCAAsC,CAAC;gBACvD,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EACrC;gBACA,2BAA2B;gBAC3B,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;aAC5B;SACF;QAED,OAAO;YACL,IAAI,EAAE,IAAI,wBAAwB,CAAC,IAAI,CAAC;YACxC,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;SACzC,CAAC;IACJ,CAAC;IACD,WAAW,CAIT,cAA8B,EAC9B,QAAkB,EAClB,GAAG,YAA0B;QAE7B,OAAO,OAAO,CAAC,IAAI,CACjB,cAAc,EACd,QAAQ;QACR,4DAA4D,CAAC,SAAS,EACtE,GAAG,YAAY,CAChB,CAAC;IACJ,CAAC;IAED,sBAAsB,CAAC,iBAAyB;QAC9C,OAAO,UAAU,CAAC,OAAO,CACvB,OAAO,CAAC,MAAM,EAAE,EAChB,EAAE,WAAW,EAAE,iBAAiB,EAAE,EAClC,oBAAoB,CACrB,CAAC;IACJ,CAAC;IAED,oBAAoB,CAAC,cAA+B;QAClD,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,UAAU,CAAC,MAAM,CAAC,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC;QACrF,OAAO,OAAO,CAAC;IACjB,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n INVALID_SPAN_CONTEXT,\n Span,\n context,\n defaultTextMapGetter,\n defaultTextMapSetter,\n trace,\n} from \"@opentelemetry/api\";\nimport {\n Instrumenter,\n InstrumenterSpanOptions,\n TracingContext,\n TracingSpan,\n} from \"@azure/core-tracing\";\nimport { W3CTraceContextPropagator, suppressTracing } from \"@opentelemetry/core\";\n\nimport { OpenTelemetrySpanWrapper } from \"./spanWrapper\";\nimport { envVarToBoolean } from \"./configuration\";\nimport { toSpanOptions } from \"./transformations\";\n\n// While default propagation is user-configurable, Azure services always use the W3C implementation.\nexport const propagator = new W3CTraceContextPropagator();\n\nexport class OpenTelemetryInstrumenter implements Instrumenter {\n startSpan(\n name: string,\n spanOptions: InstrumenterSpanOptions\n ): { span: TracingSpan; tracingContext: TracingContext } {\n let ctx = spanOptions?.tracingContext || context.active();\n let span: Span;\n\n if (envVarToBoolean(\"AZURE_TRACING_DISABLED\")) {\n // disable only our spans but not any downstream spans\n span = trace.wrapSpanContext(INVALID_SPAN_CONTEXT);\n } else {\n // Create our span\n span = trace\n .getTracer(spanOptions.packageName, spanOptions.packageVersion)\n .startSpan(name, toSpanOptions(spanOptions), ctx);\n\n if (\n envVarToBoolean(\"AZURE_HTTP_TRACING_CHILDREN_DISABLED\") &&\n name.toUpperCase().startsWith(\"HTTP\")\n ) {\n // disable downstream spans\n ctx = suppressTracing(ctx);\n }\n }\n\n return {\n span: new OpenTelemetrySpanWrapper(span),\n tracingContext: trace.setSpan(ctx, span),\n };\n }\n withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType<Callback>\n >(\n tracingContext: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType<Callback> {\n return context.with(\n tracingContext,\n callback,\n /** Assume caller will bind `this` or use arrow functions */ undefined,\n ...callbackArgs\n );\n }\n\n parseTraceparentHeader(traceparentHeader: string): TracingContext {\n return propagator.extract(\n context.active(),\n { traceparent: traceparentHeader },\n defaultTextMapGetter\n );\n }\n\n createRequestHeaders(tracingContext?: TracingContext): Record<string, string> {\n const headers: Record<string, string> = {};\n propagator.inject(tracingContext || context.active(), headers, defaultTextMapSetter);\n return headers;\n }\n}\n"]}
1
+ {"version":3,"file":"instrumenter.js","sourceRoot":"","sources":["../../src/instrumenter.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EACL,oBAAoB,EAEpB,OAAO,EACP,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,GACN,MAAM,oBAAoB,CAAC;AAO5B,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,oGAAoG;AACpG,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,yBAAyB,EAAE,CAAC;AAE1D,MAAM,OAAO,yBAAyB;IACpC,SAAS,CACP,IAAY,EACZ,WAAoC;QAEpC,IAAI,GAAG,GAAG,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,cAAc,KAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1D,IAAI,IAAU,CAAC;QAEf,IAAI,eAAe,CAAC,wBAAwB,CAAC,EAAE,CAAC;YAC9C,sDAAsD;YACtD,IAAI,GAAG,KAAK,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,kBAAkB;YAClB,IAAI,GAAG,KAAK;iBACT,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,cAAc,CAAC;iBAC9D,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;YAEpD,IACE,eAAe,CAAC,sCAAsC,CAAC;gBACvD,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EACrC,CAAC;gBACD,2BAA2B;gBAC3B,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,IAAI,wBAAwB,CAAC,IAAI,CAAC;YACxC,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;SACzC,CAAC;IACJ,CAAC;IACD,WAAW,CAIT,cAA8B,EAC9B,QAAkB,EAClB,GAAG,YAA0B;QAE7B,OAAO,OAAO,CAAC,IAAI,CACjB,cAAc,EACd,QAAQ;QACR,4DAA4D,CAAC,SAAS,EACtE,GAAG,YAAY,CAChB,CAAC;IACJ,CAAC;IAED,sBAAsB,CAAC,iBAAyB;QAC9C,OAAO,UAAU,CAAC,OAAO,CACvB,OAAO,CAAC,MAAM,EAAE,EAChB,EAAE,WAAW,EAAE,iBAAiB,EAAE,EAClC,oBAAoB,CACrB,CAAC;IACJ,CAAC;IAED,oBAAoB,CAAC,cAA+B;QAClD,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,UAAU,CAAC,MAAM,CAAC,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC;QACrF,OAAO,OAAO,CAAC;IACjB,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n INVALID_SPAN_CONTEXT,\n Span,\n context,\n defaultTextMapGetter,\n defaultTextMapSetter,\n trace,\n} from \"@opentelemetry/api\";\nimport {\n Instrumenter,\n InstrumenterSpanOptions,\n TracingContext,\n TracingSpan,\n} from \"@azure/core-tracing\";\nimport { W3CTraceContextPropagator, suppressTracing } from \"@opentelemetry/core\";\n\nimport { OpenTelemetrySpanWrapper } from \"./spanWrapper\";\nimport { envVarToBoolean } from \"./configuration\";\nimport { toSpanOptions } from \"./transformations\";\n\n// While default propagation is user-configurable, Azure services always use the W3C implementation.\nexport const propagator = new W3CTraceContextPropagator();\n\nexport class OpenTelemetryInstrumenter implements Instrumenter {\n startSpan(\n name: string,\n spanOptions: InstrumenterSpanOptions,\n ): { span: TracingSpan; tracingContext: TracingContext } {\n let ctx = spanOptions?.tracingContext || context.active();\n let span: Span;\n\n if (envVarToBoolean(\"AZURE_TRACING_DISABLED\")) {\n // disable only our spans but not any downstream spans\n span = trace.wrapSpanContext(INVALID_SPAN_CONTEXT);\n } else {\n // Create our span\n span = trace\n .getTracer(spanOptions.packageName, spanOptions.packageVersion)\n .startSpan(name, toSpanOptions(spanOptions), ctx);\n\n if (\n envVarToBoolean(\"AZURE_HTTP_TRACING_CHILDREN_DISABLED\") &&\n name.toUpperCase().startsWith(\"HTTP\")\n ) {\n // disable downstream spans\n ctx = suppressTracing(ctx);\n }\n }\n\n return {\n span: new OpenTelemetrySpanWrapper(span),\n tracingContext: trace.setSpan(ctx, span),\n };\n }\n withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType<Callback>,\n >(\n tracingContext: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType<Callback> {\n return context.with(\n tracingContext,\n callback,\n /** Assume caller will bind `this` or use arrow functions */ undefined,\n ...callbackArgs,\n );\n }\n\n parseTraceparentHeader(traceparentHeader: string): TracingContext {\n return propagator.extract(\n context.active(),\n { traceparent: traceparentHeader },\n defaultTextMapGetter,\n );\n }\n\n createRequestHeaders(tracingContext?: TracingContext): Record<string, string> {\n const headers: Record<string, string> = {};\n propagator.inject(tracingContext || context.active(), headers, defaultTextMapSetter);\n return headers;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"spanWrapper.js","sourceRoot":"","sources":["../../src/spanWrapper.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAA4B,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAG9E,MAAM,OAAO,wBAAwB;IAGnC,YAAY,IAAU;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,SAAS,CAAC,MAAkB;QAC1B,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE;YAC7B,IAAI,MAAM,CAAC,KAAK,EAAE;gBAChB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBACvF,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aACpC;iBAAM;gBACL,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC;aACtD;SACF;aAAM,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;YACtC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;SACnD;IACH,CAAC;IAED,YAAY,CAAC,IAAY,EAAE,KAAc;QACvC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;YACzC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,KAA2B,CAAC,CAAC;SAC5D;IACH,CAAC;IAED,GAAG;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,eAAe,CAAC,SAAyB;QACvC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { Span, SpanAttributeValue, SpanStatusCode } from \"@opentelemetry/api\";\nimport { SpanStatus, TracingSpan } from \"@azure/core-tracing\";\n\nexport class OpenTelemetrySpanWrapper implements TracingSpan {\n private _span: Span;\n\n constructor(span: Span) {\n this._span = span;\n }\n\n setStatus(status: SpanStatus): void {\n if (status.status === \"error\") {\n if (status.error) {\n this._span.setStatus({ code: SpanStatusCode.ERROR, message: status.error.toString() });\n this.recordException(status.error);\n } else {\n this._span.setStatus({ code: SpanStatusCode.ERROR });\n }\n } else if (status.status === \"success\") {\n this._span.setStatus({ code: SpanStatusCode.OK });\n }\n }\n\n setAttribute(name: string, value: unknown): void {\n if (value !== null && value !== undefined) {\n this._span.setAttribute(name, value as SpanAttributeValue);\n }\n }\n\n end(): void {\n this._span.end();\n }\n\n recordException(exception: string | Error): void {\n this._span.recordException(exception);\n }\n\n isRecording(): boolean {\n return this._span.isRecording();\n }\n\n /**\n * Allows getting the wrapped span as needed.\n * @internal\n *\n * @returns The underlying span\n */\n unwrap(): Span {\n return this._span;\n }\n}\n"]}
1
+ {"version":3,"file":"spanWrapper.js","sourceRoot":"","sources":["../../src/spanWrapper.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAwB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAG1E,MAAM,OAAO,wBAAwB;IAGnC,YAAY,IAAU;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,SAAS,CAAC,MAAkB;QAC1B,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC9B,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBACvF,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,YAAY,CAAC,IAAY,EAAE,KAAc;QACvC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,KAAuB,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,GAAG;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,eAAe,CAAC,SAAyB;QACvC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { Span, AttributeValue, SpanStatusCode } from \"@opentelemetry/api\";\nimport { SpanStatus, TracingSpan } from \"@azure/core-tracing\";\n\nexport class OpenTelemetrySpanWrapper implements TracingSpan {\n private _span: Span;\n\n constructor(span: Span) {\n this._span = span;\n }\n\n setStatus(status: SpanStatus): void {\n if (status.status === \"error\") {\n if (status.error) {\n this._span.setStatus({ code: SpanStatusCode.ERROR, message: status.error.toString() });\n this.recordException(status.error);\n } else {\n this._span.setStatus({ code: SpanStatusCode.ERROR });\n }\n } else if (status.status === \"success\") {\n this._span.setStatus({ code: SpanStatusCode.OK });\n }\n }\n\n setAttribute(name: string, value: unknown): void {\n if (value !== null && value !== undefined) {\n this._span.setAttribute(name, value as AttributeValue);\n }\n }\n\n end(): void {\n this._span.end();\n }\n\n recordException(exception: string | Error): void {\n this._span.recordException(exception);\n }\n\n isRecording(): boolean {\n return this._span.isRecording();\n }\n\n /**\n * Allows getting the wrapped span as needed.\n * @internal\n *\n * @returns The underlying span\n */\n unwrap(): Span {\n return this._span;\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
- import { SpanKind, trace, } from "@opentelemetry/api";
3
+ import { SpanKind, trace } from "@opentelemetry/api";
4
4
  /**
5
5
  * Converts our TracingSpanKind to the corresponding OpenTelemetry SpanKind.
6
6
  *
@@ -1 +1 @@
1
- {"version":3,"file":"transformations.js","sourceRoot":"","sources":["../../src/transformations.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAIL,QAAQ,EAER,KAAK,GACN,MAAM,oBAAoB,CAAC;AAE5B;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,eAAmB;IAEnB,MAAM,GAAG,GAAG,CAAC,eAAe,IAAI,UAAU,CAAC,CAAC,WAAW,EAA2B,CAAC;IACnF,OAAO,QAAQ,CAAC,GAAG,CAAuB,CAAC;AAC7C,CAAC;AAaD;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,YAA+B,EAAE;IAC7D,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,eAAe,EAAE,EAAE;QAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QACzE,IAAI,WAAW,EAAE;YACf,GAAG,CAAC,IAAI,CAAC;gBACP,OAAO,EAAE,WAAW;gBACpB,UAAU,EAAE,6BAA6B,CAAC,eAAe,CAAC,UAAU,CAAC;aACtE,CAAC,CAAC;SACJ;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAY,CAAC,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,SAAS,6BAA6B,CACpC,cAAsD;IAEtD,MAAM,UAAU,GAAqD,EAAE,CAAC;IACxE,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE;QAChC,oCAAoC;QACpC,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;YACrE,UAAU,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,CAAuB,CAAC;SAC7D;KACF;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,WAAqC;IACjE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,WAAW,IAAI,EAAE,CAAC;IAElE,MAAM,UAAU,GAAmB,6BAA6B,CAAC,cAAc,CAAC,CAAC;IACjF,MAAM,IAAI,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAE9C,OAAO;QACL,UAAU;QACV,IAAI;QACJ,KAAK;KACN,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { InstrumenterSpanOptions, TracingSpanKind, TracingSpanLink } from \"@azure/core-tracing\";\nimport {\n Link,\n SpanAttributeValue,\n SpanAttributes,\n SpanKind,\n SpanOptions,\n trace,\n} from \"@opentelemetry/api\";\n\n/**\n * Converts our TracingSpanKind to the corresponding OpenTelemetry SpanKind.\n *\n * By default it will return {@link SpanKind.INTERNAL}\n * @param tracingSpanKind - The core tracing {@link TracingSpanKind}\n * @returns - The OpenTelemetry {@link SpanKind}\n */\nexport function toOpenTelemetrySpanKind<K extends TracingSpanKind>(\n tracingSpanKind?: K\n): SpanKindMapping[K] {\n const key = (tracingSpanKind || \"internal\").toUpperCase() as keyof typeof SpanKind;\n return SpanKind[key] as SpanKindMapping[K];\n}\n\n/**\n * A mapping between our {@link TracingSpanKind} union type and OpenTelemetry's {@link SpanKind}.\n */\ntype SpanKindMapping = {\n client: SpanKind.CLIENT;\n server: SpanKind.SERVER;\n producer: SpanKind.PRODUCER;\n consumer: SpanKind.CONSUMER;\n internal: SpanKind.INTERNAL;\n};\n\n/**\n * Converts core-tracing's TracingSpanLink to OpenTelemetry's Link\n *\n * @param spanLinks - The core tracing {@link TracingSpanLink} to convert\n * @returns A set of {@link Link}s\n */\nfunction toOpenTelemetryLinks(spanLinks: TracingSpanLink[] = []): Link[] {\n return spanLinks.reduce((acc, tracingSpanLink) => {\n const spanContext = trace.getSpanContext(tracingSpanLink.tracingContext);\n if (spanContext) {\n acc.push({\n context: spanContext,\n attributes: toOpenTelemetrySpanAttributes(tracingSpanLink.attributes),\n });\n }\n return acc;\n }, [] as Link[]);\n}\n\n/**\n * Converts core-tracing's span attributes to OpenTelemetry attributes.\n *\n * @param spanAttributes - The set of attributes to convert.\n * @returns An {@link SpanAttributes} to set on a span.\n */\nfunction toOpenTelemetrySpanAttributes(\n spanAttributes: { [key: string]: unknown } | undefined\n): SpanAttributes {\n const attributes: ReturnType<typeof toOpenTelemetrySpanAttributes> = {};\n for (const key in spanAttributes) {\n // Any non-nullish value is allowed.\n if (spanAttributes[key] !== null && spanAttributes[key] !== undefined) {\n attributes[key] = spanAttributes[key] as SpanAttributeValue;\n }\n }\n return attributes;\n}\n\n/**\n * Converts core-tracing span options to OpenTelemetry options.\n *\n * @param spanOptions - The {@link InstrumenterSpanOptions} to convert.\n * @returns An OpenTelemetry {@link SpanOptions} that can be used when creating a span.\n */\nexport function toSpanOptions(spanOptions?: InstrumenterSpanOptions): SpanOptions {\n const { spanAttributes, spanLinks, spanKind } = spanOptions || {};\n\n const attributes: SpanAttributes = toOpenTelemetrySpanAttributes(spanAttributes);\n const kind = toOpenTelemetrySpanKind(spanKind);\n const links = toOpenTelemetryLinks(spanLinks);\n\n return {\n attributes,\n kind,\n links,\n };\n}\n"]}
1
+ {"version":3,"file":"transformations.js","sourceRoot":"","sources":["../../src/transformations.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAoC,QAAQ,EAAe,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEpG;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,eAAmB;IAEnB,MAAM,GAAG,GAAG,CAAC,eAAe,IAAI,UAAU,CAAC,CAAC,WAAW,EAA2B,CAAC;IACnF,OAAO,QAAQ,CAAC,GAAG,CAAuB,CAAC;AAC7C,CAAC;AAaD;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,YAA+B,EAAE;IAC7D,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,eAAe,EAAE,EAAE;QAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QACzE,IAAI,WAAW,EAAE,CAAC;YAChB,GAAG,CAAC,IAAI,CAAC;gBACP,OAAO,EAAE,WAAW;gBACpB,UAAU,EAAE,6BAA6B,CAAC,eAAe,CAAC,UAAU,CAAC;aACtE,CAAC,CAAC;QACL,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAY,CAAC,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,SAAS,6BAA6B,CACpC,cAAsD;IAEtD,MAAM,UAAU,GAAqD,EAAE,CAAC;IACxE,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,oCAAoC;QACpC,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YACtE,UAAU,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,CAAmB,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,WAAqC;IACjE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,WAAW,IAAI,EAAE,CAAC;IAElE,MAAM,UAAU,GAAe,6BAA6B,CAAC,cAAc,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAE9C,OAAO;QACL,UAAU;QACV,IAAI;QACJ,KAAK;KACN,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { InstrumenterSpanOptions, TracingSpanKind, TracingSpanLink } from \"@azure/core-tracing\";\nimport { Attributes, AttributeValue, Link, SpanKind, SpanOptions, trace } from \"@opentelemetry/api\";\n\n/**\n * Converts our TracingSpanKind to the corresponding OpenTelemetry SpanKind.\n *\n * By default it will return {@link SpanKind.INTERNAL}\n * @param tracingSpanKind - The core tracing {@link TracingSpanKind}\n * @returns - The OpenTelemetry {@link SpanKind}\n */\nexport function toOpenTelemetrySpanKind<K extends TracingSpanKind>(\n tracingSpanKind?: K,\n): SpanKindMapping[K] {\n const key = (tracingSpanKind || \"internal\").toUpperCase() as keyof typeof SpanKind;\n return SpanKind[key] as SpanKindMapping[K];\n}\n\n/**\n * A mapping between our {@link TracingSpanKind} union type and OpenTelemetry's {@link SpanKind}.\n */\ntype SpanKindMapping = {\n client: SpanKind.CLIENT;\n server: SpanKind.SERVER;\n producer: SpanKind.PRODUCER;\n consumer: SpanKind.CONSUMER;\n internal: SpanKind.INTERNAL;\n};\n\n/**\n * Converts core-tracing's TracingSpanLink to OpenTelemetry's Link\n *\n * @param spanLinks - The core tracing {@link TracingSpanLink} to convert\n * @returns A set of {@link Link}s\n */\nfunction toOpenTelemetryLinks(spanLinks: TracingSpanLink[] = []): Link[] {\n return spanLinks.reduce((acc, tracingSpanLink) => {\n const spanContext = trace.getSpanContext(tracingSpanLink.tracingContext);\n if (spanContext) {\n acc.push({\n context: spanContext,\n attributes: toOpenTelemetrySpanAttributes(tracingSpanLink.attributes),\n });\n }\n return acc;\n }, [] as Link[]);\n}\n\n/**\n * Converts core-tracing's span attributes to OpenTelemetry attributes.\n *\n * @param spanAttributes - The set of attributes to convert.\n * @returns An {@link SpanAttributes} to set on a span.\n */\nfunction toOpenTelemetrySpanAttributes(\n spanAttributes: { [key: string]: unknown } | undefined,\n): Attributes {\n const attributes: ReturnType<typeof toOpenTelemetrySpanAttributes> = {};\n for (const key in spanAttributes) {\n // Any non-nullish value is allowed.\n if (spanAttributes[key] !== null && spanAttributes[key] !== undefined) {\n attributes[key] = spanAttributes[key] as AttributeValue;\n }\n }\n return attributes;\n}\n\n/**\n * Converts core-tracing span options to OpenTelemetry options.\n *\n * @param spanOptions - The {@link InstrumenterSpanOptions} to convert.\n * @returns An OpenTelemetry {@link SpanOptions} that can be used when creating a span.\n */\nexport function toSpanOptions(spanOptions?: InstrumenterSpanOptions): SpanOptions {\n const { spanAttributes, spanLinks, spanKind } = spanOptions || {};\n\n const attributes: Attributes = toOpenTelemetrySpanAttributes(spanAttributes);\n const kind = toOpenTelemetrySpanKind(spanKind);\n const links = toOpenTelemetryLinks(spanLinks);\n\n return {\n attributes,\n kind,\n links,\n };\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@azure/opentelemetry-instrumentation-azure-sdk",
3
- "version": "1.0.0-beta.4",
3
+ "version": "1.0.0-beta.6",
4
4
  "description": "Instrumentation client for the Azure SDK.",
5
5
  "sdk-type": "client",
6
6
  "main": "dist/index.js",
@@ -18,27 +18,19 @@
18
18
  ]
19
19
  },
20
20
  "types": "types/latest/opentelemetry-instrumentation-azure-sdk.d.ts",
21
- "typesVersions": {
22
- "<3.6": {
23
- "*": [
24
- "types/3.1/opentelemetry-instrumentation-azure-sdk.d.ts"
25
- ]
26
- }
27
- },
28
21
  "scripts": {
29
22
  "audit": "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit",
30
23
  "build:samples": "echo Obsolete",
31
24
  "build:test": "tsc -p . && dev-tool run bundle",
32
- "build:types": "downlevel-dts types/latest/ types/3.1/",
33
- "build": "npm run clean && tsc -p . && dev-tool run bundle && api-extractor run --local && npm run build:types",
34
- "check-format": "prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"",
35
- "clean": "rimraf dist dist-* temp types *.tgz *.log",
25
+ "build": "npm run clean && tsc -p . && dev-tool run bundle && dev-tool run extract-api",
26
+ "check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"",
27
+ "clean": "rimraf --glob dist dist-* temp types *.tgz *.log",
36
28
  "execute:samples": "dev-tool samples run samples-dev",
37
- "extract-api": "tsc -p . && api-extractor run --local",
38
- "format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"",
29
+ "extract-api": "tsc -p . && dev-tool run extract-api",
30
+ "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"",
39
31
  "generate:client": "autorest --typescript ./swagger/README.md",
40
32
  "integration-test:browser": "karma start --single-run",
41
- "integration-test:node": "nyc mocha -r esm --require source-map-support/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 5000000 --full-trace \"dist-esm/test/{,!(browser)/**/}/*.spec.js\"",
33
+ "integration-test:node": "dev-tool run test:node-js-input --no-test-proxy",
42
34
  "integration-test": "npm run integration-test:node && npm run integration-test:browser",
43
35
  "lint:fix": "eslint package.json api-extractor.json README.md src test --ext .ts,.javascript,.js --fix --fix-type [problem,suggestion]",
44
36
  "lint": "eslint package.json api-extractor.json README.md src test --ext .ts,.javascript,.js",
@@ -47,20 +39,19 @@
47
39
  "test:node": "npm run clean && tsc -p . && npm run unit-test:node && npm run integration-test:node",
48
40
  "test": "npm run clean && tsc -p . && npm run unit-test:node && dev-tool run bundle && npm run unit-test:browser && npm run integration-test",
49
41
  "unit-test:browser": "karma start --single-run",
50
- "unit-test:node": "mocha -r esm -r ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace --exclude \"test/**/browser/*.spec.ts\" \"test/**/*.spec.ts\"",
42
+ "unit-test:node": "dev-tool run test:node-tsx-ts --no-test-proxy",
51
43
  "unit-test": "npm run unit-test:node && npm run unit-test:browser"
52
44
  },
53
45
  "files": [
54
46
  "dist/",
55
47
  "dist-esm/src/",
56
48
  "types/latest/",
57
- "types/3.1/",
58
49
  "README.md",
59
50
  "LICENSE"
60
51
  ],
61
52
  "repository": "github:Azure/azure-sdk-for-js",
62
53
  "engines": {
63
- "node": ">=14.0.0"
54
+ "node": ">=18.0.0"
64
55
  },
65
56
  "keywords": [
66
57
  "azure",
@@ -79,9 +70,9 @@
79
70
  "dependencies": {
80
71
  "@azure/core-tracing": "^1.0.0",
81
72
  "@azure/logger": "^1.0.0",
82
- "@opentelemetry/api": "^1.4.1",
83
- "@opentelemetry/core": "^1.14.0",
84
- "@opentelemetry/instrumentation": "^0.40.0",
73
+ "@opentelemetry/api": "^1.9.0",
74
+ "@opentelemetry/core": "^1.25.1",
75
+ "@opentelemetry/instrumentation": "^0.52.1",
85
76
  "tslib": "^2.2.0"
86
77
  },
87
78
  "devDependencies": {
@@ -89,18 +80,16 @@
89
80
  "@azure/dev-tool": "^1.0.0",
90
81
  "@azure/eslint-plugin-azure-sdk": "^3.0.0",
91
82
  "@microsoft/api-extractor": "^7.31.1",
92
- "@opentelemetry/sdk-trace-base": "^1.14.0",
93
- "@opentelemetry/sdk-trace-node": "^1.14.0",
83
+ "@opentelemetry/sdk-trace-base": "^1.25.1",
84
+ "@opentelemetry/sdk-trace-node": "^1.25.1",
94
85
  "@types/chai": "^4.1.6",
95
- "@types/mocha": "^7.0.2",
96
- "@types/node": "^14.0.0",
97
- "@types/sinon": "^10.0.6",
86
+ "@types/mocha": "^10.0.0",
87
+ "@types/node": "^18.0.0",
88
+ "@types/sinon": "^17.0.0",
98
89
  "chai": "^4.2.0",
99
90
  "cross-env": "^7.0.2",
100
91
  "dotenv": "^16.0.0",
101
- "downlevel-dts": "^0.10.0",
102
92
  "eslint": "^8.0.0",
103
- "esm": "^3.2.18",
104
93
  "inherits": "^2.0.3",
105
94
  "karma": "^6.2.0",
106
95
  "karma-chrome-launcher": "^3.0.0",
@@ -110,14 +99,13 @@
110
99
  "karma-junit-reporter": "^2.0.1",
111
100
  "karma-mocha": "^2.0.1",
112
101
  "karma-mocha-reporter": "^2.2.5",
113
- "mocha": "^7.1.1",
114
- "mocha-junit-reporter": "^1.18.0",
115
- "nyc": "^15.0.0",
116
- "prettier": "^2.5.1",
117
- "rimraf": "^3.0.0",
118
- "sinon": "^12.0.1",
102
+ "mocha": "^10.0.0",
103
+ "nyc": "^17.0.0",
104
+ "rimraf": "^5.0.5",
105
+ "sinon": "^17.0.0",
119
106
  "source-map-support": "^0.5.9",
120
- "typescript": "~5.0.0",
107
+ "tsx": "^4.7.1",
108
+ "typescript": "~5.5.3",
121
109
  "util": "^0.12.1"
122
110
  },
123
111
  "//sampleConfiguration": {
@@ -1,6 +1,21 @@
1
1
  import { AzureLogger } from '@azure/logger';
2
2
  import { Instrumentation } from '@opentelemetry/instrumentation';
3
+ import { InstrumentationBase } from '@opentelemetry/instrumentation';
3
4
  import { InstrumentationConfig } from '@opentelemetry/instrumentation';
5
+ import { InstrumentationModuleDefinition } from '@opentelemetry/instrumentation';
6
+
7
+ /**
8
+ * The instrumentation module for the Azure SDK. Implements OpenTelemetry's {@link Instrumentation}.
9
+ */
10
+ export declare class AzureSdkInstrumentation extends InstrumentationBase {
11
+ constructor(options?: AzureSdkInstrumentationOptions);
12
+ /**
13
+ * Entrypoint for the module registration.
14
+ *
15
+ * @returns The patched \@azure/core-tracing module after setting its instrumenter.
16
+ */
17
+ protected init(): void | InstrumentationModuleDefinition | InstrumentationModuleDefinition[];
18
+ }
4
19
 
5
20
  /**
6
21
  * Configuration options that can be passed to {@link createAzureSdkInstrumentation} function.
@@ -5,7 +5,7 @@
5
5
  "toolPackages": [
6
6
  {
7
7
  "packageName": "@microsoft/api-extractor",
8
- "packageVersion": "7.35.2"
8
+ "packageVersion": "7.47.6"
9
9
  }
10
10
  ]
11
11
  }
@@ -1,33 +0,0 @@
1
- import { AzureLogger } from '@azure/logger';
2
- import { Instrumentation } from '@opentelemetry/instrumentation';
3
- import { InstrumentationConfig } from '@opentelemetry/instrumentation';
4
- /**
5
- * Configuration options that can be passed to {@link createAzureSdkInstrumentation} function.
6
- */
7
- export declare interface AzureSdkInstrumentationOptions extends InstrumentationConfig {
8
- }
9
- /**
10
- * Enables Azure SDK Instrumentation using OpenTelemetry for Azure SDK client libraries.
11
- *
12
- * When registered, any Azure data plane package will begin emitting tracing spans for internal calls
13
- * as well as network calls
14
- *
15
- * Example usage:
16
- * ```ts
17
- * const openTelemetryInstrumentation = require("@opentelemetry/instrumentation");
18
- * openTelemetryInstrumentation.registerInstrumentations({
19
- * instrumentations: [createAzureSdkInstrumentation()],
20
- * })
21
- * ```
22
- *
23
- * @remarks
24
- *
25
- * As OpenTelemetry instrumentations rely on patching required modules, you should register
26
- * this instrumentation as early as possible and before loading any Azure Client Libraries.
27
- */
28
- export declare function createAzureSdkInstrumentation(options?: AzureSdkInstrumentationOptions): Instrumentation;
29
- /**
30
- * The \@azure/logger configuration for this package.
31
- */
32
- export declare const logger: AzureLogger;
33
- export {};