( data: any, uischema: UISchemaElement, condition: Condition, path: string, ajv: Ajv, config: unknown )
| 63 | }; |
| 64 | |
| 65 | const evaluateCondition = ( |
| 66 | data: any, |
| 67 | uischema: UISchemaElement, |
| 68 | condition: Condition, |
| 69 | path: string, |
| 70 | ajv: Ajv, |
| 71 | config: unknown |
| 72 | ): boolean => { |
| 73 | if (isAndCondition(condition)) { |
| 74 | return condition.conditions.reduce( |
| 75 | (acc, cur) => |
| 76 | acc && evaluateCondition(data, uischema, cur, path, ajv, config), |
| 77 | true |
| 78 | ); |
| 79 | } else if (isOrCondition(condition)) { |
| 80 | return condition.conditions.reduce( |
| 81 | (acc, cur) => |
| 82 | acc || evaluateCondition(data, uischema, cur, path, ajv, config), |
| 83 | false |
| 84 | ); |
| 85 | } else if (isLeafCondition(condition)) { |
| 86 | const value = resolveData(data, getConditionScope(condition, path)); |
| 87 | return value === condition.expectedValue; |
| 88 | } else if (isSchemaCondition(condition)) { |
| 89 | const value = resolveData(data, getConditionScope(condition, path)); |
| 90 | if (condition.failWhenUndefined && value === undefined) { |
| 91 | return false; |
| 92 | } |
| 93 | return ajv.validate(condition.schema, value) as boolean; |
| 94 | } else if (isValidateFunctionCondition(condition)) { |
| 95 | const value = resolveData(data, getConditionScope(condition, path)); |
| 96 | const context = { |
| 97 | data: value, |
| 98 | fullData: data, |
| 99 | path, |
| 100 | uischemaElement: uischema, |
| 101 | config, |
| 102 | }; |
| 103 | return condition.validate(context); |
| 104 | } else { |
| 105 | // unknown condition |
| 106 | return true; |
| 107 | } |
| 108 | }; |
| 109 | |
| 110 | const isRuleFulfilled = ( |
| 111 | uischema: UISchemaElement, |
no test coverage detected
searching dependent graphs…