28 lines
1,004 B
JavaScript
28 lines
1,004 B
JavaScript
|
import { EndpointError } from "../types";
|
||
|
import { evaluateEndpointRule } from "./evaluateEndpointRule";
|
||
|
import { evaluateErrorRule } from "./evaluateErrorRule";
|
||
|
import { evaluateTreeRule } from "./evaluateTreeRule";
|
||
|
export const evaluateRules = (rules, options) => {
|
||
|
for (const rule of rules) {
|
||
|
if (rule.type === "endpoint") {
|
||
|
const endpointOrUndefined = evaluateEndpointRule(rule, options);
|
||
|
if (endpointOrUndefined) {
|
||
|
return endpointOrUndefined;
|
||
|
}
|
||
|
}
|
||
|
else if (rule.type === "error") {
|
||
|
evaluateErrorRule(rule, options);
|
||
|
}
|
||
|
else if (rule.type === "tree") {
|
||
|
const endpointOrUndefined = evaluateTreeRule(rule, options);
|
||
|
if (endpointOrUndefined) {
|
||
|
return endpointOrUndefined;
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
throw new EndpointError(`Unknown endpoint rule: ${rule}`);
|
||
|
}
|
||
|
}
|
||
|
throw new EndpointError(`Rules evaluation failed`);
|
||
|
};
|