@@ -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" ;
3942import { ETAG_LOOKUP_HEADER } from "./EtagUrlPipelinePolicy.js" ;
@@ -69,6 +72,7 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
6972 #options: AzureAppConfigurationOptions | undefined ;
7073 #isInitialLoadCompleted: boolean = false ;
7174 #isFailoverRequest: boolean = false ;
75+ #featureFlagTracing: FeatureFlagTracingOptions | undefined ;
7276
7377 // Refresh
7478 #refreshInProgress: boolean = false ;
@@ -112,6 +116,9 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
112116
113117 // enable request tracing if not opt-out
114118 this . #requestTracingEnabled = requestTracingEnabled ( ) ;
119+ if ( this . #requestTracingEnabled) {
120+ this . #featureFlagTracing = new FeatureFlagTracingOptions ( ) ;
121+ }
115122
116123 if ( options ?. trimKeyPrefixes ) {
117124 this . #sortedTrimKeyPrefixes = [ ...options . trimKeyPrefixes ] . sort ( ( a , b ) => b . localeCompare ( a ) ) ;
@@ -190,7 +197,8 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
190197 initialLoadCompleted : this . #isInitialLoadCompleted,
191198 replicaCount : this . #clientManager. getReplicaCount ( ) ,
192199 isFailoverRequest : this . #isFailoverRequest,
193- isCdnUsed : this . #isCdnUsed
200+ isCdnUsed : this . #isCdnUsed,
201+ featureFlagTracing : this . #featureFlagTracing
194202 } ;
195203 }
196204
@@ -740,6 +748,25 @@ export class AzureAppConfigurationImpl implements AzureAppConfiguration {
740748 } ;
741749 }
742750
751+ if ( this . #requestTracingEnabled && this . #featureFlagTracing !== undefined ) {
752+ if ( featureFlag [ CONDITIONS_KEY_NAME ] &&
753+ featureFlag [ CONDITIONS_KEY_NAME ] [ CLIENT_FILTERS_KEY_NAME ] &&
754+ Array . isArray ( featureFlag [ CONDITIONS_KEY_NAME ] [ CLIENT_FILTERS_KEY_NAME ] ) ) {
755+ for ( const filter of featureFlag [ CONDITIONS_KEY_NAME ] [ CLIENT_FILTERS_KEY_NAME ] ) {
756+ this . #featureFlagTracing. updateFeatureFilterTracing ( filter [ NAME_KEY_NAME ] ) ;
757+ }
758+ }
759+ if ( featureFlag [ VARIANTS_KEY_NAME ] && Array . isArray ( featureFlag [ VARIANTS_KEY_NAME ] ) ) {
760+ this . #featureFlagTracing. notifyMaxVariants ( featureFlag [ VARIANTS_KEY_NAME ] . length ) ;
761+ }
762+ if ( featureFlag [ TELEMETRY_KEY_NAME ] && featureFlag [ TELEMETRY_KEY_NAME ] [ ENABLED_KEY_NAME ] ) {
763+ this . #featureFlagTracing. usesTelemetry = true ;
764+ }
765+ if ( featureFlag [ ALLOCATION_KEY_NAME ] && featureFlag [ ALLOCATION_KEY_NAME ] [ SEED_KEY_NAME ] ) {
766+ this . #featureFlagTracing. usesSeed = true ;
767+ }
768+ }
769+
743770 return featureFlag ;
744771 }
745772
0 commit comments