in src/PSRule.Rules.Azure/Data/Policy/PolicyAssignmentVisitor.cs [1665:1692]
private static JObject OptimizeConditionObject(PolicyDefinition policyDefinition, JObject condition, bool keep = false)
{
if (condition == null || !keep && OptimizeTypeCondition(policyDefinition, condition))
return null;
// Handle allOf and anyOf depth
if (condition.TryArrayProperty(PROPERTY_ALLOF, out var items) ||
condition.TryArrayProperty(PROPERTY_ANYOF, out items))
{
foreach (var item in items.OfType<JObject>().ToArray())
{
if (OptimizeConditionObject(policyDefinition, item) == null)
item.Remove();
}
// Pull up child condition if not a sub-selector or quantifier
if (items.Count == 1 && condition.Count == 1)
{
return items[0].Value<JObject>();
}
}
// Handle field merge
else if (condition.TryGetProperty(PROPERTY_FIELD, out var field))
{
MergeWithPeerCondition(condition, field);
}
return condition;
}