@@ -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" ;
3638import { 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 ) ) ;
@@ -176,7 +183,8 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
176183 appConfigOptions : this . #options,
177184 initialLoadCompleted : this . #isInitialLoadCompleted,
178185 replicaCount : this . #clientManager. getReplicaCount ( ) ,
179- isFailoverRequest : this . #isFailoverRequest
186+ isFailoverRequest : this . #isFailoverRequest,
187+ featureFlagTracing : this . #featureFlagTracing
180188 } ;
181189 }
182190
@@ -663,6 +671,25 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
663671 } ;
664672 }
665673
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+
666693 return featureFlag ;
667694 }
668695
0 commit comments