-
Notifications
You must be signed in to change notification settings - Fork 10
load feature flags from new endpoint #341
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: preview
Are you sure you want to change the base?
Changes from all commits
1650684
42c37a0
b7dc2f9
0ff2561
376ce71
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,100 @@ | ||
| // Copyright (c) Microsoft Corporation. | ||
| // Licensed under the MIT license. | ||
|
|
||
| import { | ||
| AppConfigurationClient, | ||
| CheckConfigurationSettingsOptions, | ||
| ConfigurationSettingId, | ||
| FeatureFlagClient, | ||
|
Check failure on line 8 in src/appConfigClient.ts
|
||
| GetConfigurationSettingOptions, | ||
| GetSnapshotOptions, | ||
| ListConfigurationSettingsForSnapshotOptions, | ||
| ListConfigurationSettingsOptions, | ||
| ListFeatureFlagsOptions | ||
|
Check failure on line 13 in src/appConfigClient.ts
|
||
| } from "@azure/app-configuration"; | ||
| import { RequestTracingOptions, applyRequestTracing } from "./requestTracing/utils.js"; | ||
|
|
||
| /** | ||
| * A single client abstraction for an Azure App Configuration endpoint that exposes the subset of | ||
| * operations the provider needs from both the @see AppConfigurationClient and the @see FeatureFlagClient. | ||
| */ | ||
| export interface IAppConfigurationClient { | ||
| /** | ||
| * The endpoint of the Azure App Configuration store this client communicates with. | ||
| */ | ||
| readonly endpoint: string; | ||
|
|
||
| listConfigurationSettings( | ||
| listOptions: ListConfigurationSettingsOptions, | ||
| tracingOptions: RequestTracingOptions | ||
| ): ReturnType<AppConfigurationClient["listConfigurationSettings"]>; | ||
|
|
||
| checkConfigurationSettings( | ||
| checkOptions: CheckConfigurationSettingsOptions, | ||
| tracingOptions: RequestTracingOptions | ||
| ): ReturnType<AppConfigurationClient["checkConfigurationSettings"]>; | ||
|
|
||
| getConfigurationSetting( | ||
| configurationSettingId: ConfigurationSettingId, | ||
| getOptions: GetConfigurationSettingOptions | undefined, | ||
| tracingOptions: RequestTracingOptions | ||
| ): ReturnType<AppConfigurationClient["getConfigurationSetting"]>; | ||
|
|
||
| getSnapshot( | ||
| snapshotName: string, | ||
| getOptions: GetSnapshotOptions | undefined, | ||
| tracingOptions: RequestTracingOptions | ||
| ): ReturnType<AppConfigurationClient["getSnapshot"]>; | ||
|
|
||
| listConfigurationSettingsForSnapshot( | ||
| snapshotName: string, | ||
| listOptions: ListConfigurationSettingsForSnapshotOptions | undefined, | ||
| tracingOptions: RequestTracingOptions | ||
| ): ReturnType<AppConfigurationClient["listConfigurationSettingsForSnapshot"]>; | ||
|
|
||
| listFeatureFlags( | ||
| listOptions: ListFeatureFlagsOptions, | ||
| tracingOptions: RequestTracingOptions | ||
| ): ReturnType<FeatureFlagClient["listFeatureFlags"]>; | ||
| } | ||
|
|
||
| /** | ||
| * The default @see IAppConfigurationClient implementation, backed by the @see AppConfigurationClient | ||
| * and @see FeatureFlagClient SDK clients. Request tracing is applied per call before delegating to the | ||
| * corresponding SDK client. | ||
| */ | ||
| export class AppConfigClient implements IAppConfigurationClient { | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think we can name this class (and file) as import {
AppConfigurationClient as ConfigurationClient,
} from "@azure/app-configuration"; |
||
| readonly endpoint: string; | ||
| #configurationClient: AppConfigurationClient; | ||
| #featureFlagClient: FeatureFlagClient; | ||
|
|
||
| constructor(endpoint: string, configurationClient: AppConfigurationClient, featureFlagClient: FeatureFlagClient) { | ||
| this.endpoint = endpoint; | ||
| this.#configurationClient = configurationClient; | ||
| this.#featureFlagClient = featureFlagClient; | ||
| } | ||
|
|
||
| listConfigurationSettings(listOptions: ListConfigurationSettingsOptions, tracingOptions: RequestTracingOptions) { | ||
| return this.#configurationClient.listConfigurationSettings(applyRequestTracing(tracingOptions, listOptions)); | ||
| } | ||
|
|
||
| checkConfigurationSettings(checkOptions: CheckConfigurationSettingsOptions, tracingOptions: RequestTracingOptions) { | ||
| return this.#configurationClient.checkConfigurationSettings(applyRequestTracing(tracingOptions, checkOptions)); | ||
| } | ||
|
|
||
| getConfigurationSetting(configurationSettingId: ConfigurationSettingId, getOptions: GetConfigurationSettingOptions | undefined, tracingOptions: RequestTracingOptions) { | ||
| return this.#configurationClient.getConfigurationSetting(configurationSettingId, applyRequestTracing(tracingOptions, getOptions)); | ||
| } | ||
|
|
||
| getSnapshot(snapshotName: string, getOptions: GetSnapshotOptions | undefined, tracingOptions: RequestTracingOptions) { | ||
| return this.#configurationClient.getSnapshot(snapshotName, applyRequestTracing(tracingOptions, getOptions)); | ||
| } | ||
|
|
||
| listConfigurationSettingsForSnapshot(snapshotName: string, listOptions: ListConfigurationSettingsForSnapshotOptions | undefined, tracingOptions: RequestTracingOptions) { | ||
| return this.#configurationClient.listConfigurationSettingsForSnapshot(snapshotName, applyRequestTracing(tracingOptions, listOptions)); | ||
| } | ||
|
|
||
| listFeatureFlags(listOptions: ListFeatureFlagsOptions, tracingOptions: RequestTracingOptions) { | ||
| return this.#featureFlagClient.listFeatureFlags(applyRequestTracing(tracingOptions, listOptions)); | ||
| } | ||
| } | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We don't need the
IAppConfigurationClientabstraction in javascript.appConfigurationImplshould use theAppConfigClientdirectly. In JS, when you define an interface, in most of cases, the motivation is to export it for public use. But the AppConfigurationClient is completely for internal usage.