Skip to content

Commit 80a42c2

Browse files
Anton LillebyAnton Lilleby
authored andcommitted
feat: add description to output
1 parent 958e103 commit 80a42c2

File tree

10 files changed

+136
-58
lines changed

10 files changed

+136
-58
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,14 @@ You can use the `vue3-app-configuration` plugin in your Vue components in two wa
4141
4242
const { getFeatureFlag } = useFeatureFlags();
4343
44-
const isFeatureEnabled = getFeatureFlag(
44+
const { isFeatureEnabled, featureDescription } = getFeatureFlag(
4545
"your-feature-flag-name",
4646
"your-label"
4747
);
4848
</script>
4949

5050
<template>
51-
<p v-if="isFeatureEnabled">This feature is enabled</p>
51+
<p v-if="isFeatureEnabled">{{ featureDescription }}</p>
5252
<p v-else>This feature is disabled</p>
5353
</template>
5454
```
@@ -63,7 +63,7 @@ You can use the `vue3-app-configuration` plugin in your Vue components in two wa
6363
const { getFeatureFlagAsync } = useFeatureFlags();
6464
6565
onMounted(async () => {
66-
const isFeatureEnabled = await getFeatureFlagAsync(
66+
const { isFeatureEnabled, featureDescription } = await getFeatureFlagAsync(
6767
"your-feature-flag-name",
6868
"your-label"
6969
);

dist/index.d.mts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,14 @@ import { AppConfigurationClient } from '@azure/app-configuration';
22
import { App, Ref } from 'vue';
33

44
type TypeAppConfigurationClient = AppConfigurationClient | null;
5-
type TypeGetFeatureFlag = (name: string, label?: string) => Ref<boolean>;
6-
type TypeGetFeatureFlagAsync = (name: string, label?: string) => Promise<boolean>;
5+
type TypeGetFeatureFlag = (name: string, label?: string) => {
6+
isFeatureEnabled: Ref<boolean>;
7+
featureDescription: Ref<string>;
8+
};
9+
type TypeGetFeatureFlagAsync = (name: string, label?: string) => Promise<{
10+
isFeatureEnabled: boolean;
11+
featureDescription: string;
12+
}>;
713
interface IFeatureFlagsManager {
814
appConfigurationClient: TypeAppConfigurationClient;
915
getFeatureFlag: TypeGetFeatureFlag;

dist/index.d.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,14 @@ import { AppConfigurationClient } from '@azure/app-configuration';
22
import { App, Ref } from 'vue';
33

44
type TypeAppConfigurationClient = AppConfigurationClient | null;
5-
type TypeGetFeatureFlag = (name: string, label?: string) => Ref<boolean>;
6-
type TypeGetFeatureFlagAsync = (name: string, label?: string) => Promise<boolean>;
5+
type TypeGetFeatureFlag = (name: string, label?: string) => {
6+
isFeatureEnabled: Ref<boolean>;
7+
featureDescription: Ref<string>;
8+
};
9+
type TypeGetFeatureFlagAsync = (name: string, label?: string) => Promise<{
10+
isFeatureEnabled: boolean;
11+
featureDescription: string;
12+
}>;
713
interface IFeatureFlagsManager {
814
appConfigurationClient: TypeAppConfigurationClient;
915
getFeatureFlag: TypeGetFeatureFlag;

dist/index.js

Lines changed: 30 additions & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.mjs

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -36,44 +36,60 @@ var featureFlagsManager = (connectionString) => {
3636
appConfigurationClient = new AppConfigurationClient(connectionString);
3737
}
3838
const getFeatureFlag = (name, label) => {
39-
const isEnabled = ref(false);
40-
if (!appConfigurationClient)
41-
return isEnabled;
39+
const isFeatureEnabled = ref(false);
40+
const featureDescription = ref("");
41+
if (!appConfigurationClient) {
42+
return { isFeatureEnabled, featureDescription };
43+
}
4244
try {
4345
appConfigurationClient.getConfigurationSetting({
4446
key: `${featureFlagPrefix}${name}`,
4547
label
4648
}).then((response) => {
47-
if (!isFeatureFlag(response))
48-
return isEnabled;
49-
isEnabled.value = parseFeatureFlag(response).value.enabled;
50-
return isEnabled;
49+
if (!isFeatureFlag(response)) {
50+
return { isFeatureEnabled, featureDescription };
51+
}
52+
const {
53+
value: { enabled, description = "" }
54+
} = parseFeatureFlag(response);
55+
isFeatureEnabled.value = enabled;
56+
featureDescription.value = description;
57+
return { isFeatureEnabled, featureDescription };
5158
});
5259
} catch (error) {
5360
console.error(
5461
"[App Configuration Plugin] Error retrieving feature flag.",
5562
error
5663
);
5764
}
58-
return isEnabled;
65+
return { isFeatureEnabled, featureDescription };
5966
};
6067
const getFeatureFlagAsync = (name, label) => __async(void 0, null, function* () {
61-
if (!appConfigurationClient)
62-
return false;
68+
let isFeatureEnabled = false;
69+
let featureDescription = "";
70+
if (!appConfigurationClient) {
71+
return { isFeatureEnabled, featureDescription };
72+
}
6373
try {
6474
const response = yield appConfigurationClient.getConfigurationSetting({
6575
key: `${featureFlagPrefix}${name}`,
6676
label
6777
});
68-
if (!isFeatureFlag(response))
69-
return false;
70-
return parseFeatureFlag(response).value.enabled;
78+
if (!isFeatureFlag(response)) {
79+
return { isFeatureEnabled, featureDescription };
80+
}
81+
const {
82+
value: { enabled, description = "" }
83+
} = parseFeatureFlag(response);
84+
isFeatureEnabled = enabled;
85+
featureDescription = description;
86+
return { isFeatureEnabled, featureDescription };
7187
} catch (error) {
7288
console.error(
7389
"[App Configuration Plugin] Error retrieving feature flag.",
7490
error
7591
);
76-
return false;
92+
return { isFeatureEnabled, featureDescription };
7793
}
7894
});
7995
return { appConfigurationClient, getFeatureFlag, getFeatureFlagAsync };

0 commit comments

Comments
 (0)