diff --git a/src/AzureAppConfigurationImpl.ts b/src/AzureAppConfigurationImpl.ts index 1bbf0779..3d5bc211 100644 --- a/src/AzureAppConfigurationImpl.ts +++ b/src/AzureAppConfigurationImpl.ts @@ -63,7 +63,7 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration { this.#options = options; // Enable request tracing if not opt-out - this.#requestTracingEnabled = requestTracingEnabled(); + this.#requestTracingEnabled = options?.requestTracingOptions?.enabled ?? requestTracingEnabled(); if (options?.trimKeyPrefixes) { this.#sortedTrimKeyPrefixes = [...options.trimKeyPrefixes].sort((a, b) => b.localeCompare(a)); diff --git a/src/AzureAppConfigurationOptions.ts b/src/AzureAppConfigurationOptions.ts index f88ad67c..a9df321d 100644 --- a/src/AzureAppConfigurationOptions.ts +++ b/src/AzureAppConfigurationOptions.ts @@ -6,6 +6,7 @@ import { KeyVaultOptions } from "./keyvault/KeyVaultOptions.js"; import { RefreshOptions } from "./RefreshOptions.js"; import { SettingSelector } from "./types.js"; import { FeatureFlagOptions } from "./featureManagement/FeatureFlagOptions.js"; +import { RequestTracingOptions } from "./requestTracing/RequestTracingOptions.js"; export const MaxRetries = 2; export const MaxRetryDelayInMs = 60000; @@ -47,4 +48,9 @@ export interface AzureAppConfigurationOptions { * Specifies options used to configure feature flags. */ featureFlagOptions?: FeatureFlagOptions; + + /** + * Specifies options used to configure request tracing. + */ + requestTracingOptions?: RequestTracingOptions; } diff --git a/src/requestTracing/RequestTracingOptions.ts b/src/requestTracing/RequestTracingOptions.ts new file mode 100644 index 00000000..016da0cd --- /dev/null +++ b/src/requestTracing/RequestTracingOptions.ts @@ -0,0 +1,12 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. + +/** + * Options used to configure request tracing. + */ +export interface RequestTracingOptions { + /** + * Specifies whether request tracing is enabled. + */ + enabled: boolean; +} diff --git a/test/requestTracing.test.ts b/test/requestTracing.test.ts index d4e7edcf..a08ffa8b 100644 --- a/test/requestTracing.test.ts +++ b/test/requestTracing.test.ts @@ -122,6 +122,20 @@ describe("request tracing", function () { delete process.env.AZURE_APP_CONFIGURATION_TRACING_DISABLED; }); + it("should disable request tracing by RequestTracingOptions", async () => { + try { + await load(createMockedConnectionString(fakeEndpoint), { + clientOptions, + requestTracingOptions: { + enabled: false + } + }); + } catch (e) { /* empty */ } + expect(headerPolicy.headers).not.undefined; + const correlationContext = headerPolicy.headers.get("Correlation-Context"); + expect(correlationContext).undefined; + }); + it("should have request type in correlation-context header when refresh is enabled", async () => { mockAppConfigurationClientListConfigurationSettings([{ key: "app.settings.fontColor",