Stirling-PDF/shared-operations/src/workflow/validateOperations.ts

32 lines
1.1 KiB
TypeScript
Raw Normal View History

2023-11-20 22:12:03 +01:00
import { Action } from "../../declarations/Action";
import { getOperatorByName } from "./getOperatorByName";
2023-11-20 22:12:03 +01:00
/** This function validates the "workflow-json" from the API */
2023-11-20 22:12:03 +01:00
export function validateOperations(actions: Action[]): { valid: boolean, reason?: string} {
for (const action of actions) {
if (action.type === "wait" || action.type === "done") {
// TODO: Validate these too ):
return { valid: true };
}
else {
const operator = getOperatorByName(action.type);
if(!operator) {
return { valid: false, reason: `action.type ${action.type} does not exist` }
}
const validationResult = new operator(action).validate();
if(!validationResult.valid) {
return validationResult;
}
}
if (action.actions) {
const validationResult = validateOperations(action.actions);
if(!validationResult.valid) {
return validationResult;
}
2023-11-20 22:12:03 +01:00
}
}
return { valid: true };
2023-11-20 22:12:03 +01:00
}