Skip to content

Commit 1650684

Browse files
committed
load enhanced feature flags
1 parent 18dccec commit 1650684

10 files changed

Lines changed: 711 additions & 199 deletions

src/appConfigClient.ts

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
// Copyright (c) Microsoft Corporation.
2+
// Licensed under the MIT license.
3+
4+
import {
5+
AppConfigurationClient,
6+
CheckConfigurationSettingsOptions,
7+
ConfigurationSettingId,
8+
FeatureFlagClient,
9+
GetConfigurationSettingOptions,
10+
GetSnapshotOptions,
11+
ListConfigurationSettingsForSnapshotOptions,
12+
ListConfigurationSettingsOptions,
13+
ListFeatureFlagsOptions
14+
} from "@azure/app-configuration";
15+
import { RequestTracingOptions, applyRequestTracing } from "./requestTracing/utils.js";
16+
17+
/**
18+
* A single client abstraction for an Azure App Configuration endpoint that exposes the subset of
19+
* operations the provider needs from both the @see AppConfigurationClient and the @see FeatureFlagClient.
20+
*/
21+
export interface IAppConfigurationClient {
22+
/**
23+
* The endpoint of the Azure App Configuration store this client communicates with.
24+
*/
25+
readonly endpoint: string;
26+
27+
listConfigurationSettings(
28+
listOptions: ListConfigurationSettingsOptions,
29+
tracingOptions: RequestTracingOptions
30+
): ReturnType<AppConfigurationClient["listConfigurationSettings"]>;
31+
32+
checkConfigurationSettings(
33+
checkOptions: CheckConfigurationSettingsOptions,
34+
tracingOptions: RequestTracingOptions
35+
): ReturnType<AppConfigurationClient["checkConfigurationSettings"]>;
36+
37+
getConfigurationSetting(
38+
configurationSettingId: ConfigurationSettingId,
39+
getOptions: GetConfigurationSettingOptions | undefined,
40+
tracingOptions: RequestTracingOptions
41+
): ReturnType<AppConfigurationClient["getConfigurationSetting"]>;
42+
43+
getSnapshot(
44+
snapshotName: string,
45+
getOptions: GetSnapshotOptions | undefined,
46+
tracingOptions: RequestTracingOptions
47+
): ReturnType<AppConfigurationClient["getSnapshot"]>;
48+
49+
listConfigurationSettingsForSnapshot(
50+
snapshotName: string,
51+
listOptions: ListConfigurationSettingsForSnapshotOptions | undefined,
52+
tracingOptions: RequestTracingOptions
53+
): ReturnType<AppConfigurationClient["listConfigurationSettingsForSnapshot"]>;
54+
55+
listFeatureFlags(
56+
listOptions: ListFeatureFlagsOptions,
57+
tracingOptions: RequestTracingOptions
58+
): ReturnType<FeatureFlagClient["listFeatureFlags"]>;
59+
}
60+
61+
/**
62+
* The default @see IAppConfigurationClient implementation, backed by the @see AppConfigurationClient
63+
* and @see FeatureFlagClient SDK clients. Request tracing is applied per call before delegating to the
64+
* corresponding SDK client.
65+
*/
66+
export class AppConfigClient implements IAppConfigurationClient {
67+
readonly endpoint: string;
68+
#configurationClient: AppConfigurationClient;
69+
#featureFlagClient: FeatureFlagClient;
70+
71+
constructor(endpoint: string, configurationClient: AppConfigurationClient, featureFlagClient: FeatureFlagClient) {
72+
this.endpoint = endpoint;
73+
this.#configurationClient = configurationClient;
74+
this.#featureFlagClient = featureFlagClient;
75+
}
76+
77+
listConfigurationSettings(listOptions: ListConfigurationSettingsOptions, tracingOptions: RequestTracingOptions) {
78+
return this.#configurationClient.listConfigurationSettings(applyRequestTracing(tracingOptions, listOptions));
79+
}
80+
81+
checkConfigurationSettings(checkOptions: CheckConfigurationSettingsOptions, tracingOptions: RequestTracingOptions) {
82+
return this.#configurationClient.checkConfigurationSettings(applyRequestTracing(tracingOptions, checkOptions));
83+
}
84+
85+
getConfigurationSetting(configurationSettingId: ConfigurationSettingId, getOptions: GetConfigurationSettingOptions | undefined, tracingOptions: RequestTracingOptions) {
86+
return this.#configurationClient.getConfigurationSetting(configurationSettingId, applyRequestTracing(tracingOptions, getOptions));
87+
}
88+
89+
getSnapshot(snapshotName: string, getOptions: GetSnapshotOptions | undefined, tracingOptions: RequestTracingOptions) {
90+
return this.#configurationClient.getSnapshot(snapshotName, applyRequestTracing(tracingOptions, getOptions));
91+
}
92+
93+
listConfigurationSettingsForSnapshot(snapshotName: string, listOptions: ListConfigurationSettingsForSnapshotOptions | undefined, tracingOptions: RequestTracingOptions) {
94+
return this.#configurationClient.listConfigurationSettingsForSnapshot(snapshotName, applyRequestTracing(tracingOptions, listOptions));
95+
}
96+
97+
listFeatureFlags(listOptions: ListFeatureFlagsOptions, tracingOptions: RequestTracingOptions) {
98+
return this.#featureFlagClient.listFeatureFlags(applyRequestTracing(tracingOptions, listOptions));
99+
}
100+
}

0 commit comments

Comments
 (0)