11// Copyright (c) Microsoft Corporation.
22// Licensed under the MIT license.
33
4- import { AppConfigurationClient , AppConfigurationClientOptions , FeatureFlagClient } from "@azure/app-configuration" ;
5- import { AppConfigClient } from "./appConfigClient .js" ;
6- import { ConfigurationClientWrapper } from "./configurationClientWrapper .js" ;
4+ import { AppConfigurationClientOptions as ConfigurationClientOptions } from "@azure/app-configuration" ;
5+ import { AppConfigurationClient } from "./appConfigurationClient .js" ;
6+ import { AppConfigurationClientWrapper } from "./appConfigurationClientWrapper .js" ;
77import { TokenCredential } from "@azure/identity" ;
88import { AzureAppConfigurationOptions } from "./appConfigurationOptions.js" ;
99import { isBrowser , isWebWorker } from "./requestTracing/utils.js" ;
@@ -29,18 +29,18 @@ const DNS_RESOLVER_TIMEOUT_IN_MS = 3_000;
2929const DNS_RESOLVER_TRIES = 2 ;
3030const MAX_ALTNATIVE_SRV_COUNT = 10 ;
3131
32- export class ConfigurationClientManager {
32+ export class AppConfigurationClientManager {
3333 readonly endpoint : URL ; // primary endpoint, which is the one specified in the connection string or passed in as a parameter
3434 #isFailoverable: boolean ;
3535 #dns: any ;
3636 #secret : string ;
3737 #id : string ;
3838 #credential: TokenCredential ;
39- #clientOptions: AppConfigurationClientOptions | undefined ;
39+ #clientOptions: ConfigurationClientOptions | undefined ;
4040 #appConfigOptions: AzureAppConfigurationOptions | undefined ;
4141 #validDomain: string ; // valid domain for the primary endpoint, which is used to discover replicas
42- #staticClients: ConfigurationClientWrapper [ ] ; // there should always be only one static client
43- #dynamicClients: ConfigurationClientWrapper [ ] ;
42+ #staticClients: AppConfigurationClientWrapper [ ] ; // there should always be only one static client
43+ #dynamicClients: AppConfigurationClientWrapper [ ] ;
4444 #replicaCount: number = 0 ;
4545 #lastFallbackClientUpdateTime: number = 0 ; // enforce to discover fallback client when it is expired
4646 #lastFallbackClientRefreshAttempt: number = 0 ; // avoid refreshing clients before the minimal refresh interval
@@ -50,8 +50,7 @@ export class ConfigurationClientManager {
5050 credentialOrOptions ?: TokenCredential | AzureAppConfigurationOptions ,
5151 appConfigOptions ?: AzureAppConfigurationOptions
5252 ) {
53- let staticConfigurationClient : AppConfigurationClient ;
54- let staticFeatureFlagClient : FeatureFlagClient ;
53+ let staticClient : AppConfigurationClient ;
5554 const credentialPassed = instanceOfTokenCredential ( credentialOrOptions ) ;
5655
5756 if ( typeof connectionStringOrEndpoint === "string" && ! credentialPassed ) {
@@ -68,8 +67,7 @@ export class ConfigurationClientManager {
6867 } else {
6968 throw new ArgumentError ( `Invalid connection string. Valid connection strings should match the regex '${ ConnectionStringRegex . source } '.` ) ;
7069 }
71- staticConfigurationClient = new AppConfigurationClient ( connectionString , this . #clientOptions) ;
72- staticFeatureFlagClient = new FeatureFlagClient ( connectionString , this . #clientOptions) ;
70+ staticClient = new AppConfigurationClient ( connectionString , this . #clientOptions) ;
7371 } else if ( ( connectionStringOrEndpoint instanceof URL || typeof connectionStringOrEndpoint === "string" ) && credentialPassed ) {
7472 let endpoint = connectionStringOrEndpoint ;
7573 // ensure string is a valid URL.
@@ -82,13 +80,12 @@ export class ConfigurationClientManager {
8280 this . #clientOptions = getClientOptions ( this . #appConfigOptions) ;
8381 this . endpoint = endpoint ;
8482 this . #credential = credential ;
85- staticConfigurationClient = new AppConfigurationClient ( this . endpoint . origin , this . #credential, this . #clientOptions) ;
86- staticFeatureFlagClient = new FeatureFlagClient ( this . endpoint . origin , this . #credential, this . #clientOptions) ;
83+ staticClient = new AppConfigurationClient ( this . endpoint . origin , this . #credential, this . #clientOptions) ;
8784 } else {
8885 throw new ArgumentError ( ErrorMessages . CONNECTION_STRING_OR_ENDPOINT_MISSED ) ;
8986 }
9087
91- this . #staticClients = [ new ConfigurationClientWrapper ( this . endpoint . origin , new AppConfigClient ( this . endpoint . origin , staticConfigurationClient , staticFeatureFlagClient ) ) ] ;
88+ this . #staticClients = [ new AppConfigurationClientWrapper ( this . endpoint . origin , staticClient ) ] ;
9289 this . #validDomain = getValidDomain ( this . endpoint . hostname . toLowerCase ( ) ) ;
9390 }
9491
@@ -117,7 +114,7 @@ export class ConfigurationClientManager {
117114 return this . #replicaCount;
118115 }
119116
120- async getClients ( ) : Promise < ConfigurationClientWrapper [ ] > {
117+ async getClients ( ) : Promise < AppConfigurationClientWrapper [ ] > {
121118 if ( ! this . #isFailoverable) {
122119 return this . #staticClients;
123120 }
@@ -163,20 +160,17 @@ export class ConfigurationClientManager {
163160 }
164161
165162 const srvTargetHosts = shuffleList ( result ) ;
166- const newDynamicClients : ConfigurationClientWrapper [ ] = [ ] ;
163+ const newDynamicClients : AppConfigurationClientWrapper [ ] = [ ] ;
167164 for ( const host of srvTargetHosts ) {
168165 if ( isValidEndpoint ( host , this . #validDomain) ) {
169166 const targetEndpoint = `https://${ host } ` ;
170167 if ( host . toLowerCase ( ) === this . endpoint . hostname . toLowerCase ( ) ) {
171168 continue ;
172169 }
173- const configurationClient = this . #credential ?
170+ const appConfigurationClient = this . #credential ?
174171 new AppConfigurationClient ( targetEndpoint , this . #credential, this . #clientOptions) :
175172 new AppConfigurationClient ( buildConnectionString ( targetEndpoint , this . #secret, this . #id) , this . #clientOptions) ;
176- const featureFlagClient = this . #credential ?
177- new FeatureFlagClient ( targetEndpoint , this . #credential, this . #clientOptions) :
178- new FeatureFlagClient ( buildConnectionString ( targetEndpoint , this . #secret, this . #id) , this . #clientOptions) ;
179- newDynamicClients . push ( new ConfigurationClientWrapper ( targetEndpoint , new AppConfigClient ( targetEndpoint , configurationClient , featureFlagClient ) ) ) ;
173+ newDynamicClients . push ( new AppConfigurationClientWrapper ( targetEndpoint , appConfigurationClient ) ) ;
180174 }
181175 }
182176
@@ -263,7 +257,7 @@ export function isValidEndpoint(host: string, validDomain: string): boolean {
263257 return host . toLowerCase ( ) . endsWith ( validDomain . toLowerCase ( ) ) ;
264258}
265259
266- function getClientOptions ( options ?: AzureAppConfigurationOptions ) : AppConfigurationClientOptions | undefined {
260+ export function getClientOptions ( options ?: AzureAppConfigurationOptions ) : ConfigurationClientOptions {
267261 // user-agent
268262 let userAgentPrefix = RequestTracing . USER_AGENT_PREFIX ; // Default UA for JavaScript Provider
269263 const userAgentOptions = options ?. clientOptions ?. userAgentOptions ;
0 commit comments