diff --git a/shared-operations/src/functions/impose.ts b/shared-operations/src/functions/impose.ts index db863deae..d9462a159 100644 --- a/shared-operations/src/functions/impose.ts +++ b/shared-operations/src/functions/impose.ts @@ -2,6 +2,7 @@ import { PdfFile, RepresentationType } from "../wrappers/PdfFile"; import { Operator, Progress, oneToOne } from "."; +// @ts-expect-error import * as pdfcpuWrapper from "#pdfcpu"; // This is updated by tsconfig.json/paths for the context (browser, node, etc.) this module is used in. import Joi from "joi"; @@ -140,4 +141,4 @@ export class Impose extends Operator { return result; }) } -} \ No newline at end of file +} diff --git a/shared-operations/src/workflow/validateOperations.ts b/shared-operations/src/workflow/validateOperations.ts index f01f7a79f..ad322628f 100644 --- a/shared-operations/src/workflow/validateOperations.ts +++ b/shared-operations/src/workflow/validateOperations.ts @@ -1,4 +1,4 @@ -import { Operator } from "functions"; +import { Operator } from "../functions"; import { Action } from "../../declarations/Action"; import { getOperatorByName } from "./getOperatorByName"; @@ -34,8 +34,11 @@ export function validateOperations(actions: Action[]): { valid: boolean, reason? return { valid: false, reason: "There is a wait action that does not have an associated done action." }; } - for (const afterDoneChild of done[childAction.values.id].actions) { - if(!ioCompatible(operator, getOperatorByName(afterDoneChild.type))) { + for (const afterDoneChild of done[childAction.values.id]?.actions || []) { + const receivingOperator = getOperatorByName(afterDoneChild.type); + if (!receivingOperator) { + return { valid: false, reason: `The receiving operator ${afterDoneChild.type} does not exist.` }; + } else if (!ioCompatible(operator, receivingOperator)) { return { valid: false, reason: `Ouput of action ${action.type} is not compatible with input of action ${afterDoneChild.type}` }; } } @@ -44,7 +47,10 @@ export function validateOperations(actions: Action[]): { valid: boolean, reason? return { valid: false, reason: `There shouldn't be a done action here.` }; } else { - if(!ioCompatible(operator, getOperatorByName(childAction.type))) { + const receivingOperator = getOperatorByName(childAction.type); + if (!receivingOperator) { + return { valid: false, reason: `The receiving operator ${childAction.type} does not exist.` }; + } else if (!ioCompatible(operator, receivingOperator)) { return { valid: false, reason: `Ouput of action ${action.type} is not compatible with input of action ${childAction.type}` }; } } @@ -60,8 +66,8 @@ export function validateOperations(actions: Action[]): { valid: boolean, reason? return { valid: true }; } -function ioCompatible(outputingOperator: typeof Operator, recievingOperator: typeof Operator): boolean { +function ioCompatible(outputingOperator: typeof Operator, receivingOperator: typeof Operator): boolean { const outputType = outputingOperator.schema.describe().keys.output.label; - const inputType = recievingOperator.schema.describe().keys.input.label; + const inputType = receivingOperator.schema.describe().keys.input.label; return outputType == inputType; -} \ No newline at end of file +} diff --git a/shared-operations/src/wrappers/PdfFileJoi.ts b/shared-operations/src/wrappers/PdfFileJoi.ts index 83cbf5f6d..427ba2228 100644 --- a/shared-operations/src/wrappers/PdfFileJoi.ts +++ b/shared-operations/src/wrappers/PdfFileJoi.ts @@ -23,5 +23,5 @@ export const JoiPDFFileSchema = Joi.custom((value: Express.Multer.File[] /* <- a }, "pdffile validation"); function isPdfFileArray(value: any): value is PdfFile[] { - return value.every((e) => e instanceof PdfFile) -} \ No newline at end of file + return value.every((e: PdfFile) => e instanceof PdfFile) +}