Skip to content

Commit 2e75479

Browse files
author
cwanjau
committed
update logic
1 parent 2cca0c8 commit 2e75479

File tree

2 files changed

+35
-31
lines changed

2 files changed

+35
-31
lines changed

libraries/azure-app-configuration-importer/src/internal/constants.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,20 @@ export const Constants = {
66
FeatureManagementKeyWords: [
77
"FeatureManagement",
88
"featureManagement",
9-
"feature_management",
10-
"feature-management"
9+
"feature-management",
10+
"feature_management"
1111
],
1212
EnabledForKeyWords: [
1313
"EnabledFor",
1414
"enabledFor",
15-
"enabled_for",
16-
"enabled-for"
15+
"enabled-for",
16+
"enabled_for"
1717
],
1818
RequirementTypeKeyWords: [
1919
"RequirementType",
2020
"requirementType",
21-
"requirement_type",
22-
"requirement-type"
21+
"requirement-type",
22+
"requirement_type"
2323
],
2424
Separators: [
2525
".",

libraries/azure-app-configuration-importer/src/internal/parsers/defaultConfigurationSettingsConverter.ts

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -53,35 +53,39 @@ export class DefaultConfigurationSettingsConverter implements ConfigurationSetti
5353
this.checkFeatureManagementExist(config);
5454
}
5555

56-
for (let i = 0; i < Constants.FeatureManagementKeyWords.length; i++) {
56+
for (let i = 0; i < Constants.FeatureManagementKeyWords.length - 1; i++) {
5757
if (Constants.FeatureManagementKeyWords[i] in config) {
58-
if (Constants.FeatureManagementKeyWords[i] == Constants.FeatureManagementKeyWords[2]) { //feature_management
59-
if (foundMsFmSchema) {
60-
throw new ArgumentError(
61-
`Unable to proceed because data contains multiple sections corresponding to Feature Management with the key, ${Constants.FeatureManagementKeyWords[i]}`
62-
);
63-
}
64-
foundMsFmSchema = true;
65-
msFmFeatureManagementKeyWord = Constants.FeatureManagementKeyWords[i];
66-
const featureManagementKey = msFmFeatureManagementKeyWord as keyof object;
67-
featureFlagsDict[featureManagementKey] = config[featureManagementKey];
68-
delete config[featureManagementKey];
58+
if (foundLegacySchema) {
59+
throw new ArgumentError(
60+
`Unable to proceed because data contains multiple sections corresponding to Feature Management. with the key, ${Constants.FeatureManagementKeyWords[i]}`
61+
);
6962
}
70-
else {
71-
if (foundLegacySchema) {
72-
throw new ArgumentError(
73-
`Unable to proceed because data contains multiple sections corresponding to Feature Flags. with the key, ${Constants.FeatureManagementKeyWords[i]}`
74-
);
75-
}
76-
foundLegacySchema = true;
77-
legacySchemaFeatureManagementKeyWord = Constants.FeatureManagementKeyWords[i];
78-
legacySchemaEnabledForKeyWord = Constants.EnabledForKeyWords[i];
79-
legachSchemaRequirementTypeKeyWord = Constants.RequirementTypeKeyWords[i];
80-
const legacyFeatureManagementKey = legacySchemaFeatureManagementKeyWord as keyof object;
81-
featureFlagsDict[legacyFeatureManagementKey] = config[legacyFeatureManagementKey];
82-
delete config[legacyFeatureManagementKey];
63+
foundLegacySchema = true;
64+
65+
legacySchemaFeatureManagementKeyWord = Constants.FeatureManagementKeyWords[i];
66+
legacySchemaEnabledForKeyWord = Constants.EnabledForKeyWords[i];
67+
legachSchemaRequirementTypeKeyWord = Constants.RequirementTypeKeyWords[i];
68+
69+
const legacyFeatureManagementKey = legacySchemaFeatureManagementKeyWord as keyof object;
70+
featureFlagsDict[legacyFeatureManagementKey] = config[legacyFeatureManagementKey];
71+
delete config[legacyFeatureManagementKey];
72+
}
73+
}
74+
75+
const msFmKeyWord = Constants.FeatureManagementKeyWords[3];
76+
if (msFmKeyWord in config) {
77+
if (foundLegacySchema) {
78+
if (Object.keys(config[msFmKeyWord as keyof object]).some(key => key !== Constants.FeatureFlagsKeyWord)) {
79+
throw new ArgumentError(
80+
`Unable to proceed because data contains an already defined section with same schema corresponding to Feature Management with the key, ${legacySchemaFeatureManagementKeyWord}.`
81+
);
8382
}
8483
}
84+
foundMsFmSchema = true;
85+
msFmFeatureManagementKeyWord = msFmKeyWord;
86+
const featureManagementKey = msFmFeatureManagementKeyWord as keyof object;
87+
featureFlagsDict[featureManagementKey] = config[featureManagementKey];
88+
delete config[featureManagementKey];
8589
}
8690

8791
if ((foundLegacySchema || foundMsFmSchema) && !options.skipFeatureFlags) {

0 commit comments

Comments
 (0)