n8n-nodes-base
Version:
Base nodes of n8n
54 lines (51 loc) • 10.4 kB
JavaScript
/**
* Edit Image Node - Version 1 - Zod Validation Schemas
*
* These schemas validate node configuration at runtime.
* Use .parse() for strict validation or .safeParse() for error handling.
*
* Schema helpers (z, expressionSchema, etc.) are passed as parameters
* by the schema-validator, not imported from external files.
*
* @generated - CommonJS JavaScript for runtime loading
*/
module.exports = function getSchema({ parameters, z, expressionSchema, stringOrExpression, numberOrExpression, booleanOrExpression, resourceLocatorValueSchema, resourceMapperValueSchema, filterValueSchema, assignmentCollectionValueSchema, iDataObjectSchema, resolveSchema }) {
// Parameters schema
const parametersSchema = z.object({
operation: z.union([z.literal('blur'), z.literal('border'), z.literal('composite'), z.literal('create'), z.literal('crop'), z.literal('draw'), z.literal('information'), z.literal('multiStep'), z.literal('resize'), z.literal('rotate'), z.literal('shear'), z.literal('text'), z.literal('transparent')]).optional(),
dataPropertyName: stringOrExpression.optional(),
operations: resolveSchema({ parameters, schema: z.object({ operations: z.array(z.object({ operation: z.union([z.literal('blur'), z.literal('border'), z.literal('composite'), z.literal('create'), z.literal('crop'), z.literal('draw'), z.literal('rotate'), z.literal('resize'), z.literal('shear'), z.literal('text'), z.literal('transparent')]).optional(), backgroundColor: stringOrExpression.optional(), width: numberOrExpression.optional(), height: numberOrExpression.optional(), primitive: z.union([z.literal('circle'), z.literal('line'), z.literal('rectangle'), expressionSchema]).optional(), color: stringOrExpression.optional(), startPositionX: numberOrExpression.optional(), startPositionY: numberOrExpression.optional(), endPositionX: numberOrExpression.optional(), endPositionY: numberOrExpression.optional(), cornerRadius: numberOrExpression.optional(), text: stringOrExpression.optional(), fontSize: numberOrExpression.optional(), fontColor: stringOrExpression.optional(), positionX: numberOrExpression.optional(), positionY: numberOrExpression.optional(), lineLength: numberOrExpression.optional(), blur: numberOrExpression.optional(), sigma: numberOrExpression.optional(), borderWidth: numberOrExpression.optional(), borderHeight: numberOrExpression.optional(), borderColor: stringOrExpression.optional(), dataPropertyNameComposite: stringOrExpression.optional(), operator: z.union([z.literal('Add'), z.literal('Atop'), z.literal('Bumpmap'), z.literal('Copy'), z.literal('CopyBlack'), z.literal('CopyBlue'), z.literal('CopyCyan'), z.literal('CopyGreen'), z.literal('CopyMagenta'), z.literal('CopyOpacity'), z.literal('CopyRed'), z.literal('CopyYellow'), z.literal('Difference'), z.literal('Divide'), z.literal('In'), z.literal('Minus'), z.literal('Multiply'), z.literal('Out'), z.literal('Over'), z.literal('Plus'), z.literal('Subtract'), z.literal('Xor'), expressionSchema]).optional(), positionX: numberOrExpression.optional(), positionY: numberOrExpression.optional(), width: numberOrExpression.optional(), height: numberOrExpression.optional(), positionX: numberOrExpression.optional(), positionY: numberOrExpression.optional(), width: numberOrExpression.optional(), height: numberOrExpression.optional(), resizeOption: z.union([z.literal('ignoreAspectRatio'), z.literal('maximumArea'), z.literal('minimumArea'), z.literal('onlyIfLarger'), z.literal('onlyIfSmaller'), z.literal('percent'), expressionSchema]).optional(), rotate: numberOrExpression.optional(), backgroundColor: stringOrExpression.optional(), degreesX: numberOrExpression.optional(), degreesY: numberOrExpression.optional(), color: stringOrExpression.optional(), font: stringOrExpression.optional() })).optional() }), required: false, displayOptions: {"show":{"operation":["multiStep"]}}, defaults: {"operation":"border"} }),
backgroundColor: resolveSchema({ parameters, schema: stringOrExpression, required: false, displayOptions: {"show":{"operation":["create","rotate"]}}, defaults: {"operation":"border"} }),
width: resolveSchema({ parameters, schema: numberOrExpression, required: false, displayOptions: {"show":{"operation":["create","crop","resize"]}}, defaults: {"operation":"border"} }),
height: resolveSchema({ parameters, schema: numberOrExpression, required: false, displayOptions: {"show":{"operation":["create","crop","resize"]}}, defaults: {"operation":"border"} }),
primitive: resolveSchema({ parameters, schema: z.union([z.literal('circle'), z.literal('line'), z.literal('rectangle'), expressionSchema]), required: false, displayOptions: {"show":{"operation":["draw"]}}, defaults: {"operation":"border"} }),
color: resolveSchema({ parameters, schema: stringOrExpression, required: false, displayOptions: {"show":{"operation":["draw","transparent"]}}, defaults: {"operation":"border"} }),
startPositionX: resolveSchema({ parameters, schema: numberOrExpression, required: false, displayOptions: {"show":{"operation":["draw"],"primitive":["circle","line","rectangle"]}}, defaults: {"operation":"border","primitive":"rectangle"} }),
startPositionY: resolveSchema({ parameters, schema: numberOrExpression, required: false, displayOptions: {"show":{"operation":["draw"],"primitive":["circle","line","rectangle"]}}, defaults: {"operation":"border","primitive":"rectangle"} }),
endPositionX: resolveSchema({ parameters, schema: numberOrExpression, required: false, displayOptions: {"show":{"operation":["draw"],"primitive":["circle","line","rectangle"]}}, defaults: {"operation":"border","primitive":"rectangle"} }),
endPositionY: resolveSchema({ parameters, schema: numberOrExpression, required: false, displayOptions: {"show":{"operation":["draw"],"primitive":["circle","line","rectangle"]}}, defaults: {"operation":"border","primitive":"rectangle"} }),
cornerRadius: resolveSchema({ parameters, schema: numberOrExpression, required: false, displayOptions: {"show":{"operation":["draw"],"primitive":["rectangle"]}}, defaults: {"operation":"border","primitive":"rectangle"} }),
text: resolveSchema({ parameters, schema: stringOrExpression, required: false, displayOptions: {"show":{"operation":["text"]}}, defaults: {"operation":"border"} }),
fontSize: resolveSchema({ parameters, schema: numberOrExpression, required: false, displayOptions: {"show":{"operation":["text"]}}, defaults: {"operation":"border"} }),
fontColor: resolveSchema({ parameters, schema: stringOrExpression, required: false, displayOptions: {"show":{"operation":["text"]}}, defaults: {"operation":"border"} }),
positionX: resolveSchema({ parameters, schema: numberOrExpression, required: false, displayOptions: {"show":{"operation":["text","composite","crop"]}}, defaults: {"operation":"border"} }),
positionY: resolveSchema({ parameters, schema: numberOrExpression, required: false, displayOptions: {"show":{"operation":["text","composite","crop"]}}, defaults: {"operation":"border"} }),
lineLength: resolveSchema({ parameters, schema: numberOrExpression, required: false, displayOptions: {"show":{"operation":["text"]}}, defaults: {"operation":"border"} }),
blur: resolveSchema({ parameters, schema: numberOrExpression, required: false, displayOptions: {"show":{"operation":["blur"]}}, defaults: {"operation":"border"} }),
sigma: resolveSchema({ parameters, schema: numberOrExpression, required: false, displayOptions: {"show":{"operation":["blur"]}}, defaults: {"operation":"border"} }),
borderWidth: resolveSchema({ parameters, schema: numberOrExpression, required: false, displayOptions: {"show":{"operation":["border"]}}, defaults: {"operation":"border"} }),
borderHeight: resolveSchema({ parameters, schema: numberOrExpression, required: false, displayOptions: {"show":{"operation":["border"]}}, defaults: {"operation":"border"} }),
borderColor: resolveSchema({ parameters, schema: stringOrExpression, required: false, displayOptions: {"show":{"operation":["border"]}}, defaults: {"operation":"border"} }),
dataPropertyNameComposite: resolveSchema({ parameters, schema: stringOrExpression, required: false, displayOptions: {"show":{"operation":["composite"]}}, defaults: {"operation":"border"} }),
operator: resolveSchema({ parameters, schema: z.union([z.literal('Add'), z.literal('Atop'), z.literal('Bumpmap'), z.literal('Copy'), z.literal('CopyBlack'), z.literal('CopyBlue'), z.literal('CopyCyan'), z.literal('CopyGreen'), z.literal('CopyMagenta'), z.literal('CopyOpacity'), z.literal('CopyRed'), z.literal('CopyYellow'), z.literal('Difference'), z.literal('Divide'), z.literal('In'), z.literal('Minus'), z.literal('Multiply'), z.literal('Out'), z.literal('Over'), z.literal('Plus'), z.literal('Subtract'), z.literal('Xor'), expressionSchema]), required: false, displayOptions: {"show":{"operation":["composite"]}}, defaults: {"operation":"border"} }),
resizeOption: resolveSchema({ parameters, schema: z.union([z.literal('ignoreAspectRatio'), z.literal('maximumArea'), z.literal('minimumArea'), z.literal('onlyIfLarger'), z.literal('onlyIfSmaller'), z.literal('percent'), expressionSchema]), required: false, displayOptions: {"show":{"operation":["resize"]}}, defaults: {"operation":"border"} }),
rotate: resolveSchema({ parameters, schema: numberOrExpression, required: false, displayOptions: {"show":{"operation":["rotate"]}}, defaults: {"operation":"border"} }),
degreesX: resolveSchema({ parameters, schema: numberOrExpression, required: false, displayOptions: {"show":{"operation":["shear"]}}, defaults: {"operation":"border"} }),
degreesY: resolveSchema({ parameters, schema: numberOrExpression, required: false, displayOptions: {"show":{"operation":["shear"]}}, defaults: {"operation":"border"} }),
options: resolveSchema({ parameters, schema: z.object({ destinationKey: stringOrExpression.optional(), fileName: stringOrExpression.optional(), font: stringOrExpression.optional(), format: z.union([z.literal('bmp'), z.literal('gif'), z.literal('jpeg'), z.literal('png'), z.literal('tiff'), z.literal('webp'), expressionSchema]).optional(), quality: numberOrExpression.optional() }), required: false, displayOptions: {"hide":{"operation":["information"]}}, defaults: {"operation":"border"} }),
});
// Return combined config schema
return z.object({
parameters: parametersSchema.optional(),
});
};