diff --git a/api.planx.uk/modules/webhooks/service/validateInput/schema.ts b/api.planx.uk/modules/webhooks/service/validateInput/schema.ts index fbca784404..3cfd7fb064 100644 --- a/api.planx.uk/modules/webhooks/service/validateInput/schema.ts +++ b/api.planx.uk/modules/webhooks/service/validateInput/schema.ts @@ -19,27 +19,30 @@ type HasuraValidateInputRequestSchema = z.infer< typeof hasuraValidateInputRequestSchema >; -interface IsCleanJSONBSchema { +interface IsCleanJSONBTransformedRequest { body: { isClean: boolean; }; } +type isCleanJSONBSchema = z.ZodType< + IsCleanJSONBTransformedRequest, + z.ZodTypeDef, + HasuraValidateInputRequestSchema +>; + /** * Schema which iterates over values of a JSONB column * Checks using DOMPurify to ensure that user-submitted HTML is clean * Fails fast - will reject on first instance of unclean HTML */ -export const isCleanJSONBSchema: z.ZodType< - IsCleanJSONBSchema, - z.ZodTypeDef, - HasuraValidateInputRequestSchema -> = hasuraValidateInputRequestSchema.transform((original) => { - const isClean = original.body.data.input.every((input) => - isObjectValid(input, isCleanHTML), - ); - return { body: { isClean } }; -}); +export const isCleanJSONBSchema: isCleanJSONBSchema = + hasuraValidateInputRequestSchema.transform((original) => { + const isClean = original.body.data.input.every((input) => + isObjectValid(input, isCleanHTML), + ); + return { body: { isClean } }; + }); export type IsCleanJSONBController = ValidatedRequestHandler< typeof isCleanJSONBSchema,