in libraries/azure-app-configuration-importer/src/internal/parsers/defaultConfigurationSettingsConverter.ts [357:390]
private getFeatureFlagValueFromMsFmSchema(featureFlag: any): MsFeatureFlagValue {
const validate = this.ajv.compile<MsFeatureFlagValue>(MsFeatureFlagValueSchema);
const featureFlagCopy = JSON.parse(JSON.stringify(featureFlag)); //deep copy
// normalize client filters
if (featureFlagCopy.conditions && featureFlagCopy.conditions.client_filters) {
for (let i = 0; i < featureFlagCopy.conditions.client_filters.length; i++) {
featureFlagCopy.conditions.client_filters[i] = this.getLowerCaseFilters(featureFlagCopy.conditions.client_filters[i]);
}
}
const valid = validate(featureFlagCopy);
if (!valid) {
const validationError = new AjvValidationError(validate.errors as ErrorObject[]);
throw new ArgumentError(`Feature flag '${featureFlag.id}' is not in the correct format. ${validationError.getFriendlyMessage()}`);
}
const parsedFeatureFlag: MsFeatureFlagValue = {
...featureFlag,
conditions: {
clientFilters: featureFlag.conditions?.client_filters ?? []
}
};
if (featureFlag.display_name) {
parsedFeatureFlag.displayName = featureFlag.display_name;
}
if (featureFlag.conditions?.requirement_type) {
parsedFeatureFlag.conditions.requirementType = featureFlag.conditions.requirement_type;
}
return parsedFeatureFlag;
}