@@ -29,11 +29,14 @@ import {
2929 SEED_KEY_NAME ,
3030 VARIANT_KEY_NAME ,
3131 VARIANTS_KEY_NAME ,
32- CONFIGURATION_VALUE_KEY_NAME
32+ CONFIGURATION_VALUE_KEY_NAME ,
33+ CONDITIONS_KEY_NAME ,
34+ CLIENT_FILTERS_KEY_NAME
3335} from "./featureManagement/constants.js" ;
3436import { AzureKeyVaultKeyValueAdapter } from "./keyvault/AzureKeyVaultKeyValueAdapter.js" ;
3537import { RefreshTimer } from "./refresh/RefreshTimer.js" ;
36- import { getConfigurationSettingWithTrace , listConfigurationSettingsWithTrace , requestTracingEnabled } from "./requestTracing/utils.js" ;
38+ import { RequestTracingOptions , getConfigurationSettingWithTrace , listConfigurationSettingsWithTrace , requestTracingEnabled } from "./requestTracing/utils.js" ;
39+ import { FeatureFlagTracingOptions } from "./requestTracing/FeatureFlagTracingOptions.js" ;
3740import { KeyFilter , LabelFilter , SettingSelector } from "./types.js" ;
3841import { ConfigurationClientManager } from "./ConfigurationClientManager.js" ;
3942
@@ -61,6 +64,7 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
6164 #options: AzureAppConfigurationOptions | undefined ;
6265 #isInitialLoadCompleted: boolean = false ;
6366 #isFailoverRequest: boolean = false ;
67+ #featureFlagTracing: FeatureFlagTracingOptions | undefined ;
6468
6569 // Refresh
6670 #refreshInProgress: boolean = false ;
@@ -99,6 +103,9 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
99103
100104 // enable request tracing if not opt-out
101105 this . #requestTracingEnabled = requestTracingEnabled ( ) ;
106+ if ( this . #requestTracingEnabled) {
107+ this . #featureFlagTracing = new FeatureFlagTracingOptions ( ) ;
108+ }
102109
103110 if ( options ?. trimKeyPrefixes ) {
104111 this . #sortedTrimKeyPrefixes = [ ...options . trimKeyPrefixes ] . sort ( ( a , b ) => b . localeCompare ( a ) ) ;
@@ -170,12 +177,14 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
170177 return this . #featureFlagEnabled && ! ! this . #options?. featureFlagOptions ?. refresh ?. enabled ;
171178 }
172179
173- get #requestTraceOptions( ) {
180+ get #requestTraceOptions( ) : RequestTracingOptions {
174181 return {
175- requestTracingEnabled : this . #requestTracingEnabled,
176- initialLoadCompleted : this . #isInitialLoadCompleted,
182+ enabled : this . #requestTracingEnabled,
177183 appConfigOptions : this . #options,
178- isFailoverRequest : this . #isFailoverRequest
184+ initialLoadCompleted : this . #isInitialLoadCompleted,
185+ replicaCount : this . #clientManager. getReplicaCount ( ) ,
186+ isFailoverRequest : this . #isFailoverRequest,
187+ featureFlagTracing : this . #featureFlagTracing
179188 } ;
180189 }
181190
@@ -662,6 +671,25 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
662671 } ;
663672 }
664673
674+ if ( this . #requestTracingEnabled && this . #featureFlagTracing !== undefined ) {
675+ if ( featureFlag [ CONDITIONS_KEY_NAME ] &&
676+ featureFlag [ CONDITIONS_KEY_NAME ] [ CLIENT_FILTERS_KEY_NAME ] &&
677+ Array . isArray ( featureFlag [ CONDITIONS_KEY_NAME ] [ CLIENT_FILTERS_KEY_NAME ] ) ) {
678+ for ( const filter of featureFlag [ CONDITIONS_KEY_NAME ] [ CLIENT_FILTERS_KEY_NAME ] ) {
679+ this . #featureFlagTracing. updateFeatureFilterTracing ( filter [ NAME_KEY_NAME ] ) ;
680+ }
681+ }
682+ if ( featureFlag [ VARIANTS_KEY_NAME ] && Array . isArray ( featureFlag [ VARIANTS_KEY_NAME ] ) ) {
683+ this . #featureFlagTracing. notifyMaxVariants ( featureFlag [ VARIANTS_KEY_NAME ] . length ) ;
684+ }
685+ if ( featureFlag [ TELEMETRY_KEY_NAME ] && featureFlag [ TELEMETRY_KEY_NAME ] [ ENABLED_KEY_NAME ] ) {
686+ this . #featureFlagTracing. usesTelemetry = true ;
687+ }
688+ if ( featureFlag [ ALLOCATION_KEY_NAME ] && featureFlag [ ALLOCATION_KEY_NAME ] [ SEED_KEY_NAME ] ) {
689+ this . #featureFlagTracing. usesSeed = true ;
690+ }
691+ }
692+
665693 return featureFlag ;
666694 }
667695
0 commit comments